From db65f1b46869eaae3045d48c8c1af9146355afb4 Mon Sep 17 00:00:00 2001 From: bernie Date: Tue, 26 Oct 2004 08:34:47 +0000 Subject: [PATCH] New DevLib module. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@259 38d2e660-2303-0410-9eaa-f027e97ec537 --- drv/wdt.h | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 drv/wdt.h diff --git a/drv/wdt.h b/drv/wdt.h new file mode 100755 index 00000000..617cc0b9 --- /dev/null +++ b/drv/wdt.h @@ -0,0 +1,71 @@ +/*! + * \file + * + * + * \version $Id$ + * + * \author Bernardo Innocenti + * + * \brief Watchdog interface + */ + +/*#* + *#* $Log$ + *#* Revision 1.1 2004/10/26 08:34:47 bernie + *#* New DevLib module. + *#* + *#*/ +#ifndef DRV_WDT_H +#define DRV_WDT_H + +#include +#include +#include +#include // BV() + +/*! + * Reset the watchdog timer. + */ +INLINE void wdt_reset(void) +{ + __asm__ __volatile__ ("wdr"); +} + +/*! + * Set watchdog timer timeout. + * + * \param timeout 0: 16.3ms, 7: 2.1s + */ +INLINE void wdt_init(uint8_t timeout) +{ +#if CPU_AVR + WDTCR |= BV(WDCE) | BV(WDE); + WDTCR = timeout; +#else + #error unknown CPU +#endif +} + +INLINE void wdt_start(void) +{ +#if CPU_AVR + WDTCR |= BV(WDE); +#else + #error unknown CPU +#endif +} + +INLINE void wdt_stop(void) +{ +#if CPU_AVR + WDTCR |= BV(WDCE) | BV(WDE); + WDTCR &= ~BV(WDE); +#else + #error unknown CPU +#endif +} + +#endif /* DRV_WDT_H */ -- 2.25.1