From 92fd5511ecb82bf312aeb2324b3f6411675a71d5 Mon Sep 17 00:00:00 2001 From: Dmitry Galenko Date: Wed, 14 Dec 2022 09:36:25 +0100 Subject: [PATCH 1/5] Disable nRF sleep on discharge --- src/Power.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Power.cpp b/src/Power.cpp index d861313b9..c11ac3f0b 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -292,7 +292,9 @@ void Power::readPowerStatus() low_voltage_counter++; DEBUG_MSG("Warning RAK4631 Low voltage counter: %d/10\n", low_voltage_counter); if (low_voltage_counter > 10) - powerFSM.trigger(EVENT_LOW_BATTERY); + // We can't trigger deep sleep on NRF52, it's freezing the board + //powerFSM.trigger(EVENT_LOW_BATTERY); + DEBUG_MSG("Low voltage detected, but not triggering deep sleep\n") } else { low_voltage_counter = 0; } From 46f1cee2a81a5ceaed0a488a5e937a0e502bc931 Mon Sep 17 00:00:00 2001 From: Dmitry Galenko Date: Wed, 14 Dec 2022 10:13:23 +0100 Subject: [PATCH 2/5] Fix missed braces and etc --- src/Power.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index c11ac3f0b..c83a00efe 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -291,10 +291,10 @@ void Power::readPowerStatus() if (batteryLevel->getBattVoltage() < MIN_BAT_MILLIVOLTS) { low_voltage_counter++; DEBUG_MSG("Warning RAK4631 Low voltage counter: %d/10\n", low_voltage_counter); - if (low_voltage_counter > 10) + if (low_voltage_counter > 10) { // We can't trigger deep sleep on NRF52, it's freezing the board //powerFSM.trigger(EVENT_LOW_BATTERY); - DEBUG_MSG("Low voltage detected, but not triggering deep sleep\n") + DEBUG_MSG("Low voltage detected, but not triggering deep sleep\n"); } else { low_voltage_counter = 0; } From d3b3a4c148dc9b907712bd7d5ae1df86d32d700d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Wed, 14 Dec 2022 10:29:45 +0100 Subject: [PATCH 3/5] fix build error --- src/Power.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Power.cpp b/src/Power.cpp index c83a00efe..12645b228 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -295,6 +295,7 @@ void Power::readPowerStatus() // We can't trigger deep sleep on NRF52, it's freezing the board //powerFSM.trigger(EVENT_LOW_BATTERY); DEBUG_MSG("Low voltage detected, but not triggering deep sleep\n"); + } } else { low_voltage_counter = 0; } From d1cc503ca8138a36f1f73d16dda4626c3ac44ab1 Mon Sep 17 00:00:00 2001 From: Dmitry Galenko Date: Wed, 14 Dec 2022 14:36:15 +0100 Subject: [PATCH 4/5] Disable shutdown for non ESP32 boards --- src/Power.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 12645b228..ff6105338 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -568,11 +568,11 @@ bool Power::axpChipInit() } DEBUG_MSG("=======================================================================\n"); - - +// Disable shutdown for non ESP32 boards +#ifdef ARCH_ESP32 // Set PMU shutdown voltage at 2.6V to maximize battery utilization PMU->setSysPowerDownVoltage(2600); - +#endif #ifdef PMU_IRQ From aa19718ba430698f271e7ae7ce98b332451f067a Mon Sep 17 00:00:00 2001 From: Dmitry Galenko Date: Wed, 14 Dec 2022 17:26:55 +0100 Subject: [PATCH 5/5] Change condition for low-voltage killswitch --- src/Power.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index ff6105338..ec86adc94 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -568,8 +568,12 @@ bool Power::axpChipInit() } DEBUG_MSG("=======================================================================\n"); -// Disable shutdown for non ESP32 boards -#ifdef ARCH_ESP32 +// We can safely ignore this approach for most (or all) boards because MCU turned off +// earlier than battery discharged to 2.6V. +// +// Unfortanly for now we can't use this killswitch for RAK4630-based boards because they have a bug with +// battery voltage measurement. Probably it sometimes drops to low values. +#ifndef RAK4630 // Set PMU shutdown voltage at 2.6V to maximize battery utilization PMU->setSysPowerDownVoltage(2600); #endif