R8C/1BでA/D変換
概要
R8C/1Bには、4本のA/D変換入力ピンがあり、これらのピンの入力を10bitまたは8bitでA/D変換できます。
変換は、単発モード(条件を満たした時に1回だけA/D変換をする)と、繰り返しモード(変換を開始すると、終了させるまで自動で何回もA/D変換する)があります。
関係するレジスタの使用するビット
-
ADCON0: A/D制御レジスタ0
bit0-2(CH0-2): アナログ入力端子選択ビット
- 100: AN8入力(P1_0)
- 101: AN9入力(P1_1)
- 110: AN10入力(P1_2)
- 111: AN11入力(P1_3)
- それ以外: 設定してはいけない
bit3(MD): 1にすると繰り返しモードになる
bit4(ADGSEL0): 1にすると入力が有効になる
bit5(ADCAP): 変換開始条件{ADSTビット, タイマZ割り込み}
bit6(ADST): 1にすると変換開始
bit7(CKS0): 変換器の周波数選択ビット0
-
ADCON1: A/D制御レジスタ1
bit3(BITS): 0だと8ビット, 1にすると10ビットモード
bit4(CKS1): 変換器の周波数選択ビット1
bit5(VCUT): Vref接続ビット(コンバータ使用時は1にすること)
-
ADCON2: A/D制御レジスタ2
bit0(SMP): 1にすると高速変換。基本1でいい。
-
AD: A/Dレジスタ
A/D変換の結果が格納される。8bitモードの時、bit8とbit9の値が不定になるので注意。
変換器のクロックについて
A/D変換器はクロック入力を必要とします。そのクロックを、CKS1,0ビットで選択しますが、これによって選択されるクロックは、10MHzでなくてはならず、さらに、SMPが1のときは1MHz以上, 0のときは250kHz以上に設定する必要があります。CKS1,0ビットが00,01,10,11の時、クロックはそれぞれ、f4,f2,f1,fRING-fastが選択されるので、適切に設定してください。
単発モードでのタイマZを使った特定のピンの電圧の自動変換
adcon1 = 0b00100000; //8bitモード選択
adcon2 = 0b00000001; //高速変換
adcon0 = 0b11110100; //AN8入力 / 単発モード / タイマZ割り込み要求で変換開始 / クロックはf2
//--- タイマZの設定例 ---
tzmr = 0b00000000;
prez = 0;
tzpr = 27;
tzoc = 0b00000100;
pum = 0b00000000;
tcss = 0b00110000;
tzmr = 0b10000000;
以上の設定で、AN8(P1_0)入力が自動で繰り返しA/D変換され、adレジスタに結果を格納するようになるはずです。
この設定では、タイマZ割り込み要求が発生しますが、割り込みレジスタの設定をしない限りは割り込みが無効になるので、実際の割り込みは発生しません。