Atmel Studio入門:ADC

Atmel Studioで、AVRマイコンのADC(ADコンバータ)制御プログラムを開発する方法について解説します。

ADCのサンプル・コード

ADCの使い方を、下記の簡単なサンプル・コードを例に説明していきます。

以下、サンプル・コードの内容を順に見ていく事にします。

8行-32行
ADC関連レジスタの設定を行う関数の例になります。

10行-15行目
ADMUXの設定を行っています。この例では、AVCCをAREFとして使用していますが、他にも内部の1.1V基準を使用する事等も可能です。

17行-18行
2byte(16bit)データ領域のどちら側にデータを寄せるか設定する事も可能です。この例ではデフォルトのままで変えていません。

20行-27行
ADCSRAの設定を行っています。このレジスタでは様々な設定が行えますが、
この例では、最低限必要なADENのみを有効化しています。

29行-30行
Digital Inputの入力抵抗を無効にして、消費電流を減らる事も可能です。

34行-46行
AD変換をする関数の例になります。引数でADCのチャンネルを指定します。
関数の戻り値がADCの測定値になります。

36行
引数で指定したADCのチャンネルをADMUXレジスタのチャンネル指定部に書き込んでいます。ADCのチャンネル以上の数値が入力された場合は無視される様に0xFOでマスクしています。

37行
ADCSCRAのADSCビットを有効にして、AD変換を開始しています。

38行
ADCSRAのADSCビットが”1″の場合は、AD変換中なので、Waitしています。

39行-44行
2byteのデータをシフト演算整理しています。ADMUXレジスタのADLAR設定次第で、データ整理方法を変える必要があります。

45行
整理したADコンバータの測定値を返しています。

まとめ

以上がADCの基本的な使用方法になります。なお、この例では使用していませんが、割り込み等を利用した、より高度な使い方も可能です。また、ATmega328のADC分解能は10bitなので、それ以上の精度が必要な場合は、SPI等のインターフェースを介して外部の高精度ADCを利用する事になります。

→その他のAtmelマイコン関連情報

Sponsored Link