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

A/D 変換 (ADC) モジュール

ドキュメント内 DS41364B_JP (ページ 133-145)

PIC16F193X/LF193X

PIC16F193X/LF193X

11.1 ADC の設定

ADC を設定および使用する際は、次の機能を考慮 してください。

• ポート設定

• チャネル選択

• ADC 電圧リファレンスの選択

• ADC 変換のクロック ソース

• 割り込み制御

• 結果のフォーマット

11.1.1 ポート設定

ADC は、アナログおよびデジタル信号のいずれの 変換にも使用できます。アナログ信号を変換する場 合は、該当する TRIS ビットと ANSEL ビットをセッ トして I/O ピンをアナログに設定する必要がありま す。詳細は、6.0項「I/O ポート」を参照してください。

11.1.2 チャネル選択

サンプル/ホールド回路にどのチャネルを接続するか を、ADCON0 レジスタの CHS ビットで設定します。

チャネルを変更する際は、次に変換を始める前に遅 延が必要です。詳細は、11.2項「ADC の動作」を参 照してください。

11.1.3 ADCの電圧リファレンス

ADCON1 レジスタの ADPREF ビットでポジティブ 電圧リファレンスを設定します。ポジティブ電圧リ ファレンスには、次のものがあります。

• VREF+

• AVDD

• FVR (固定電圧リファレンス)

ADCON1 レジスタの ADNREF ビットでネガティブ 電圧リファレンスを設定します。ネガティブ電圧参 リファレンスには、次のものがあります。

• VREF

-• AVSS

固定電圧リファレンスの詳細は、14.0項「固定電圧 リファレンス」を参照してください。

11.1.4 変換クロック

変換クロックのソースは、ADCON1 レジスタの

ADCS ビットを使用してソフトウェアで選択でき

ます。クロックは次の 7 種類から選択できます。

• FOSC/2

• FOSC/4

• FOSC/8

• FOSC/16

• FOSC/32

• FOSC/64

• FRC (専用の内部オシレータ)

1 ビットの変換に必要な時間は TAD と定義されま

す。図11-2 に示すように、10 ビット全体の変換に

は 11.5 TADの時間が必要です。

変換を正しく実行するには、適切な TADの仕様を満 たす必要があります。詳細は、28.0項「電気的仕様」

の「A/D 変換の要件」を参照してください。表11-1 では、適切な ADC クロック選択の例を示します。

: デジタル入力として定義されたピンにア ナログ電圧を加えると入力バッファに過

大な電流が流れることがあります。 注: FRCを使用しない場合、システムクロック 周波数を変更すると ADC クロック周波数 も変化するため、ADC の結果に悪影響を 与えることがあります。

PIC16F193X/LF193X

表 11-1: ADC のクロック周期 (TAD) とデバイスの動作周波数

図 11-2: A/D 変換の TAD サイクル

ADC Clock Period (TAD) Device Frequency (FOSC)

Device Frequency (FOSC) ADC

Clock Source ADCS<2:0> 32 MHz 20 MHz 16 MHz 8 MHz 4 MHz 1 MHz

Fosc/2 000 62.5ns(2) 100 ns(2) 125 ns(2) 250 ns(2) 500 ns(2) 2.0 s Fosc/4 100 125 ns(2) 200 ns(2) 250 ns(2) 500 ns(2) 1.0 s 4.0 s Fosc/8 001 0.5 s(2) 400 ns(2) 0.5 s(2) 1.0 s 2.0 s 8.0 s(3)

Fosc/16 101 800 ns 800 ns 1.0 s 2.0 s 4.0 s 16.0 s(3)

Fosc/32 010 1.0 s 1.6 s 2.0 s 4.0 s 8.0 s(3) 32.0 s(3)

Fosc/64 110 2.0 s 3.2 s 4.0 s 8.0 s(3) 16.0 s(3) 64.0 s(3)

FRC x11 1.0-6.0 s(1,4) 1.0-6.0 s(1,4) 1.0-6.0 s(1,4) 1.0-6.0 s(1,4) 1.0-6.0 s(1,4) 1.0-6.0 s(1,4) 記号の説明: 網掛けの値は推奨範囲外です。

1: VDD 3.0Vの場合、FRC ソースの TAD時間は 1.6 s (標準) です。

2: これらの値はTAD 時間の最小要件を満たしていません。

3: より高速に変換を行うには、別のクロック ソースを選択することを推奨します。

4: デバイスの周波数が 1 MHzより高い場合は、FRC クロック ソースはスリープ時に変換を行う必要がある場合のみ使用を 推奨します。

TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD11

