Nein. Du hast mehrere Probleme auf einmal.
1 | TIMSK = ( 1 << TOIE0 ); // Overflow Interrupt einschalten
|
2 | TIMSK |= (1 << OCIE1A); // Vergleichsregister Interrupt für Timer einschalten
|
Hiermit schaltest Du 2 Interrupts frei (der Kommentar in der zweiten
Zeile ist schlicht verkehrt). Nur für einen dieser 2 gibt es eine
Interruptroutine. Für den anderen gibt es keine, und das heißt, dass
der Default-Handler dafür in Aktion tritt, denn angesprungen wird eine
Interrupt-Routine ja trotzdem. Und der Default-Handler macht einen
Soft-Reset.
Und dann schau Dir mal genau an, für was Du eine Interrupt-Routine
gebaut hast. Das "was" steckt im Argument zu ISR(), wo Du eine
veraltete und nicht mehr empfohlene Bezeichnung gewählt hast:
1 | ISR(SIG_OUTPUT_COMPARE0)
|
Die funktioniert aber trotzdem noch, nur passt „Output Compare“ nicht zu
Deiner Beschreibung, wonach Du Overflows zählen möchtest. Für letztere
hast Du nichts vorgesehen (was den besagten Soft-Reset ergibt).