diff options
Diffstat (limited to 'wdt.c')
-rw-r--r-- | wdt.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -0,0 +1,25 @@ + +static uint8_t wdt_generation __attribute__((section (".noinit"))); + +static void wdt_init(void) +{ + uint8_t temp; + /* timed sequence. bit 4: WDCE, bit 3: WDE, + * 0x07 = WDP2 | WDP1 | WDP0 = 2s */ + asm volatile ("\n\ +WDTCSR = 0x60\n\ +WDCE = 4\n\ +WDE = 3\n\ + wdr \n\ + \n\ + ldi %[temp], (1 << WDCE) | (1 << WDE) \n\ + sts WDTCSR, %[temp] \n\ + \n\ + ldi %[temp], (1 << WDE) | 0x07 \n\ + sts WDTCSR, %[temp] \n\ + " : [temp] "=r" (temp) : : "memory"); + + if (MCUSR & (1 << WDRF)) + wdt_generation++; +} + |