#include "power.h" bool powerbutton_released = true; #define DR_REG_RTCCNTL_BASE 0x3ff48000 #define RTC_CNTL_BROWN_OUT_REG (DR_REG_RTCCNTL_BASE + 0xd4) void initPowerOn(void) { //disable brownout //WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector if(digitalRead(PWR_BTN)) { //enable LDO pinMode(PWR_HOLD, OUTPUT); pinMode(PWR_BTN, INPUT); digitalWrite(PWR_HOLD, HIGH); powerbutton_released = false; //dac_sdMode pinMode(DAC_SDMODE, OUTPUT); digitalWrite(DAC_SDMODE, HIGH); //powerstate = poweringOn; //buttonPower.begin(); } else { ESP.deepSleep(10000); } } void initPower(void) { printlnI(F("Power: init")); initPowerOn(); printlnI(F("Power: init: done")); } void handlePower(void) { if(digitalRead(PWR_BTN) && powerbutton_released) { printlnA("poweringDown!"); debugHandle(); while(digitalRead(PWR_BTN)) {} digitalWrite(PWR_HOLD, LOW); delay(1000); ESP.restart(); } else{ powerbutton_released = true; } }