2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« ねずーの近況報告 | トップページ | Coronにタイマー割り込みを追加する(その2) »

2010年3月13日 (土)

Coronにタイマー割り込みを追加する(その1)

ちょこっとCoron:ねずー製作記

Coronにユーザーが利用できるタイマー割り込みがあると便利です。
ねずーの場合だと、ジャイロコンパスの更新やビヘィビアの実行時間の管理などは、定期的にタイマー割り込みで起動するのが定石です。これをCoronで実現しましょう。

Coronには、ユーザーがタイマー割り込みを使えるようなサンプルコードがありません。と、いうことは自分で作るしかありませんね。

Coronではモーターやサーボなどの制御にタイマー割り込みを使っているようです。srcフォルダにmain.cと一緒に入っているstm32f10x_it.cに各種インタラプトのハンドラが収まっています。これを見るとTimer1が空いているようです。これを使いましょうか。モーター制御などの関数を調べてタイマー割り込みの設定をしてみましょう‥

うーん、これは無理です。STM32のマニュアルをしっかり読み込まないと理解不能ですねえ。「ちょこっと」と言う訳には行かないようです。

そこで!他の割り込みに「便乗」することにします。つまり、定期的に割り込んでいるハンドラの中に自前の割り込みサービスを文字通り「割り込ませ」てしまおうと言う訳です。

白羽の矢をたてられた不運な関数はHandler_SysTick()です。ソースコードを読むと時間待ち機能wait_timerで利用されています。wait_timerを呼ぶとカウンタに引数をセット、さらに100usごとに割り込みがかかるようにSysTickをセットし、割り込みごとにHandler_SysTick()でカウンタをカウントダウン、これが0になったらリターンという作業をしています。

また、マニュアルにはないですが、ms単位で時間待ちをするwait_timer_msecもあることがわかりました。これはwait_timerと全く同じで、割り込み周期が1msになっているものです。他にwait_timer_secとwait_timer_usecもありました。これらがマニュアルに無いのは、wait_timerでカバーできるからだと思います。

これは私にとってはラッキーでした。割り込み周期の切り替え方法がわかったからです。

次回は便乗プログラムの製作をしたいと思います。

« ねずーの近況報告 | トップページ | Coronにタイマー割り込みを追加する(その2) »

ちょこっとCoron」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Coronにタイマー割り込みを追加する(その1):

« ねずーの近況報告 | トップページ | Coronにタイマー割り込みを追加する(その2) »