wdt_drv.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef _WDT_DRV_H_
00017 #define _WDT_DRV_H_
00018 
00019 //_____ I N C L U D E S ____________________________________________________
00020 
00021 #ifdef AVRGCC
00022    #include <avr/io.h>
00023    #include <avr/wdt.h>
00024 #endif
00025 
00026 
00027 //_____ M A C R O S ________________________________________________________
00028 
00031 
00032 #define Is_ext_reset()  ((MCUSR&(1<<EXTRF)) ? TRUE:FALSE)
00033 #define Ack_ext_reset() (MCUSR= ~(1<<EXTRF))
00034 #define Is_POR_reset()  ((MCUSR&(1<<(MCUSR= ~(1<<PORF)))) ? TRUE:FALSE)
00035 #define Ack_POR_reset() (MCUSR= ~(1<<PORF))
00036 #define Is_BOD_reset()  ((MCUSR&(1<<BORF)) ? TRUE:FALSE)
00037 #define Ack_BOD_reset() (MCUSR= ~(1<<BORF))
00038 #define Is_wdt_reset()  ((MCUSR&(1<<WDRF)) ? TRUE:FALSE)
00039 #define Ack_wdt_reset() (MCUSR= ~(1<<WDRF))
00040 
00041 #ifdef AVRGCC
00042 //#define Wdt_reset_instruction()   (asm("WDR"))
00043 #define Wdt_reset_instruction()  (wdt_reset())
00044 #else
00045 #define Wdt_reset_instruction()  (__watchdog_reset())
00046 #endif
00047 #define Wdt_clear_flag()         (Ack_wdt_reset())
00048 #define Wdt_change_enable()      (WDTCSR |= (1<<WDCE) | (1<<WDE))
00049 #define Wdt_enable_16ms()        (WDTCSR =  (1<<WDE))
00050 #define Wdt_enable_32ms()        (WDTCSR =  (1<<WDE) | (1<<WDP0) )
00051 #define Wdt_enable_64ms()        (WDTCSR =  (1<<WDE) | (1<<WDP1) )
00052 #define Wdt_enable_125ms()       (WDTCSR =  (1<<WDE) | (1<<WDP1) | (1<<WDP0))
00053 #define Wdt_enable_250ms()       (WDTCSR =  (1<<WDE) | (1<<WDP2) )
00054 #define Wdt_enable_500ms()       (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP0))
00055 #define Wdt_enable_1s()          (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP1))
00056 #define Wdt_enable_2s()          (WDTCSR =  (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
00057 #define Wdt_enable_4s()          (WDTCSR =  (1<<WDE) | (1<<WDP3) )
00058 #define Wdt_enable_8s()          (WDTCSR =  (1<<WDE) | (1<<WDP3) | (1<<WDP0))
00059 
00060 #define Wdt_interrupt_16ms()     (WDTCSR =  (1<<WDIE))
00061 #define Wdt_interrupt_32ms()     (WDTCSR =  (1<<WDIE) | (1<<WDP0) )
00062 #define Wdt_interrupt_64ms()     (WDTCSR =  (1<<WDIE) | (1<<WDP1) )
00063 #define Wdt_interrupt_125ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP1) | (1<<WDP0))
00064 #define Wdt_interrupt_250ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP2) )
00065 #define Wdt_interrupt_500ms()    (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP0))
00066 #define Wdt_interrupt_1s()       (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP1))
00067 #define Wdt_interrupt_2s()       (WDTCSR =  (1<<WDIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
00068 #define Wdt_interrupt_4s()       (WDTCSR =  (1<<WDIE) | (1<<WDP3) )
00069 #define Wdt_interrupt_8s()       (WDTCSR =  (1<<WDIE) | (1<<WDP3) | (1<<WDP0))
00070 
00071 #define Wdt_enable_reserved5()   (WDTCSR =  (1<<WDE) | (1<<WDP3) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0))
00072 #define Wdt_stop()               (WDTCSR = 0x00)
00073 
00074 #define Wdt_ack_interrupt()      (WDTCSR = ~(1<<WDIF))
00075 
00076 
00088 #define Wdt_off()                (Wdt_reset_instruction(),  \
00089                                   Wdt_clear_flag(),         \
00090                                   Wdt_change_enable(),      \
00091                                   Wdt_stop())
00092 
00093 
00094 
00095 
00107 #define Wdt_change_16ms()        (Wdt_reset_instruction(), \
00108                                   Wdt_change_enable(),     \
00109                                   Wdt_enable_32ms() )
00110                               
00122 #define Wdt_change_32ms()        (Wdt_reset_instruction(), \
00123                                   Wdt_change_enable(),     \
00124                                   Wdt_enable_32ms() )
00125 
00126 
00138 #define Wdt_change_64ms()        (Wdt_reset_instruction(), \
00139                                   Wdt_change_enable(),     \
00140                                   Wdt_enable_64ms() )
00141 
00142 
00143 
00144 
00156 #define Wdt_change_125ms()       (Wdt_reset_instruction(), \
00157                                   Wdt_change_enable(),     \
00158                                   Wdt_enable_125ms() )
00159 
00171 #define Wdt_change_250ms()       (Wdt_reset_instruction(), \
00172                                   Wdt_change_enable(),     \
00173                                   Wdt_enable_250ms() )
00174 
00186 #define Wdt_change_500ms()       (Wdt_reset_instruction(), \
00187                                   Wdt_change_enable(),     \
00188                                   Wdt_enable_500ms() )
00189 
00201 #define Wdt_change_1s()          (Wdt_reset_instruction(), \
00202                                   Wdt_change_enable(),     \
00203                                   Wdt_enable_1s() )
00204 
00205 
00217 #define Wdt_change_2s()          (Wdt_reset_instruction(), \
00218                                   Wdt_change_enable(),     \
00219                                   Wdt_enable_2s() )
00231 #define Wdt_change_4s()          (Wdt_reset_instruction(), \
00232                                   Wdt_change_enable(),     \
00233                                   Wdt_enable_4s() )
00234 
00235 
00247 #define Wdt_change_8s()          (Wdt_reset_instruction(), \
00248                                   Wdt_change_enable(),     \
00249                                   Wdt_enable_8s() )
00250 
00251 
00263 #define Wdt_change_interrupt_16ms()    (Wdt_reset_instruction(), \
00264                                         Wdt_change_enable(),     \
00265                                         Wdt_interrupt_16ms() )
00266 
00278 #define Wdt_change_interrupt_32ms()    (Wdt_reset_instruction(), \
00279                                         Wdt_change_enable(),     \
00280                                         Wdt_interrupt_32ms() )
00281 
00293 #define Wdt_change_interrupt_64ms()    (Wdt_reset_instruction(), \
00294                                         Wdt_change_enable(),     \
00295                                         Wdt_interrupt_64ms() )
00296 
00308 #define Wdt_change_interrupt_125ms()      (Wdt_reset_instruction(), \
00309                                            Wdt_change_enable(),     \
00310                                            Wdt_interrupt_125ms() )
00311 
00323 #define Wdt_change_interrupt_250ms()      (Wdt_reset_instruction(), \
00324                   Wdt_change_enable(),     \
00325                   Wdt_interrupt_250ms() )
00326 
00338 #define Wdt_change_interrupt_500ms()      (Wdt_reset_instruction(), \
00339                   Wdt_change_enable(),     \
00340                   Wdt_interrupt_500ms() )
00341 
00353 #define Wdt_change_interrupt_1s()      (Wdt_reset_instruction(), \
00354                   Wdt_change_enable(),     \
00355                   Wdt_interrupt_1s() )
00356 
00368 #define Wdt_change_interrupt_2s()      (Wdt_reset_instruction(), \
00369                   Wdt_change_enable(),     \
00370                   Wdt_interrupt_2s() )
00371 
00383 #define Wdt_change_interrupt_4s()      (Wdt_reset_instruction(), \
00384                   Wdt_change_enable(),     \
00385                   Wdt_interrupt_4s() )
00386 
00398 #define Wdt_change_interrupt_8s()      (Wdt_reset_instruction(), \
00399                   Wdt_change_enable(),     \
00400                   Wdt_interrupt_8s() )
00401 
00402 #define Wdt_change_reserved5()   (Wdt_reset_instruction(), \
00403                                  Wdt_change_enable(),     \
00404                                  Wdt_enable_reserved5() )
00405 
00406 #define Soft_reset()             {asm("jmp 0000");}
00407 
00409 
00410 
00411 
00412 
00413 #endif  // _WDT_DRV_H_
00414 

Generated on Fri Jun 15 14:15:33 2007 for Atmel by  doxygen 1.5.1-p1