Hallo, ich möchte Timer0 meines ATMega 644 im CTC Modus benutzen : volatile uint8_t int0_counter; ISR (TIMER0_COMPA_vect) { PORTC=255; // int0_counter++; } void timer_init () { TCCR0B = (1 << CS00) | (1<< CS02) | (1<<WGM21); OCR0A = 128; TIMSK0 = (1 << OCIE0A); sei (); } Allerdings wird meine Interrupt-Routine nicht angesprungen. Ich hab mir jetzt schon mehrmals das Datenblatt durchgelesen, komme aber nicht weiter. Habe leider auch keine passenden Beispiele über die Suche gefunden. (der 644 hat doch schon ein paar register mehr...) Vielleicht könnte mir jemand von euch einen Tip geben.
> TCCR0B = (1 << CS00) | (1<< CS02) | (1<<WGM21);
Also WGM21 gehört erstmal zum TIMER 2.
Du mußt, wenn ich mich nicht irre, WGM01 in TCCR0A setzen stattdessen.
Der Rest sieht gut aus.
Mode 2: WGM02:0 WGM01:1 WGM00:0 --> CTC Mode Timer 0
Ich war an dem Abend schon nicht mehr aufnahmebereit. Habe zuerst nicht (richtig) gemerkt das WGM2 Timer0 in dem B-Register liegt, Die Tabelle auf Seite 99 in der die WGM-Bits erklärt sind habe ich auch überlesen. Vielen Dank !
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.