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?