Как говорится, не так страшен чёрт, как его малюют. Забавно в жизни всё происходит. Иногда пользуешься какой-то вещью много лет, и не знаешь, как она на самом деле называется )))
Про дребезг контактов и некоторые способы борьбы с ним можно почитать здесь. А сегодня расскажу ещё об одном способе, который, как я недавно и случайно узнал, называется сильно мудрёно - цифровой интегрирующий фильтр.
Суть его в следующем…
Допустим, нажатая кнопка при считывании дает единицу, а отпущенная - ноль. Для повышения надежности можно считывать состояние кнопки не один, а несколько раз. Все полученные таким образом числа можно сложить между собой (точнее, не сложить, а посчитать количество нулей и единиц).
Затем можно определить, каких результатов было больше: нулевых либо единичных. Допустим, что мы выполним подряд 50 операций чтения состояния входа и подсчёта количества нулей и единиц там. Теперь, если полученная сумма окажется больше 25-ти (более половины от общего числа проверки состояний входа), и, соответственно, число единиц при этом будет больше числа нулей, то кнопку можно считать нажатой. В противном случае она считается отпущенной. Такой алгоритм и называется цифровой интегрирующий фильтр.
Этот алгоритм хорош тем, что не требует временных задержек, что намного проще реализовать программно. Кроме того, в большинстве случаев он будет работать быстрее, чем алгоритмы с использованием временных задержек.
Реализовать такой алгоритм проще всего с помощью цикла. В каждом цикле делаем примерно следующее:
Счётчик = 0
ПОКА Счётчик < 50 ЦИКЛ
ЕСЛИ Вход = 1 ТО
ЧислоЕдиниц = ЧислоЕдиниц + 1
ИНАЧЕ
ЧислоНулей = ЧислоНулей + 1
КОНЕЦ_ЕСЛИ
Счётчик = Счётчик + 1
КОНЕЦ_ЦИКЛА
СостояниеКнопки = ЧислоЕдиниц > ЧислоНулей
Как вы догадались, это алгоритмический язык (кстати, язык 1С примерно так и выглядит - проще простого). Для конкретного микроконтроллера можно написать этот алгоритм на ассемблере или на С (кому что нравится). Здесь главное - не язык, а алгоритм.
Ну и напомню, что борьба с дребезгом “вручную” актуальна только для “полуфабрикатов” (то есть для цифровых устройств, которые вы сами собираете на микроконтроллерах или микросхемах). Готовые программируемые устройства, такие как ПЛК, уже имеют готовый фильтры для подавления дребезга, и их остаётся только задействовать при необходимости.
На этом пока всё. Подписывайтесь на канал, чтобы ничего не пропустить.