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