Подавление дребезга контактов
Фильтрация быстрых импульсов включения-выключения, которые механический переключатель порождает в первые миллисекунды после нажатия.
Металлические контакты дребезжат. Микроконтроллеру, опрашивающему вывод GPIO миллионы раз в секунду, одно нажатие кнопки кажется десятью-пятьюдесятью переходами за несколько миллисекунд, а прерывание по фронту срабатывает столько же раз. Кто собирал свой первый счётчик нажатий, видел, как он перепрыгивает с 3 сразу на 11.
Аппаратное решение — RC-фильтр перед триггером Шмитта: он замедляет сигнал и добавляет гистерезис. В прошивке обычно опрашивают вывод с фиксированной частотой, например из прерывания SysTick, и принимают новое состояние лишь после того, как оно продержалось несколько отсчётов подряд. Можно просто подождать 20 мс после первого фронта, но это отнимает время у всего остального. Статья Джека Гэнссла о том, как ведут себя настоящие переключатели, остаётся стандартным источником.