PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第178回]
●PICUSBIO−03(127)コンパレータモジュール(2)コントロールレジスタ
前回からの続きです。
下はCM1CON0レジスタです。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
bit7 C1ON:コンパレータC1イネーブル(有効)ビット
1=コンパレータC1はイネーブル(有効)
0=コンパレータC1は無効
bit6 C1OUT:コンパレータC1出力ビット
C1POL=1(極性反転)の場合
C1Vin+>C1Vin−のときC1OUT=0
C1Vin+<C1Vin−のときC1OUT=1
C1POL=0(極性非反転)の場合
C1Vin+>C1Vin−のときC1OUT=1
C1Vin+<C1Vin−のときC1OUT=0
bit5 C1OE:コンパレータC1出力イネーブル(有効)ビット
C2OE=0(C2出力無効)の場合
0=C1OUTは内部出力のみ
1=C1OUTはC12OUT端子に出力(1)
C2OE=1(C2出力有効)の場合
0=C1OUTは内部出力のみ
1=C2OUTはC12OUT端子に出力(1)
bit4 C1POL:コンパレータC1出力極性選択ビット
1=C1OUTの論理は反転する
0=C1OUTの論理は反転しない
bit3 C1SP:コンパレータC1スピード/パワー選択ビット
1=C1は通常の消費電力、ハイスピードモードで実行される
0=C1は低消費電力、低速モードで実行される
bit2 C1R:コンパレータC1基準電圧選択ビット(非反転入力)
1=C1Vin+はC1VREF出力に接続される
0=C1Vin+はC12IN+端子に接続される
bit1−0 C1CH<1:0>:コンパレータC1チャネル選択ビット
00=C1Vin−はAGNDに接続される
01=C12IN1−端子がC1Vin−に接続される
10=C12IN2−端子がC1Vin−に接続される
11=C12IN3−端子がC1Vin−に接続される
Note 1: コンパレータの外部端子への出力には次の3条件が必要とされる。
C1OE=1
C1ON=1
対応するTRISビット=0
下はCM2CON0レジスタです。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
bit7 C2ON:コンパレータC2イネーブル(有効)ビット
1=コンパレータC2はイネーブル(有効)
0=コンパレータC2は無効
bit6 C2OUT:コンパレータC2出力ビット
C2POL=1(極性反転)の場合
C2Vin+>C2Vin−のときC2OUT=0
C2Vin+<C2Vin−のときC2OUT=1
C2POL=0(極性非反転)の場合
C2Vin+>C2Vin−のときC2OUT=1
C2Vin+<C2Vin−のときC2OUT=0
bit5 C2OE:コンパレータC2出力イネーブル(有効)ビット
1=C2OUTはC12OUT端子に出力(1)
0=C2OUTは内部出力のみ
bit4 C2POL:コンパレータC2出力極性選択ビット
1=C2OUTの論理は反転する
0=C2OUTの論理は反転しない
bit3 C2SP:コンパレータC2スピード/パワー選択ビット
1=C2は通常の消費電力、ハイスピードモードで実行される
0=C2は低消費電力、低速モードで実行される
bit2 C2R:コンパレータC2基準電圧選択ビット(非反転入力)
1=C2Vin+はC2VREF出力に接続される
0=C2Vin+はC12IN+端子に接続される(原文C2IN+はミスプリントと思われる)
bit1−0 C1CH<1:0>:コンパレータC1チャネル選択ビット
00=C1Vin−はAGNDに接続される
01=C12IN1−端子がC1Vin−に接続される
10=C12IN2−端子がC1Vin−に接続される
11=C12IN3−端子がC1Vin−に接続される
Note 1: コンパレータの外部端子への出力には次の3条件が必要とされる。
C2OE=1
C2ON=1
対応するTRISビット=0
● CMxCON0のbit3(CxSP)について
前回この項目について書いたときは気が付かなかったのですが今回あらためてこのレジスタについて書くなかで原文の記述がおかしいことに気が付きました。
上記レジスタのビットごとの図を見るとbit3の上には’R/W−0’と表記されています。
この意味はRead/Write可能でデフォルト(パワーオン、リセット時)は’0’ということです。
ところが前回の’CxSP’の説明(●コンパレータの速度選択)のところの原文ではこのビットについて
The default state for this bit is ’1’
と書かれています。
ということになるとこれはどちらかが間違っていることになります。
USBから+5V(500mA)の供給を受けてBASICで制御するのですから速度も消費電流も問題にはならないのですけれど。
気が付いてしまったからにはどちらなのか確認できればそうしたほうがよろしいでしょう。
デフォルト状態が’1’なのか’0’なのかはCMxCON0を読んでみればわかるはずです。
それはBASICならいともたやすいことです。
さっそく実行してみました。
ダイレクトモードでたった1行実行するだけです。
おお。
bit3は’1’になっています。
ということはレジスタのビットごとの表示で、ビット3のところは’R/W−1’が正しい(おそらく’R/W−0’はミスプリント)と考えられます。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●アナログ入力についての考慮
単純化したアナログ入力回路をFigure18−6に示します。
アナログ入力回路はデジタル入力回路と端子を共用しています。
デジタル入力回路には逆方向に静電防止用の入力保護ダイオードがついています。
そのためアナログ入力はVSSとVDDの間の電圧でなければなりません。
もしも入力電圧がこの範囲から0.6V以上はみ出ると、はみ出た側のダイオードが順方向にバイアスされてしまいラッチアップが発生する可能性があります。
アナログ入力源のインピーダンスは10KΩ以下であることが推奨されます。
それと同時にアナログ入力端子につながる外部回路のコンデンサまたはゼナーダイオードはうんと小さいリーク電流のものであることが正確な結果のために必要になります。
Note1: アナログ入力に設定されたポートレジスタを読むと’0’が読み出されます。
デジタル入力に設定された端子をアナログ入力としてコンバートすると入力電圧に従った値になります。
Note2: デジタル入力に設定された端子に対してアナログレベルの信号を入力すると入力バッファに規定値以上の電流が流れる可能性があります。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●付加的なコンパレータの機能
下記の付加的なコンパレータ機能があります。
・コンパレータ出力の同時読み込み
・内部基準電圧の選択
・ヒステリシスの選択
・出力の同期
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●コンパレータ出力の同時読み込み
CM2CON1レジスタのMC1OUTおよびMC2OUTビットは2つのコンパレータ出力のミラーコピーです。
1つのレジスタから同時に2つの出力を読むことができることで、別々のレジスタを読むことによるタイミングのねじれを避けることができます。
Note1: CM2CON1レジスタを読むことによってC1OUTやC2OUTの状態を得ることでコンパレータ割込みミスマッチレジスタに影響を与えることはありません。
本稿ではコンパレータの割込みについては扱いませんから、コンパレータ割込みミスマッチレジスタがどういうものなのかについて言及しません。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●内蔵基準電圧の選択
コンパレータの非反転入力に接続可能な内蔵基準電圧は2つあります。
そのひとつは固定基準電圧(FVR)でもうひとつはコンパレータ用可変基準電圧(CVREF)です。
CM2CONレジスタのCxRSELビットはそのどちらをコンパレータ用基準電圧(CxVREF)に接続するかを決定します。
その出力はCMxCON0レジスタのCxRビットによってコンパレータに接続されます。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●コンパレータのヒステリシス
コンパレータCxはヒステリシスを選択できます。
CM2CON1レジスタのCxHYSビットによってヒステリシスがイネーブル(有効)になります。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
●コンパレータ出力とTimer1の同期
コンパレータCxの出力はCM2CON1レジスタのCxSYNCビットをセットすることでTimer1に同期させることができます。
Cx出力はTimer1ソースクロックの上がりエッジでラッチされます。
もしTimer1がプリスケーラを使っていたらコンパレータ出力はプリスケール後にラッチされます。
レーシングを避けるためコンパレータ出力はTimer1ソースクロックの立ち上がりエッジでラッチされ、Timer1もそのソースクロックの立ち上がりエッジでインクリメントします(意味不明です)。
下はCM2CON1レジスタです。
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
bit7 MC1OUT:C1OUTビットのミラーコピー
bit6 MC2OUT:C2OUTビットのミラーコピー
bit5 C1RSEL:コンパレータC1基準電圧選択ビット
1=FVRがC1VREFに接続される
0=CVREFがC1VREFに接続される
bit4 C2RSEL:コンパレータC2基準電圧選択ビット
1=FVRがC2VREFに接続される
0=CVREFがC2VREFに接続される
bit3 C1HYS:コンパレータC1ヒステリシスイネーブル(有効)ビット
1=コンパレータC1ヒステリシスはイネーブル(有効)
0=コンパレータC1ヒステリシスはディスエーブル(無効)
bit2 C2HYS:コンパレータC2ヒステリシスイネーブル(有効)ビット
1=コンパレータC2ヒステリシスはイネーブル(有効)
0=コンパレータC2ヒステリシスはディスエーブル(無効)
bit1 C1SYNC:C1出力同期モードビット
1=C1出力はTimerクロックの上がりエッジに同期する
0=C1出力は同期しない
bit0 C2SYNC:C2出力同期モードビット
1=C2出力はTimerクロックの上がりエッジに同期する
0=C2出力は同期しない
コンパレータモジュールに関係するレジスタ
[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet
−=未実装。’0’が読み出される。アミのかかったビットはコンパレータモジュールでは使用されない。
PIC−USBIO using BASIC[第178回]
2023.2.6upload
前へ
次へ
ホームページトップへ戻る