10ビット A/Dコンバータ用ライブラリ


【概要】

この10ビットA/Dコンバータ用ライブラリは下記の性能機能を持っています。
(1) AN0からAN15までの最大16ピンのアナログ入力を扱う
  どこまで可能かはデバイスにより異なる
(2)最大2ピンまでのリファレンス入力が可能

【関数詳細】

A/Dコンバータ用のライブラリ関数には下表のような関数が
用意されています。

関数名 機 能 と 書 式
BusyADC10 ADCの状態を返す
 0:変換中でビジー  1:変換完了
【書式】 char BusyADC10(void);
CloseADC10 ADCをオフにし割り込みをクリア
【書式】 void CloseADC10(void);
ConfigIntADC10 ADCの割り込みの設定を行う
【書式】 void ConfigIntADC10(unsigned int config);

configには下記を組み合わせて使う
 @割り込み許可禁止
   ADC_INT_ENABLE  ADC_INT_DISABLE
 A割り込み優先レベル設定
   ADC_INT_PRI_0 ADC_INT_PRI_1 ADC_INT_PRI_2
   ADC_INT_PRI_3 ADC_INT_PRI_4 ADC_INT_PRI_5
   ADC_INT_PRI_6 ADC_INT_PRI_7
【例】 ConfigIntADC10(ADC_INT_ENABLE & ADC_INT_PRI_4);
ConvertADC10 サンプリングを停止してAD変換を開始する
【書式】 void ConvertADC10(void);
OpenADC10 ADコンバータの動作モードを設定する
【書式】 
 void OpenADC10(unsigned int config1,
     unsigned int config2
     unsigned int config3,
     unsigned int configport,
     unsigned int configscan)


config1には下記を組み合わせて使う(ADCON1レジスタ)
 @モジュールのオンオフ 
   ADC_MODULE_ON ADC_MODULE_OFF
 Aアイドル時動作
   ADC_IDLE_CONTINUE ADC_IDLE_STOP
 B結果形式
   ADC_FORMAT_SIGN_FRACT ADC_FORMAT_FRACT
   ADC_FORMAT_SIGN_INT  ADC_FORMAT_INTG
 C変換トリガ指定
   ADC_CLK_AUTO ADC_CLK_MPWM ADC_CLK_TMR
   ADC_CLK_INT0 ADC_CLK_MANUAL
 D自動サンプリング指定
   ADC_AUTO_SAMPLING_ON ADC_AUTO_SAMPLING_OFF
 Eサンプリング開始
   ASC_SAMP_ON ADC_SAMP_OFF

config2には下記を組み合わせて使う(ADCON2レジスタ)
 @電圧リファレンス指定
   ADC_VREF_AVDD_AVSS ADC_VREF_EXT_AVSS
   ADC_VREF_AVDD_EXT  ADC_VREF_EXT_EXT
 Aスキャン選択
   ADC_SCAN_ON  ADC_SCAN_OFF
 B割り込みごとのサンプリング回数指定
   ADC_INTR_EACH_CONV ADC_INTR_2_CONV
   ADC_INTR_3_CONV   ADC_INTR_4_CONV
   −−−−−−−−−−−−−−−
   ADC_INTR_15_CONV  ADC_INTR_16_CONV
 Cバッファモード指定
   ADC_ALT_BUF_ON ADC_ALT_BUF_OFF
 D交互入力モード指定
   ADC__ALT_INPUT_ON ADC_ALT_INPUT_OFF

config3には下記を組み合わせて使用する(ADCON3レジスタ)
 @変換クロック源指定
   ADC_CONV_CLK_INTERNAL ADC_CONV_CLK_SYSTEM
 A自動サンプリングの時間指定
   ADC_SAMPLE_TIME_0   ADC_SAMPLE_TIME_1
   −−−−−−−
   ADC_SAMPLE_TIME_30  ADC_SAMPLE_TIME_31
 B変換クロック速度指定
   ADC_CONV_CLK_1Tcy2  ADC_CONV_CLK_1Tcy
   ADC_CONV_CLK_3Tcy2  ADC_CONV_CLK_2Tcy
   ADC_CONV_CLK_5Tcy2  ADC_CONV_CLK_3Tcy
   −−−−−−−
   ADC_CONV_CLK_255Tcy2  ADC_CONV_CLK_128Tcy

