PICプログラミング四苦八苦2021年12月28日 17時52分22秒

KT88ppや300Bシングルアンプはひととおりかたちになった一方で、GaNシングルエンドアンプは何度か手直しが続き、落ち着くまで時間がかかった。なので記事にするのが遅れた。
そろそろ完成が見えてきたので、記事にまとめてみよう。

と言いながら、表題がPICとはこれいかに。

初期のGaNアンプは電源を入れル時も、落とすときも、ほとんどショック音はきこえなかった。しかし改修を加えるうちに、電源スイッチのON/OFFにともなって少々大きなショック音が出るようになった。そこでPICを使ってノイズが出ないよう、シークエンス処理をおこなうことにした。

そのPICであるが、最後に手を触れたのが調べてみると7年前で、それ以来一度も手にしていない。ほとんど忘れてしまった。まず開発環境をそろえるところから始まる。幸いPICkit3はまだ動きそうだ。書き込み治具だけは今回あつらえた。
次にMPLAB X IDEをダウンロード。使い方をほとんど忘れていたのと、MPLABの動作が不安定なところもあったために、動作を理解するまで4〜5日かかった。


今回ターゲットにしたPICは、12F629。こんな小さな身体に入出力ピンが6個もあり、おまけにコンパレータまで内蔵している。ありがたい時代である。

目標仕様
1) +B 100Vが起動したらフラグを立てる
2) WE420Aが安定するまで60秒間待機する
3) その後、アンプ部の鍵を解除して動作状態にする
4) +B 100Vがダウンしたらフラグを立てる
5) その後、アンプ部の鍵を閉めてアイドリング状態にする
6) 動作状況が目視確認できるように、状態に合わせて赤色と緑色のLEDを点灯、消灯、点滅をさせる


これらの仕様を実現するためにC言語でプログラムを書き始める。 最初につまずいたのが、ヘッダーとConfig。はて?なんだっけ。まずは、サンプルプログラムやデータシートを眺めて思い出す。これに数日かかる。

次にプログラムをさらさら書いてできあがり。。とは行かなかった。おそらく慣れた人なら1時間もあればデバッグ終了だろう。が、今回は1週間かかったorz  30年前はガンガンFORTRANを書いていたのに、だいぶさび付いてしまった。

デバッグはシミュレータでもある程度できるが、状態遷移を見るのなら実機上でおこなうのが一番わかりやすい。
実機とPICkit3を何度も往復しながら完成度を上げていく。思った通りに動いた時はうれしいものだ。

しかし物事にはトラブルはつきもの。今回もっとも手こずったのはコンパレータの出力のヒステリシス特性のために不安定になる瞬間があって、そのため思いがけない誤動作が起きること。このことはデータシートにちゃんと書いてある。

コンパレータは+B 100V電圧の監視のために使う。電圧の上昇、下降は比較的ゆっくりなので、ヒステリシス特性は無視できるだろうと当初は踏んでいた。ところが実機で確認すると頻繁に発生して、とても使い物にならない。

ネット上にスレッショルド電圧を複数設けてトラブルを逃れるテクニックも公開されている。また少し上のレベルのPICには、最初からヒステリシス対策が施されているものもある。

いろいろ試行錯誤した結果、結局コンパレータ割り込みフラグが立った直後にレジスタ CMIE を閉じて、割り込みフラグがヒステリシス特性で動かないように、10m秒の間delayを入れて不感状態にしたらあっけなく正常に動くようになった。
なお、10m秒の不感状態があっても、アンプ自体の動作はゆっくりなので問題はない。

PICが完成したので、次にアンプの改訂にとりかかる。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://john.asablo.jp/blog/2021/12/28/9451528/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。