Auszug aus dem Datenblatt:
"Alternatively, TOV0 is cleared by writing a logic one to the flag."
Das hier:
1 | //Überlaufflag wieder umschalten
|
2 | TIFR0 &= ~(1 << TOV0);
|
ist also schon mal falsch.
Richtig wäre:
1 | //Überlaufflag wieder umschalten
|
2 | TIFR0 |= (1 << TOV0);
|
Ausserdem:
"The setting of this flag is dependent of the WGM02:0 bit setting. Refer
to Table 14-8, ”Waveform Generation Mode Bit Description” on page 108."
Und dort steht, dass das TOV0-Flag nur gesetzt wird, wenn OCRA MAX
erreicht. MAX ist aber 0xFF. Das kann nicht erreicht werden wegen:
OCR0A = 0x7D;
> P.S: Ich wollte erstmal so anfangen bevor ich mit Interrupt beginne.
Mein Tipp:
Machs direkt mit Interrupts und vergiss das Pollen eines Registers.