Arduinoのタイマー割り込み

本格的な組み込みプログラムではタイマー割り込みが必須になります。

Arduinoは割り込みをサポートしていて、ピンの信号変化で割り込み関数を呼び出すことが出来ますが、タイマー割り込みの扱いはどうなっているのか、

Arduino(1.8.9)でタイマー割り込みについて調べてみました。

Arduinoではタイマー割り込みの使用は非推奨

Arduinoユーザーにも、一定時間ごとに割り込み関数を呼び出すタイマー割り込みを使いたいと思う人はいて、Webを検索するとタイマー割り込み関連の記事が見つかりますが、古い情報が多いようです。
高校生ものづくりコンテストのQandAにも割り込み関連の質問がありました。

【質問内容】
Arduinoの使用している。TimerOne.hというヘッダファイルは
公式に認められているか?
【 回 答 】
持ち込みヘッダファイルについてはあくまでもレジスタ・ポート端子の定義、割込み(禁止・許
可)の定義について許可をします。
TimerOne.h、MsTimer2.h等については認めません。

第19回高校生ものづくりコンテスト全国大会(近畿大会)課題の質問・回答

タイマー割り込みをサポートするヘッダファイルTimerOne.h、 MsTimer2.hは今のArduinoでは廃止となっていて、タイマー割り込みの使用は非推奨になっているようです。

高校生ものづくりコンテストに持ち込み可能なヘッダファイル

高校生ものづくりコンテストのルールでは、次のように簡単なヘッダファイルの持ち込みは認められています。

(b)ヘッダファイル mono_con.h(制御用マイコンのレジスタ,ポート定義,割込み定義
を含む ヘッダファイル) の出力リスト(使用しない場合は提出しなくても良い)

しかし、TimerOne.h等にはレジスタ、ポート定義、割り込み定義以外の情報が含まれていると判断されたのでしょう。

ただ、開発環境として使用を認められているArduino IDEにはもっと複雑な情報を含むヘッダファイルが多く入っていますし、TimerOne.hが入っていた古いバージョンを使えばOKということになります。

MPLAB-Xを使えば、MCCで定義すると自動的に割り込み関連の関数やヘッダーが生成されます。
それを考えるとArduinoのTimerOne.hを認めないのは不公平に思えますが、決められたルールで運用する以上、やむを得ないことなのでしょう。

マイコンカーラリーのように、特定メーカーの特定CPUボードしか認めないことにすれば、厳密に公平な運用が可能となりますが、特定メーカーへの利益供与につながりますし、CPUと開発環境の革新が著しいこの分野でツールを固定することは役に立たないプログラミング教育に繋がります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)