Set GO bit

Holding capacitor is disconnected from analog input (typically 100 ns) TAD9 TAD10 TCY - TAD

ADRESH:ADRESL is loaded, GO bit is cleared,

ADIF bit is set, holding capacitor is connected to analog input.

Conversion starts

b0

b9 b8 b7 b6 b5 b4 b3 b2 b1

On the following cycle:

PIC16F193X/LF193X

11.1.5 割り込み

ADC モジュールは、A/D 変換完了時に割り込みを 生 成 で き ま す。PIR1 レ ジ ス タ の ADIF ビ ッ ト が ADC 割り込みフラグ ビットです。PIE1 レジスタの ADIE ビットが ADC 割り込みイネーブル ビットで

す。ADIF ビットはソフトウェアでクリアする必要

があります。

この割り込みは、デバイスの動作中およびスリープ 時のいずれでも生成できます。デバイスがスリープ モードの場合、割り込みによってデバイスがウェイ クアップします。スリープ モードからウェイクアッ プすると、SLEEP 命令の次の命令が必ず実行され ます。スリープモードからウェイクアップ後、イ ンライン コード実行を再開させる場合は、INTCON レジスタの GIE および PEIE ビットを無効にしてお く必要があります。INTCON レジスタの GIE および

PEIE ビットが有効になっていると、実行により割

り込みサービス ルーチンに切り替わります。

詳細は、11.1.5項「割り込み」 を参照してください。

11.1.6 結果のフォーマット

10 ビットの A/D 変換の結果は、右詰めまたは左詰

めのいずれかのフォーマットで出力できます。出力 フォーマットは、ADCON1 レジスタの ADFM で設 定します。

図11-3 に、2 つの出力フォーマットを示します。

11-3: 10 ビット A/D 変換結果のフォーマット 注 1: ADC 割り込みイネーブルの状態にかか

わらず、変換完了時には必ず ADIF ビッ トがセットされます。

2: FRCオシレータが選択されている場合、

ADC はスリープ モード時のみ動作し ます。

ADRESH ADRESL

(ADFM = 0) MSB LSB

bit 7 bit 0 bit 7 bit 0

10-bit A/D Result Unimplemented: Read as ‘0

(ADFM = 1) MSB LSB

bit 7 bit 0 bit 7 bit 0

Unimplemented: Read as ‘0 10-bit A/D Result

PIC16F193X/LF193X

11.2 ADC の動作

11.2.1 変換の開始

ADC モジュールを有効にするには、ADCON0 レジ

スタの ADON ビットを「1」にセットする必要があ

ります。ADCON0 レジスタの GO/DONE ビットを

「1」にセットすると A/D 変換が開始します。

11.2.2 変換の完了

変換が完了すると、ADC モジュールは次の動作を 行います。

• GO/DONE ビットをクリアする

• ADIF 割り込みフラグビットをセットする

• ADRESH:ADRESL レジスタに新しい変換結果を 書き込む

11.2.3 変換の中止

変換が完了する前に中止する場合は、GO/DONE ビットをソフトウェアでクリアします。ADRESH お

よび ADRESL レジスタは、途中まで完了した A/D

変換サンプルで更新されます。未完了ビットは、変 換された最後のビットに一致します。

11.2.4 スリープ時の ADC の動作

ADC モジュールはスリープ時にも動作できます。

スリープ時に動作させるには、ADC クロックソー

スに FRC を設定する必要があります。クロック ソー

スに FRC を選択した場合、ADC 変換の開始前に

1 命令余分に待機時間が必要です。ここでSLEEP命 令を実行すると、変換時のシステムノイズを抑え ることができます。ADC 割り込みが有効の場合、

A/D 変換が完了するとデバイスがスリープ モード からウェイクアップします。ADC 割り込みが無効 の場合は、A/D 変換完了後に ADC モジュールがオ フになります (ADONビットはセットされたまま)。

ADC クロック ソースが FRC 以外の場合は、SLEEP 命令によって現在の変換が中断され、ADCモジュー ルがオフになります (ADONビットはセットされた まま)。

11.2.5 特殊イベントトリガ

CCP5 モジュールの特殊イベントトリガによって、

ソフトウェアで操作せずに ADC を定期的に実行で きます。このトリガが発生すると、GO/DONE ビッ トがハードウェアによってセットされ、Timer1 カウ ンタが 0 にリセットされます。

特殊イベント トリガを使用した場合、A/D 変換が適 切なタイミングで実行されるかどうかは保証され ません。このため、ユーザーは ADC のタイミング 条件が満たされているかどうか確認する必要があ ります。

