Skip to content

ESP32-C3 PinAlarm not firing in light_sleep on level high #11680

Open

Description

@davidmcnabnz

CircuitPython version and board name

Adafruit CircuitPython 10.3.1 on 2026-09-14; Maker Go ESP32C3 Supermini with ESP32-C3
Board ID:makergo_esp32c3_supermini

Code/REPL

...
wake = alarm.light_sleep_until_alarms(
    alarm.time.TimeAlarm(monotonic_time=deadline),
    alarm.pin.PinAlarm(
          pin=board.IO21,
            value=True,
            pull=False,
        )
    )

Behavior

When the (active-low) button is not pressed, I add the alarm:

alarm.pin.PinAlarm(
          pin=board.IO21,
            value=False,
            pull=True,
        )

Then the light_sleep returns immediately with the PinAlarm as soon as the button is pressed.

But after that, I call the light sleep again, this time adding:

alarm.pin.PinAlarm(
          pin=board.IO21,
            value=True,
            pull=False,
        )

But this time, releasing the button has no effect, and the sleep returns later with a TimerAlarm once the time_monotonic deadline is reached.

I have a workaround: call the light_sleep 3 times with very short deadlines (time_monotonic 10ms in future). After this, I call light_sleep with a much longer timer expiry, and releasing the button has immediate effect.

The electrical wiring has the button pulling the pin to earth, with no other components such as pull-ups.

This issue is asymmetrical, because a PinAlarm waiting for a logic low (button pressed) always returns instantly from the sleep. It's just waiting for logic high that's giving me problems.

Fortunately the workaround has proven effective. But I'd like to find a cleaner solution.

For context, I'm executing the light_sleep in a scheduler run loop, where the scheduler is feeding off a jobs queue, executing jobs that are due to run, and otherwise light_sleeping until the next job is due.

Description

No response

Additional information

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions