Probier das init mal so
Code:
void init(void)
{
TIMSK=(1<<OCIE1A); //Compare Interrupt einschalten
TCCR1B=(1<<CS10); //vorteiler: 1
TCCR1B|=(1<<WGM12); //CTC-Modus
TCNT1H=0; // Timer Daten Register Timer1 High auf 0 Setzen
TCNT1L=0; // Timer Daten Register Timer1 Low auf 0 Setzen
sei(); //Interrupts einschalten
}
Es ist außerdem nicht gut einen Interrupt einzuschalten und ihn dann nicht verwenden.
Code:
TIMSK=(1<<TOIE0); //Timer Overflow Interrupt einschalten
TIMSK=(1<<OCIE1A); //Compare Interrupt einschalten
Hier wird der Overflow Interrupt zwar ohnehin durch den Compare Interrupt gelöscht.
Ein Interrupt der nicht in eine Interrupt Routine führt, löst ein Reset aus.
Lesezeichen