Thomas E. schrieb:
> Wer W. schrieb:
>> TIMSK &= ~((1<<OCIE0)|(1<<TOIE0)); // um sicher zu gehen das die aus
>> sind
>
> Das kannst du dir sparen. Nach Reset sind die ausgeschaltet. Aber du
> musst den OVF-Int irgendwo einschalten.
>
> mfg.
Habe ich nun rausgenommen.
Sorry wenn ich da so doof Frage, ich finde nirgendswo, wo ich den
OVF-Int einschalte.
Ich gehe nach der Beschreibung aus dem Datenblatt:
1 | 1. Disable the Timer/Counter0 interrupts by clearing OCIE0 and TOIE0.
|
2 | 2. Select clock source by setting AS0 as appropriate.
|
3 | 3. Write new values to TCNT0, OCR0, and TCCR0.
|
4 | 4. To switch to asynchronous operation: Wait for TCN0UB, OCR0UB, and TCR0UB.
|
5 | 5. Clear the Timer/Counter0 Interrupt Flags.
|
6 | 6. Enable interrupts, if needed.
|
Dann ist das ja so richtig oder nicht?
1 | ASSR = (1<<AS0) // Asynchron mode on
|
2 | TCCR0 |= ((1 << CS02)|(1 << CS01)); //prescaler 256
|
3 | OCR0 = 128; // CTC
|
4 | TCNT0 = 128;
|
5 | while(ASSR & ((1<<TCN0UB)|(1<<OCR0UB)|(1<<TCR0UB)) )
|
6 | {
|
7 | // Abwarten, bis die Busy-Bits geloescht sind
|
8 | }
|
9 | TIFR = ((1<<OCF0)|(1<<TOV0));
|
10 | TIMSK &= ~((1<<OCIE0)|(1<<TOIE0));
|
11 | sei();
|
Müssen noch bestimmte Fuses gesetzt werden? habe im moment
INTRCOSC_8MHZ_6CK_64MS. Auch CKOPT habe ich gesetzt.