回答:
はい、スイッチの状態が変わるたびに単一のエッジが保証されるようにする場合は、双方向のデバウンスが必要です。
幸い、スイッチがマイクロコントローラーに接続されている場合、デバウンスのための追加のハードウェアは必要ありません。マイクロに内部プルアップがある場合、多くの場合、マイクロピンとグランド間のスイッチ以外に外部に必要なものはありません。
50 msが適切なデバウンス時間です。ほとんどのスイッチはそれよりもはるかに短い時間でバウンスしますが、いくつかはそれほど長くなる場合があります。ただし、50ミリ秒でも人間のユーザーには瞬時に感じられるので、信頼性も高まります。唯一の違いは、ファームウェアで数える数なので、追加のコストはかかりません。とにかく、他の理由で通常1 msの定期的な割り込みがあるので、スイッチがその割り込みの連続で50回同じ状態にある場合、新しい状態にデバウンスしたことを宣言します。
通常、スイッチの公式のデバウンス状態を示すグローバルビットがあります。これは、スイッチがどのように設定されているかを知る必要があるロジックが使用するものです。必要な唯一の追加の状態は、割り込みルーチン内のカウンター(通常は1バイト)です。割り込みが1 msごとで、デバウンス時間が50 msだとします。各割り込みについて:
瞬間的な状態がデバウンスされた状態と一致する場合: カウンターを50にリセット できた 瞬間的な状態がデバウンスされた状態と異なる場合: デクリメントカウンター カウンターが0に達した場合: 新しいデバウンス状態を宣言する カウンターを50にリセット できた
ええ、私はそれを使います、メカニズムは基本的に同じです。接点を切断しているときに、スイッチが良好な電気的接触をしているときと良好な電気的接触をしていないときがあります。連絡先と同じです。