C-Styleで割り込み

C-Styleで割り込みができるようになった。
ja.wikipedia.org

使い方は新しいマニュアル「C-Style 操作編」に追記されている。
割り込み処理中に実行できないこととして「モータ、PINGサーボモータ、I2C 等の制御」が挙げられているが、割り込みタイミング等の記載はないので調べてみる。


サンプルプログラムは次の通り。
f:id:ohguma:20190223091909p:plain

メインプログラムでは以下を行う。

  • 変数Aの初期化
  • 無条件ループ内での赤1LEDの点滅
  • タイマー1を使った1秒の待機
  • 変数Aの表示(C-Codeブロックで「printf("%ld\r\n", gV[VAR_A]);」)

割り込みで処理されるサププログラムでは

  • 赤3LEDの点灯
  • 変数Aの加算。サブプログラム実行ごとに1づつ増える。
  • タイマー1を使い、0.5秒ごとに赤2LEDの点滅

このプログラムで以下が確認できる。

  • 赤LED3がONになるタイミングが、割り込み処理の初回実行タイミング
  • 割り込み処理とメインプログラムで変数、タイマーがが共有できるか
  • 変数Aを表示することで、1秒間に実行される割り込み処理の回数


変数Aを確認するにはセンサーモニタを使う。
手順は次の通り。

センサモニターのタイトル付近「センサモニタ & 出力チェック」をダブルクリック。
f:id:ohguma:20190223091926p:plain

センサモニターのウィンドウが拡大したら、モニタ開始。
f:id:ohguma:20190223091943p:plain

モニタ開始すると、各CNの値が表示されるので、TJ3BをSTARTさせる。
f:id:ohguma:20190223091959p:plain

変数Aが表示され始める。
f:id:ohguma:20190223092014p:plain


ロボット作りには欠かせない機能だと思う。