Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как подключить 4 кнопки к at2313? чтобы...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Genri
Как подключить 4 кнопки к at2313, чтобы по нажатию любой из них возникало прерывание, причем кнопки эти двух контактные работают на замыкание?
hd44780
Читай AppNote AVR240 - клавиатура правда 4x4, но идея та же.
Там по сути элемент ИЛИ или ИЛИ-НЕ в диодной логике.
Правда я лично не проверял.
sysel
Цитата(Genri @ Mar 17 2008, 18:38) *
Как подключить 4 кнопки к at2313, чтобы по нажатию любой из них возникало прерывание, причем кнопки эти двух контактные работают на замыкание?


См. прикрепленную картинку.
Используются внутренние подтягивающие резисторы. (линии АВР настроены как входы, в порт записаны единицы).
При нажатии на какую-либо из кнопок на линии INT1 появиться 0.
sysel
Или другой вариант с экономией диодов.

состояние 1 (начальное):
ПОРТ - выход, все = 0
INT1 - подтянутый к "1" вход, прерывание по отрицательному перепаду

В обработчике прерывания:
делаем ПОРТ подтянутым входом
делаем INT1 выходом = 0;
считываем с линий порта, что за кнопка нажата (соотв. бит будет = 0))
делаем чего-то полезное
переводим всё в состояние 1 (начальное)
выходим из прерывания.
CDT
А можно запустить таймер с периодом прерываний 4-10 мс и опрашивать кнопки в этом прерывании.
Kuzmi4
2 Genri - не забудте про антидребезговые элементы - можете поиметь траблы если пропустите этот момент..
Genri
Цитата(Kuzmi4 @ Mar 18 2008, 17:30) *
2 Genri - не забудте про антидребезговые элементы - можете поиметь траблы если пропустите этот момент..

Извините за дилетантские вопросы. Что вы подразумеваете под "антидребезговыми элементами"?
Включить емкости параллельно кнопкам? Я думал программно с дребезгом бороться (ввести задержку например или многократный опрос состояния) или этого может быть недостаточно?
Подскажите чайнику как лучше сделать, зараннее спасибо
CDT
Цитата(Genri @ Mar 18 2008, 22:50) *
Извините за дилетантские вопросы. Что вы подразумеваете под "антидребезговыми элементами"?
Включить емкости параллельно кнопкам? Я думал программно с дребезгом бороться (ввести задержку например или многократный опрос состояния) или этого может быть недостаточно?
Подскажите чайнику как лучше сделать, зараннее спасибо

А по входу прерывания?
Если его обработка будет короче дребезга - так и будете туда прыгать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.