- MCUCR |= (1<<SE) | (1<<SM1)|(1<<SM0); // Sleep enable, mode = standby.\r
- sleep_cpu(); // Go to sleep, wake up by WDT.\r
- \r
- wdt_reset(); // Clear watchdog reset flag.\r
- MCUSR &= ~(1<<WDRF); \r
+\r
+ DDRB &= ~(1<<PB6); // MASTER_INT as input\r
+ PORTB |= (1<<PB6); // enabled internal pullup\r
+ WatchdogFlag = 0;\r
+ if ( PINB & (1<<PB6) ) {\r
+ MCUCR |= (1<<SE) | (1<<SM1) | (1<<SM0); // Sleep enable, mode = standby.\r
+ sleep_cpu(); // Go to sleep, wake up by WDT.\r
+ }\r
+ else {\r
+ do {\r
+ } while ( !(WatchdogFlag) );\r
+ }\r
+\r
+ wdt_reset(); // Clear watchdog reset flag.\r
+ PORTB &= ~(1<<PB6); // disabled internal pullup\r
+ MCUSR &= ~(1<<WDRF);\r
+\r
+ sreg_saved = SREG;\r
+ cli();\r