Seeeduino XIAO (ATSAMD21G18) のEICライブラリ

ArduinoのattachInterrupt()によりピン割り込みは可能であるが、さらに、ウェイクアップさせたり、イベント出力することも出来たりする割り込み管理ライブラリを作成してみた。

XIAOは全てのピンが割り込みに対応しているが、D4ピンは、NMIであるため割り込み禁止状態、或いは、他の割り込み実行中であっても割り込みが発生してしまうことに注意。普通の割り込みと同じ感覚で使ってしまうとバグること間違いなしなため特別な事情がないかぎりは使わないほうが良いだろう。割り込みを禁止してコードの命令サイクルだけでタイミングをとるプログラムも当然バグることになる。

なお、ArduinoのattachInterruptとは割り込みハンドラが重複するため排他的にしか利用できない。

【メソッドの概要】

ライブラリの初期化を行う。

ライブラリを終了する。

ピンの割り込み設定を行う。

割り込みを制御する。

ウェイクアップを制御する。

イベント出力を制御する。成功時は、イベント・ジェネレータIDを返し、失敗時はEVENTSYS_GEN_NONEを返す。

【サンプル・スケッチ】

【修正履歴】
2020-05-16
イベント出力も出来ますと言っておきながら、イベント連携に必要なイベント・ジェネレータIDを返していなかったためeventOutput()の戻り値としてイベント・ジェネレータIDを返すように仕様変更。

【ライブラリ】

【参照ライブラリ】
Seeeduino XIAO (ATSAMD21G18) のGPIO速度 (IOBUS.h)
Seeeduino XIAO (ATSAMD21G18) のGCLKライブラリ (gclock.h/gclock.cpp)
Seeeduino XIAO (ATSAMD21G18) のEVSYSライブラリ (eventsys.h/eventsys.cpp)