00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef _WDT_DRV_H_
00042 #define _WDT_DRV_H_
00043
00044
00045
00046 #ifdef __GNUC__
00047 #include <avr/io.h>
00048 #include <avr/wdt.h>
00049 #endif
00050
00051
00052
00053
00056
00057 #define Is_ext_reset() ((MCUSR&(1<<EXTRF)) ? TRUE:FALSE)
00058 #define Ack_ext_reset() (MCUSR= ~(1<<EXTRF))
00059 #define Is_POR_reset() ((MCUSR&(1<<(MCUSR= ~(1<<PORF)))) ? TRUE:FALSE)
00060 #define Ack_POR_reset() (MCUSR= ~(1<<PORF))
00061 #define Is_BOD_reset() ((MCUSR&(1<<BORF)) ? TRUE:FALSE)
00062 #define Ack_BOD_reset() (MCUSR= ~(1<<BORF))
00063 #define Is_wdt_reset() ((MCUSR&(1<<WDRF)) ? TRUE:FALSE)
00064 #define Ack_wdt_reset() (MCUSR= ~(1<<WDRF))
00065
00066 #define Wdt_ack_interrupt() (WDTCSR = (U8)(1<<WDIF))
00067 #define Is_wdt_interrupt() (WDTCSR&(1<<WDIF) ? TRUE:FALSE)
00068 #define Is_not_wdt_interrupt() (WDTCSR&(1<<WDIF) ? FALSE:TRUE)
00069 #define Is_wdt_early_warning() (WDTCKD&(1<<WDEWIF) ? TRUE:FALSE)
00070 #define Is_not_wdt_early_warning() (WDTCKD&(1<<WDEWIF) ? FALSE:TRUE)
00071
00072 #define WDTO_16MS 0
00073 #define WDTO_32MS 1
00074 #define WDTO_64MS 2
00075 #define WDTO_125MS 3
00076 #define WDTO_250MS 4
00077 #define WDTO_500MS 5
00078 #define WDTO_1S 6
00079 #define WDTO_2S 7
00080 #define WDTO_4S 8
00081 #define WDTO_8S 9
00082
00083
00086 void wdtdrv_disable(void);
00087
00088
00093 void wdtdrv_enable( U8 timeout );
00094
00095
00100 void wdtdrv_interrupt_enable( U8 timeout );
00101
00102
00107 void wdtdrv_interrupt_reset_enable( U8 timeout );
00108
00109
00110 #define Soft_reset() {asm("jmp 0000");}
00111
00113
00114 #endif // _WDT_DRV_H_
00115