Ist doch merkwürdig.. wenn ich die funktion so verändere:
Code:
ISR(INT0_vect)
{
if (on)
{
PORTB |= (1<<PB4); // LED 1*flashing: Off
_delay_ms(2);
PORTB &= ~(1<<PB4);
_delay_ms(10);
on = 0;
if (!on)
{
PORTB |= (1<<PB4);
_delay_ms(2);
PORTB &= ~(1<<PB4);
_delay_ms(2);
}
}
else
{
PORTB |= (1<<PB4); // LED 2*flashing: On
_delay_ms(2);
PORTB &= ~(1<<PB4);
_delay_ms(2);
PORTB |= (1<<PB4);
_delay_ms(2);
PORTB &= ~(1<<PB4);
_delay_ms(10);
on = 1;
if (on)
{
PORTB |= (1<<PB4);
_delay_ms(2);
PORTB &= ~(1<<PB4);
_delay_ms(2);
}
}
}
zeigt sich, dass die variable in der schleife definitiv geändert wird (wenn ich mit on=0 initialisiere, wird die else schleife aufgerufen und es blinkt dreimal). Danach wird sie anscheinend wieder zurückgesetzt!
Woran liegt das? Was habe ich da nicht begriffen?
Lesezeichen