2023.1.26
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第167回]



●PICUSBIO−03(116)ADコンパーター(ADC)モジュール

今回からはADコンバータです。
随分長い連載になってしまいました。
当初はここまで長くなってしまうとは予想もしていませんでした。
結局のところほとんどPIC18F13K50の機能の説明とその動作テストに終始してしまうことになりました。
それもやっと終わりが見えてきました。
もうあと一息です。

今回もいつものようにまずはData Sheetの解読から入ることにいたします。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●ADコンバーター(ADC)

ADコンバーターはアナログ入力を10bitのデジタル値に変換します。
このデバイスモジュールは複数のアナログ入力をマルチプレクス回路を通して単一のサンプルアンドホールド回路につなぎます。
サンプルアンドホールド回路の出力はコンバーターの入力に接続されます。
コンバータは10bitの2進数近似値を生成してそのコンバート値をADCリザルトレジスタ(ADRESLおよびADRESH)に格納します。

ADCボルテージリファレンス(基準電圧)はソフトウェアでVDDか外部リファレンス端子の入力電圧かを選択できます。

ADCはコンバートが完了したときに割込みを発生させることができます。
この割込みはデバイスをスリープからウェイクアップさせるのに使うことができます。

Figure17−1はADCのブロック図です。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●ADCの設定

ADCを使うには以下の設定が必要です。
・ポートの設定
・チャネルの選択
・ADC基準電圧の選択
・ADC変換クロック
・割込み制御(本稿では扱いません)
・変換結果のフォーマット


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●ポートの設定

ANSEL、ANSELH、TRISA、TRISB、TRISCの各レジスタはA/Dポート端子の設定をします(原文のTRISEはTRISCの間違いだと思います)。
アナログ入力に使う端子に対応するANSxビットは’1’にセットしてデジタル入力を無効にする必要があります。
また対応するTRISxビットを’1’にセットしてデジタル出力ドライバを無効にしなければなりません。
もしもTRISxビットがクリアされていると、デジタル出力レベル(VOHまたはVOL)がコンバートされます。

ADコンバータの動作はANSxビットおよびTRISビットの状態からは独立しています。

Note1:ANSxビットがセットされている端子に対応するPORTレジスタの値を読むと’0’(Lレベル)が読み出されます。
しかしデジタル入力に設定されている(ANSxビットがクリアされていてTRISxビットがセットされている)端子入力のADコンバートは正しく行なわれます。
Note2:ANSxビットがクリアされている端子にアナログ電圧を入力するとデジタル入力バッファに電流が流れてデバイスの定格を越えてしまう可能性があります。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●チャネルの選択

ADCON0レジスタのCHS<3:0>ビットによってどのチャネルがサンプルアンドホールド回路に接続されるかを決定します。
チャネルを変えたときはコンバートを開始する前にディレィタイムが必要です。

ADCON0レジスタを下に示します。

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●ADC基準電圧

ADCON1レジスタのPVCFG(正電圧、ポジティブ設定)とNVCFG(負電圧、ネガティブ設定)ビットは正負基準電圧の制御を独立して行ないます。
ポジティブ電圧はVDD、FVR(内蔵基準電圧=1.024V)、外部入力電圧のいずれかを選択できます。
ネガティブ電圧はVSSか外部入力電圧のいずれかを選択できます。

ADCON1レジスタを下に示します。

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet



[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●アクイジションタイムの選択

GO/DONEビットをセットするたびに発生するアクイジションタイムはADCON2レジスタで選択することができます。

アクイジションタイムはADCON2レジスタのACQT<2:0>ビットによって設定されます。
アクイジションディレィタイムは2〜20TADの範囲をカバーします。
GO/DONEビットがセットされるとA/Dモジュールは選択されたアクイジションタイムの間入力のサンプリングを続けたあと、自動的にコンバートを開始します。
プログラムでアクイジションタイムを決めることでチャネルを選択してからGO/DONEビットをセットする間のアクイジションタイムを待つ必要がなくなります。

アクイジションタイムをマニュアルで決めるときはACQT<2:0>=000にします。
(その設定のときは)GO/DONEビットがセットされるとサンプリングがストップしコンバージョンが開始されます。
ユーザーは入力チャネルを選択してからGO/DONEビットをセットするまでの間の必要なアクイジションタイムを自分で決めることができます。
このオプションはリセット時のACQT<2:0>のデフォルト値であり、同時にアクイジションタイムがプログラムされていないことを示しています。

いずれの場合においてもコンバートが完了するとGO/DONEビットはクリアされ、ADIFフラグがセットされたあと、A/Dモジュールはふたたび選択されたチャネルのサンプリングを開始します。
アクイジションタイムがプログラムされている場合、いつアクイジションタイムが終ってコンバートが開始されたのかは示されません。

ADCON2レジスタを下に示します。

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●コンバージョンクロック(TAD)

コンバージョンクロックはADCON2レジスタのADCSビットをソフトウェアで設定することによって選択することができます。
下記の7通りから選びます。
・FOSC/2(PICUSBIOボードではFOSC=48MHzです)
・FOSC/4
・FOSC/8
・FOSC/16
・FOSC/32
・FOSC/64
・FRC(ADC専用の内蔵オシレータ)

1ビットのコンバート時間はTADで定義されます。
10ビットのコンバートにはFigure17−3(下図)に示すように11TAD時間が必要です。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

正確なコンバート結果を得るには適切なTADを選ぶことが必要です。
Table17−1(下表)に選択例を示します。
Note:FRCを除いてはシステムクロック周波数を変更するとADCクロックも変わります。
その変更はコンバートの結果に影響する可能性があります。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

アミがかかった部分は適用範囲外です。
Note1:FRCクロックの標準的なTADは1.7μsです。
Note2:これらの値は必要なTAD時間に達しません。
Note3:もっと速いコンバージョン時間を選ぶことができます。
Note4:スリープ期間中のコンバートについてのコメントです(本稿ではスリープは扱いません)。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●割込み

ADCモジュールはADコンバートの完了時に割り込みを発生させることができます。
ADC割込みフラグはPIR1レジスタのADIFビットです。
PIE1レジスタのADIEビットによってADC割込みが可能になります。
ADIFビットはソフトウェアでクリアする必要があります。
Note:ADIFビットはADC割り込みが可能か否かに関わらずコンバート完了時に毎回セットされます。
(本稿ではADC割込みは扱いません)


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●コンバート結果のフォーマット

コンバート結果のフォーマットは左詰または右詰の2種類が可能です。
ADCON2レジスタのADFMビットによって出力フォーマットを選択します。
Figure17−2に両者のフォーマットを示します。

下はFigure17−2をレジスタごとに示した図です。
Register17−4、17−5は左詰(ADFM=0)のときのADRESHレジスタ、ADRESLレジスタです。


Register17−6、17−7は右詰(ADFM=1)のときのADRESHレジスタ、ADRESLレジスタです。


説明が長くなってしまいましたので今回はここまでにします。
次回に続きます。

PIC−USBIO using BASIC[第167回]
2023.1.26upload

前へ
次へ
ホームページトップへ戻る