diff options
| author | Dan Halbert <halbert@halwitz.org> | 2021-02-08 12:40:20 -0500 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2021-02-08 12:40:20 -0500 |
| commit | c3a1bd8f137814b1fa3519ab0a52f0dffa2f696f (patch) | |
| tree | 984f1b81349ccddfed283814807b86ebbfb3a909 | |
| parent | 482e58307756bfec3cb7d4c0c8d73ffae0ec228d (diff) | |
turn off brownout before deep sleep
| -rw-r--r-- | ports/esp32s2/common-hal/alarm/__init__.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ports/esp32s2/common-hal/alarm/__init__.c b/ports/esp32s2/common-hal/alarm/__init__.c index 1cec5d4ae..be435e210 100644 --- a/ports/esp32s2/common-hal/alarm/__init__.c +++ b/ports/esp32s2/common-hal/alarm/__init__.c @@ -150,6 +150,14 @@ void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *ala void NORETURN alarm_enter_deep_sleep(void) { alarm_pin_pinalarm_prepare_for_deep_sleep(); alarm_touch_touchalarm_prepare_for_deep_sleep(); + + // Disable brownout detection, which appears to be triggered sometimes when + // waking from deep sleep. + // See https://www.esp32.com/viewtopic.php?f=13&t=19208#p71084 + // and https://github.com/adafruit/circuitpython/issues/4025#issuecomment-771027606 + // TODO: We can remove this workaround when ESP-IDF handles this. + CLEAR_PERI_REG_MASK(RTC_CNTL_BROWN_OUT_REG, RTC_CNTL_BROWN_OUT_RST_ENA); + // The ESP-IDF caches the deep sleep settings and applies them before sleep. // We don't need to worry about resetting them in the interim. esp_deep_sleep_start(); |