詳細は、19.0項「キャプチャ/コンペア/PWM モ ジュール (ECCP1ECCP2ECCP3CCP4

CCP5)」を参照してください。

: ADC をオンにする命令と同じ命令で GO/

DONE ビットをセットしないようにして

ください。詳細は11.2.6項「AD 変換の手

順」 を参照してください。

: デバイスをリセットすると、すべてのレジ スタが強制的にリセット状態に戻ります。

このため、ADC モジュールはオフになり、

以後の変換はすべて中止されます。

PIC16F193X/LF193X

11.2.6 AD 変換の手順

ADC を使用して A/D 変換を行う手順の例を次に示 します。

1. ポートを設定する

• ピン出力ドライバを無効にする (TRIS レジスタ参照)

• ピンをアナログとして設定する (ANSEL レジスタを参照)

2. ADC モジュールの設定する

• ADC 変換クロックを選択する

• 電圧リファレンスを設定する

• ADC 入力チャネルを選択する

• ADC モジュールをオンにする 3. ADC 割り込みを設定する (オプション)

• ADC 割り込みフラグをクリアする

• ADC 割り込みを有効にする

• 周辺割り込みを有効にする

• グローバル割り込みを有効にする(1) 4. 必要なアクイジション時間の経過を待つ(2)

5. GO/DONE ビットをセットして変換を開始する

6. 次のいずれかにより、ADC 変換完了まで待機 する

• GO/DONE ビットをポーリングする

• ADC 割り込みを待機する (割り込みが有効

の場合)

7. ADC の結果を読み出す

8. ADC 割り込みフラグをクリアする (割り込みが 有効の場合は必須)

例 11-1: AD 変換

1: スリープ モードからウェイクアップ後、イ ンラインコード実行を再開する場合は、グ ローバル割り込みを無効にできます。

2: 詳細は11.3項「AD アクイジションの要

件」 を参照してください。

;This code block configures the ADC

;for polling, Vdd reference, Frc clock

;and AN0 input.

;

;Conversion start & polling for completion

; are included.

;

BANKSEL ADCON1 ;

MOVLW B’01110000’ ;ADC Frc clock

MOVWF ADCON1 ;

BANKSEL TRISA ;

BSF TRISA,0 ;Set RA0 to input

BANKSEL ANSEL ;

BSF ANSEL,0 ;Set RA0 to analog BANKSEL ADCON0 ;

MOVLW B’10000001’ ;Right justify, MOVWF ADCON0 ;Vdd Vref, AN0, On CALL SampleTime ;Acquisiton delay BSF ADCON0,GO ;Start conversion BTFSC ADCON0,GO ;Is conversion done?

GOTO $-1 ;No, test again

BANKSEL ADRESH ;

MOVF ADRESH,W ;Read upper 2 bits MOVWF RESULTHI ;store in GPR space BANKSEL ADRESL ;

MOVF ADRESL,W ;Read lower 8 bits MOVWF RESULTLO ;Store in GPR space

PIC16F193X/LF193X

11.2.7 ADC 関連レジスタの定義

ADC の動作設定には次のレジスタを使用します。

レジスタ 11-1: ADCON0: A/D 制御レジスタ0

U-0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0

― CHS4 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON

bit 7 bit 0

記号の説明:

R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し

u = 不変 x = 不明 -n/n = POR および BOR 時の値/その他すべての

リセット時の値

1 = セット 0 = クリア

ビット 7 未実装:「0」として読み出し

ビット 6-2 CHS<4:0>: アナログチャネル選択ビット 00000 =AN0

00001 =AN1 00010 =AN2 00011 =AN3 00100 =AN4 00101 =AN5 00110 =AN6 00111 =AN7 01000 =AN8 01001 =AN9 01010 =AN10 01011 =AN11 01100 =AN12 01101 =AN13

01110 =予約、 チャネル接続なし .

. .

11100 =予約、 チャネル接続なし

11101 =バンドギャップ電圧を使用する温度リファレンス 11110 =DAC 出力 (別名: CVREF出力)

11111 =固定電圧参照 (FVR) バッファ 1 出力

ビット 1 GO/DONE: A/D 変換のステータスビット

1 = A/D 変換サイクルが進行中。このビットをセットすると、A/D 変換サイクルが開始します。

このビットは、A/D 変換が完了するとハードウェアによって自動的にクリアされます。

0 = A/D 変換完了 (進行中ではない) ビット 0 ADON: ADC イネーブル ビット

1 = ADC が有効

0 = ADC は無効となり、動作電流を消費しない

ドキュメント内 DS41364B_JP (ページ 133-145)