こんにちは。
非常に基本的かも知れませんが、
プログラムによるチャタリング対策の
仕方がわかりません。
スイッチONを割り込みでうけつけてから、
0.5~1秒待って、まだ、ONであれば、
実行する、という方式でやっています。
短い秒は、カットされていますが、長押し
があると、おかしな動作になってしまいます。
どういう方式をとるのが一般でしょうか。
特に言語はといません。方式、考え方が
知りたいです。
(ハードによる防止は、
まったく考えていませんので、
結構です)。
以下、参考までに
自分のプログラムです(PA使用)。
warikomi
call cwait //0.5-1s待ち
sb rb.7 //もう一度チェック
goto warikominot //押されてなければ、addしない。
add intervala,#01h
warikominot
clrb rbif
retfie
お願いします。
No.1ベストアンサー
- 回答日時:
普通「チャタリング」っていうとせいぜい数十ms くらいを想定するものだと思うんだけど....
0.5s~1s って, どんなチャタ?
ついでにいうと (聞いても答えられないような気はしますが)「長押しするとおかしな動作をする」といわれても, 「押し続ける時間」「期待する動作」「実際の動作」を示さないと解決できないかもしれませんよ.
No.2
- 回答日時:
チャタリング防止の方法の考え方を書きます。
チャタリングは、最悪に長くて50msぐらいですので、0.5秒も待つ必要はありません。
処理は、1msぐらいにサンプリングして同じ状態が10回程度続けば、その状態で安定したと見なしてスイッチの値を変更します。
プログラムを見てみると。
>warikomi
>call cwait //0.5-1s待ち
>sb rb.7 //もう一度チェック
>goto warikominot //押されてなければ、addしない。
>add intervala,#01h
>warikominot
>clrb rbif
>retfie
(1)RB7の割り込みを使っている?
(2)割り込みでステータスとか退避していないけど大丈夫?
(3)割り込みで0.5-1s待ちするなら割り込みは意味が無いどころか害がある。waitなど使わずにすぐリターンすること。
(4)sbってBTFSC?というかスイッチがON/OFF両方のパターンを処理していないのでうまく動作するはずが無い。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- 陸上 陸上ルール 2 2022/06/20 06:29
- 物理学 Scratchの簡単なプログラム 2 2023/04/09 08:31
- その他(暮らし・生活・行事) 今のコンセントの形式は 1 2022/06/08 22:22
- その他(プログラミング・Web制作) Scratch プログラミングについての質問です 1 2022/06/14 19:42
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- Excel(エクセル) Changeイベントを使用して重複チェックをしたい 2 2023/08/02 11:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
CPUの処理量を減らすコーデ...
-
PICでタイマー割込み(mikroC V...
-
C言語について(PWM)
-
PICの割り込み機能
-
割り込み処理のシミュレート
-
picタイマ0割り込みについて
-
電車で待機列の割り込みについ...
-
PICで既定の時間数ループを...
-
割り込みについて
-
割り込みの衝突
-
音声ファイル再生時のフリーズ
-
アセンブラのタイマー割り込み
-
ショッピング
-
H8マイコンで割り込みが任意の...
-
順番待ちで並んでいる時、割り...
-
VB6でSendKeyを利用したTab移動...
-
駅のトイレでナイチンに邪魔さ...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インバウンドで迷惑している人...
-
pic 複数の割り込み関数 切り分...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
Excelでタイマーの一時停止する...
-
電車で待機列の割り込みについ...
-
CPUの処理量を減らすコーデ...
-
C言語でPICマイコン開発
-
【組込み】割り込み中のstatic...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
VB.net 割り込みの禁止
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
おすすめ情報