Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT89C5131A-M & keyboard
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
toweroff
В даташите не нашел, по сему вопрос

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

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


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

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

Кто как делал? Или какие опытные мысли?
Спасибо!
rezident
Вы используете матрицу клавиш или каждая клавиша на индивидуальный вход порта клавиатуры подключена? В первом случае я бы реализовал классический интервальный опрос, а прерывание от модуля клавиатуры использовал лишь для запуска опроса. Во втором случае более подходит другой метод: счетчик совпадений с перезапуском. По прерыванию от модуля клавиатуры делается циклический опрос состояния клавиши, вызвавшей прерывание. При совпадении состояния заданное число раз (10-20-50 раз, подобрать экспериментально) считаем, что дребезга нет и состояние устойчивое. Если же состояние входа хоть раз отличается, то цикл опроса/сравнения запускаем снова. Естественно, что время опроса клавиши (количество перезапусков) тоже ограничено.
zorromen
А непробывали ставить конденсатор на 100n? И задержек ненадо.
ed_ward
Кондер лучше не ставить, от него контакты изнашиваются...
Думаю, оптимально было б так:
1. Ловим прерывание.
2. Обрабатываем
3. В течении 50-100 мс не обращаем внимания
4. Если все еще есть контакт- юзер удерживает кнопку, чего-то хочет smile.gif
demiurg_spb
Поищите в поисковиках "debounce switch" - найдёте много вариантов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.