• 検索結果がありません。

A/D コンバータ (ADC)16.10.4 MUXA/MUXB交互入力選択を使う

ドキュメント内 Section 16. Analog-to-Digital Converter (ADC) (ページ 63-69)

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

A/D コンバータ (ADC)

ドキュメント内 Section 16. Analog-to-Digital Converter (ADC) (ページ 63-69)