PICの基本動作から応用プログラムまでを学びます。

ホーム
16F18313
16F18325
16F18346
16F1619
Curiosity
---
---
    
12F1822
16F1455
16F1459
18F14K50
18F26J50
dsPIC
その他
20pin Demo ボード DM164120-1

ちょっとした 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;        //   確認待ちに
}