From 2dfe80221a672bc524d8d24d3dbbdbd5e7261d4e Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Mon, 13 Jun 2011 23:17:09 +0200 Subject: [PATCH] Add VoltageCheck to shutdown on low power --- Makefile | 2 +- basic/basic.h | 3 +++ basic/voltage.c | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 basic/voltage.c diff --git a/Makefile b/Makefile index 46000d0..54652e2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ OBJS = main.o VPATH += OBJS += -OBJS += basic/basic.o basic/reinvoke_isp.o basic/delayms.o +OBJS += basic/basic.o basic/reinvoke_isp.o basic/delayms.o basic/voltage.o OBJS += eeprom/eeprom.o LIBS += core/libcore.a lcd/liblcd.a modules/libmodules.a diff --git a/basic/basic.h b/basic/basic.h index c6ba32e..73cf337 100644 --- a/basic/basic.h +++ b/basic/basic.h @@ -126,4 +126,7 @@ void EnterISP(void); // delayms.c void delayms(uint32_t ms); +// voltage.c +void VoltageCheck(void); + #endif diff --git a/basic/voltage.c b/basic/voltage.c new file mode 100644 index 0000000..0732e26 --- /dev/null +++ b/basic/voltage.c @@ -0,0 +1,20 @@ +#include + +#include "basic/basic.h" + + +void VoltageCheck(void){ + uint32_t results; + + results = adcRead(1); + results *= 10560; + results /= 1024; + + if( results < 3500 ){ + gpioSetValue (RB_PWR_GOOD, 0); + gpioSetValue (RB_LCD_BL, 0); + SCB_SCR |= SCB_SCR_SLEEPDEEP; + PMU_PMUCTRL = PMU_PMUCTRL_DPDEN_DEEPPOWERDOWN; + __asm volatile ("WFI"); + }; +};