diff options
| author | Christian Walther <cwalther@gmx.ch> | 2022-05-26 16:29:26 +0200 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2022-06-23 17:31:01 +1000 |
| commit | ba21f76f89d05150b7d6ec2dfac45476ffc4866c (patch) | |
| tree | b1f489cdb2348bb06640f819808ff677c991730f /ports/esp32/modesp32.c | |
| parent | cf550ad9d1f15d862d7e9fb3526cd57e1ea69057 (diff) | |
esp32/modesp32: Add wake_on_ulp() so ULP can wake CPU from deepsleep.
Add esp32.wake_on_ulp() to give access to esp_sleep_enable_ulp_wakeup(),
which is needed to allow the ULP co-processor to wake the main CPU from
deep sleep.
Diffstat (limited to 'ports/esp32/modesp32.c')
| -rw-r--r-- | ports/esp32/modesp32.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ports/esp32/modesp32.c b/ports/esp32/modesp32.c index 0dbd7efda..017db36e2 100644 --- a/ports/esp32/modesp32.c +++ b/ports/esp32/modesp32.c @@ -131,6 +131,15 @@ STATIC mp_obj_t esp32_wake_on_ext1(size_t n_args, const mp_obj_t *pos_args, mp_m } STATIC MP_DEFINE_CONST_FUN_OBJ_KW(esp32_wake_on_ext1_obj, 0, esp32_wake_on_ext1); +STATIC mp_obj_t esp32_wake_on_ulp(const mp_obj_t wake) { + if (machine_rtc_config.ext0_pin != -1) { + mp_raise_ValueError(MP_ERROR_TEXT("no resources")); + } + machine_rtc_config.wake_on_ulp = mp_obj_is_true(wake); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(esp32_wake_on_ulp_obj, esp32_wake_on_ulp); + STATIC mp_obj_t esp32_gpio_deep_sleep_hold(const mp_obj_t enable) { if (mp_obj_is_true(enable)) { gpio_deep_sleep_hold_en(); @@ -197,6 +206,7 @@ STATIC const mp_rom_map_elem_t esp32_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_wake_on_touch), MP_ROM_PTR(&esp32_wake_on_touch_obj) }, { MP_ROM_QSTR(MP_QSTR_wake_on_ext0), MP_ROM_PTR(&esp32_wake_on_ext0_obj) }, { MP_ROM_QSTR(MP_QSTR_wake_on_ext1), MP_ROM_PTR(&esp32_wake_on_ext1_obj) }, + { MP_ROM_QSTR(MP_QSTR_wake_on_ulp), MP_ROM_PTR(&esp32_wake_on_ulp_obj) }, { MP_ROM_QSTR(MP_QSTR_gpio_deep_sleep_hold), MP_ROM_PTR(&esp32_gpio_deep_sleep_hold_obj) }, #if CONFIG_IDF_TARGET_ESP32 { MP_ROM_QSTR(MP_QSTR_raw_temperature), MP_ROM_PTR(&esp32_raw_temperature_obj) }, |
