Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Технический флейм »   Посоветуйте методику программного подавления дребезга клавы
RSS

Посоветуйте методику программного подавления дребезга клавы

Можно в блок-схемах. Матрица - 8 х 16 кнопок.

<<Назад  Вперед>> Страницы: 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
Я делал подпрограмму которая опрашивая клавиатуру сравнивает 3-4 (подбирается по скорости опроса) результата опроса подряд если они одинаковые то считается клавиша нажата, если меньше то дребезг и игнорирует результат и сравнение идет сначала с обнулением промежуточного результата. Если следующие 3-4 опроса повторяют результат первых опросов то считается длительное нажатие (или повторное, смотря что требуется по логике работы девайса). Для сравнения хранилось только байт - предыдущее значение и байт - счетчик числа совпадений, Цикл сканирования заканчивался проверкой количества совпадений когда оно достигало нужного значения в моем случае 3-4 то происхоила выдача результатат и цикл запускался по новой.
Для нескольких линий опроса по такому алгоритму надо опрашивать каждую линию, а потом вычислять по результату опроса какие клавиши на каких линиях считать нажатыми.
попутно шунтирование выхода клавиатуры небольшими емкостями на землю.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mildi написал:
[q]
Я делал...
[/q]
Спасибо за совет !

Предполагаю реализовать матрицу на 128 слов ( по 2 байта ) , т.к. кнопок всего 128 ( 8 х 16 ) , где старший байт - маркер "нажата/отжата", а младший байт - счетчик попыток/сканов. Необходимо получение сигнала как нажатой кнопки, так и отжатой.
Например, при первом проходе ( сканировании ) нажатой кнопки просто добавляется единица в счетчик проходов ( младший байт слова состояния кнопки ), а при достижении значения, например, "5", выставляется флаг "нажата" в старшем байте и идет передача данных. Дальше, соответственно, при сканировании этой кнопки, если она нажата - ничего не делается, а при отжатии - начинается декремент байта значения, и при достижении значения "1" в старшем байте слова состояния кнопки ставится маркер "отжата", и идет передача сигнала "отжата кнопка N".
Т.к. клава предполагается с полным функционалом, необходимо отслеживать несколько одновременно нажатых кнопок.
Быстродействие 1806ВМ2 - 1 млн рег-рег., сканирвание будет основной задачей ( не подпрограммой ). По мере испытаний выставлю время ожидания дребезга в 0.05 сек примерно.
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
...аппаратно дребезг кнопок ведь решался включением КМ-ок?
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Аппаратно он решался установкой н1806хм1->какая_прошивка_не_помню>, по крайней мере в самолётных пультах 1990х годов.
Mildi
Advanced Member


Откуда: Мончегорск
Всего сообщений: 342
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
3 сен. 2016
Кай написал:
[q]
...аппаратно дребезг кнопок ведь решался включением КМ-ок?
[/q]
Не обязательно КМ, любые емкости которые с резисторами подтяжки образуют RC цепочку. постоянная времени которой больше времени дребезга.
в идеале конечно еще и тригеры шмидта в цепь включить, но не обязательно.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mildi написал:
[q]
...тригеры шмидта в цепь включить...
[/q]
Лет 20 назад делали экспериментальный мод клавы-скрипучки для БК0010 - от кнопок ПКН111 отсоединялось всё, на плату скрипучки навешивались макетные тонкие длинные платочки с 564ТЛ1В и 564КТ3В, некотрое к-во резисторов НР1-4-9 , ИК светики АЛ107 ( ??? ) и фотодиоды. К подвижным элементам ПКН-111 приделывались булавки швейные, которые через отверстия в ДПП скрипучки перекрывали свет между оптопарами.
Вся конструкция работала, но со скрипом ( т.к. кнопки остались те же ;) )
И в корпус БКшки, конечно, потребовалось ставить дополнительные 2 комплекта рамочек.
Зато никакого дребезга !
<<Назад  Вперед>> Страницы: 1 *
Печать
Полигон-2 »   Технический флейм »   Посоветуйте методику программного подавления дребезга клавы
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS