Антидребезг для клавиатуры (в т.ч матричной)

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Антидребезг для клавиатуры (в т.ч матричной)

Сообщение Dryundel »

Bounce (для клавиатуры)
1.jpg
Антидребезг_матричной_клавиатуры_(Bounce)_(Code_-_Professional).ubi
.
Блок предназначен для фильтрации дребезга контактов на клавиатуре.
Блок восьмибитный - максимум на 8 входов/выходов. Это обусловлено оптимизацией.
Если требуется больше, примените несколько блоков.
Для всех блоков будет использован один программный таймер.
В сравнении с использованием штатного блока Bounce, на каждый выход Матричной клавиатуры, этот блок займет более чем в два раза меньше памяти, плюс обеспечит дополнительные возможности.
Алгоритм блока весьма оптимизирован, к примеру на 8 входов/выходов используется всего 4 переменные (7 байт).
Особенности:
Блок фильтрует одновременно все кнопки клавиатуры. Изменения на выходах блока произойдут только тогда, когда прекратиться дребезг на всех кнопках. С помощью этой особенности можно отфильтровать (отделить) одновременное нажатие двух клавиш от нажатия этих клавиш по отдельности. Для этого надо поставить
Таймер антидребезга на 150 - 200 мс.
.
Тест фильтрации одновременного нажатия
Тест Bounce2.flp
[spoiler=Скрин проекта]
3.jpg
[/spoiler]
[spoiler=Вывод теста в UART]
2.jpg
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей