Skip to content

runtime: allow interrupts to wake the scheduler #1214

@niaow

Description

@niaow

In order for interrupt-based wake-ups (as introduced by #1142) to work concurrently with time.Sleep, we need to make some per-board changes.

Previously, sleepTicks (the function used as an interface between the scheduler and the hardware timer) was defined to block until the timer completed, since there was nothing else to do. Now we need to change this so that it bails out when an interrupt wakes the chip. I started with the 2 main chip types I have (atsamd21 and atsamd51). This change is trivial, but requires testing on all supported platforms.

My atsamd51 fix can be used as a reference for how this works: https://github.com/tinygo-org/tinygo/pull/1197/files

If you want to try to port over the fix to a board class, comment on this thread to claim it so we don't duplicate work.

Platforms:

  • wasm
  • arm7tdmi (GBA) (no actual timer implemented yet so I guess this is done)
  • avr
  • stm32f103xx
  • stm32f407
  • nrf
  • fe310
  • atsamd21
  • atsamd51
  • mk66f18 (new board in Teensy 3.6 #863)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions