Code:
ISR (TIMER1_OVF_vect)
{
long timer_1 = 0 ; // Variable "Timer1" deklarieren
long timer_2 = 0 ; // Variable "Timer2" deklarieren
while (1)
{
timer_1 ++; // Vorladewert von 0 an inkrementieren
PORTB = 0xAA ; // ungerade LED´s werden für 1 ms beleuchtet
if (timer_1 = preload_value_1)
{
TIMSK = (1 << TOIE1); // 1 ms ist vergangen -> Interrupt einschalten
}
else {
timer_2 ++;
PORTB=0x55 ; // gerade LED´s werden für 9 ms beleuchtet
if (timer_2 = preload_value_2)
{
TIMSK = (1 << TOTIE1); // 9 ms sind vergangen-> Interrupt einschalten
}
}
}
}
warum hast du in dein Interrupt eine Endlosschleife?
Code:
int main (void)
{
DDRB |=(1<<PB2); // Output 1
DDRB |=(1<<PB3); // Output 2
sei ();
}
Dein Programm ist schneller beendet, als der Timer1 sein Interrupt auslöst.
Und du greifst gar nicht auf deine init_Timer1 Funktion zu. Also läuft dieser erst gar nicht an.
Lesezeichen