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

 
 
> AT89C5131A-M & keyboard, задержки дребезга
toweroff
сообщение Jan 12 2009, 20:59
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



В даташите не нашел, по сему вопрос

Вариант "Нет аппаратной защиты от дребезга"

1. Ловим прерывание, сохраняем код клавиши, посылаем сигнал в процесс, выходим
2. После отловли сигнала в процессе ждем ~50мс, опять читаем регистр клавы ......
3. Ждем события "клавиша отжалась" (также ~50мс)
здесь опять же можно заморочиться с изменением уровня по реакции прерывания, впихнуть в обработчик, можно оставить в процессе
А вообще этого может и не быть, как получится.. smile.gif
4. Сбрасываем флаг прерывания
3. Сравниваем значения и case


Вариант "Есть аппаратная защита" - ну тут, наверно, все ясно

Так вот сам вопрос

Кто как делал? Или какие опытные мысли?
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
rezident
сообщение Jan 12 2009, 22:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Вы используете матрицу клавиш или каждая клавиша на индивидуальный вход порта клавиатуры подключена? В первом случае я бы реализовал классический интервальный опрос, а прерывание от модуля клавиатуры использовал лишь для запуска опроса. Во втором случае более подходит другой метод: счетчик совпадений с перезапуском. По прерыванию от модуля клавиатуры делается циклический опрос состояния клавиши, вызвавшей прерывание. При совпадении состояния заданное число раз (10-20-50 раз, подобрать экспериментально) считаем, что дребезга нет и состояние устойчивое. Если же состояние входа хоть раз отличается, то цикл опроса/сравнения запускаем снова. Естественно, что время опроса клавиши (количество перезапусков) тоже ограничено.
Go to the top of the page
 
+Quote Post
zorromen
сообщение Jan 13 2009, 04:12
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 13-12-05
Пользователь №: 12 147



А непробывали ставить конденсатор на 100n? И задержек ненадо.
Go to the top of the page
 
+Quote Post
ed_ward
сообщение Feb 2 2009, 19:53
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 24-01-09
Из: sPb
Пользователь №: 43 885



Кондер лучше не ставить, от него контакты изнашиваются...
Думаю, оптимально было б так:
1. Ловим прерывание.
2. Обрабатываем
3. В течении 50-100 мс не обращаем внимания
4. Если все еще есть контакт- юзер удерживает кнопку, чего-то хочет smile.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 2 2009, 20:05
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Поищите в поисковиках "debounce switch" - найдёте много вариантов.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 15:18
Рейтинг@Mail.ru


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