Timer0 Asyncron Overflow Interrupt kommt nicht (Mega128)

Gast #1052732
Hallo!

Anbei ein Projekt von mir, mit einem Problem, was mich ca. 2 Tage 
gekostet hat.

Das ganze läuft auf einem ATMega 128 und einem Uhrenquartz für Timer 0. 
Ich nutze  gcc 4.3.0 mit Eclipse.

Das Problem war, das ab und zu der Overflow Interrupt für Timer 0 nicht 
kam. Im Datasheet für den Mega 128 habe ich im Errata für den Timer 2 
dann folgendes gefunden:

>2. Interrupts may be lost when writing the timer registers in the
>asynchronous timer
>If one of the timer registers which is synchronized to the asynchronous
>timer2 clock is written
>in the cycle before a overflow interrupt occurs, the interrupt may be
>lost.
>Problem Fix/Workaround
>Always check that the Timer2 Timer/Counter register, TCNT2, does not have
>the value 0xFF
>before writing the Timer2 Control Register, TCCR2, or Output Compare
>Register, OCR2

Nachgedacht --> Timer 0 läuft ja auch Asynchron!

Dann das Projekt welche im Anhang ist zusamengebaut, und siehe da, der 
Overflow wird NIE ausgeführt wenn der Timer auf 0xFF steht und in OCR0 
was rein geschrieben wird(egal was!). --> die LED die bei mir an PORT B 
7 ist Blinkt nicht!

Bei mir hat sich das nur selten geäußert, das OCR0 immer mit +=9 
verwendet wurde.Nur dann halt wenn Timer 0 auf 0xff stand

Will das hier schreiben, falls einer das gleiche Problem mal haben 
sollte. In meine Projekt hab ich mir nen Workaround gebastelt, läuft 
jetzt zuverlässig!

Auch eine Frage: kann mann sich irgendwie an Atmel wenden oder kennt da 
jemand einen, das die das eventuel ins Errata aufnehmen?

Gruß Stefan
Angehängte Dateien:
#1052858
@ Stefan (Gast)

>Das ganze läuft auf einem ATMega 128 und einem Uhrenquartz für Timer 0.

Ist irgendwie doof, dass Atmel es nicht geschafft hat, die Module der 
AVRs einheitlich zu gestalten. Bei den meisten AVRs ist nämlich der 
Timer 2 asynchron taktbar.

>sollte. In meine Projekt hab ich mir nen Workaround gebastelt, läuft
>jetzt zuverlässig!

Und wo ist der Workaround? In deinem Projekt im Anhang eher nicht.
Ausserdem überfährst du den Quarz immer noch.

1) er muss erst sauer anschwingen, so lange sollte man warten.
2) Du musst nach dem letzten Zugriff und Freischalten der Interrupts 
noch warten, bis der Zugriff asynchron beendet wird, sonst kann es 
passieren, dass der Interrupt nicht aktiv wird, vor allem bei Verwednung 
der Sleep Modes.

Siehe auch

http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC#Beispielprogramm

, so ist es wasserdicht.

>Auch eine Frage: kann mann sich irgendwie an Atmel wenden oder kennt da
>jemand einen, das die das eventuel ins Errata aufnehmen?

Wozu? Es steht doch im Datenblatt.

MfG
Falk
#1053391
Stefan wrote:
>>2. Interrupts may be lost when writing the timer registers in the
>>asynchronous timer
>>If one of the timer registers which is synchronized to the asynchronous
>>timer2 clock is written
>>in the cycle before a overflow interrupt occurs, the interrupt may be
>>lost.
>>Problem Fix/Workaround
>>Always check that the Timer2 Timer/Counter register, TCNT2, does not have
>>the value 0xFF
>>before writing the Timer2 Control Register, TCCR2, or Output Compare
>>Register, OCR2

Ja, typischer Copy&Paste-Fehler, findet man häufig in den 
AVR-Datenblättern.
Man muß immer ein bischen mitdenken.

Bei vielen AVRs ist T2 der mit dem Uhrenquarz, nur beim ATmega128 ist es 
T0.
Aber aufpassen, beim Nachfolger ATmega1281 ist es wieder T2!


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.