【コンパレータ】
コンパレータは、名前のとおり、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_A2C1OUT
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を使った実際の例です。