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

 
 
> Прерывания от кнопок
over
сообщение Jan 20 2005, 16:39
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 20-01-05
Пользователь №: 2 086



Есть в семействе AVR чип которого можно разбудить изменением лог. уровня на входе порта? Реально есть 4 кнопки, нужно чтобы контроллер впадал в спячку при отпускании кнопки и завершении операции и соотв. будился при нажатии любой кнопки. В 2313 есть только два входа внешнего прерывания что маловато. Можно подвесить что-нибудь снаружи, но теряется кайф использования микроконтроллера.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 19)
Stas
сообщение Jan 29 2005, 19:32
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751



Дребезг появляется в момент нажатия / размыкания кнопки, в момент удержания - он маловероятен, если же конечно Вы не используете отечественные силовые кнопки с огромным усилием нажатия. Первое нажатие клавиши фиксируется по внешнему прерыванию, возникает дребезг от замыкания пластины с контактами внутри клавиши, мы входим в прерывание и запрещаем его, запускаем таймер (на дребезг нам делается все равно, а за 250 мс он угомонится) и продолжаем опрос по таймеру через 250 мс, для определения вторичного нажатия (если имеет место быть удержание клавиши). Как определили что клаву мацать закончили (при очередном прерывании нет повтора нажатой кнопки), то опять разрешаем внешнее прерывание. И все по новому циклу, ждем внешнее прерывание. Для устранения эффекта притормаживания устройства при быстром наборе, в каждом прерывании по таймеру надо смотреть на нажатие новой клавиши, те новый прочитаный код совпал с прошлым кодом или нет. Если нет, то определяется нажатие другой кнопки. Время 250 - это на любителя, за 50 - не каждый успеет палец убрать. Реально я делал время сканирования в пределе 200 - 300 мс, работало аж самому нравилось как. blush.gif
Go to the top of the page
 
+Quote Post
Пришелец
сообщение Jan 31 2005, 05:37
Сообщение #17


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

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Нормально работает опрос 1 раз в 50 мс (с нормальными кнопками).

Если код изменился (и !=0) то считается новое нажатие.
smile.gif
Go to the top of the page
 
+Quote Post
sav6622
сообщение Feb 3 2005, 12:21
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 2-02-05
Из: Россия
Пользователь №: 2 377



Я устраняю дребезг следующим образом: организуется вспомогательный счетчик(например 128), опрашивается вход с какой-то дискретностью, при 1 увеличиваю счетчик, при 0 соответсвенно уменьшаю на 1, после чего решаю по превышению счетчиком определнной границы имеется ли-что то на входе, причем замечу границу не обязательно делать посередине, надо смотреть в зависимости от предназначения.
Go to the top of the page
 
+Quote Post
veter
сообщение Feb 3 2005, 14:33
Сообщение #19


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

Группа: Свой
Сообщений: 119
Регистрация: 26-01-05
Из: С-Пб
Пользователь №: 2 210



у меня реализовано следующее:

по таймеру вызываю обработчик нажатия кнопки раз в 5 мсек.
если кнопка нажата - запускаю счетчик на 64, после переполнения определяю действительно ли она нажата, перевовожу счетчик на 255 -> автоповтор кнопки запускается через 1 сек, по определению 10ти повторов счетчик уменьшаю в два раза и т.д - в итоге небольшой ускоритель, очень удобно - если мало кнопок, а диапазон вводимых значений достаточно большой
Go to the top of the page
 
+Quote Post
berberber
сообщение Feb 4 2005, 17:26
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-02-05
Пользователь №: 2 385



Цитата(over @ Jan 20 2005, 19:39)
Есть в семействе AVR чип которого можно разбудить изменением лог. уровня на входе порта? Реально есть 4 кнопки, нужно чтобы контроллер впадал в спячку при отпускании кнопки и завершении операции и соотв. будился при нажатии любой кнопки. В 2313 есть только два входа внешнего прерывания что маловато. Можно подвесить что-нибудь снаружи, но теряется кайф использования микроконтроллера.
*


Многие AVR имеют прерывание по изменению состояния выводов.
Go to the top of the page
 
+Quote Post

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

 


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


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