SWのチャタリング防止は、通常ソフトウェアプログラムで対応処理します。しかし、PIC16F1619の強化されたTimer2 Hardware Limit Timer(HLT)機能とCLC機能の設定さえしておけば、PIC コアは、チャタリング防止のための命令ルーチンを実行することなく、独立したハードウエアだけ (Core Independent Peripherals : CIPs),でチャタリングの排除された信号を供給できます。
一般的にSWからの出力波形は、下図SW波形に示されるようSWの接点が安定するまで何回かOn/Offを繰り返します。不安定な時間は、3−5mSほどなので、SWの変化が始まってから10mS程度たてば SW出力は安定します。今回のプログラム例では、信号が変化すると、Timer2 がスタートし 10ms後にパルスを出力します。 10ms後であれば、不安定な状態は解消しているので、信号を D Laatch に読み取り LED に出力します。結局、RC4 に接続されている Push SW を押している間、4つの LED が点灯するものです。
Curiosity ボードは多くの 8 bit PICをサポートしていますが、ここでは、ボードに付属していた PIC16F1619 を使用します。
この例では、「New Project...」から、Debounceという名称のプロジェクトを作成しました。
もし、上記のような MCC ロゴが表示されていない場合には、MCC プラグインがインストールされていいるか確認してください。MCC のインストールは、ここ に説明があります。
MCCが起動すると、自動生成するファイル名称を指定しするダイアログが現れます。この例では「MyConfig.mc3」とし保存します・
MMCの設定から4MHz_HF を選択し、PLL Enabled のレ点を外します。
右上のPackege表示がDIPでない場合、下部のPackege欄(赤丸)でDIPに変更します。
Device Resources ウインド内の Libraries list にある Timer icon 展開して TMR2 icon をダブルクリックします。
モジュールがロードされると TMR2 icon が、Project Resources に現れます。
表示される画面を見ながら、マウスでクリックして設定します。
TMR2 module がロードされると、Pin Manager に、利用できる T2IN入力pinが表示されます。
pin RC4 を T2IN入力に、指定します。
このピンは Curiosity ボードの SW 1 に接続されています。
Device Resources ウインド内の Libraries list にある CLC icon 展開して CLC1 icon をダブルクリックします。
モジュールがロードされると CLC1 icon が、Project Resources に現れます。
CLC module がロードされると、Pin Manager に、利用できる CLC入出力pinが表示されます。
pin RA1,RA2,RA5,RC5 を CLC1OUT 出力に、指定します。
これらのピンは Curiosity ボードの LED D4 - D7 に接続されています。
RC4 を CLC1OUT 入力に、指定します。
このピンは Curiosity ボードの SW に接続されおり、すでに。Timer2 の入力に指定されています。CLC1とTimer2の両方に同じ信号を入力します。
表示される画面を見ながら、マウスでクリックし希望のロジクを作ります。
以上で、RC4に接続されたSW S1の信号を、4灯の LED を駆動するCLC1の設定が完了します。
Generate ボタンをクリックします。
Program アイコンをクリックし、PICにプログラムを書き込みます。
書き込み終了後に、Push SW(S1)を押すと LED D4 - D7 が同時に点灯し、離すと消灯します。