アナログコンパレータモジュール(Analog Comparator Module)の使い方

【S08ACMPV2】

下図は一般的なコンパレータの実験回路です。
コンパレータとは二つの入力端子を比較して出力する回路ですから、図の場合は[+]入力端子は2.5vになります。
[-]入力端子はボリュームで可変できますから右側のグラフ(上)のように電圧を変化します。
出力は右側のグラフ(下)のように[+]側の電圧より[-]側の電圧が低い時は5v、[+]側の電圧より[-]側の電圧が高い時は0vになります。
数式で置き換えると
([+]電圧) - ([-]電圧) = 答が正の時は1、負の時は0
という事になります。

コンパレータは二つの入力電圧を比較して符号化する事が出来るので、抵抗の両端に[+][-]端子を接続して電流方向を符号化する事も出来、大変便利な回路です。HCS08マイコンはこのアナログコンパレータを内蔵しています。[+]側入力端子は内臓のレジスタによって任意に設定する事も出来るので[-]側端子だけを接続して電圧監視する事が出来るものもあります。

上図がACMPモジュールのブロックダイアグラムです。内部基準電圧は各データシートで確認してください。
エッジ検出では立ち上り・立下り・両方の3種るから選択できます。
ロータリーエンコーダの読込や電源電圧を監視して、電圧が低下したら割込みでFrashメモリに必要なデータを書き込む処理に利用したりする事が出来ます。

 ACMP関連レジスタ

ACMPに関連するレジスタは1つだけです。

【ACMPxSC】ACMP ステータス/ 制御レジスタ(ACMP Status and Control Register

7 6 5 4 3 2 1 0
ACMPxSC ACME ACBGS ACF ACIE ACO ACOPE ACMOD1 ACMOD0
R/W R/W R/W R/W R/W R R/W R/W R/W
RESET 0 0 0 0 0 0 0 0
bit 7[ACME]アナログ・コンパレータ・モジュールのイネーブル(Analog Comparator Module Enable)
ACME はACMP モジュールをイネーブルします。
0 = ACMPはディセーブル。
1 = ACMPはイネーブル。
記述例
/***** 初期設定 *****/
ACMPSC_ACME = 0;   // ACMPをイネーブルに設定
bit 6[ACBGS]アナログ・コンパレータ割込みのイネーブル(Analog Comparator Bandgap Select)
ACBGS は、アナログ・コンパレータの非反転入力としてバンドギャップ基準電圧またはACMP+ ピンを選択します。
0 = コンパレータの非反転入力として外部ピンACMP+ を選択。
1 = コンパレータの非反転入力として内部基準を選択。
記述例
/***** 初期設定 *****/
ACMPSC_ACBGS = 1;   // ACMP+を内部基準1.20Vに設定
bit 5[ACF]アナログ・コンパレータ・フラグ(Analog Comparator Flag)
ACF は、比較イベントの発生時にセットされます。 比較イベントは、ACMOD によって定義されます。
ACF は、1 をライトするとクリアされます。
0 = 比較イベントは発生していない。
1 = 比較イベントが発生した。
記述例
/***** 割込処理 *****/
if (
ACMPSC_ACF) ACMPSC_ACF = 1;   // ACMP Flagをクリア
bit 4[ACIE]アナログ・コンパレータ割込みのイネーブル(Analog Comparator Interrupt Enable)
ACIE はACMP からの割込みをイネーブルします。 ACIE がセットされると、ACF がセット状態であれば、割込みが要求されます。
0 = 割込みはディセーブル。
1 = 割込みはイネーブル。
記述例
/***** 初期設定 *****/
ACMPSC_ACIE = 1;   // ACMP割込みをイネーブルに設定
bit 3[ACO]アナログ・コンパレータ出力(Analog Comparator Output)
ACO をリードすると、アナログ・コンパレータ出力の現在の値が得られます。
ACMP がディセーブル(ACME = 0)になると、ACO は0 にリセットされ、0 がリードされます。
記述例
/***** LED表示処理 *****/
if (!
ACMPSC_ACO) PTCD_PTCD3 = 1;   // POWER LED ON
bit 2[ACOPE]アナログ・コンパレータ出力ピンのイネーブル(Analog Comparator Output Pin Enable)
ACOPE は、コンパレータ出力を外部ピンのACMPO に出力します。
0 = アナログ・コンパレータ出力はACMPO で利用しない。
1 = アナログ・コンパレータ出力をACMPO ピンに出力する。
記述例
/***** 初期設定 *****/
ACMPSC_ACOPE = 0;   // ACMP出力をディスエーブルに設定
bit 1-0[ACMOD]アナログ・コンパレータ・モード(Analog Comparator Mode)
ACMOD は、ACF をセットする比較イベントのタイプを選択します。
00 = コンパレータ出力の立ち下がりエッジ
01 = コンパレータ出力の立ち上がりエッジ
10 = コンパレータ出力の立ち下がりエッジ
11 = コンパレータ出力の立ち上がりまたは立ち下がりエッジ
記述例
/***** 初期設定 *****/
ACMPSC_ACMOD = 1;   // コンパレータ出力の立上りに設定

TOP BACK NEXT