Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дребезг Кнопок на Mega 
:(
    Опции темы
EVSx1
Дата 9.7.2009, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.1.2008

Репутация: нет
Всего: нет



Я начинаю работать с контроллерами.Есть матричная клавиатура допустим 4*4.как организовать опрос на нажатие кнопок представляю.А как избавляются от нехорошой вещи,такой как дребезг кнопок.Просто убивать циклы(задержка)?или организовать таймер чтобы проверял временные промежутки,тогда сколько промежутков надо отследить,чтобы с уверенностью сказать ,что дребезг прошел.Кто как организует это?
PM MAIL   Вверх
cardinal
Дата 10.7.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Тут по-русски
http://itpuls.com/wrt/drebesg.html
но почему лучше это делать программно мне непонятно. Предпочитаю решать проблему с дребезгом при помощи железа. По подробнее (а точнее просто на самом деле анатомия дребезга smile) написано здесь на англ. яз.
http://www.ganssle.com/debouncing.pdf


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Mazzi
Дата 10.7.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(EVSx1 @ 9.7.2009,  23:53)
А как избавляются от нехорошой вещи,такой как дребезг кнопок.Просто убивать циклы(задержка)?или организовать таймер чтобы проверял временные промежутки,тогда сколько промежутков надо отследить,чтобы с уверенностью сказать ,что дребезг прошел.Кто как организует это?

Дребезг контактов примерно 10 миллисекунд, короткое нажатие палцем на кнопку примерно 50 миллисекунд. 

Обнаружив изменение состояния на кнопке запрещаеш её опрос на 30 миллисекунд, по прошествии которых(30мс) ещё раз опрашиваеш состояние кнопки (после дребезга). Это состояние(кнопки) считаеш достоверным.

Всё.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
UniBomb
Дата 10.7.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Я делаю так - опрашиваю кнопки каждые 10-15 мс, если три раза подряд я получаю состояние "кнопка нажата" или "кнопка отжата", то программа уверена что кнопка действительно нажата.

Это сообщение отредактировал(а) UniBomb - 10.7.2009, 09:52
PM MAIL ICQ Skype   Вверх
EVSx1
Дата 10.7.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.1.2008

Репутация: нет
Всего: нет



Цитата(UniBomb @ 10.7.2009,  09:52)
Я делаю так - опрашиваю кнопки каждые 10-15 мс, если три раза подряд я получаю состояние "кнопка нажата" или "кнопка отжата", то программа уверена что кнопка действительно нажата.

3*15=45мс за этот промежуток сможет человек успеть нажать два раза?меня как раз волнуют вот эти временные интервалы,как их выбирают?
PM MAIL   Вверх
UniBomb
Дата 10.7.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



EVSx1, теоретически человек сможет два раза нажать и за 10 мс, но это ведь работа с аппаратурой это не соревнование по скоростному соревнованию. Тем более что время дребезга не всегда поддаётся предсказанию, но при этом величина времени довольно мала. 20-30 мс задержек вполне хватит, я делаю больше для избыточной перестраховки.
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 10.7.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(EVSx1 @ 10.7.2009,  14:11)
3*15=45мс за этот промежуток сможет человек успеть нажать два раза?

Вдвоём с другом делаете эксперимент.

Один из вас открывает на редактирование текстовый файл, например "Блокнот", второй готовит секундомер(например в мобилке).

По команде человека с секундомером, человек с "блокнотом" начинает лихорадочно молотить одним палцем по одной клавише. После выдержки например 10 секунд, человек с секундомером говорит "Стоп!".

Затем подсчитываем количество символов в файле, делим 10000 на число символов(в файле), в результате получаем время одного нажатия в миллисекундах.

Для увеличения достоверности проведите серию испытаний.

Удачи!


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
cardinal
Дата 10.7.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(EVSx1 @  10.7.2009,  12:11 Найти цитируемый пост)
меня как раз волнуют вот эти временные интервалы,как их выбирают? 

во первых смотри выше, а во вторых разные кнопки по разному дребезжат... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.