チャタリング退治&開発用リセット・クロック回路
スイッチのチャタリングを見ていきましょう。
こんな基本的な話も『CPUの創りかた』でバッチ解説されていて助かります。
タクトスイッチから直で信号を取ろうとすると、接点が衝突する瞬間にON/OFFが暴れる。これをチャタリング(とかバウンス)と呼ぶ。
なんかググって出てくるチャタリングの波形と形もタイムスケールも違うなという感じですが、ICの動作に影響してることはとりあえず分かります。スイッチからの信号が黄色、それをインバータに通したのが青です。
対策のひとつはCR回路を挿入すること。チャタリングしてもコンデンサの充放電に時間がかかるので、信号電圧はVccからGNDまで連続的に変化します(青)。タイムスケールがかなり伸びてるので波形では見えませんが、黄色の信号は立ち上がり・立ち下がりのところで最初の画像のようにガチャガチャしてます。
コンデンサをかませたところのなめらかな信号をインバータに入力すると、デジタル回路に優しいシャキッとした信号になります。これまたタイムスケールが違うので最初の画像と比較しづらいですが、青い信号の立ち上がり・立ち下がり部分を時間的に拡大してもガチャガチャしてません。
コンデンサを入れたのでスイッチを押してから最終的な信号が変化するまでに50msほど遅延が発生しています。今回の用途には全く問題なし。
実験回路
測定には Analog Discovery 2 を使っています。5V電源もとれる!
開発用クロック回路
以上、手動クロックの波形は問題ないということで開発用のクロック回路を作りました。
思ったより大変なことになっちゃったぞ。
左が手動クロック用のスイッチで、右がリセット信号用のスイッチ。上のトグルは手動/自動クロックの切り替えで、自動クロックの周波数は下にあるスライドスイッチで切り替えます(1Hz/10Hz)。要はTD4のリセット・クロック回路そのものですね。これくらいで1日潰してるようでは先行き不安です。
でもまぁ、この回路はデバッグに役立ってくれるはず。
自分しか読めない配線図。