реклама на сайте
подробности

 
 
> обработка повторных нажатий клавиатуры, atmega32+4x4 kbd
GoodNews
сообщение Feb 21 2010, 18:50
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259



Драйвер клавиатуры построен на базе атмеловского апноута AVR245. Есть одно но - повторные нажатия клавиш не могу реализовать. Т.е. теоретически представляю как это должно выглядеть, но на практике не получается. Я думал вначале использовать сравнение состояний порта клавиатуры. Т.е. при инициализации драйвера берём объявляем некоторую статическую переменную, в которую загружаем значение порта (все клавиши отпущены), затем в функции обработки клавиш считываем текущее состояние порта и сравниваем со значением по-умолчанию. Если не совпадает, то выводим значение, если совпадает - пропускаем. Также по идее должно проверяться была ли физически отпущена клавиша. Посоветуйте плиз как можно выйти из данного положения.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Алекс1981
сообщение Feb 21 2010, 18:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 16-03-09
Из: Волгоградская обл
Пользователь №: 46 144



Насколько я понимаю: требуется отсеять повторные нажатия клавиш? Если да, то есть вариант такой: после обработчика нажатия клавиши ставить задержку 100-200 мс, тем самым не нужно будет думать об отпускании клавиш. Если вариантов нажатий клавиш немного - можно ввести переменную состояния девайса и менять ее при нажатии определенной клавиши, если много, то запоминать нажатие последней клавиши и действительно как вы указали - проверять на соответствие и отсеивать
Go to the top of the page
 
+Quote Post
GoodNews
сообщение Feb 21 2010, 19:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259



Цитата(Алекс1981 @ Feb 21 2010, 20:55) *
после обработчика нажатия клавиши ставить задержку 100-200 мс, тем самым не нужно будет думать об отпускании клавиш

Хочется без лишних задержек, так как кроме этого ещё реализовано динамическое обновление дисплея, так что эта задержка не будет удачным решением. В драйвере используются флаги для проверки состояний клавиш, однако физически они не проверяются на момент фактического "поднятия" клавиши, только програмно, т.е. выполнил кусок кода, выставил флаг в 1 или 0.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 13:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016