Bug: Deep Sleep Wake-up Issue on ESP32-C3
Port, board and/or hardware
ESP32 PORT, ESP32-C3 Super Mini
MicroPython version
Micropython 1.24.1
Reproduction
Title: Bug: Deep Sleep Wake-up Issue on ESP32-C3
Description:
I am experiencing an issue with the deep sleep wake-up functionality on the ESP32-C3 using MicroPython. The device does not wake up as expected when a GPIO pin changes from low to high.
Steps to Reproduce:
- Flash the latest version of MicroPython on an ESP32-C3.
- Use the following code to enter deep sleep and wake up on a GPIO pin change:
import machine import esp32 import time WAKEUP_GPIO_PIN = 0 LED_GPIO_PIN = 8 pin = machine.Pin(WAKEUP_GPIO_PIN, machine.Pin.IN, machine.Pin.PULL_UP) esp32.wake_on_ext0(pin=pin, level=esp32.WAKEUP_ANY_HIGH) wake_reason = machine.wake_reason() if wake_reason == machine.WAKEUP_EXT0: print("Woke up from deep sleep") machine.Pin(LED_GPIO_PIN, machine.Pin.OUT).value(1) time.sleep(1) machine.Pin(LED_GPIO_PIN, machine.Pin.OUT).value(0) else: print("Entering deep sleep") time.sleep(2) machine.deepsleep()
Expected behaviour
Wake up with change on GPIO0.
Observed behaviour
Does not wake up.
Additional Information
No, I've provided everything above.
Code of Conduct
Yes, I agree
esp32 : fix for #7158 - machine.deepsleep() not behaving as expected
This PR fixes machine.deepsleep() waking up the board after a delay d, for example when a machine.lightsleep(d) call was issued previously. This is because previous wake-sources remain active, whereas machine.deepsleep() shall put the board to sleep forever as per the
machine.deepsleep documentation
See #7158 for more details on : issue description, reproduction steps and fix implementation.