00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _WDT_H_
00019 #define _WDT_H_
00020
00021 #include <io.h>
00022
00023 #define wdt_reset() __asm__ __volatile__ ("wdr")
00024
00025 #define wdt_enable(timeout) \
00026 __asm__ __volatile__ ( \
00027 "in __tmp_reg__, __SREG__" "\n\t" \
00028 "cli" "\n\t" \
00029 "wdr" "\n\t" \
00030 "out %1, %0" "\n\t" \
00031 "out __SREG__, __tmp_reg__" "\n\t" \
00032 : \
00033 : "r" ((uint8_t)((timeout) | BV(WDE))), \
00034 "I" (WDTCR) \
00035 : "r0" \
00036 )
00037
00038 #define wdt_disable() \
00039 __asm__ __volatile__ ( \
00040 "in __tmp_reg__, __SREG__" "\n\t" \
00041 "cli" "\n\t" \
00042 "wdr" "\n\t" \
00043 "out %1, %0" "\n\t" \
00044 "out %1, __zero_reg__" "\n\t" \
00045 "out __SREG__, __tmp_reg__" \
00046 : \
00047 : "r" (BV(WDTOE) | BV(WDE)), \
00048 "I" (WDTCR) \
00049 : "r0" \
00050 )
00051
00052 #endif