AVRStudio4 TIMER1 CTC-Modus mit Interrupt

Gast #5937397
Lesenswert?

Hallo zusammen!

ich verwende den Timer1 beim ATmega8535 im CTC-Modus mit Interrupt bei 
Compare Match um Flanken an PB1 zu zählen. Siehe Code:

Ausschnitt Init:

OCR1A = 10; // Vergleichswert fuer CTC-Modus; Nach 10 wird das 
Z?hlregister TCNT0 wieder auf 0 gesetzt.
TIMSK |= (1 << OCIE1A); // Enable Output Compare Match Interrupts 
Timer1; Interrupt, wenn TCNT0 = OCR0
TCCR1B |= (1 << WGM12); // CTC-Modus einschalten
TCCR1B |= (1 << CS10) | (1 << CS11) | (1 << CS12) ; // Zählen bei 
steigender Flanke an PB0/T0
sei();

Ausschnitt ISR:

ISR(TIMER1_COMPA_vect) //Wird aufgerufen, wenn TCNTO den Wert 0 erreicht 
hat
{
  //...
}

Mein Problem: Im Simulator des AVRStudio4 erfolgt der Interrupt (also 
der Sprung in die ISR) nicht, wenn TCNT1 und OCR1 gleich sind. Sondern 
erst eine Flanke später an T1, wenn TCNT1 wieder auf 0 gesetzt wird. Ist 
das so richtig? Sollte der Interrupt nicht ausgelöst werden,sobald beide 
Register den gleichen Wert haben?

Vielen Dank im Voraus.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren