PIC16F628にはアナログ電圧比較(コンパレータ)機能があります。PIC16F628はこの機能を2つ持っています。 比較する電圧はRA0からRA3に入力される電圧の内の2つを比較する機能と、基準電圧と比較する機能があります。 いずれかのコンパレータ出力が変化した場合に割り込みを発生させることができます。その場合にはPIE1レジスタのCMIEビットを "1"に設定します。OPTIONレジスタのPEIEビットおよびGIEビットも "1" に設定する必要があります。これによりコンパレータの出力が変化した場合、PIR1レジスタのCMIFビットに "1" が設定され、割り込みが発生します。割り込み処理ではPIR1レジスタのCMIFをクリアする必要があります。これを行わないとコンパレータの出力が変化しない場合でも常に割り込みが発生してしまいます。 出力制御 コンパレータの出力はCMCONレジスタのC1OUTおよびC2OUTビットに出力されます。各ビットはC1INVとC2INVビットの設定によりC1OUTとC2OUTの出力内容を反転することができます。CMP1を例にすると以下のようになります。CMP2も同様です。
入力制御 コンパレータへの入力はCMCONレジスタのCM0からCM2およびCISビットにより制御することができます。 電源投入直後の状態はCM2,1,0およびCISが全て "0" の状態です。この状態ではRA0-3のポートはAN0-3のアナログポートとして設定されています。コンパレータ機能を使用しない場合には初期化処理でCM2,1,0を全て "1" に設定する必要があります。 CISビットは Comparator Input Switch の略で、入力のアナログポートを切り替えて、複数のアナログ信号を比較する際に使用します。CM2-0 が "010"の場合、CISを切り替えることにより2個のコンパレータで最大4種類のアナログ信号を基準電圧と比較することができます。 CISによるポートの切り替えについての詳細はPIC16F628のマニュアルを参照してください。 CMビットによる選択の規則性はよく分かりません。 それぞれのビットの組み合わせは以下のようになります。
基準電圧 PIC16F628には基準電圧を作る回路があります。この機能はコンパレータとは独立した回路ですが、コンパレータモードでCM2-0を "010"にした場合、各コンパレータのプラス入力端子に基準電圧回路で作られた電圧が加えられます。 また、基準電圧の出力はVRCONレジスタの設定によりRA2ポートに出力することもできます。コンパレータモード "010"でRA2/AN2に基準電圧を出力した場合、どのような動作をするのかは分かりません。 基準電圧はVRCONレジスタのVR3-0の4ビットで指定できます。ですから、指定できる範囲は0から15までの16段階です。また、基準電圧の電圧レンジは2つあり、低電圧レンジと高電圧レンジがあります。高電圧といっても最高で約3.6Vです。電圧レンジの設定はVRCONレジスタのVRRビットで行えます。 基準電圧は以下の計算式で求められます。
VDDを5Vとして、VR3-0の値による基準電圧(単位はボルト)を計算すると以下のようになります。
|