LPC1768 and LPC11U24 watchdog timer
Dependents: GSwifi_tsutenkaku barometer-m0 BMAGThrRev
Diff: WDT.cpp
- Revision:
- 0:f28de891b0d3
- Child:
- 1:f7baa89f84bc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WDT.cpp Sat Aug 04 05:23:40 2012 +0000 @@ -0,0 +1,24 @@ +#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; +}