![](/media/cache/profiles/100d5d9191f185eeb98d6e291756954a.50x50_q85.png)
Measure system
Dependencies: EthernetNetIf mbed RF12B
Diff: WatchDog/WatchDog.cpp
- Revision:
- 0:8d62137f7ff4
diff -r 000000000000 -r 8d62137f7ff4 WatchDog/WatchDog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WatchDog/WatchDog.cpp Thu Mar 03 08:45:49 2011 +0000 @@ -0,0 +1,40 @@ +#include "mbed.h" +#include "WatchDog.h" + + +watchdog::watchdog(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 + feed(); +} + +watchdog_ms::watchdog_ms(int ms) { + 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 = ((float)ms * (float)clk) /1000; + LPC_WDT->WDMOD = 0x3; // Enabled and Reset + feed(); +} + +watchdog_us::watchdog_us(int us) { + 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 = ((float)us * (float)clk) /1000000; + LPC_WDT->WDMOD = 0x3; // Enabled and Reset + feed(); +} + +void watchdog::feed() { + LPC_WDT->WDFEED = 0xAA; + LPC_WDT->WDFEED = 0x55; +} +void watchdog_ms::feed() { + LPC_WDT->WDFEED = 0xAA; + LPC_WDT->WDFEED = 0x55; +} +void watchdog_us::feed() { + LPC_WDT->WDFEED = 0xAA; + LPC_WDT->WDFEED = 0x55; +}