LPC1768 and LPC11U24 watchdog timer

Dependents:   GSwifi_tsutenkaku barometer-m0 BMAGThrRev

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