前回は内蔵アナログコンパレータを使って外部電圧2つを比較してみました。今回はアナログコンパレータの入力電圧の一方を内蔵のFVR(FIXED VOLTAGE REFERENCE)としてみます。ありがちな1.024Vとその2倍、4倍の電圧が内部のADC、DACそしてコンパレータで参照できるようになってます。便利。
※『PIC三昧』PIC関係の記事総目次はこちら
PIC16F18855のデータシートの?な点
今回も手元のデータシートに?な点を見つけてしまいました。もしかして手元の奴はかなり古いの? DS40001802Dという番号のデータシートです。 問題個所は、16.0 FIXED VOLTAGE REFERENCE(FVR) の冒頭付近、FVRの参照電源出力を接続できる先について列挙しているところです。コンパレータに対しては
“Comparator positive input”
と書かれているのです。しかし、COMPARATOR側の図ではpositive側でもnegative側でも接続できるように描かれてます。また、MCCの設定画面でもどちらでも接続できるようになってます。そしてnegative側に接続して実験してみましたが動作OKっす。コマケー話を気にするなと?
MCC Classicを使ってコンフィギュレーション
今回は、CMP2とFVRという2つのペリフェラルを使うので、MicroChip社MPLAB X IDEの自動コンフィギュレーションツールMCC(いつものようにClassic版)を使ってDevice Resourcesから対象リソースをProject Resourcesへ取り込む必要があります。取り込み前のDevice Resourcesの様子が以下に。
上記のCMP2とFVRの左にある緑の十字マークをクリックすればリソースがプロジェクトに追加されます。なお、CMP1でなくCMP2を使う理由は前回に。またFVRは行先別に2チャンネルあるのですが、リソースとしては1個みたいです。
FVRの設定が以下に。FVR_buffer1 がADC向けで、FVR_buffer2がDACとCMP兼用です。今回はコンパレータで使うのでFVR_buffer2一択です。1x、2x、4xと倍率が選択できるのですが、今回は2xとしてみました。電圧としては2.048V(キリの良い目出度い数字ですぞ、2進ならば。レゾリューション1mVとな。)
一方 CMP2の設定が以下に。Negative Inputの方をFVRにしてあるのが見えますか。前回は外部端子に向けてあったところ。
以下がピンマネージャの設定です。コンパレータのネガティブ入力の設定以外は前回と同じ。
自動生成されたソースに書き込むのはLチカ部分のみ
MCCにより自動生成されるソースにより必要なハードウエア設定が成されるので、main()関数側では前回同様にPort Aの3番端子にソフトでLチカするのみ。これまた前回同様。
実験用の回路
以下に実験に使った回路を掲げます。青の点線内がEVAボード搭載部分のうち今回関係する部分です。前回PB1に接続していたコンパレータのネガティブ側入力を外しただけ。
実験結果
まずはコンパレータの比較結果が「ギリ」OFF(RA0がLOW出力)のときのRB0端子の入力電圧。2.021Vとな。2.048Vよりは低いね。
つづいてコンパレータの比較結果が「ギリ」ON(RA0がHIGH出力)のときのRB0端子の入力電圧。2.095Vとな。2.048Vより高いわな。