configportには下記を組み合わせて指定(ADPCFGレジスタ)
   ENABLE_ALL_ANA_0-15  ENABLE_ALL_DIG_0-15
   ENABLE_AN0_ANA  ENABLE_AN1_ANA
   −−−−−−−
   ENABLE_AN14_ANA  ENABLE_AN15_ANA

configscanには下記を組み合わせて指定(ADCSSLレジスタ)
   ENABLE_ALL_INPUT_SCAN DISABLE_ALL_INPUT_SCAN
   ADC_SKIP_SCAN_AN0 ADC_SKIP_SCAN_AN1
   −−−−−−−−
   ADC_SKIP_SCAN_AN14 ADC_SKIP_SCAN_AN15

【例】/// ADコンバータ設定用パラメータ
 unsigned int ADCON1value = ADC_MODULE_ON & ADC_IDLE_CONTINUE
  & ADC_FORMAT_INTG & ADC_CLK_TMR & ADC_AUTO_SAMPLING_ON
  & ADC_SAMP_OFF;
 unsigned int ADCON2value = ADC_VREF_AVDD_AVSS & ADC_SCAN_ON
  & ADC_INTR_12_CONV & ADC_ALT_BUF_OFF & ADC_ALT_INPUT_OFF;
 unsigned int ADCON3value = ADC_CONV_CLK_SYSTEM
  & ADC_SAMPLE_TIME_31 & ADC_CONV_CLK_5Tcy;
 unsigned int ConfigPort = ENABLE_AN0_ANA & ENABLE_AN1_ANA
  & ENABLE_AN2_ANA & ENABLE_AN3_ANA;
 unsigned int ScanSel = ADC_SKIP_SCAN_AN4 & ADC_SKIP_SCAN_AN5
  & ADC_SKIP_SCAN_AN6 & ADC_SKIP_SCAN_AN7 & ADC_SKIP_SCAN_AN8
  & ADC_SKIP_SCAN_AN9 & ADC_SKIP_SCAN_AN10 & ADC_SKIP_SCAN_AN11
  & ADC_SKIP_SCAN_AN12;
 /// ADCの設定
 OpenADC10(ADCON1value,ADCON2value,ADCON3value,
       ConfigPort,ScanSel);
SetChanADC10 チャネル0の±入力ピンの指定
【書式】 void SetChanADC10(unsigned int channel);

channelには下記を組み合わせて設定(ADCHSレジスタ)
 @MUX Bのマイナス側
  ADC_CH0_NEG_SAMPLEB_AN1 ADC_CH0_NEG_SAMPLEB_VREFN

 AMUX Aのマイナス側
  ADC_CH0_NEG_SAMPLEA_AN1 ADC_CH0_NEG_SAMPLEA_VREFN

 BMUX Bのプラス側
  ADC_CH0_POS_SAMPLEB_AN0 ADC_CH0_POS_SAMPLEB_AN1
   −−−−−−−−
  
ADC_CH0_POS_SAMPLEB_AN14 ADC_CH0_POS_SAMPLEB_AN15
 CMUX Aのプラス側
  ADC_CH0_POS_SAMPLEA_AN0 ADC_CH0_POS_SAMPLEA_AN1
    −−−−−−−−−−−−−−
  
ADC_CH0_POS_SAMPLEA_AN14 ADC_CH0_POS_SAMPLEA_AN15
ReadADC10 バッファ内変換結果の読み出し
【書式】 unsigned int ReadADC10(unsigned char bufIndex);

 bufIndexはバッファの番号(0-15)を指定する
 (ADCBUF0 to ADCBUFF)

用意されているマクロには下表があります。
マクロ名 機 能 と 書 式
EnableIntADC
DisableIntADC
割り込みの禁止、許可
SetPriorityIntADC 割り込み優先レベルの設定



【基本的な使い方】

ADコンバータのライブラリを使うためには下記設定が必要です。

(1) ヘッダファイルのインクルード
  
   #include <adc.h>

(2) プロジェクトにPIC24Fのライブラリの登録



【使用例1】

下記はADコンバータ用ライブラリの実際の使用例です。
4チャネルのアナログ入力電圧を3回自動スキャンすると、ADコンバータの
割り込みが入ります。割り込み処理では4入力のそれぞれの3回分の計測
の平均をとってUART経由で電圧にして送信しています。
送信にはprintf関数を使いましたので簡単な記述でデータを送信することが
できます。








   目次ページへ