コンパレータの使い方


【コンパレータ】

 コンパレータは、名前のとおり、2つのアナログデータを比較し、その大小に
よって、ディジタル出力のHigh/Lowを出力します。
原理的な動作は下図のようになります。
すなわち、コンパレータ(オペアンプの1種)の+と−の両者を比較し、+の方の
電圧が高ければ、OutputがHighとなり、低ければLowとなります。
従って、電圧が変動する時には、下図のようにHigh、Lowを繰り返すことに
なります。
この場合、両者の電圧がほぼ等しい場合には、出力は不定の状態となります。
この不定な状態の範囲は、最大±10mVです。

アナログ電圧を比較した結果が出力に現れるまでの動作速度は
  標準 150nsec   最大 400nsec  となっています。
またモード変更してから、有効な出力がでるまでの時間は、最大10μsec です。





【コンパレータの動作モード】

 コンパレータの動作モードは、リファレンス電圧との組合せで8種類の
動作モードがあります。これらの動作モードは下図のようになっています。
(1) モード 000
  リセット状態で出力もオフ
(2) モード 111
  両方ともオフの状態
(3) モード 010
  2個の独立したコンパレータ動作
(4) モード 011
  2個の独立したコンパレータ動作で、出力はピンに接続
(5) モード 100
  2個のコンパレータ動作で、リファレンスが共通
(6) モード 101
  2個のコンパレータ動作で、リファレンス共通、出力はピンに接続
(7) モード 001
  1個のコンパレータのみ動作で、出力はピンに接続
(8) モード 110
  2個のコンパレータ動作で、4入力を切替て動作 リファレンスも切替






【CMCONレジスタ】

 コンパレータの制御用のレジスタはCMCONレジスタの1個だけです。
内容は下図のようになっています。
コンパレータの動作モードに8種類ありますが、その指定と、それぞれの
入力と出力の条件設定をここで行います。





【リファレンス電圧】

リファレンス電圧は、コンパレータで使われる基準電圧で、16段階に微調整
できるようになっています。
内部構成は下図のようになっていて、CVRCONレジスタで制御します。
まず、CVRRのオン/オフによって、2通りの電圧範囲が設定できます。
そのそれぞれの時の設定電圧範囲は下記となります。

 CVRR=1の時
   CVref = ((CVR設定値+1)/24)×Vdd
   つまり電源電圧が5Vなら、 0Vから3.333Vまでを0.208Vステップで
   出力します。
 CVRR=0の時
   CVref = (0.25+(CVR設定値+1)/32)×Vdd
   つまり、電源電圧が5Vなら、1.25Vから375Vまで0.073Vステップで
   出力します。




【CVRCONレジスタ】

CVRCONレジスタはリファレンス電圧の設定用のレジスタで、下図のような構成
になっています。





【アセンブラでの使用例】





【コンパレータ用Cライブラリ関数】

CCS社のPCHコンパイラには、コンパレータ用の関数として下表のような関数が
用意されています。

組込み関数と書式 機能内容 と 使用例
setup_comparators(mode) コンパレータ動作モード設定
modeは下記のいずれか
 A0_A3_A1_A2
 A0_A2_A1_A2
 NC_NC_A1_A2
 NC_NC_NC_NC
 A0_VR_A1_VR
 A3_VR_A2_VR
 A0_A2_A1_A2_OUT_ON_A3_A4
 A3_A2_A1_A2
C1OUT
C2OUT
コンパレータの出力値
 0か1のみ
setup_vref(mode | value) リファレンスの設定
modeは下記のいずれか
 FALSE(オフにする)
 VREF_LOW
 VREF_HIGH
 VREF_A2 (他とORで指定)

valueは0-15の数値
《例》
 setup_vref(VREF_HIGH | VREF_A2 | 6)



【実際の使用例】

下記のプログラム例は、タイマー1を使った実際の例です。



  トップページへ