C-Styleで割り込み
C-Styleで割り込みができるようになった。
ja.wikipedia.org
使い方は新しいマニュアル「C-Style 操作編」に追記されている。
割り込み処理中に実行できないこととして「モータ、PING、サーボモータ、I2C 等の制御」が挙げられているが、割り込みタイミング等の記載はないので調べてみる。
サンプルプログラムは次の通り。
メインプログラムでは以下を行う。
- 変数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を確認するにはセンサーモニタを使う。
手順は次の通り。
センサモニターのタイトル付近「センサモニタ & 出力チェック」をダブルクリック。
センサモニターのウィンドウが拡大したら、モニタ開始。
モニタ開始すると、各CNの値が表示されるので、TJ3BをSTARTさせる。
変数Aが表示され始める。
ロボット作りには欠かせない機能だと思う。