2023/03/18(土)秋月電子 PIC周波数カウンタ ちょっと改造

PIC

PIC16C71使用 液晶表示 周波数カウンタ キット 16文字x2行

部屋の中から約20年ほど前に作った周波数カウンターが出てきました。これは秋月電子で購入した液晶表示PIC周波数カウンターをケースに入れたもので、その後Ver.2となった物が今でも回路図集としてドキュメントが残っています。
私の物は10MHzクリスタルを使用している初期バージョンの物で基板上のトリマーコンデンサを回しても10MHzには追い込めませんでした。Ver.2ではTCXO使用で調整不要になっています。その上バックライトが付いていないので液晶画面が少し見づらいです。
なによりも、液晶に表示されるチャネル表示の文字と周波数表示の数字が繋がって見えるので久しぶりに使うと見間違いを起こします。Ver2ではこの表示がExtA,ExtBに変更になりました。
IMG_1274.JPG

Ext2 1999.52xxKHz と表示中の液晶画面

これは簡単に修正できるのでは?と思い、使われているチップ(PIC16C71)をライターで読みだし、ダンプするとそれらしい文字列が発見出来ました。ならばライター上でバイナリ修正して書き込めば良いだろうと作業を開始・・・
Hex.jpg

PIC16C71はワンタイムだった

しかしなーんとこのチップはワンタイム品でした。窓付きバージョンのPIC16C71/JWという物があったらしいですが既にディスコンでした。残念無念。そこで後続品種のPIC16F716を秋月電子に発注、届いたチップにHEXファイルを書き込んで見るもウンともスンとも言わず、液晶には何も表示されませんでした・・撃沈。データシートを確認すると、チップ内部のレジスタアドレスが幾つか変わっておりPIC16C71用のバイナリをそのまま書き込んでも動作しない訳です。それではと半分ヤケクソ気味で家にあったPIC16F84Aへ書き込み、基板に挿して電源を入れるとナント最初のタイトルが表示され、周波数表示画面にまで遷移しました。が、止まってしまいます。16F84AにはADCが無いのでこの辺りの処理部分が原因では無いかと推測。

逆アセンブルして見た

MPLABには逆アセンブルの機能があるので一旦リストファイルを作って眺めているとそれらしい部分を発見。
PATCH.jpg

どうやらADC変換が完了するまでループしている様子。液晶表示の下段はADCの値がバーグラフ表示できる機能があり、私の場合はこれで乾電池の残量を表示させていましたがADCの無いPIC16F84Aでは無理なので諦めてチャンネル表示文字列'Ext2'を'Ch2 'とすれば同じ4文字でも空白が付くので見易くなると考え、再アセンブルなどせずに、バイナリパッチで逃げ切る方法で修正して書き込みました。

IMG_1275.JPG

ご覧の通り周波数表示が見やすくなりました。しかし折角秋月電子からPIC16F716を(2本も)購入してしまったのでいつの日かコイツに移植出来る事を夢見て秋月電子から我が家の倉庫に眠って頂くことにしましょう。(または誰か同じような事していないかな?)