Forum: Mikrocontroller und Digitale Elektronik AtMega32 Timer1 CTC Overflow


von Thomas (Gast)


Lesenswert?

Hallo zusammen,
ich möchte auf einem AtMega32 mit 16MHz einen zeitlich genauen Interrupt 
per CTC Compare Match in Timer 1 ausführen.
1
TCCR1A |= (1 << WGM12); // CTC Mode
2
TCCR1B |= (1 << CS10); // Prescaler: 1
3
OCR1A = COUNT;
4
TIMSK = (1 << OCIE1A); // Enable Output Compare Interrupt
Ich bekomme nach 10000 Millisekunden aber immer 2451 Interrupts, egal 
welchen Wert COUNT hat. Ausserdem wird etwa alle 12 Interrupts das 
Overflow Flag TOV1 gesetzt, egal ob die ISR relativ lange ist oder nur 
eine Zählvariable inkrementiert.

Hier noch das verwendete ISR Makro:
1
ISR(TIMER1_COMPA_vect) { ... }

Was ist da los? Warum ändert COUNT nichts?

Mit freundlichen Grüßen,
Thomas

von spess53 (Gast)


Lesenswert?

Hi

>Was ist da los? Warum ändert COUNT nichts?

Weil sich WGM12 nicht in TCCR1A befindet.

MfG Spess

von Thomas (Gast)


Lesenswert?

Au Mann, wie dumm.
Vielen Dank fûr deine Hilfe! :)

Gruß,
Thomas

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
Noch kein Account? Hier anmelden.