QUERY · ISSUE
Lightsleep with sleep period set to a value never waking
bugport-rp2
I'm currently running a program on a Pico W where I am trying to lightsleep(5000). Unfortunately, the program seems to never wake up again after this call. Using a time.sleep instead and the Pico does wake up as expected, but of course with much more power draw.
I am running this nightly: https://micropython.org/resources/firmware/rp2-pico-w-20220729-unstable-v1.19.1-223-g963e599ec.uf2
CANDIDATE · PULL REQUEST
rp2/modmachine: Implement lightsleep() with optional sleep period.
port-rp2
This gets basic machine.lightsleep([n]) working on the rp2 port.
It supports:
- Calling
lightsleepwithout a specified period, in which case it uses xosc dormant mode. There's currently no way to wake it up from this state, unless you write to raw registers to enable a GPIO wake up source. - Calling
lightsleepwith a periodnin milliseconds. This period must be less than about 72 minutes and uses timer alarm3 to wake it up.
The RTC continues to run during lightsleep, but other peripherals have their clock turned off during the sleep.
It doesn't yet support:
- Longer periods than 72 minutes (could use the RTC for this).
- Wake up from GPIO IRQ.
Fixes issue #8770.