Forum: Compiler & IDEs CTC Modus bei Mega168 unverständlich


von Flo (Gast)


Lesenswert?

Hallo an alle

Ich hab da ein Problem. Ich will an einem Mega168 den Timer 2 im CTC 
Modus laufen lassen. Das habe ich gemacht:

Im CTC Modus wird ja TCNT2 beim IRQ auf 0 gesetzt. Das funktioniert aber 
nicht. Erst wenn ich TCNT" in der Interruproutine mit der Hand auf 0 
setze läuft der Timer.

Normal müsste das ja ohne auch gehen, oder??
1
void timer2_init(void)    //Timer 2
2
{
3
  TCCR2B = (1 << CS22) ;    //Pre = 64
4
  TCCR2A |= (1 << WGM21);  //CTC Mode
5
  OCR2B = 250;
6
  TIMSK2 |= (1 << OCIE2B);  //Enable CTC IRQ
7
  TCNT2 = 0;
8
}
9
10
11
ISR(TIMER2_COMPB_vect)    //1000µs
12
{
13
  /* Nur wenn ich hier TCNT2 resete, funktioniert das ganze */
14
    TCNT2 = 0;            
15
    PWM_PORT ^= (1 << PWM_PIN);
16
    LEDPORT |= (1 << LED);
17
}

Danke im voraus

mfg Flo

von johnny.m (Gast)


Lesenswert?

Ich hab jetzt kein Datenblatt vom 168 da, aber bist Du sicher, dass CTC 
mit dem Compare Match B überhaupt geht? Bei den meisten AVRs, mit denen 
ich bisher gearbeitet habe, geht CTC nur mit Compare Match A...

von Flo (Gast)


Lesenswert?

Hast recht, das eht nur beim Compare Match A. Danke!

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.