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.