Forum: Mikrocontroller und Digitale Elektronik Fehler beim Kompilieren


von Pimi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Profis,
Ich arbeite mit SiSy Software, habe ein lauffähiges Programm für MK2 und 
AtMega8.
Jetzt bin ich auf AtMega238 umgestiegen und wollte das Programm vom 
AtMega8 auf AtMega238 umschreiben. Leider beim Kompilieren kommt ein 
Fehler, obwohl bei AtMega8 es keine Probleme gab.
Fehlerbeschreibung: Die Funktionen: GICR und TIMSK wurden nicht 
deklariert.
Fehlt bei mir eine Header Datei? Wenn ja welche?

Bitte um Tipps

von Dex (Gast)


Lesenswert?

kann es 1. sein das du den Atmega 328 hast ?
kann es 2. sein seine Register bei selbigen ein bisschen anderst heißen 
?

(0x70) TIMSK2 – – – – – OCIE2B OCIE2A TOIE2 163
(0x6F) TIMSK1 – – ICIE1 – – OCIE1B OCIE1A TOIE1 139
(0x6E) TIMSK0

....

von kann kein Englisch (Gast)


Lesenswert?

Warum lest ihr nie die Datenblätter des jeweiligen µC?

von Pimi (Gast)


Lesenswert?

Dex schrieb:
> kann es 1. sein das du den Atmega 328 hast ?

Sorry ich habe mich verschrieben.
Ich habe den Atmega 328.

Dex schrieb:

> kann es 2. sein seine Register bei selbigen ein bisschen anderst heißen
> ?
>
> (0x70) TIMSK2 – – – – – OCIE2B OCIE2A TOIE2 163
> (0x6F) TIMSK1 – – ICIE1 – – OCIE1B OCIE1A TOIE1 139
> (0x6E) TIMSK0
>
> ....
Tut mir Leid aber mit der Aussage kann ich auch nichts anfangen.
Wo finde ich mehrere Infos darüber?

Danke

von Thomas E. (thomase)


Lesenswert?

Pimi schrieb:
> Wo finde ich mehrere Infos darüber?
Im Vergleich der Datenblätter für den 8er und den 328er.
Bei den neueren Controllern heissen die Register anders.
Z.B. heisst das Interrupt Mask Register beim Atmega8 für alle 3 Timer 
TIMSK, beim 328er gibt es 3 Register TIMSK0, TIMSK1, TIMSK2.

mfg.

von Pimi (Gast)


Lesenswert?

Hallo
Nach der Angabe TIMSK0, oder TIMSK1, oder TIMSK2 statt TIMSK ist ein 
Fehler weniger. Da ich ein totaler Neuling bin, weiß ich nicht welche 
von den 3 ich nehmen kann. Ist das egal?

Leider dar zweite Fehler habe ich immer noch. Und zwar:
"Die Funktionen: GICR wurde nicht deklariert".
Wie kann ich das beseitigen?

mfg.

von Thomas E. (thomase)


Lesenswert?

Pimi schrieb:
> Nach der Angabe TIMSK0, oder TIMSK1, oder TIMSK2 statt TIMSK ist ein
> Fehler weniger. Da ich ein totaler Neuling bin, weiß ich nicht welche
> von den 3 ich nehmen kann. Ist das egal?
Das überlegtst du dir jetzt selber.
Wenn es Timer0 , Timer1 und Timer2 gibt...

Pimi schrieb:
> "Die Funktionen: GICR wurde nicht deklariert".
> Wie kann ich das beseitigen?
Indem du das richtige Register nimmst. In GICR werden die Interrupts 
INT0 und INT1 eingeschaltet. Dann guckst im Datenblatt vom 328er, in 
welchem Register das dort gemacht wird (EICRA, bevor du völlig 
verzweifelst).

mfg.

von Pimi (Gast)


Lesenswert?

Dane
Ich hoffe dass es klappt

Mit freundlichen Grüßen

von Pimi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Experten
Es hat nicht geklappt!
Mit Datenblättern habe ich zu wenig Erfahrung und ich check da gar 
nichts. Von Anfang an schreibe ich nicht, dass es sich um einen 
C-Programm handelt.
Und nach wie vor der Timer funktioniert nicht! Ich bin schon langsam 
verzweifelt. Ich habe mit Code Vizard (SiSy-AVR) den Timer für ATmega 
328 generiert (siehe das Grundgerüst in Quellcode)
Der Timer dient zur Steuerung einer Markise: und zwar es werden Signale 
(Windsensor) am Eingang D3 gezählt wenn der Windsensor dreht zu schnell 
geht die Markise zu, sonst bleibt sie offen. Ursprünglich war das für 
den ATmega 8. Ich betone noch mal das Programm für ATmega 8 funktioniert 
einwandfrei.

Bitte um Hilfe!
Mit freundlichen Grüßen

von Pimi (Gast)


Lesenswert?

Hallo,
Den Fehler habe ich mit Hilfe behoben:
1.  Falsche Fuses
2.  Falsche Timerkonfiguration:
Ist:  TCCR1B=0x05;    // Teiler 1/1024
      TCCR1B|=0x02;   // Modus: Zählen bis Vergleichswert
korrekt heißt es
     TCCR1B=0x05;    // Teiler 1/1024
     TCCR1B|=0x08;   // Modus: Zählen bis Vergleichswert

An Alle die mir Helfen wollten.
Besten Dank!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.