●toko
氏が開発したパルスチェッカのハードウェアを使って単純なパルス巾測定器のプログラムを書いてみた。 使用したPICは同じく16F628Aを使った。 16F628AのAポートはデフォルトでアナログ入力になっている端子があるのでこれをデジタル入出力に設定する必要がある。 MCLRは内部プルアップに設定。 クロックは8MhzのXTALを使う。 したがって1ステップ0.5usecのプログラムとなる。 |
計測はタイマー1を使いプレスケーラーを1:2に設定する事で計測値がそのままパルス巾となる。 タイマー1は16bitタイマーで2バイトのレジスタを使っている。 ストップウォッチの様にスタート・ストップが自由に出来、レジスタの読み書きも自由に出来る。 16bitデータはTMR1HとTMR1Lの専用レジスタでカウントアップされるので、汎用のレジスタに書き写してから5桁の10進数に変換する。 10進数は1桁1バイトで5バイトを使う。 更にASCIIデータに変換する、ASCII変換は30hをORするだけ、 コード表を見ると数値は30hから始まっているから下位4bitを使っている10進数とORすることでASCIIコードになる。 これをアドレス指定してLCDに書き出す。 |
アドレス指定はBit7に1を立て、Bit6からBit0にアドレスを載せてコマンド出力する。 つまり、80hとアドレスをORして出力することになる。 LCDの初期設定はオークス電子のデータシート、SC1602BS*S(OAKS16版)を参照してプログラムする。 16進→10進プログラムはビット単位のローテート命令を使いシフトアップすることで計算するプログラムを参照し、 間接アドレッシングと組み合わせて作成、ネット上で見つけたプログラムを最新のMPLABに合わせて書き直した。 |
他にASCII文字列を連続出力するプログラムやEEROMに書き込まれたASCII文字列を出力するプログラムを 追加した。EEROMへのアクセスは16F84Aと違い、バンク1で行う必要があるので注意が必要。 秋月PICライターAE-PICPGMの拡張機能、PCバッファメモリ修正を使いEEROMのASCIIコードを書き換えれば LCD右下の文字列を変更出来る。 計測は信号がLレベルであることを確認してからHレベルを確認したらタイマー1をスタートさせ、 Lレベルでストップすると言った具合で行う。 LCD表示の上行がパルス巾で、下行がサイクル長です。 写真は自作のサーボチェッカを接続して計測している様子。 約20msecのサイクル長で約1.5msecのパルス巾が出力している様子が確認出来る。 |