Update MotionMote.ino

This commit is contained in:
Felix Rusu 2020-11-18 09:54:55 -05:00
parent 750796debd
commit afc6e71968
1 changed files with 60 additions and 1 deletions

View File

@ -225,7 +225,7 @@ void checkBattery()
void sleep(uint32_t sleepTime) {
DEBUGFlush();
if (sleepTime < 262) { //sleeps just the MCU, using WDT (radio is not touched)
LowPower.longPowerDown(sleepTime);
longPowerDown(sleepTime);
} else { //sleeps MCU using the radio timer - should not be used if radio needs to be in RX mode!
uint32_t freq = radio.getFrequency();
if (sleepTime%262 && sleepTime > 262*2) {
@ -254,3 +254,62 @@ void listenModeSleep(uint16_t millisInterval) {
LowPower.powerDown( SLEEP_FOREVER, ADC_OFF, BOD_OFF );
radio.endListenModeSleep();
}
void longPowerDown(uint32_t sleepTime) {
do {
if (sleepTime > 8000)
{
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
sleepTime-=8000;
}
else if (sleepTime > 4000)
{
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF);
sleepTime-=4000;
}
else if (sleepTime > 2000)
{
LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
sleepTime-=2000;
}
else if (sleepTime > 1000)
{
LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);
sleepTime-=1000;
}
else if (sleepTime > 512)
{
LowPower.powerDown(SLEEP_500MS, ADC_OFF, BOD_OFF);
sleepTime-=512;
}
else if (sleepTime > 256)
{
LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF);
sleepTime-=256;
}
else if (sleepTime > 128)
{
LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF);
sleepTime-=128;
}
else if (sleepTime > 64)
{
LowPower.powerDown(SLEEP_60MS, ADC_OFF, BOD_OFF);
sleepTime-=64;
}
else if (sleepTime > 32)
{
LowPower.powerDown(SLEEP_30MS, ADC_OFF, BOD_OFF);
sleepTime-=32;
}
else if (sleepTime > 16)
{
LowPower.powerDown(SLEEP_15MS, ADC_OFF, BOD_OFF);
sleepTime-=16;
}
else
{
sleepTime=0;
}
} while(sleepTime);
}