ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
3 мая
1460684 Топик полностью
SciFi (02.09.2024 09:41, просмотров: 163) ответил Лaгyнoв на раз уж тут народ делится. У меня с юных лет было просто всегда. Опрос строго по тактам (1-5 мсек). Первое нажатие - запуск счетчика. Каждый такт при продолжении нажатия - инкремент. Любое отжатие - сброс. Насчитал непрерывно 50 мсек - есть нажатие. Этот принцип что в одиночных кнопках, что в матричной клавиатуре.
Максим делал чипы для фильтрования дребезга. Кстати, алгоритм удобно делать, задвигая выборки в целочисленную переменную. Когда задвинулись все нули или все единицы, регистрируем переключение. 

https://static.chipdip.ru/lib/824/DOC004824091.pdf

enum debounce_state
{
    BOUNCE, ONE, ZERO
};
enum debounce_state debounce(bool in) { static int samples; samples <<= 1; samples |= in; switch (samples) { case 0: return ZERO; case ~0: return ONE; default: return BOUNCE; } }
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้