コンペア・マッチ・タイマをポーリングで使うテスト cmt_poll 編(み) yamaguchi@cqpub.co.jp ● このプログラムは  Interface 2006年6月号SH-2基板を使ってコンペア・マッチ・タイマ(以下CMT) を使うテスト・プログラムです.CMTはポーリングでも割り込みでも使えるので すが,今回はポーリングを使ってみます.CMTを0.25s周期で動作させ,LEDを点 滅させます.  テスト・プログラムなので,直接何かの役に立つわけではありません. ● 使い方  FDTでcmt_poll.motを書き込みます.ジャンパを外した後にリセットして起動 します.LEDが点滅すればOKです. ● コンパイル方法  開発環境としてInterface 2006年7月号特集第4章掲載のGCCが必要です.イン ストールは該当記事を参照してください.また,/usr/local/sh-tools/binにパ スを通してください(p.80に方法がある).パスを通さない場合はMakefileを修正 してください.  makeするとダウンロード用バイナリ・ファイルcmt_poll.motが生成されます.  ソース・ファイルの文字コードはEUCになっているので,編集をする場合は注 意してください. ● プログラムについて  CMTを使ってみるテストです. ▼モジュール・スタンバイ・コントロール・レジスタ  CMTを使う前にモジュール・スタンバイ・コントロール・レジスタでCMTのス タンバイ・モードを解除する必要があります. ▼CMTの各レジスタの設定値  キーとなるのはCMCORの設定でしょう.今回の基板ではPφ=24MHzなので,この 値で計算します.  求める周期が0.25の場合, ・まず,24MHzのクロック1周期は1/24MHz = 4.17e-08 (4.17×10の-8乗) ・これを128分周する(Pφ/128)と,4.17e-08 * 128 = 5.34e-06 ・5.34e-06を何回数えれば0.25秒になるのかを考えると,0.25/5.34e-06≒46875 となり,これから1を引いた数値をCMCSR_0に設定する となります. ▼ポーリングについて  CMCNT(初期値0)は,PφとCMCORで指定した周期ごとに1ずつ加算され,CMCORで 指定した値と同じになると(1)割り込みが発生する,(2)CMCSRのCMTが1になる, のどちらかが発生します.今回は(2)の方法なので,CMCSRを監視して1になるま でwhile文ループで待っています.このような方法をポーリングといいます. ▼その他 ・本プログラムを作成するにあたり,みすみロボット研究所さんの5/12のtest2. cが参考になりました.ありがとうございます.下記URLからたどれます. http://misumi.sakura.ne.jp/blog/archives/2006/05/ledinterface.html ・Interface 2006年7月号掲載の山際伸一氏作成のpractice2を参考に(というか ベースに)しました.ありがとうございます. ・make時に/usr/local/sh-tools/bin/sh-elf-gcc〜と長々と表示されるのが気に なったので,パス名部分を取ってしまいました. ・make cleanでバックアップ・ファイルも削除するようにしました. ● 保証事項  本ソフトウェアは無保証とさせていただきます.