DERPS

Dependencies:   BMP280 BNO055_fusion PowerControl mbed

Fork of STRAIGHT_DRIVE_NO_SEP by Antoine Laurens

Committer:
12104404
Date:
Tue May 03 19:17:04 2016 +0000
Revision:
40:9a97c4403c0a
Parent:
23:455f7da3dd7a
WORKING;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
12104404 23:455f7da3dd7a 1 #include "SAFETY.h"
12104404 23:455f7da3dd7a 2
12104404 23:455f7da3dd7a 3 #define USR_POWERDOWN (0x104)
12104404 6:0602a9e8118b 4
12104404 6:0602a9e8118b 5 // "kick" or "feed" the dog - reset the watchdog timer
12104404 6:0602a9e8118b 6 // by writing this required bit pattern
12104404 23:455f7da3dd7a 7 void SAFETY::kick(void)
12104404 6:0602a9e8118b 8 {
12104404 6:0602a9e8118b 9 LPC_WDT->WDFEED = 0xAA;
12104404 6:0602a9e8118b 10 LPC_WDT->WDFEED = 0x55;
12104404 6:0602a9e8118b 11 }
12104404 6:0602a9e8118b 12
12104404 23:455f7da3dd7a 13 void SAFETY::kick(float s)
12104404 6:0602a9e8118b 14 {
12104404 6:0602a9e8118b 15 LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK
12104404 6:0602a9e8118b 16 uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4
12104404 6:0602a9e8118b 17 LPC_WDT->WDTC = s * (float)clk;
12104404 6:0602a9e8118b 18 LPC_WDT->WDMOD = 0x3; // Enabled and Reset
12104404 6:0602a9e8118b 19 kick();
12104404 23:455f7da3dd7a 20 }
12104404 23:455f7da3dd7a 21
12104404 23:455f7da3dd7a 22 int SAFETY::semihost_powerdown()
12104404 23:455f7da3dd7a 23 {
12104404 23:455f7da3dd7a 24 uint32_t arg;
12104404 23:455f7da3dd7a 25 return __semihost(USR_POWERDOWN, &arg);
12104404 23:455f7da3dd7a 26 }
12104404 23:455f7da3dd7a 27
12104404 23:455f7da3dd7a 28 void SAFETY::init(uint32_t brownOutRoutine)
12104404 23:455f7da3dd7a 29 {
12104404 23:455f7da3dd7a 30 //Power Down Ethernet
12104404 23:455f7da3dd7a 31 PHY_PowerDown();
12104404 23:455f7da3dd7a 32 //Power Down USB Chip
12104404 23:455f7da3dd7a 33 semihost_powerdown();
12104404 23:455f7da3dd7a 34 //Setup Brown Out Interrupt
12104404 23:455f7da3dd7a 35 NVIC_SetVector(BOD_IRQn, brownOutRoutine);
12104404 23:455f7da3dd7a 36 //Enable Brown Out Interrupt
12104404 23:455f7da3dd7a 37 NVIC_EnableIRQ(BOD_IRQn);
12104404 6:0602a9e8118b 38 }