Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Технический флейм » Посоветуйте методику программного подавления дребезга клавы |
<<Назад Вперед>> | Страницы: 1 * | Печать |
F0lken
Advanced Member
Всего сообщений: 762 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 7 нояб. 2006 |
Вот тут с картинками https://github.com/thomasfredericks/Bounce2/wiki Использовал либу не раз, и тоже на матричной клавиатуре. Вот еще проще http://wikihandbk.com/wiki/Ard...B/Debounce |
Mildi
Advanced Member
Откуда: Мончегорск Всего сообщений: 342 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 3 сен. 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 13 августа 2017 13:02 Сообщение отредактировано: 13 августа 2017 13:13
Я делал подпрограмму которая опрашивая клавиатуру сравнивает 3-4 (подбирается по скорости опроса) результата опроса подряд если они одинаковые то считается клавиша нажата, если меньше то дребезг и игнорирует результат и сравнение идет сначала с обнулением промежуточного результата. Если следующие 3-4 опроса повторяют результат первых опросов то считается длительное нажатие (или повторное, смотря что требуется по логике работы девайса). Для сравнения хранилось только байт - предыдущее значение и байт - счетчик числа совпадений, Цикл сканирования заканчивался проверкой количества совпадений когда оно достигало нужного значения в моем случае 3-4 то происхоила выдача результатат и цикл запускался по новой. Для нескольких линий опроса по такому алгоритму надо опрашивать каждую линию, а потом вычислять по результату опроса какие клавиши на каких линиях считать нажатыми. попутно шунтирование выхода клавиатуры небольшими емкостями на землю. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mildi написал: Спасибо за совет ! Я делал... Предполагаю реализовать матрицу на 128 слов ( по 2 байта ) , т.к. кнопок всего 128 ( 8 х 16 ) , где старший байт - маркер "нажата/отжата", а младший байт - счетчик попыток/сканов. Необходимо получение сигнала как нажатой кнопки, так и отжатой. Например, при первом проходе ( сканировании ) нажатой кнопки просто добавляется единица в счетчик проходов ( младший байт слова состояния кнопки ), а при достижении значения, например, "5", выставляется флаг "нажата" в старшем байте и идет передача данных. Дальше, соответственно, при сканировании этой кнопки, если она нажата - ничего не делается, а при отжатии - начинается декремент байта значения, и при достижении значения "1" в старшем байте слова состояния кнопки ставится маркер "отжата", и идет передача сигнала "отжата кнопка N". Т.к. клава предполагается с полным функционалом, необходимо отслеживать несколько одновременно нажатых кнопок. Быстродействие 1806ВМ2 - 1 млн рег-рег., сканирвание будет основной задачей ( не подпрограммой ). По мере испытаний выставлю время ожидания дребезга в 0.05 сек примерно. |
Кай
Гость
Divine Assassin Откуда: извне (from beyond) Всего сообщений: 13709 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2010 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 13 августа 2017 15:33 Сообщение отредактировано: 13 августа 2017 15:37
...аппаратно дребезг кнопок ведь решался включением КМ-ок? |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Аппаратно он решался установкой н1806хм1->какая_прошивка_не_помню>, по крайней мере в самолётных пультах 1990х годов. |
Mildi
Advanced Member
Откуда: Мончегорск Всего сообщений: 342 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 3 сен. 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 13 августа 2017 19:16 Сообщение отредактировано: 13 августа 2017 19:18
Кай написал: Не обязательно КМ, любые емкости которые с резисторами подтяжки образуют RC цепочку. постоянная времени которой больше времени дребезга. ...аппаратно дребезг кнопок ведь решался включением КМ-ок? в идеале конечно еще и тригеры шмидта в цепь включить, но не обязательно. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mildi написал: Лет 20 назад делали экспериментальный мод клавы-скрипучки для БК0010 - от кнопок ПКН111 отсоединялось всё, на плату скрипучки навешивались макетные тонкие длинные платочки с 564ТЛ1В и 564КТ3В, некотрое к-во резисторов НР1-4-9 , ИК светики АЛ107 ( ??? ) и фотодиоды. К подвижным элементам ПКН-111 приделывались булавки швейные, которые через отверстия в ДПП скрипучки перекрывали свет между оптопарами. ...тригеры шмидта в цепь включить... Вся конструкция работала, но со скрипом ( т.к. кнопки остались те же ) И в корпус БКшки, конечно, потребовалось ставить дополнительные 2 комплекта рамочек. Зато никакого дребезга ! |
<<Назад Вперед>> | Страницы: 1 * | Печать |
Полигон-2 » Технический флейм » Посоветуйте методику программного подавления дребезга клавы |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |