ATtiny13a(ADCとコンパレータ)

全てのピンは初期状態でデジタル入力になっている

ADCやコンパレータを利用する場合は,DIDR0を操作(ビットをセット)してピンをデジタル入出力から切り離す

(DIDR0:デジタル入力禁止レジスタ0)

WS000030.png

※)使用しないピンをデジタル入出力から切り離すことでデジタル入力緩衝部を禁止でき消費電力を軽減できる

コンパレータ(アナログ比較器)

WS000031.png

コンパレータは非反転入力AIN0D(PB0)ピンと反転入力AIN1D(PB1)ピンの入力値を比較し「非反転(AIN0Dピンの電圧) > 反転(AIN1Dピンの電圧)」の時にACSRのアナログ比較器出力(ACO)ビットがセットされる

また,独立した割り込みを比較器出力の上昇端・下降端またはその両方で発生できる

(ACSR:制御/状態レジスタ)

WS000034.png

・bit7(ACD):コンパレータ無効

ACDをセットするとアナログ比較器への電力がOFFとなる

設定する前にACIEビットをリセットし割り込み禁止にしておかないと割り込みが発生する

OFFにすると通常動作やアイドル動作で電力消費を削減される

・bit6(ACBG):基準電圧選択

ACBGがセットされると内部基準電圧(公称1.1V)がコンパレータの非反転入力に置き換わる

リセットでAIN0Dがコンパレータの非反転入力となる

内部基準電圧を非反転入力として使用する時は電圧の安定に一定時間を必要とするため安定するまで待機すること

・bit5(ACO):コンパレータ出力

比較条件が満たされるとセットされる(1~2クロックの遅延がある)

・bit4(ACI):割り込み要求フラグ

比較条件が満たされ割込みが発生するとセットされる

対応する割り込み処理ベクタを実行するとACIはハードウェアによって解除される

代わりにACIをセットしてもACIは解除される

・bit3(ACIE):割り込み許可

ACIEのセットでコンパレータ割込み許可となりリセットで割り込み禁止

・bit2(Res):予約

予約されており常に0なる

・bit1, 0(ACIS1, 0):割り込み条件

割込みの発生条件を設定する

設定する前にACIEビットをリセットし割り込み禁止にしておかないと割り込みが発生する

WS000035.png

反転入力はAIN1D以外にADC3~0のどれかを選択することができる

ピンの変更にはA/D変換ピンが使用されるためA/D変換部がOFFでなければならない

ADCSRBのアナログ比較器多重器許可(ACME)ビットがセット,A/D変換部がOFF(ADCSRAのADENビットがリセット)で,ADMUXのチャネル選択(MUX1,0)ビットにて入力ピンを選択する

ACMEがリセットまたはADENがセットされるとAIN1Dが反転入力となる

(A/D多重器選択レジスタ)

ADMUX.png

・bit6(REFS0):基準電圧選択

0:基準電圧としてVCCを使用
1:内部1.1V基準電圧

・bit1,0:A/Dチャネル選択

0 0:ADC0 (PB5)
0 1:ADC1 (PB2)
1 0:ADC2 (PB4)
1 1:ADC3 (PB3)

(ADCSRA:A/D変換制御/状態レジスタA)

ADCSRA.png

・bit7(ADEN):A/D許可

このビットに1を書くことでA/D変換を許可し0で変換部は電源がOFFされる

変換進行中にA/D変換部をOFFにすると変換を途中で終了する

・bit6(ADSC):A/D変換開始

・bit4(ADIF):A/D変換完了割り込み要求フラグ

A/D変換が完了し、A/Dデータレジスタが更新されると設定(1)される

(例)loop_until_bit_is_set(ADCSRA, ADIF); などで確認

ステータスレジスタ(SREG)の全割り込み許可とA/D変換完了割り込み許可(ADIE)されていればA/D変換完了割り込みが実行

・bit2,1,0(ADPS):A/D変換クロック選択

(ADCSRB:A/D変換制御/状態レジスタB)

WS000033.png

WS000032.png

ADC

とりあえず参考を

参考:https://blog.goo.ne.jp/paramako/e/aaea8ec6c7618ca6e083c95776c551d1

https://www.clarestudio.org/elec/avr/mcu-adc.html