AVR用に作成したライブラリを他のMCUにも対応してみた。タスク・ライブラリがCPU非依存なためタイマーと割り込み制御のみの対応で済むので対応は簡単だ。
【Arduinoボード対応状況】
AVR … UNO, LEONARDO, MICRO, Digispark,…
ATSAMD21 … SEEED_XIAO_M0
nRF52840 … SEEED_XIAO_NRF52840
RP2040 … SEEED_XIAO_RP2040, WIO_RP2040_MINI_DEV_BOARD, Raspberry Pi Pico
ESP32 … M5Stick-C
ESP8266 … タイマー1を使うためPWM機能を使うと誤動作することに注意。ボード対応なし。
STM32 … BluePill, BlackPill
※シングルコア対応。FreeRTOSなどのRTOS環境でも動作する。
※対応済みのCPUであれば他のボードでも利用は可能。ビルトインLEDのセットアップがないだけだ。
RP2040/nRF52840などのMBEDベースやESP8266/ESP32ではRTOSも利用できるが、もっと手軽にマルチタスクしたい人向けにはこちらのライブラリのほうがシンプルで使いやすいと思う。たぶん。
特徴としては、協調型マルチタスク、タスク数無制限、タイマー数無制限、タイマー粒度がマイクロ秒などがある。
機能の詳細については下記投稿を参照してほしい。
Micro Core Library for AVR (Arduino)
ちなみに数十年前は8ビットCPUのコンパイラーですら何十万も支払って購入するしかなかったが、今は、無償のArduinoという開発環境一つだけで多くのMPUの開発が出来るようになるなんて本当に良い世の中になったもんだと思う。これはあきらかにコンパイラーやOS等の基本ソフトの開発をしてくれているFSFを筆頭とするフリーソフトウェア開発者の努力の結果であると言える。より良い世界のために貢献してくれる勇者がもっと増えてくれることを願いたい。
【Download】
2022-07-29
ポーリング対応にミスがあったので修正。
2022-07-24
AlarmClassのポーリング対応を行った。この対応によりハードウェアタイマーが使えなくても全機能が動作するようになった。但し、タイムアップ・タイミングにはかなりのズレが生じることに注意。
【Update】
2022-07-8
STM32を追加。タイマー処理が下記ボードライブラリに依存しているためその他のボードでは動作しないことに注意。
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
STM32 MCU based boards
by STMicroelectronics
2022-07-04
ESP8266を追加。タイマー0を使いタスクをスリープさせると何故かハングッてしまう。しょうがないのでタイマー1を使うことに...
2022-07-03
nRF52840(SEEED_XIAO_NRF52840)とESP32(M5Stick-C)を追加。