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


PIC−USBIO using BASIC

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

[第177回]



●PICUSBIO−03(126)コンパレータモジュール

今回からはコンパレータです。
やっと最後の項目になりました。
ここまで長くなるとは全く思っていませんでした。
ここまで書いてきて、あらためてPICは機能てんこ盛りのICだと思います。
うまく利用することを考えればかなり色々なことに使えるのではないかと思います。

さて。もう一息です。
いつものようにData Sheetの解読から取り掛かることにします。


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

●コンパレータモジュール

コンパレータは2つのアナログ電圧の相対的な大きさを比較してそれをデジタル値で示すことで、アナログ回路とデジタル回路のインターフェースとするために使われます。
コンパレータはプログラムの実行から独立して働くアナログ機能を備えた非常に便利な複合ブロックです。
アナログコンパレータモジュールは下記の機能を備えています。
・独立したコンパレータ制御
・プログラム可能な入力選択
・コンパレータ出力は内部/外部出力可能
・プログラム可能な出力極性
・本稿では割込みは使わないのでこの項は省略
・本稿ではスリープについては扱わないのでこの項は省略
・プログラム可能な速度/パワーの最適化
・PWMシャットダウン(何のことかわかりません)
・プログラム可能な基準電圧および固定基準電圧

●コンパレータの概略

単体としてのコンパレータのアナログ入力の信号レベルとデジタル出力の関係をFigure18−1に示します。
Vin+のアナログ電圧がVin−のアナログ電圧を下回るとコンパレータの出力はデジタルのLレベルになります。
Vin+のアナログ電圧がVin−のアナログ電圧を上回るとコンパレータの出力はデジタルのHレベルになります。
(図のNote:)
コンパレータ出力の黒い部分は入力オフセットや応答時間による不確実な部分を示す。

下はコンパレータC1のブロック図です。

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
図中C1IN+とありますがC1IN+端子はありません。
おそらくC12IN+のミスプリントだと思います。

下はコンパレータC2のブロック図です。

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
図中C2IN+とありますがC2IN+端子はありません。
おそらくC12IN+のミスプリントだと思います。


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

●コンパレータの制御

コンパレータC1はCM1CON0レジスタで、またコンパレータC2はCM2CON0でそれぞれ別々に制御されます。
そのほかにTimer1と連携したり2つのコンパレータの出力を同時に読み出すためのレジスタCM2CON1があります。

CM1CON0およびCM2CON0レジスタには以下の制御ビット、ステータスビットがあります(CMxCON0レジスタは次回記載の予定)。
・イネーブル
・入力選択
・基準電圧選択
・出力選択
・出力極性
・速度選択


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

●コンパレータをイネーブル(有効)にする

CMxCON0レジスタのCxONビットをセットするとコンパレータのオペレーションが可能になります。
CxONビットをクリアするとコンパレータはディスエーブル(無効)になり、その結果(コンパレータ回路の)消費電流は最小になります。


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

●コンパレータの入力選択

CMxCON0レジスタのCxCH<1:0>ビットによって4つのアナログ入力のうちの1つがコンパレータの反転入力に直接つながります。
Note:
C12IN+およびC12INx−端子をアナログ入力として使う場合にはANSELレジスタの対応するビットをセットするとともにTRISビットもセットして出力ドライバを無効にする必要があります(CxIN+端子はありません。おそらくC12IN+のミスプリントだと思います)。


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

●コンパレータの基準電圧選択

CMxCON0レジスタのCxRビットをセット/クリアすることで内部基準電圧かまたはアナログ入力端子をコンパレータの非反転入力に直接接続します。


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

●コンパレータの出力選択

コンパレータ出力はCMxCON0レジスタのCxOUTビットかCM2CON1レジスタのMCxOUTビットを読むことでモニタすることができます。
(コンパレータ出力を)外部端子に出力するためには以下が必要です。
・CMxCON0レジスタのCxOEビットをセットする
・対応するTRISビットをクリアする
・CMxCON0レジスタのCxONビットをセットする

2つのコンパレータは同じ出力端子(C12OUT)を共有します。
C1OEとC2OEビットによってその優先順位が決定されます(TABLE18−1参照)。

下はコンパレータ出力の優先順位の表です。

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

Note1: CxOEビットはポートデータラッチに優先します。
      CxONビットをセットしてもポートの設定に影響は与えません。
Note2: コンパレータの内部出力は命令サイクルごとにラッチされます。
      特に指定しない限り、外部出力はラッチされません。


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

●コンパレータ出力の極性

コンパレータの出力を反転させることはコンパレータの入力を入れ替えることと機能的に同じです。
コンパレータの出力の極性はCMxCON0レジスタのCxPOLビットをセットすることで反転させることができます。
CxPOLビットをクリアすると非反転出力になります。
TABLE18−2は出力状態と入力条件、極性制御ビットの関係を示す表です。


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

●コンパレータの速度選択

プログラム実行中の伝播速度と消費電力という両立しない関係はCxSPビットによって最適化することが可能です。
このビットの初期状態は’1’で、それは標準的なスピードを選択します。
CxSPビットを’0’にすることでコンパレータの伝播速度は低下しますがデバイスの消費電力を最適化することができます。


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

●コンパレータの応答時間

コンパレータの出力は入力源または基準電圧を変更したあと一定の期間は不定になります。
その期間のことを応答時間と言います。
コンパレータの応答時間は基準電圧のセッティング時間とは異なります。
そのためコンパレータの入力を変える場合にはこれらの時間を共に考慮する必要があります。
と書いてありますが、BASICインタプリタで普通に制御する場合には考慮するほどのことはないと思います。

原文ではこのあとコンパレータの割込みについてのかなり長い説明がありますが本稿ではコンパレータの割込みについては省略します。

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

PIC−USBIO using BASIC[第177回]
2023.2.5upload

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