mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
e0365e0bf9
Fixes #5745 For AVR based boards, three defines must be defined AVR_CONTEXT_SWAP_INIT, AVR_CONTEXT_SWAP_INTERRUPT_VECT, and AVR_CONTEXT_SWAP_TRIGGER. These defines are used to trigger a software interrupt used for context switching. When AVR_CONTEXT_SWAP_INTERRUPT_VECT is handled, the scheduler is run and a context swap will happen if necessary, with the resulting thread starting following the reti instruction. This results in threads running at normal priority instead of at interrupt priority. Atmega devices do provide a pure software interrupt. The method used here for waspmote-pro and arduino-mega2560 is to use pin change interrupts, set the pin to act as an output, and toggle the value to simulate a software interrupt. The main limitation here is that a physical pin is now occupied and must be defined for each board supported by RIOT. On the plus side, it provides an easy method for detecting context swaps with an oscilloscope. |
||
---|---|---|
.. | ||
dist | ||
include | ||
board.c | ||
Makefile | ||
Makefile.features | ||
Makefile.include |