Forum: Mikrocontroller und Digitale Elektronik ATMega 644 Timer0


von Tho (Gast)


Lesenswert?

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.

von 900ss (900ss)


Lesenswert?

> 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

von Tho (Gast)


Lesenswert?

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