PICでもっと遊ぶその1「ラジコンサーボを自由自在に動かす」夏でも楽しい工作教室(3/3 ページ)

» 2005年07月08日 14時11分 公開
[小林哲雄,ITmedia]
前のページへ 1|2|3       

割り込むには割り込みルーチンが必要なのだ

 割り込みを使う以上、割り込みルーチンも書く必要がある。PCはPICが自動的に退避してくれるが、そのほかは自前で退避する必要がある。とくにアキュムレータとステータスフラグは必ず退避する必要がある(そうしないと戻り先のプログラムがおかしくなる)。これは割り込みの説明のところにサンプルルーチンがあるので、これをそのまま使うするのが簡単だ。少々面倒くさいことをやっているのはフラグを保持して退避するためらしい。もう一つ、割り込みルーチンの最後はRETFIE命令を使う。これで割り込みを終了したという証だ。

MOVWF WBUF ; レジスタ類退避
SWAPF STATUS,W
BCF STATUS,RP0
MOVWF SBUF
;
(割り込みの作業)
;
SWAPF SBUF,W ; レジスタ類復帰
MOVWF STATUS
SWAPF WBUF,F
SWAPF WBUF,W
RETFIE

 割り込みは本業に影響を与えないようにフラグとWレジスタは退避しておく必要がある。今回の例ではTMR0が割り込み要因で冒頭で説明した「電話番号表示」に相当するINTCONの第2ビット(T0IF)が1になっている。これは割り込みルーチン内でクリアする必要がある。割り込みルーチンの最後は「RETFIE」命令を使う。

 今回の割り込みルーチンはサーボをコントロールするパルスを出すルーチンだ(これもタイマーで管理するとカッコよさそうだが、面倒なのでプログラムウェイトにする)。冒頭で説明したように1.5マイクロ秒を中心に±500マイクロ秒のパルスを作る。128を中心にして±127(つまり1〜255)の入力データに応じたパルスを作るのがよさそうだ。0が残るがこれは無制御にしてしまおう。127分割で500マイクロ秒にすると計算が大変なので1カウント4マイクロ秒とすると±508マイクロ秒となる。つまり992〜2008マイクロ秒のパルスができる。規格外といわれそうだがこのぐらいは「気にしない」か有効範囲を3〜253にすればよい。

 整理すると、入力データが0ならパルス無発生、1〜253の場合はまず988マイクロ秒のパルスを作ってから、さらに入力データ×4マイクロ秒のループを作ってパルス幅を広げる、というプログラムを書けば………おっと、その前に次回説明する予定の「割り込みに備えた」タイマーの再初期化と割り込みフラグを0に戻し、最後に割り込み再許可をさせる必要がある。

 今回のプログラムは各種の初期化のみだけなので、回路を組んでもサーボはピクリともせず、見た目的にはまったくつまらないので、検証作業はシミュレータ動作だけで済ませてしまおう。割り込みルーチンの冒頭にブレークポイントを設定し、実行させて停止するときの実行時間を監視すれば「大体20ミリ秒毎」に割り込みがかかっていることがわかる(サンプルプログラムを見ると分かるが0の処理は今回サボってやってないのであしからず)。

 該当するビットを立てる部分と下げる部分にブレークポイントを設定して実行し、停止したときの時間の引き算をおこなうと問題なく動作していることが分かる。さらにワークレジスタを書き換えてパルス幅を変えてみるのもテストしてみるとよい(テストプログラムにはこのためのコメントが入っている)。

 ということで、今回は割り込みをある程度理解したところで、次回、さらにプログラムを進めていく。

ブレークポイントを設定してデバッガを動かす。大体20ms毎の割り込みが発生しているようだ。
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年08月15日 更新
  1. 「Pixel Watch 5」が8月20日に発売へ 前モデルから最大20%の高速化、価格は6万2800円から (2026年08月13日)
  2. 映画もゲームもPC画面も大迫力で楽しめる! Google TV搭載のRGBレーザー方式4Kプロジェクター「AWOL Valerion Pro 2」を試す (2026年08月14日)
  3. 劇的大進化した「Insta360 X6」 8K/50fpsや大型センサー、内蔵ストレージ搭載、X5から買い替える価値はある? (2026年08月14日)
  4. タッチパッドを手前に引き出して使える「Ewin ワイヤレス折りたたみキーボード」がセールで24%オフの5319円に (2026年08月12日)
  5. グラボ高騰が止まらない! RTX 5090は100万円超えの可能性も、「組むなら8月中」の声 (2026年08月15日)
  6. シャープのヘルスケア特化スマートウォッチ「からだメイト Watch」を試す 装着するだけでカロリー&水分補給を自動記録 (2026年08月10日)
  7. Googleの折りたたみスマホ「Pixel 11 Pro Fold」は何が変わった!? 最大14万7600円お得になるキャンペーンも (2026年08月12日)
  8. GMKtec、7.2cm四方のカラフルな超小型ミニPC「G5S」を発売 あえて少し古いCPUを採用して価格を抑制 「桜ピンク」も後日追加 (2026年08月14日)
  9. 3K非光沢OLEDが秀逸! 最新Ryzen AI搭載の14型モバイル「EliteBook X G2a 14 AI PC」を試す (2026年08月13日)
  10. ノートPCやミニPCにGPUを外付けできる! OCuLinkとUSB4 V2(Thunderbolt 5)両対応のeGPUドック「MINISFORUM DEG2」が22%オフの3万5994円に (2026年08月12日)
最新トピックスPR

過去記事カレンダー