Ist doch merkwürdig.. wenn ich die funktion so verändere:
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!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); } } }
Woran liegt das? Was habe ich da nicht begriffen?







Zitieren

Lesezeichen