LPC1768 and LPC11U24 watchdog timer

Dependents:   GSwifi_tsutenkaku barometer-m0 BMAGThrRev

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;
+}