Coronにタイマー割り込みを追加する(その3)
ちょこっとCoron:ねずー製作記
今回改造したファイルは下記の3ファイルです。修正箇所には「花岡ちゃん」のコメントを付けてあるので、ダウンロードしたファイルを検索してください。簡単な改造なので仕組みはすぐわかると思います。
stm32f10x_it.c ユーザー割り込みのハンドラHandler_MyTick()の呼び出しを追加
coron_conf.h Handler_MyTick()のextern宣言を追加
main.c Handler_MyTick()の本体を追加、デモ用main関数の作成
花岡ちゃん版のフレームワークを使って、DCモーターとサーボのコントロールを独立に行うテストをしてみました。
DCモーターのコントロールは、Coronのサンプルコードをコピペしてmain関数の無限ループで行います。加減速を繰り返すプログラムです。これ↓がコードです。
サンプルコードからの変更で重要なのは、wait_timerをwait_timer_msにしたことです。これは前にも書いたように、割り込み周期を1msに設定したままに保ちたいからです。
RCサーボの制御はタイマー割り込みで行います。これ↓がコードです。
500ms周期でサーボを動かし続けます。いうまでもないことですが、タイマー割り込みハンドラの中で時間を食う処理は御法度です。1msごとに割り込まれる訳ですから、数百usくらいが上限です。これを意識しながらプログラムすれば、意外と複雑な処理も入るものです。
このプログラムを実行した時の動画がこれです。車輪の回転とサーボの動作がそれぞれ固有の周期で動いていることがわかると思います。(わかり難いですか?音を聞いてもらうといいかもです。)
« Coronにタイマー割り込みを追加する(その2) | トップページ | TA8428Kのブレーキを改善する »
「ちょこっとCoron」カテゴリの記事
- SoftModem用インターフェイスのまとめ(2010.10.05)
- iRover走行テスト!ジャイロはやっぱり振動に弱い(2010.07.29)
- iRoverにもCoron搭載(2010.07.27)
コメント