マイコンをPIC32MMからPIC16F19155に変更しました。
このマイコンはプログラムメモリが8kW(14kByte)しかないため、プログラムを小さくしなければなりません。 PIC32MMからPIC16F1955にプログラムを移し替えた当初85%程度のメモリ消費量でしたが、プログラムを見直して65%程度のメモリ消費量まで小さくできました。
また、周辺peripheralが充実しており、PWMやCCP、CLC、CWGを使うことでプログラムを簡素にする事ができます。
下図がマイコンをPIC16F19155に変更した全体の回路図となります。 マイコンの電源も5Vを使用する事が出来る為、3.3VのレギュレータやVFDドライバHV5812のコントロール信号のPULL-UP抵抗を省略する事ができました。
PIC16F19155は、PWMやCCP、CLC、CWGが充実していて、またMCCの画面もPIC32MMに比べて若干分かりやすい気がします。 これらのperipheralを使用して構成したVFD部分の表示ロジック回路を下図にしまします。
7セグメント8桁部分のデータ送信にはSPIから送っています。SPIで16ビットのデータを送信した後、OUTPUTピン(STORBE)をソフトウェアでH⇒Lと駆動して設定します。
フィラメントの為の電源は、PWM3とCWGをプッシュプルモードで使用して、HブリッジのBD6211Fを駆動して得ています。 またCWGの出力ABをORで受け、反転させて出力し、HV5812のBLANKINGに入れる事で、各桁の明るさの調整としています。(※しかしながらこの方法では個別桁の明るさ調整の効果はあまり確認できませんでした。)
圧電スピーカーのBEEP音についても、PWM4を使用して基本の音を作成しています。
それを鳴らしたり止めたりするのに、OUTPUTピンRA6を経由して、CLC1,CLC2のCLCIN0へHigh, Low信号を送っています。これとPWM4の信号をCLCのAND回路を使って出力する音のON-OFFを制御しています。 PWM4の出力をCLC2へ入力するところで反転しているのは、圧電スピーカーをAC駆動する為です。(RC7がHのときRC6をLとする。またはRC7がLのときRC6をHとする。)
20210225(+12.0h)
※PIC16F19155を選んだのは(株)秋月電子通商で扱っているからというのがありますが、
RTCCがあるのとバッテリーバックアップ用のVBAT端子があるのが大きなポイントだったりします。
時計としての主な機能を組み込んで現在70%のメモリ消費量なので、あとどれくらい機能を盛り込めるかはメモリしだいとなります。
あと組込みたい機能としては、
1.RTCCのキャリブレーション機能
2.表示のディマー機能
3.シリアルのモニタ機能
といったところです。