LPC1768 and LPC11U24 watchdog timer
Dependents: GSwifi_tsutenkaku barometer-m0 BMAGThrRev
Diff: WDT.cpp
- Revision:
- 1:f7baa89f84bc
- Parent:
- 0:f28de891b0d3
- Child:
- 2:f6f05e2eafd0
--- a/WDT.cpp Sat Aug 04 05:23:40 2012 +0000 +++ b/WDT.cpp Sat Aug 04 11:36:51 2012 +0000 @@ -1,24 +1,40 @@ -#include "mbed.h" -#include "WDT.h" - -// Simon's Watchdog code from -// http://mbed.org/forum/mbed/topic/508/ -void Watchdog::init(float s) { - LPC_WDT->WDCLKSEL = 0x01; // Set CLK src to PCLK - uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 - LPC_WDT->WDTC = s * (float)clk; - LPC_WDT->WDMOD = 0x03; // Enabled and Reset - kick(); -} -// "kick" or "feed" the dog - reset the watchdog timer -// by writing this required bit pattern -void Watchdog::kick() { - __disable_irq(); - LPC_WDT->WDFEED = 0xAA; - LPC_WDT->WDFEED = 0x55; - __enable_irq(); -} - -int Watchdog::getFlg () { - return LPC_WDT->WDMOD & (1<<2) ? 1 : 0; -} +#include "mbed.h" +#include "WDT.h" + +// Simon's Watchdog code from +// http://mbed.org/forum/mbed/topic/508/ +void Watchdog::init(float s) { +#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) + LPC_WDT->WDCLKSEL = 0x01; // Set CLK src to PCLK + uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 + LPC_WDT->WDTC = s * (float)clk; + LPC_WDT->WDMOD = 0x03; // Enabled and Reset +#elif defined(TARGET_LPC11U24) + LPC_WWDT->CLKSEL = 0x01; // Set CLK src to PCLK + uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 + LPC_WWDT->TC = s * (float)clk; + LPC_WWDT->MOD = 0x03; // Enabled and Reset +#endif + kick(); +} +// "kick" or "feed" the dog - reset the watchdog timer +// by writing this required bit pattern +void Watchdog::kick() { + __disable_irq(); +#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) + LPC_WDT->WDFEED = 0xAA; + LPC_WDT->WDFEED = 0x55; +#elif defined(TARGET_LPC11U24) + LPC_WWDT->FEED = 0xAA; + LPC_WWDT->FEED = 0x55; +#endif + __enable_irq(); +} + +int Watchdog::getFlg () { +#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) + return LPC_WDT->WDMOD & (1<<2) ? 1 : 0; +#elif defined(TARGET_LPC11U24) + return LPC_WWDT->MOD & (1<<2) ? 1 : 0; +#endif +}