A/D コンバータ (ADC)
表16-17: 交互入力選択を使って2 x 2入力を変換する
制御ビット 動作シーケンス
シーケンス選択 MUXA入力をサンプリングする: AN1->CH0, AN0->CH1
SMPI<4:0> =00011 CH0を変換してADC1BUF0に書き込む
サンプリング4回ごとに割り込む CH1を変換してADC1BUF1に書き込む CHPS<1:0> =01 MUXB入力をサンプリングする: AN15->CH0, (AN3-AN9)->CH1
チャンネルCH0とCH1をサンプリングする CH0を変換してADC1BUF2に書き込む
SIMSAM =1 CH1を変換してADC1BUF3に書き込む
全てのチャンネルを同時にサンプリングする MUXA入力をサンプリングする: AN1->CH0, AN0->CH1
BUFM =1 CH0を変換してADC1BUF4に書き込む
2 x 8ワードのデータ格納バッファ CH1を変換してADC1BUF5に書き込む
ALTS =1 MUXB入力をサンプリングする: AN15->CH0, (AN3-AN9)->CH1
MUXA/MUXB入力の交互選択 CH0を変換してADC1BUF6に書き込む
ADDMAEN = 0 CH1を変換してADC1BUF7に書き込む
ADCでDMAを使わない 割り込み; バッファを変更する
MUXA入力選択 MUXA入力をサンプリングする: AN1->CH0, AN0->CH1
CH0SA<3:0> =0001 CH0を変換してADC1BUF8に書き込む
CH0+入力にAN1を選択する CH1を変換してADC1BUF9に書き込む
CH0NA =0 MUXB入力をサンプリングする: AN15->CH0, (AN3-AN9)->CH1
CH0-入力にVREF-を選択する CH0を変換してADC1BUFAに書き込む
CSCNA =0 CH1を変換してADC1BUFBに書き込む
入力スキャンしない MUXA入力をサンプリングする: AN1->CH0, AN0->CH1
CSSL<15:0> = n/a CH0を変換してADC1BUFCに書き込む
スキャン入力選択を使わない CH1を変換してADC1BUFDに書き込む
CH123SA =0 MUXB入力をサンプリングする: AN15->CH0, (AN3-AN9)->CH1
CH1+ = AN0、CH2+ = AN1、CH3+ = AN2 CH0を変換してADC1BUFEに書き込む
CH123NA<1:0> =0X CH1を変換してADC1BUFFに書き込む
CH1-, CH2-, CH3- = VREF- ADC割り込み; バッファを変更する
MUXB入力選択 以上を繰り返す
CH0SB<3:0> =1111
CH0+入力にAN15を選択する CH0NB =0
CH0-入力にVREF-を選択する CH123SB =1
CH1+ = AN3, CH2+ = AN4, CH3+ = AN5 CH123NB<1:0> =11
CH1- = AN9, CH2- = AN10, CH3- = AN11
初回のADC割り込み時の ADCバッファの状態
2回目のADC割り込み時の ADCバッファの状態
ADC1BUF0 AN1 Sample 1
ADC1BUF1 AN0 Sample 1
ADC1BUF2 AN15 Sample 2
ADC1BUF3 (AN3-AN9) Sample 2
ADC1BUF4 AN1 Sample 3
ADC1BUF5 AN0 Sample 3
ADC1BUF6 AN15 Sample 4
ADC1BUF7 (AN3-AN9) Sample 4
ADC1BUF8 AN1 Sample 5
ADC1BUF9 AN0 Sample 5
ADC1BUFA AN15 Sample 6
ADC1BUFB (AN3-AN9) Sample 6
ADC1BUFC AN1 Sample 7
ADC1BUFD AN0 Sample 7
ADC1BUFE AN15 Sample 8
ADC1BUFF (AN3-AN9) Sample 8
A/D コンバータ (ADC)
16.10.5 同時サンプリングを使って 8 入力をサンプリングする
この例と次の例の設定は似ていますが、この例では同時サンプリング(SIMSAM = 1)を使うの に対して次の例では逐次サンプリング(SIMSAM = 0)を使います。どちらの例でも交互入力選 択を使い、S&Hに差動入力を指定しています。
図16-29と表16-18に、同時サンプリングの例を示します。同時サンプリングで複数チャンネ
ルを変換する場合、ADCモジュールは、全てのチャンネルを同時にサンプリングした後に、必 要な変換を逐次実行します。この例ではASAMビットをセットしているため、変換完了後にサ ンプリングが自動的に始まります。
図16-29: 同時サンプリングを使って8入力をサンプリングする
ADC Clock
SAMP DONE
Input to CH0 AN13-AN1 TSAMP
AD1IF
AN0 AN1 AN2 Input to CH1
Input to CH2 Input to CH3
ADC1BUFD ADC1BUFE ADC1BUFF
AN14 TSAMP
AN3-AN6 AN4-AN7 AN5-AN8
AN14 TSAMP
AN3-AN6 AN4-AN7 AN5-AN8 ASAM
AN13-AN1 AN0 AN1 AN2
ADC1BUF0 ADC1BUF1 ADC1BUF2 ADC1BUF3 ADC1BUFC Conversion Trigger
TCONVTCONVTCONV
TCONV TCONVTCONVTCONVTCONV TCONVTCONVTCONVTCONV
表16-18: 同時サンプリングを使って8入力をサンプリングする
制御ビット 動作シーケンス
シーケンス選択 MUXA入力をサンプリングする:
SMPI<4:0> =00011 (AN13-AN1)->CH0, AN0->CH1, AN1->CH2, AN2->CH3 サンプリング4回ごとに割り込む CH0を変換してADC1BUF0に書き込む
CHPS<1:0> =1X CH1を変換してADC1BUF1に書き込む
チャンネルCH0,CH1,CH2,CH3をサンプリングする CH2を変換してADC1BUF2に書き込む
SIMSAM =1 CH3を変換してADC1BUF3に書き込む
全てのチャンネルを同時にサンプリングする MUXB入力をサンプリングする:
BUFM =0 AN14->CH0,
16ワード単一データ格納バッファ (AN3-AN6)->CH1, (AN4-AN7)->CH2, (AN5-AN8)->CH3
ALTS =1 CH0を変換してADC1BUF4に書き込む
MUXA/MUXB入力の交互選択 CH1を変換してADC1BUF5に書き込む
ADDMAEN = 0 CH2を変換してADC1BUF6に書き込む
ADCでDMAを使わない CH3を変換してADC1BUF7に書き込む MUXA入力選択 MUXA入力をサンプリングする:
CH0SA<3:0> =1101 (AN13-AN1)->CH0, AN0->CH1, AN1->CH2, AN2->CH3 CH0+入力にAN13を選択する CH0を変換してADC1BUF8に書き込む
CH0NA =1 CH1を変換してADC1BUF9に書き込む
CH0-入力にAN1を選択する CH2を変換してADC1BUFAに書き込む
CSCNA =0 CH3を変換してADC1BUFBに書き込む
入力スキャンしない MUXB入力をサンプリングする:
CSSL<15:0> = n/a AN14->CH0,
スキャン入力選択を使わない (AN3-AN6)->CH1, (AN4-AN7)->CH2, (AN5-AN8)->CH3
CH123SA =0 CH0を変換してADC1BUFCに書き込む
CH1+ = AN0、CH2+ = AN1、CH3+ = AN2 CH1を変換してADC1BUFDに書き込む
CH123NA<1:0> =0X CH2を変換してADC1BUFEに書き込む
CH1-, CH2-, CH3- = VREF- CH3を変換してADC1BUFFに書き込む
MUXB入力選択 ADC割り込み
CH0SB<3:0> =1110 以上を繰り返す
CH0+入力にAN14を選択する CH0NB =0
CH0-入力にVREF-を選択する CH123SB =1
CH1+ = AN3, CH2+ = AN4, CH3+ = AN5 CH123NB<1:0> =10
CH1- = AN6、CH2- = AN7、CH3- = AN8
初回のADC割り込み時の ADCバッファの状態
2回目のADC割り込み時の ADCバッファの状態
ADC1BUF0 (AN13-AN1) Sample 1 (AN13-AN1) Sample 3
ADC1BUF1 AN0 Sample 1 AN0 Sample 3
ADC1BUF2 AN1 Sample 1 AN1 Sample 3
ADC1BUF3 AN2 Sample 1 AN2 Sample 3
ADC1BUF4 AN14 Sample 1 AN14 Sample 3
ADC1BUF5 (AN3-AN6) Sample 1 (AN3-AN6) Sample 3
ADC1BUF6 (AN4-AN7) Sample 1 (AN4-AN7) Sample 3
ADC1BUF7 (AN5-AN8) Sample 1 (AN5-AN8) Sample 3
ADC1BUF8 (AN13-AN1) Sample 1 (AN13-AN1) Sample 4
ADC1BUF9 AN0 Sample 2 AN0 Sample 4
ADC1BUFA AN1 Sample 2 AN1 Sample 4
ADC1BUFB AN2 Sample 2 AN2 Sample 4
ADC1BUFC AN14 Sample 2 AN14 Sample 4
ADC1BUFD (AN3-AN6) Sample 2 (AN3-AN6) Sample 4
ADC1BUFE (AN4-AN7) Sample 2 (AN4-AN7) Sample 4
ADC1BUFF (AN5-AN8) Sample 2 (AN5-AN8) Sample 4
A/D コンバータ (ADC)
16.10.6 逐次サンプリングを使って 8 入力をサンプリングする
図16-30と表16-19に、逐次サンプリングの例を示します。 逐次サンプリングを使って複数チャ ンネルを変換する場合、ADCモジュールは可能な限り早期に1つのチャンネルのサンプリング を開始し、続いてそのチャンネルの変換を実行します。この例ではASAMビットをセットして いるため、各チャンネルのサンプリングは、そのチャンネルの変換が完了した後に自動的に始 まります。
ASAMビットをクリアした場合、変換が完了してもSAMPビット(ADxCON1<1>)がセットさ れるまでサンプリングは始まりません。
逐次サンプリングを使って複数チャンネルを変換する場合、各チャンネルのサンプリングは、
別のチャンネルが変換を実行している間にできるため、同時サンプリングよりも長いサンプリ ング時間を確保できます。
図16-30: 逐次サンプリングを使って8入力をサンプリングする
ADC Clock
SAMP DONE
Input to CH0 AN13-AN1 TSAMP
AD1IF
AN0 AN1
AN2 Input to CH1
Input to CH2 Input to CH3
ADC1BUFD ADC1BUFE ADC1BUFF
AN14 TSAMP
AN4-AN7 AN5-AN8
AN14 TSAMP
AN3-AN6 AN4-AN7
AN5-AN8 ASAM
AN1 AN2
ADC1BUF0 ADC1BUF1 ADC1BUF2 ADC1BUF3 ADC1BUFC
AN13-AN1 AN0
AN2 Conversion
Trigger
TCONVTCONVTCONV
TCONV TCONVTCONVTCONVTCONV TCONVTCONVTCONVTCONV
AN3-AN6
AN1
AN13-AN1 AN0
表16-19: 逐次サンプリングを使って8入力をサンプリングする
制御ビット 動作シーケンス
シーケンス選択 サンプリング: (AN13-AN1) -> CH0
SMPI<4:0> =01111 CH0を変換してADC1BUF0に書き込む
サンプリング16回ごとに割り込む サンプリング: AN0 -> CH1
CHPS<1:0> =1X CH1を変換してADC1BUF1に書き込む
チャンネルCH0,CH1,CH2,CH3をサンプリングする サンプリング: AN1 -> CH2
SIMSAM =0 CH2を変換してADC1BUF2に書き込む
全てのチャンネルを逐次サンプリングする サンプリング: AN2 -> CH3
BUFM =0 CH3を変換してADC1BUF3に書き込む
16ワード単一データ格納バッファ サンプリング: AN14 -> CH0
ALTS =1 CH0を変換してADC1BUF4に書き込む
MUXA/MUXB入力の交互選択 サンプリング: (AN3-AN6) -> CH1
ADDMAEN = 0 CH1を変換してADC1BUF5に書き込む
ADCでDMAを使わない サンプリング: (AN4-AN7) -> CH2
MUXA入力選択 CH2を変換してADC1BUF6に書き込む CH0SA<3:0> =1101 サンプリング: (AN5-AN8) -> CH3
CH0+入力にAN13を選択する CH3を変換してADC1BUF7に書き込む
CH0NA =1 サンプリング: (AN13-AN1) -> CH0
CH0-入力にAN1を選択する CH0を変換してADC1BUF8に書き込む
CSCNA =0 サンプリング: AN0 -> CH1
入力スキャンしない CH1を変換してADC1BUF9に書き込む
CSSL<15:0> = n/a サンプリング: AN1 -> CH2
スキャン入力選択を使わない CH2を変換してADC1BUFAに書き込む
CH123SA =0 サンプリング: AN2 -> CH3
CH1+ = AN0, CH2+ = AN1, CH3+ = AN2 CH3を変換してADC1BUFBに書き込む
CH123NA<1:0> =0X サンプリング: AN14 -> CH0
CH1-, CH2-, CH3- = VREF- CH0を変換してADC1BUFCに書き込む
MUXB入力選択 サンプリング: (AN3-AN6) -> CH1
CH0SB<3:0> =1110 CH1を変換してADC1BUFDに書き込む
CH0+入力にAN14を選択する サンプリング: (AN4-AN7) -> CH2
CH0NB =0 CH2を変換してADC1BUFEに書き込む
CH0-入力にVREF-を選択する サンプリング: (AN5-AN8) -> CH3
CH123SB =1 CH3を変換してADC1BUFFに書き込む
CH1+ = AN3, CH2+ = AN4, CH3+ = AN5 ADC割り込み
CH123NB<1:0> =10 以上を繰り返す
CH1- = AN6, CH2- = AN7, CH3- = AN8
初回のADC割り込み時の ADCバッファの状態
2回目のADC割り込み時の ADCバッファの状態
ADC1BUF0 (AN13-AN1) Sample 1 (AN13-AN1) Sample 3
ADC1BUF1 AN0 Sample 1 AN0 Sample 3
ADC1BUF2 AN1 Sample 1 AN1 Sample 3
ADC1BUF3 AN2 Sample 1 AN2 Sample 3
ADC1BUF4 AN14 Sample 1 AN14 Sample 3
ADC1BUF5 (AN3-AN6) Sample 1 (AN3-AN6) Sample 3
ADC1BUF6 (AN4-AN7) Sample 1 (AN4-AN7) Sample 3
ADC1BUF7 (AN5-AN8) Sample 1 (AN5-AN8) Sample 3
ADC1BUF8 (AN13-AN1) Sample 2 (AN13-AN1) Sample 4
ADC1BUF9 AN0 Sample 2 AN0 Sample 4
ADC1BUFA AN1 Sample 2 AN1 Sample 4
ADC1BUFB AN2 Sample 2 AN2 Sample 28
ADC1BUFC AN14 Sample 2 AN14 Sample 4
ADC1BUFD (AN3-AN6) Sample 2 (AN3-AN6) Sample 4
ADC1BUFE (AN4-AN7) Sample 2 (AN4-AN7) Sample 4
ADC1BUFF (AN5-AN8) Sample 2 (AN5-AN8) Sample 4