- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Signal値(約180)、FingerThreshold(170)の場合、ボタンONになるべきですが、
ボタン3はON(反応あり)、ボタン5はOFF(反応なし)となり、結果が違っています。
Signal値の目盛りは可変表示される為、アプリケーション上の表示誤差であり、
10~20程度はブレる可能性がありますでしょうか?
<ボタン3 ON>
<ボタン5 OFF>
(環境)
Hardware : CY8CKIT-145-40XX PSoC 4000S Prototyping Kit
IC : CY8C4045AZI-S413
Sofware : PSoC Creator 4.2, CapSense
Base Project: CY8CKIT-145 Code Example.zip
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CapSense の信号処理では、 ON/OFF の状態を頻繁に行き来するいわゆるチャタリングを防止するためにヒステリシスを設けています。
PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951
このため、 Signal が Finger Threshold と Hysteresis を加えた値を超えた時に ON します。また、 Finger Threshold を Hysteresis だけ下回った値に低下した時に OFF します。
目安として、 Finger Threshold と Hysteresis の値は実測された Signal のそれぞれ 80% と 10% に設定します。
PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CapSense の信号処理では、 ON/OFF の状態を頻繁に行き来するいわゆるチャタリングを防止するためにヒステリシスを設けています。
PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951
このため、 Signal が Finger Threshold と Hysteresis を加えた値を超えた時に ON します。また、 Finger Threshold を Hysteresis だけ下回った値に低下した時に OFF します。
目安として、 Finger Threshold と Hysteresis の値は実測された Signal のそれぞれ 80% と 10% に設定します。
PSoC® 4 and PSoC 6 MCU CapSense® Design Guide, Document Number. 001-85951
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
回答ありがとうございます。Hysteresis考慮出来ておりませんでした。
ただ、ボタン3と5のHysteresisは同じ値でした。
ボタン3とボタン5のSignal値はほぼ同じに見えるが、
ボタン3のSignal値は180をギリギリ超えており、
ボタン5のSignal値は180を下回っているという理解で良いでしょうか?
ボタン3(ON) FingerThreshold=170, Hysteresis=10 -> Singal: 180以上でON、160以下でOFF
ボタン5(OFF) FingerThreshold=170, Hysteresis=10 -> Singal: 180以上でON、160以下でOFF
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Signal (DIFF) の値を数値として確認するためには、 Tuner ではなく Bridge Control Panel を使用します。
まず、センサの Signal が I2C レジスタのどこに配置されているかを確認します。これには、 CapSense_RegisterMap.h ファイルの記述を見ます。
この例では、 BUTTON0 の SNS0 センサの DIFF 値がアドレス 92u(0x005C) に割り当てられているのがわかります。
Bridge Control Panel でアドレス 0x5C のレジスタを以下のコマンドで読み出します、
ボタンにタッチした状態で A2 00 が返ってきました。ここから Signal が 162(0x00A2) であることがわかります。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Bridge Control PanelでのDiff値確認方法ありがとうございます。
コマンド入力&[Send]ボタン押下で指定ボタンのdiff値を確認できました。
Bridge Control Panelのコマンドは1byte(255)単位の様ですが、
アドレスが255を超える場合のアドレス設定(入力コマンド)を教えて下さい。
例えば0x14Eの場合、'F4'部分を "4E 01"に変更すれば良いのでしょうか?
<GBTN01の場合>
CapSense_RegisterMap.h
#define CapSense_GBTN01_SNS0_DIFF_VALUE (CapSense_dsRam.snsList.gbtn01[0u].diff)
#define CapSense_GBTN01_SNS0_DIFF_OFFSET (244u)=0xF4
Bridge Control Panel用コマンド
w 08 00 F4 r 08 x x p
<GBTN10の場合>
CapSense_RegisterMap.h
#define CapSense_GBTN10_SNS0_DIFF_VALUE (CapSense_dsRam.snsList.gbtn10[0u].diff)
#define CapSense_GBTN10_SNS0_DIFF_OFFSET (334u)=0x14E
Bridge Control Panel用コマンド
w 08 00 ?? r 08 x x p
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
レジスタのアドレスは、 16-bit です。 0x014E のレジスタをアクセスするためには、
w 08 01 4e r 08 x x p
とコマンドを送ります。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ありがとうございます。
頂いたコマンドで 0x014E のレジスタにアクセス出来ました。
アドレスが16bit指定であるというコマンドフォーマットは
どこに載っていますか?
Bridge Control PanelのHelpを参照しましたが、
該当箇所を見つけられませんでした。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
EZI2C の設定画面で指定してあるはずです。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
PSoc CreaterのEZI2C側で16bit設定されている事を確認できました。
シグナル(diff)値の確認方法が分かりましたので、本件、クローズ致します。
もし、Bridge Control Panelのシグナル(diff)値とFinger threshold(±Hysteresis)に
相違があった場合は別質問を登録します。