平成23年特別午後問7

まだまだ未熟さん  
(No.1)
https://www.ap-siken.com/kakomon/23_toku/pm07.html
こちらの問題の設問3についてお聞きしたいことがあります。
SWの状態を待っている理由についてですが、解答はチャタリングによりSWの状態が安定しないといった内容の解説がありました。

私は「1ミリ秒のカウントではスイッチの状態が検出出来ない」と打ち込んだところ100%になったのですが、本当にこの答えあっていますでしょうか?

チャタリングが発生してしまうのは、割り込みが1ミリ秒ごとに入ってしまうせいなのでしょうか?

流れ図もあまり理解できておらず、ご教示をお願いしたいです。
宜しくお願いいたします。
2021.02.13 04:37
関数従属さん 
AP シルバーマイスター
(No.2)
>チャタリングが発生してしまうのは、割り込みが1ミリ秒ごとに入ってしまうせいなのでしょうか?

チャタリングとは機械的スイッチ等でON,OFFになる瞬間
(物理的に端子の金属と金属が触れたり、離れたりする瞬間)にON,OFFの状態が不安定になる現象を指します。
割り込みとはまた別の話となります。

>「1ミリ秒のカウントではスイッチの状態が検出出来ない」と打ち込んだところ100%になったのですが、本当にこの答えあっていますでしょうか?

ONかOFFかの検出そのものはできるかと思いますので、この回答では〇にはならないような気がします。
キーワードとして「不安定」「誤検出」「安定するまで待つ」等が入っていればよいかと思います。

>①の部分の流れ図

クロックカウンタ割込みハンドラは1ms毎に起動する事になります。

SWを押し(0→1)、時分秒から年月日になる場合だと、
最初はSWが押されていない状態ですので、swStateは0、prevも0です。
最終的にswStateが1になった際にその後の処理で年月日が表示に反映される事になります。

この時、D14の値がずっと1で安定していると
1ms目(1回目)では、prevが1になり、cntが9になりますが、swStateは0のままであり時分秒が反映されます。
2~10ms目(2~10回目)では、cntが減っていきますが、まだswStateは0のままであり時分秒が反映されます。
11ms目(11回目)で、cntが0となっている為、swStateが1になって年月日が反映されます。

またこの時、D14の値が不安定で途中で0に戻ってしまうと
prevが0になり、cntが9にまた戻ってしまい、swStateは0のままとなります。
(また1になった際に上記の1ms目(1回目)より再開)

このように安定しているかを判定してからswStateに反映している処理となります。

SWを離す(1→0)場合もほぼ同様となります。
2021.02.13 13:43
まだまだ未熟さん  
(No.3)
関数従属様
いつも詳しい解説、誠にありがとうございます。
チャタリングは問題文に記述もなくなかなかぱっと出てこなかったです、、、。
流れ図も盛り込まれており中々難しい問題ですね、、、
もう少し粘って理解を深めようと思います。
誠にありがとうございました。
2021.02.14 03:48

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop