63 lines
1.1 KiB
C++
63 lines
1.1 KiB
C++
#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;
|
|
}
|
|
}
|
|
|