A very basic example using the watchdog timer

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
simon
Date:
Wed Feb 17 14:32:10 2010 +0000
Commit message:

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 8da3c40a4505 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 17 14:32:10 2010 +0000
@@ -0,0 +1,39 @@
+#include "mbed.h"
+
+DigitalOut led(LED1);
+
+class Watchdog {
+public:
+    void kick(float s) {
+        LPC_WDT->WDCLKSEL = 0x1;                // 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 = 0x3;                   // Enabled and Reset        
+        kick();
+    }
+    
+    void kick() {
+        LPC_WDT->WDFEED = 0xAA;
+        LPC_WDT->WDFEED = 0x55;
+    }
+};
+
+Watchdog w;
+
+int main() {
+    printf("Hello World!\n");
+    w.kick(2.5);
+
+    int hang = 0;
+    while(1) {
+        printf("loop...\n");
+        wait(0.1);
+        
+        if(hang == 10) {
+            while(1);
+        }
+
+        w.kick();
+        hang++;
+    }
+}
diff -r 000000000000 -r 8da3c40a4505 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Feb 17 14:32:10 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0