Hallo, wenn ich das CTC1 Bit im TCCR1 eines ATtiny85 setze, springt das Programm weder im Simulator noch in echt in den TIMER1_OVF_vect. Wenn ich das Datenblatt richtig verstehe müsste das aber passieren. Werde als workaround den TCNT1 wie zB PeDa in den Entprellroutinen vorladen und CTC nicht setzen. Ist das ein Fehler im Datenblatt, des Controllers oder was steckt dahinter? Viele Grüße, Paul Zitat aus dem Datenblatt (Kapitel 12.3.1):
1 | • Bit 7- CTC1 : Clear Timer/Counter on Compare Match |
2 | When the CTC1 control bit is set (one), Timer/Counter1 is reset to $00 in |
3 | the CPU clock cycle after a compare match with OCR1C register value. If |
4 | the control bit is cleared, Timer/Counter1 continues counting and is |
5 | unaffected by a compare match. |
Ich initialisiere den Timer1 so:
1 | void adc_timer_init(){ |
2 | //mit nem Prescaler von 2048 und ner Taktung von 0,5sec
|
3 | TCCR1 |= ( 0<<CTC1 | 1<<CS13 | 1<<CS12 | 0<<CS11 | 0<<CS10 ); //Prescaler auf 2048 |
4 | //und CTC NICHT gesetzt weil dann nichts mehr geht
|
5 | TIMSK |= ( 1<<TOIE1 ); //Interrupt aktivieren |
6 | OCR1C = (uint8_t)(uint16_t) (F_CPU/2048*0.5+0.5); |
7 | }
|