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年05月16日 更新
  1. ノートPCもキーボードも丸ごと運べる! 収納付き膝上テーブル「デスクエニウェア2」を試す (2026年05月15日)
  2. 持ち運べる21型相当のディスプレイ! 14型×2画面でコスパに優れるアイ・オーのモバイルディスプレイ「LCD-YC1412DX」を試す (2026年05月14日)
  3. TVにも「Gemini」搭載の時代へ TCLが量子ドット&Mini LED採用の2026年モデルを発表 (2026年05月14日)
  4. 8TB SSDがまさかの50万円超え!? 連休明けのアキバで目立つストレージ高騰と注目の特価マザー (2026年05月16日)
  5. デルが厚さ約15.3mmの新型ノートPC「Dell 14S/16S」を発表 国内ではCore Ultra搭載モデルが発売済み (2026年05月14日)
  6. FIIO、円形パネルを備えたエントリー仕様のデジタルオーディオプレーヤー (2026年05月15日)
  7. エントリークラスの15.3型ゲーミングノートPC「Alienware 15」発表!  Intel/AMDモデルを用意し国内は5月15日発売 (2026年05月14日)
  8. スウェーデンのファンドが「価格.com」「食べログ」のカカクコムを約5900億円で買収へ AI戦略を加速 (2026年05月13日)
  9. カバンに収まるコンパクトな「Ewin 折りたたみ式ワイヤレスキーボード」が32%オフの4746円に (2026年05月13日)
  10. ノートPCの作業領域を劇的に広げる「15.6型 折りたたみトリプルディスプレイ」がタイムセールで8万982円に (2026年05月15日)
最新トピックスPR

過去記事カレンダー

2026年