以前に、RL78で実験したものをR8Cで焼きなおしたものです。
通常、マイコンの入力ポートは、非常にインピーダンスが高い入力元である事
を利用しています。
ガラスエポキシのユニバーサル基板上に、10mm角の銅版を載せ、表面をポ
リイミドテープなどで絶縁します。
この銅版を入力ポートに接続しておきます。
この銅版は、1Mオームの抵抗でプルアップしておきます。
・この銅版は、等価的には微小なコンデンサと考える事ができます。
・まずポートを出力として、GNDに落とし、コンデンサの電荷をリセットします。
・次に、ポートを入力にすると、1Mオームの抵抗を通じて、コンデンサがチ
ャージされ、微小な時間差で「H」になります。
・この実験では、この時間は、数マイクロ秒~数十マイクロ秒だと考えられます。
※銅版の大きさ、ベースとなるユニバーサル基板の誘電率などの条件で変化する。
※ある程度再現性はあると思うが、環境によって調整が必要。
・上記で計測した時間の違いで、「タッチ」されているか、「開放」なのかを
判断する。
※サンプルでは、通常は常に出力、Lにしておき、コンデンサをショート状態
にしてあり、計測の時だけ、入力にしている。
プログラムを単純にする為、CPUループ数で計測している。
uint16_t count_input_() { uint16_t n = 0; INPUT::DIR = 0; // 検出する場合だけ、「入力」にする。 do { ++n; } while(INPUT::P() == 0) ; INPUT::DIR = 1; // 出力 INPUT::P = 0; // 仮想コンデンサをショートしてリセット return n; }
実験では、「開放時14」、「タッチ時18以上」となった。
※計測値を単純に表示する場合、「DISP_REF」を有効にする。