2012/02/22

ATmega88PA A/D変換

温度計をつくろうという無謀な挑戦をしているのだが、一番の問題は「A/D変換」。情報があまりない。

そこで、今度こそマニュアルを「まとめ」にかかろうと思う。(日本語で読んでも意味不明だろうから)

24.2 概要 (p.248-)

分解能は10bit。VrefとGNDの間を2^10=1024分割して測定できる。VrefはIC内部の1.1Vでもいいし、外部からVrefを与えてもいい。一応精度を求めるので、今回は外部につけようと思う。

ちなみに、ADC(A/D Converterの略。以下同)の電源は別途つなげる。Vcc±0.3Vでなければならない。

6ch可能。chはMUXレジスタのADMUXで設定する。ch1~6の他にGNDなど3つある。

ADCはADCSRAのADENのビットをちょす(←東北・北海道弁)いじる。

データは10bitで返されるが、いかんせんATmegaは8bitマイコンなのでこれを表すには2つレジスタが必要で、それがADCH, ADCL。基本的には、ADCHに8bit分、ADCLにのこり2bitが入るが、とりわけ精度がいらない場合は、ADCHだけを読めば十分な精度を得る。そうでない場合は、ADCH→ADCLの順番に読まねばならない(同じ変換のHとLに対応しない可能性があるため)。というのも、ADCLが読まれると、ADCHもとろもデータはロックされて読み取れなくなる。

ADCには、電圧の比較を何度かする必要上、完了までに割と時間がかかる。そのため、完了時に割り込みを発生させることも可能。

◎実際の操作
Power Reduction ADC = PRADCに0を
ADC Start Conversion = ADSCに1を書き込むことで、変換が開始される。
ADSCは変換終了までhighのまま。
この他にも変換の開始方法がいろいろとあって、
ADC Auto Trigger Enable bit = ADATE (@ADCSRA)を有効にすることで、トリガーがかかった時に変換開始ができる。トリガーはADTS bits(@ADCSRB)で設定可能

つづく...

--
※一応、ここにかいているレベルの記号の意味もわからない人のために注釈を・・
・Vref は基準電圧みたいな感じ。
Original Datasheet can be obtained @ atmel official website.

0 件のコメント:

コメントを投稿