Microchip AVR8 用のライブラリを自作する。(TASK)

タスクqrhタイムスライスなしのシンプルなタスクライブラリ。yield()を実行したときだけタスク切替する2プライオリティのラウンドロビン型スケジューリングを行う。休止状態からの起床時に優先度が一時的に高くなる。

【avr8_config.h】

【サンプルコード (Microchip Studio – Arduino風)】

【修正履歴】
2025-12-28
start()の誤動作防止のための判定を追加。start()のsize省略時の動作をメインスタックを刻む方法に変更。

2025-12-25
msgboxなどに使えるavr8_fifo.hを追加。

2025-12-23
一時的にタスクスイッチングを止めるためのdisableAndSaveYields()/restoreYields()を追加。

2025-12-20
コードをよりシンプルにするためタスク生成時のスタック領域のレイアウトを変更。

「旧」
———– stack top (SP)
スタック領域
———–
(TCB)
———– stack bottom

「新」
———– stack top
(TCB)
———– (SP)
スタック領域
———– stack bottom

2025-12-19
メインタスク以外からからスタック領域を刻む方法でタスク生成すると誤動作するため修正。

【ライブラリ】

【関連投稿】
Microchip AVR8 用のライブラリを自作する。(GPIO)
Microchip AVR8 用のライブラリを自作する。(FUSE)
Microchip AVR8 用のライブラリを自作する。(CLOCK)
Microchip AVR8 用のライブラリを自作する。(RESET)
Microchip AVR8 用のライブラリを自作する。(PORTMUX)
Microchip AVR8 用のライブラリを自作する。(USART)
Microchip AVR8 用のライブラリを自作する。(RTC)
Microchip AVR8 用のライブラリを自作する。(TCA)
Microchip AVR8 用のライブラリを自作する。(TCB)
Microchip AVR8 用のライブラリを自作する。(VREF)
Microchip AVR8 用のライブラリを自作する。(DAC)
Microchip AVR8 用のライブラリを自作する。(AC)
Microchip AVR8 用のライブラリを自作する。(ADC)
Microchip AVR8 用のライブラリを自作する。(ZCD)
Microchip AVR8 用のライブラリを自作する。(SPI)
Microchip AVR8 用のライブラリを自作する。(TWI)
Microchip AVR8 用のライブラリを自作する。(MAIN)
Microchip AVR8 用のライブラリを自作する。(CONFIG)
Microchip AVR8 用のライブラリを自作する。(ALARM)
Microchip AVR8 用のライブラリを自作する。(TASK)
Microchip AVR8 用のライブラリを自作する。(DOWNLOAD)