お客様からのご要望でチャッタ防止のプログラムをライブラリ化するしたいのですが、なかなか実現しておりません。
CPUごとでメモリの状況やプログラムが異なるため、もう少し時間がかかりそうです。
一方、ラダーの容量が増えますが、ラダー上でソフトウェアチャッタ防止が行えますので、そちらをご紹介いたします。
チャッタ防止の一般的な方法は入力の取り込み間隔を長くすることです。
それをタイマーを組み合わせることで実現可能です。
CPUのチャッタ防止を使用しないので、スキャンタイムがあまり伸びず、また、入力信号ごとでチャッタ防止の使用と不使用を選択できます。
スイッチなどの信号とハードウェアからのパルス信号といった信号の組み合わせの場合、パルス信号幅を測定しようとするとチャッタ防止が影響して短い時間での測定ができないことが多いと思います。
また、チャッタの継続時間もハードウェアにより異なりますので、時間調整ができた方が良いかと思います。10msタイマーをご使用いただければ、10ms区切りでチャッタ防止の時間を調整できますのでお勧めです。
サンプルでは、チャッタ防止の時間を20msごとに設定しています。
また、X0およびX1の入力をM0およびM1に転送することで、防止前の信号ならX0やX1をそのままご利用ください。
チャッタ防止を行った信号を使用したい場合は、M0(X0)、M1(X1)をご使用いただければと思います。
PIC16F84だけでなく、多くのCPUで採用できる良い方法ですので、
ぜひご活用ください。