トップページ > dsPIC入門 > dsPICでAD変換(3)

AD変換の初期設定

AD変換モジュールは、いろいろ大変…?

前回の簡単なソースコードにおいても、初期設定は煩雑な感じがしました。AD変換モジュールについては、 UARTと同様に多機能な分だけ理解しておくべきポイントが増えてしまいます…。 本家であるMicrochip社が配布しているデータシートでは、AD変換機の説明のために10ページも使われています。 しかし、ムズカシイとは言っても少しずつ噛み砕いていけばきっと分かる(はず)なので、ちょっと 頑張ってみることにします。完全にわからなくても、既に動作確認済みのコンフィグをコピペして 使えば良いので電子工作には支障ないと思いますが。。。
内容としては本家データシートの単なる和訳に過ぎないかもしれませんが、 備忘録としては役に立つと思います…(汗)

ここでは、dsPICにおけるAD変換回路の中で最重要なポイントに絞って見ていくことにします。 また、デバイスはdsPIC30Fファミリに限定することにします。特に、今回使用している dsPIC30F4012に関する内容となりますので、了承ください…。

AD変換モジュールの内部構成

OpenADC10()関数

void OpenADC10(config1,config2,config3,configPort,configScan)

AD変換を使うために、初期設定をする関数です。引数が5個と、たくさんあります。 この1つ1つの引数に、タイマーやUARTの時と同じ用にCコンパイラ側で用意されたマクロを 入れていく形となります。なお、前回のサンプルコードのように最初に変数を宣言してやる場合は、 マクロを入れる変数はunsigned int型となります。


config1 : AD変換の基本設定

AD変換モジュールのON・OFF
アイドルモードにおける動作
出力データ形式
「10ビットAD変換モジュール」という名前からして、AD変換の精度は10ビットです。 ただし、これを読みだす場合は16ビットデータとして扱われているようです。以下の図参照ですが、 単にビット・シフトしたり符号ビットを複数並べてみたり…とデータ量そのものは変化していません。 厳密に値を計測するプログラム中では、注意が必要だと思います。



変換開始のタイミング設定
「変換開始」というのは、ハードウェアがAD変換をする・しないを決定するパラメータで あって、その値をデータ用変数内に確保(変数領域のレジスタへ移動)するかどうかは 別の話です。最速のAD変換を実現するのは、以下のADC_CLK_AUTOを指定して常に ハードウェアがAD変換を繰り返す状態にしておき、必要な時にAD変換出力を 変数へ保存する…という方法だそうです。

データサンプリングの設定
AD変換モジュールの信号処理の流れは、「データを入力ピンから取得(サンプリング)」→「AD変換実行」…となっています。
このサンプリングを自動で行うか、手動で行うかの設定パラメーターがこれです。ただし、 データを手動でサンプルする場合は「AD変換モジュール制御レジスタ」の特定のビット(SAMPビット)を“1”に して行うのですが、レジスタをビット単位でいじるのはC言語ではなくアセンブラの仕事のように思われます。 C言語用の関数も用意されていないようですし、無理やりアクセスしようとしても不具合が生じているようです。
ここは、無難に“ADC_AUTO_SAMPLING_ON”を指定して自動でやってもらうのがお勧めです。

同時サンプリング設定
これは、AD変換モジュールの回路構成をある程度理解していたほうがイメージしやすい パラメーターだと思われます。入力用サンプル&ホールド回路の使い方に関する設定です。
サンプル手動制御
通常これはOFFに設定の上、自動サンプリングを有効にして使います…。

config2 : AD変換の付加機能設定


config3 : AD変換の入力切り替え設定


configPort : AD変換の入力ポートに関する設定


configScan : スキャン方法に関する設定

SetChanADC10()関数

ConfigIntADC10()関数




前へ   次へ