@@ -215,6 +215,7 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob
215
215
if (esp_sleep_enable_ext1_wakeup (high_alarms , ESP_EXT1_WAKEUP_ANY_HIGH ) != ESP_OK ) {
216
216
mp_raise_ValueError (translate ("Can only alarm on RTC IO from deep sleep." ));
217
217
}
218
+ esp_sleep_pd_config (ESP_PD_DOMAIN_RTC_PERIPH , ESP_PD_OPTION_ON );
218
219
}
219
220
size_t low_pins [2 ];
220
221
size_t j = 0 ;
@@ -231,6 +232,7 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob
231
232
if (esp_sleep_enable_ext1_wakeup (1ull << low_pins [1 ], ESP_EXT1_WAKEUP_ALL_LOW ) != ESP_OK ) {
232
233
mp_raise_ValueError (translate ("Can only alarm on RTC IO from deep sleep." ));
233
234
}
235
+ esp_sleep_pd_config (ESP_PD_DOMAIN_RTC_PERIPH , ESP_PD_OPTION_ON );
234
236
}
235
237
if (low_count > 0 ) {
236
238
if (esp_sleep_enable_ext0_wakeup (low_pins [0 ], 0 ) != ESP_OK ) {
@@ -273,16 +275,14 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob
273
275
PIN_FUNC_SELECT (GPIO_PIN_MUX_REG [i ], PIN_FUNC_GPIO );
274
276
if (pull ) {
275
277
gpio_set_pull_mode (i , pull_mode );
276
- size_t j = 0 ;
277
- while (gpio_get_level (i ) == false) {
278
- j ++ ;
279
- }
280
278
}
281
279
never_reset_pin_number (i );
282
280
// Sets interrupt type and wakeup bits.
283
281
gpio_wakeup_enable (i , interrupt_mode );
284
282
gpio_intr_enable (i );
285
283
}
284
+ // Wait for any pulls to settle.
285
+ mp_hal_delay_ms (50 );
286
286
}
287
287
288
288
0 commit comments