PIC16F193X/LF193X
PIC16F193X/LF193X
18.1 アナログ MUX
容量検知モジュールは、最大 16 入力までモニタリン グできます。このモジュールの入力は CPS<15:0> と して定義されています。周波数の変化が生じたかを 判断するには、ユーザーが次を行う必要があります。
• CPSCON1 レジスタの CPSCH<3:0> ビットをセッ トして適切な CPS ピンを選択する
• 対応する ANSEL ビットをセットする
• 対応する TRIS ビットをセットする
• ソフトウェア アルゴリズムを実行する
容量検知モジュールが有効の場合、選択した CPSx ピンで容量検知オシレータが動作します。対応する
ANSEL ビットおよび TRIS ビットを設定していな
いと、容量検知オシレータが停止して不正な周波数 を読み出す可能性があります。
18.2 容量検知オシレータ
容量検知オシレータには定の電流ソースと定の電 流シンクがあり、三角波形を生成します。CPSCON0 レジスタの CPSOUT ビットが容量検知オシレータ のステータス (シンク電流またはソース電流) を示 します。オシレータは、容量性負荷 (単一 PCB パッ ド) を駆動すると同時に Timer0 または Timer1 への クロックソースとしても使用されます。オシレータ には 3 つの電流設定があり、CPSCON0 レジスタの CPSRNG<1:0> で定義されます。異なる電流を設定 する目的は、次の 2 つです。
• 固定タイムベースのタイマのカウント数を最大 化する
• 周波数変化時の、タイマのカウント差を最大化 する
18.3 タイマ リソース
容量検知オシレータ上で周波数の変化を測定する には、固定のタイム ベースが必要です。固定のタ イム ベース周期中、容量検知オシレータは Timer0
または Timer1 へクロック供給します。容量検知オ
シレータの周波数は、タイマのカウント数を固定の タイム ベース周期で除算した値と同等です。
18.4 固定のタイム ベース
容量検知オシレータの周波数を測定するには、固定 のタイム ベースが必要です。固定のタイム ベース を設定するには、タイマ リソースまたはソフトウェ アループを使用できます。どのような方法でタイ ムベースを生成するかはエンドユーザーが選択で きます。
18.4.1 TIMER0
Timer0 を容量検知モジュールのタイマリソースと
して選択する場合は、次の設定が必要です。
• CPSCON0 レジスタの T0XCS ビットをセットする
• OPTION レジスタの TMR0CS ビットをクリアする
Timer0 がタイマリソースとして選択されると、容
量検知オシレータが Timer0 のクロックソースとな ります。詳細は、15.0項「Timer0 モジュール」 を参 照してください。
18.4.2 TIMER1
Timer1 を容量検知モジュールのタイマ リソースとし て選択する場合は、T1CON レジスタのTMR1CS<1:0>
ビットを「11」に設定します。Timer1 がタイマリ ソースとして選択されると、容量検知オシレータが
Timer1 のクロック ソースとなります。Timer1 モ
ジュールにはゲート制御機能が付いているため、周 波数測定用タイムベースとしての使用は Timer0 の オーバーフローフラグを使用して簡単に実行でき ます。
容量検知モジュールのソフトウェア部分で必要と される固定タイムベースを作成するには、 Timer0 オーバーフローフラグの使用と併せて Timer1 ゲー トのトグル モードを使用することを推奨します。詳 細は、16.12項「Timer1 制御レジスタ」 を参照して ください。
表 18-1: TIMER1 イネーブル機能
注: ただし、容量検知オシレータがクロック供 給しているタイマリソースを使用して固 定タイムベースを生成することはできま せん。
TMR1ON TMR1GE Timer1 Operation
0 0 Off
0 1 Off
1 0 On
1 1 Count Enabled by input
PIC16F193X/LF193X
18.5 ソフトウェア制御
容量検知オシレータ上の周波数の変化を決定する には、容量検知モジュール用のソフトウェアが必要 です。次の処理を行ってください。
• Timer0 または Timer1 のカウント値を取得するた め、固定のタイム ベースを設定する
• 容量検知オシレータの公称周波数を確立する
• 追加の容量性付加追加に伴う、容量検知オシレー タの低減周波数を確立する
• 周波数しきい値を設定する
18.5.1 公称周波数(容量性負荷なし)
容量検知オシレータの公称周波数を確立するには、
次の手順が必要です。
• 選択した CPSx ピンの余分な容量性負荷を取り除く
• 固定タイムベースの開始時、タイマリソースを クリアする
• 固定タイム ベースの終了時、タイマ リソースの 値を保存する
タイマリソースの値は、与えられたタイムベース に対する容量検知オシレータの発振回数となりま す。容量検知オシレータの周波数は、タイマの固定 タイム ベースの周期で除算されたタイマのカウン ト数と同等です。
18.5.2 低減周波数 (容量性負荷の追加)
容量性負荷が追加されると、容量検知オシレータの 周波数が減少します。容量検知オシレータの周波数 低減を判断するには、次の手順が必要です。
• 選択した CPSx ピンに標準的な容量性負荷を追加 する
• 公称周波数測定と同じ固定タイム ベースを使用 する
• 固定タイムベースの開始時、タイマリソースを クリアする
• 固定タイム ベースの終了時、タイマ リソースの 値を保存する
タイマ リソースの値は、容量性負荷の追加がある 容量検知オシレータの発振回数となります。容量検 知オシレータの周波数は、タイマの固定タイム ベー スの周期で除算されたタイマのカウント数と同等 です。この周波数は、公称周波数測定で取得した値 より小さくなるはずです。
18.5.3 周波数しきい値
周波数しきい値は、容量検知オシレータの公称周波 数値と低減周波数値の中間地点に配置されるべき です。容量検知モジュールで必要なソフトウェアの 詳細は、アプリケーション ノート AN1103「Software Handling for Capacitive Sensing」(DS01103) を参照し てください。
18.6 スリープ時の動作
容量検知オシレータは、デバイスがスリープ時でも モジュールが有効である限り動作を継続します。周 波数の変化が生じたかをソフトウェアが判断する には、デバイスがウェイクアップしている必要があ ります。ただし、タイマ リソースがカウントして いる場合は、デバイスがウェイクアップする必要は ありません。
注: 一般的な容量検知の説明は、次のアプリ ケーション ノートを参照してください。
• AN1101「Introduction to Capacitive Sensing」(DS01101)
• AN1102「Layout and Physical Design Guidelines for Capacitive Sensing」
(DS01102)
注: Timer0 はスリープ中に動作しないため、容
量検知モジュールがスリープ モードの場 合は使用できません。
PIC16F193X/LF193X
レジスタ 18-1: CPSCON0: 容量検知の制御レジスタ 0
R/W-0/0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R-0/0 R/W-0/0
CPSON ― — — CPSRNG1 CPSRNG0 CPSOUT T0XCS
bit 7 bit 0
記号の説明:
R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し
u = 不変 x = 不明 -n/n = POR および BOR 時の値/その他すべての
リセット時の値
1 = セット 0 = クリア
ビット 7 CPSON: 容量検知モジュール イネーブル ビット 1 = 容量検知モジュールは動作中
0 = 容量検知モジュールはシャットオフされているため、動作電流を消費しない ビット 6-4 未実装:「0」として読み出し
ビット 3-2 CPSRNG<1:0>: 容量検知オシレータの範囲ビット 00 =オシレータはオフ
01 =オシレータは低範囲。チャージ/ディスチャージ電流は、0.1 µA (公称値) 10 =オシレータは中範囲。チャージ/ディスチャージ電流は、1.2 µA (公称値) 11 =オシレータは高範囲。チャージ/ディスチャージ電流は、18 µA (公称値)
ビット 1 CPSOUT: 容量検知オシレータのステータスビット
1 = オシレータはソース電流 (ピンから出力する電流) 0 = オシレータはシンク電流 (ピンに吸い込む電流) ビット 0 T0XCS: Timer0 外部クロック ソースの選択ビット
TMR0CS = 1 の場合
T0XCS ビットによって、コア/Timer0 モジュールの外部のどのクロックが Timer0 に供給される か選択される
1 = Timer0 のクロック ソースは容量検知オシレータ 0 = Timer0 のクロック ソースは T0CKI ピン
TMR0CS = 0 の場合
Timer0 クロックソースは、コア/Timer0 モジュールで制御されます。そしてそれは、FOSC/4です。
PIC16F193X/LF193X
表 18-2: 容量検知関連のレジスタ
レジスタ 18-2: CPSCON1: 容量検知の制御レジスタ 1
U-0 U-0 U-0 R/W-0/0(1, 2) R/W-0/0(1) R/W-0/0 R/W-0/0 R/W-0/0
― — — CPSCH4 CPSCH3 CPSCH2 CPSCH1 CPSCH0
bit 7 bit 0
記号の説明:
R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し
u = 不変 x = 不明 -n/n = POR および BOR 時の値/その他すべてのリセット時
1 = セット 0 = クリア の値
ビット 7-4 未実装:「0」として読み出し
ビット 3-0 CPSCH<3:0>: 容量検知のチャネル選択ビット CPSON = 0の場合:
これらのビットは無視され、チャネルは選択されない CPSON = 1の場合:
0000 = チャネル 0、(CPS0) 0001 = チャネル 1、(CPS1) 0010 = チャネル 2、(CPS2) 0011 = チャネル 3、(CPS3) 0100 = チャネル 4、(CPS4) 0101 = チャネル 5、(CPS5) 0110 = チャネル 6、(CPS6) 0111 = チャネル 7、(CPS7) 1000 = チャネル 8、(CPS8(1)) 1001 = チャネル 9、(CPS9(1)) 1010 = チャネル 10、(CPS10(1)) 1011 = チャネル 11、(CPS11(1)) 1100 = チャネル 12、(CPS12(1)) 1101 = チャネル 13、(CPS13(1)) 1110 = チャネル 14、(CPS14(1)) 1111 = チャネル 15、(CPS15(1))
注 1: これらのチャネルは、PIC16F1933/1936/1938/PIC16LF1933/1936/1938 デバイスにインプリメントされていません。
2: このビットは、PIC16F1933/1936/1938/PIC16LF1933/1936/1938 デバイスにインプリメントされていないため、「0」 として読み出されます。
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Register
on Page
ANSELA — — ANSA5 ANSA4 ANSA3 ANSA2 ANSA1 ANSA0 86
ANSELB — — ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0 91
ANSELD ANSD7 ANSD6 ANSD5 ANSD4 ANSD3 ANSD2 ANSD1 ANSD0 97
INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 73
OPTION_REG WPUEN INTEDG TMR0CS TMR0SE PSA PS2 PS1 PS0 51
PIE1 TMR1GIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 74
PIR1 TMR1GIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 77
T1CON TMR1CS1 TMR1CS0 T1CKPS1 T1CKPS0 T1OSCEN T1SYNC — TMR1ON 169
PIC16F193X/LF193X
ノート: