Gast
#5937397
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ß