Arduino入門:外部割り込み

Arduinoの外部割込みについて解説します。

attachInterrupt

attachInterruptは、外部割り込みが発生時に実行する関数を指定する場合に使用します。なお、既に関数が指定されていた場合は置き換えられます。設定パラメータは次の通りです。

interrupt: 割り込み番号 0または1(*)
function: 割り込み発生時に呼び出す関数
mode: 割り込みを発生させるトリガ

modeは、割込みを発生させるトリガ設定に使用し、次のものから選択します。

LOW ピンがLOWのとき発生
CHANGE ピンの状態が変化したときに発生
RISING ピンの状態がLOWからHIGHに変わったときに発生
FALLING ピンの状態がHIGHからLOWに変わったときに発生

(*)使用可能な割込み番号
ほとんどのArduinoボード:
割り込み0(ピン2)
割り込み1(ピン3)

Arduino Megaボード
割込み0と割り込み1に加えて、
割り込み2(ピン21)
割り込み3(ピン20)
割り込み4(ピン19)
割り込み5(ピン18)

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:attachInterrupt()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

attachInterruptで指定した関数には幾つかの制約がありますので、次の点に注意する必要があります。
・delay関数は機能しない
・millis関数の戻り値が増加しない
・シリアル通信により受信したデータは、失われる可能性がある
・割り当てた関数のなかで値が変化する変数にはvolatileをつけて宣言する必要がある。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:attachInterrupt()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、割込み0(ピン2)を外部割込みのトリガ元として状態の変化に合わせてLEDを点滅させています。

detachInterrupt

detachInterruptは、指定した割り込みを停止します。設定パラメータは次の通りです。

interrupt: 停止したい割り込みの番号

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:detachInterrupt()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

→その他のArduino関連情報

Sponsored Link