Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork8.3k
Open
Description
Port, board and/or hardware
Raspberry Pi Pico W and Raspberry Pi Pico 2 W
MicroPython version
All versions starting with v1.24.0 (including latest v1.26.0-preview.277.g4bd99260d)
Reproduction
- Copy code below to Pico and name it "main.py"
- Reset the Pico and allow the code to complete (approx 5 seconds). No repl needed as the code writes a log file to the flash storage
- Connect the Pico to the USB port and inspect the file "local.log" on the Pico
Code used to test:
# Test RTC sleep behaviourimport machine, os, timeSLEEP_MS = const(2000)def write_log(s: str) -> None: dt = machine.RTC().datetime() log_text = f"[RTC={dt[4]:02d}:{dt[5]:02d}:{dt[6]:02d} ticks={time.ticks_ms()}] {s}" with open("local.log", "a") as file: file.write(log_text + "\n")write_log(f"Machine = '{os.uname()[4]}'")write_log(f"Version = '{os.uname()[3]}'")time.sleep_ms(SLEEP_MS)write_log(f"After time.sleep_ms({SLEEP_MS})")machine.lightsleep(SLEEP_MS)write_log(f"After machine.lightsleep({SLEEP_MS})")
Expected behaviour
The real time clock should advance by 2 seconds after running 'machine.lightsleep(2000)' like it was on micropython versions up to and including 1.23.0. Example output from1.23.0:
[RTC=00:00:01 ticks=49] Machine = 'Raspberry Pi Pico W with RP2040'[RTC=00:00:01 ticks=54] Version = 'v1.23.0 on 2024-06-02 (GNU 13.2.0 MinSizeRel)'[RTC=00:00:03 ticks=2058] After time.sleep_ms(2000)[RTC=00:00:05 ticks=4065] After safe_sleep(2000) with 0 early wakeups
Observed behaviour
The real time clock does not advance during machine.lightsleep(2000) as shown below running onv1.26.0-preview.277:
[RTC=00:00:01 ticks=36] Machine = 'Raspberry Pi Pico W with RP2040'[RTC=00:00:01 ticks=42] Version = 'v1.26.0-preview.277.g4bd99260d on 2025-06-26 (GNU 14.2.0 MinSizeRel)'[RTC=00:00:03 ticks=2033] After time.sleep_ms(2000)[RTC=00:00:03 ticks=4037] After machine.lightsleep(2000)
Additional Information
While machine.RTC().datetime()does not advance during machine.lightsleep(), however, time.ticks_ms advances as expected.
Code of Conduct
Yes, I agree