mikrocontroller.net

Forum: Compiler & IDEs TIMER0_OVF wird einfach nicht aufgerufen (Mega162, GCC)


Autor: MarcusW (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Nach langem hin- und herprobieren weiss ich jetzt endgültig nicht mehr 
weiter.

Zunächst aber zu den allg. Infos:

ATmega162, 16Mhz
AVR-GCC 4.2.2
AVR-LIBC 1.6.2

Zum Problem:

In mein Programm wollte ich einen einfachen 1ms-Timer einfügen. 
Standardmäßig mit Timer0, dem 8 Bit Timer.

Leider wird die Overflow-Interrupt-Routine nicht aufgerufen.
Ich habe jetzt das Problem soweit eingegrenzt, dass das angehängte 
Programm entstand.

Der Timer 0 wird initialisiert mit 1msec. Beim ersten Aufruf der ISR 
sollte die LED an PB0 eingeschaltet werden.
Dies tut sie aber nicht!!

Interessant wirds, wenn man sich den auskommentierten Teil in der 
Main-WhileLoop ansieht. Hier frage ich das TOV0-Bit im TIFR direkt ab. 
Wenn ich diesen Code statt der ISR nutze, funktioniert das Programm (LED 
wird eingeschaltet). Das bedeutet ja, dass der Timer grundsätzlich 
läuft.


Leider habe ich z.Zt. keinen anderen Controller hier. Bin mir nämlich 
sicher, dass genau diese Einstellung mal bei mir beim Mega8 
funktionierte.

Ich hoffe mir kann jemand von euch helfen, meine ISR in Gang zu bringen.



Vielen Dank an euch

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, das kommt davon, wenn man in die Register irgendwelche Hex-Werte 
schreibt und nicht die symbolischen Namen verwendet. TOIE0 hat in TIMSK 
bei einem Mega162 eine andere Position als beim Mega8.

Autor: MarcusW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaubs ja nicht.

Ich werd definitiv in Zukunft die symb. Namen verwenden. Verringert die 
Wahrscheinlichkeit von Copy&Paste-Fehlern.

Bemerkenswert finde ich übrigens, dass du nur 7 Minuten nach Abschicken 
des Threads den Fehler gefunden hast. Ich hab alles gefühlte 100 mal 
überprüft.

Dank dir für dein Hilfe.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich glaube nicht, daß er die 7 Minuten dafür gebraucht hat, er hat 
vermutlich nur nicht früher Deine Frage gelesen.

Aber eine wichtige Erkenntnis hast Du ja schon gewonnen, mach das 
wirklich so.

Ich habe leider auch schon Stunden nach einem Fehler in einer fremden 
Software gesucht, weil etwas nicht ging.
Alles war sauber vereinbart, richtig von mir geändert.
Leider hatte der Programmier an einer einzigen Stelle im Programm nicht 
seine eigene Vereinbarung genutzt, sondern den Wert direkt 
geschrieben...

Gruß aus Berlin
Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.