Дебункинг — это техника, используемая в цифровой электронике для обеспечения регистрации только одного сигнала при нажатии переключателя или кнопки. Механические переключатели часто генерируют несколько сигналов из-за контактного отскока, что может вызвать ошибки в цифровых системах. Реализация дебункинга помогает повысить надежность входных показаний.

Оригинальное название: Switch Bounce

При нажатии или освобождении механического переключателя контакты не изменяют состояние чисто. Вместо этого они быстро заводят и разрывают контакт несколько раз перед оседанием. Это явление, известное как отскок, может длиться от нескольких микросекунд до миллисекунд, что приводит к множественным нежелательным сигналам.

Практические методы откачки

Для отбрасывания цифровых входов используется несколько методов, в том числе аппаратные и программные подходы. Аппаратные отскакивания часто включают в себя RC-фильтры или триггеры Шмитта, в то время как отскакивание программного обеспечения использует алгоритмы синхронизации для игнорирования быстрых изменений состояния.

Реализация программного дебоунинга

Отклонение программного обеспечения обычно включает в себя выборку входа через регулярные промежутки времени и подтверждение изменения состояния только в том случае, если оно остается стабильным в течение заданной продолжительности. Этот метод является гибким и простым в реализации в коде микроконтроллера.

Например, если вход кнопки считывается каждые 10 миллисекунд, система может проверить, что вход остается в новом состоянии в течение не менее 50 миллисекунд, прежде чем регистрировать изменение.

Расчет времени дебюро

Время дебюнсирования зависит от характеристик переключателя и системных требований. Общим подходом является выбор интервала дебюнсирования от 5 до 20 миллисекунд. Расчет предполагает измерение максимальной продолжительности отскока и добавление запаса прочности.

Например, если выключатель отскакивает на 10 миллисекунд, то установка времени отскока на 20 миллисекунд обеспечивает надежное обнаружение без существенной задержки.

  • Определить максимальную продолжительность отскока
  • Выберите интервал дебюнсирования немного дольше, чем время отскока
  • Реализация периодической выборки в коде
  • Подтвердить стабильное состояние перед регистрацией входных данных