---
---
ちょっとした PIC プログラムの動作確認に MICROCHIP 開発ボード DM164120-1 を使用しています。このボードだけで、一般的な、8 pin, 14 pin, 20 pin PIC に対応します。ボードの下半分は、フリーエリアになっているので、私はSW類と電源用ジャックを半田付けしていす。
PushSWが押されるとLEDの表示を増加させる内容です。
PushSWが押されるまで while と delay 文で待つ単純な防止プログラム例です。
// File name: Anti-Chattering // Target: PIC18F14K50 #include <xc.h>
上記プログラムと下記プログラムとの差はチャタリングを排除したSWcleanを生成するタイミングにあります。
上のプログラムは、SWが押されるとチャタリングが収まるのを待ってから、新しい状態を反映します。
下のプログラムは、状態が変化するとすぐに新しい状態を反映し、その後一定時間はSWの状態が変わってもSWcleanへの反映を禁止し、チャタリングを排除します。
一般的な処理では、SWclean情報や、SWがOFFになる情報は使用しないことが多くあります。もし、SWが押された ON 情報だけがプログラムで必要なら、多少チャタリング防止は短くすることができます。
チャタリング防止部分のプログラムおよび、そのフローチャートを示します。
//------ SWチャタリング防止 1msループ内 ------- if(SWmonit){ // SWupの確認中 if(pushSW)SWmonit--; // 確認中をー1 else SWmonit = 5; // 確認を最初から }else if(!pushSW){ // 確認済みでDownなら SWpress = 1; // SWが押された SWmonit = 5; // 確認待ちに }