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ß
Is richtig so, du musst immer einen Takt weniger machen als den du suchst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.