void sleep_mode_init(); int main(void) { sleep_mode_init(); _SEI; set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_mode(); while(!(PIND & (1 << PIND3))) //Warte bis Taste losgelassen { ; } start: if(b >= 450000) //450000 entsprechen den 4 Sekunden { b = 0; sleep_mode_init(); _SEI; set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_mode(); while(!(PIND & (1 << PIND3))) //Warte bis Taste losgelassen { ; } } while(1) { if(!(PIND & (1 << PIND3))) { while(!(PIND & (1 << PIND3))) { b++; if(b >= 451000) b = 450500; if(b == 450500) { PORTB = 0x00; PORTD = 0x00; PORTC = 0x00; } } goto start; } } } void sleep_mode_init() { SMCR &= ~(1 << SM0) | (1 << SM2); //Power Down Modus SMCR |= (1 << SM1) | (1 << SE); //Power Down & Sleep Enable EICRA &= ~(1 << ISC11) | (1 << ISC10); //Low Level of INT1 generates Interrupt Request EIMSK |= (1 << INT1); //External Interrupt Request Enable PORTB &= ~(1 << PB4); } ISR(INT1_vect ) { while(!(PIND & (1 << PIND3))) { ; } EIMSK &= ~(1 << INT1); //External Interrupt Request disable }