Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 22.10.2014, 14:42  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от eddy Посмотреть сообщение
Я не понял, к чему такие трудности? Просто заводим прерывание EXTI на кнопки. Как только прерывание получили, заносим в некую переменную значение задержки (скажем, 50), устанавливаем флаг нажатия и отключаем реакцию на прерывания. Ну, а в прерывании системного таймера (1 раз в 1мс) декрементируем эту переменную задержки, и как только она обращается в нуль, опять разрешаем прерывания EXTI.
В main же спокойно обрабатываем флаг.
Реализовал этот алгоритм в управлялке сверлильным станочком. В main не реже 1 раза в миллисекунду проверяется значение счетчика (задержка обработчика - выставляется обработчиком EXTI, в нем же отрубается реакция на внешние прерывания). Если выставлен, то декрементируется, а как обнулится, вызывается функция, проверяющая состояние кнопок.
Задержку пришлось увеличить до 100мс, чтобы можно было успеть одновременно две кнопки нажать (не хотелось мне добавлять еще код для определения нажатия второй кнопки через малый промежуток после первой). Пробовал проводочком замыкать (вот — идеальный источник дребезга) — ложных срабатываний не было.
Реклама:
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 22.10.2014, 15:17  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от eddy Посмотреть сообщение
Пробовал проводочком замыкать (вот — идеальный источник дребезга) — ложных срабатываний не было.
А потому не было, что реализован цифровой интегратор с гистерезисом. Микрики так работают: сначала интегрируют ход кнопки (можешь её неравномерно нажимать и даже приотпускать иногда) пока не дойдёт до порога, а за порогом уже всё обратно - пока не отожмёшь почти до конца, не щёлкает. И тут - дребезг только увеличивает время реакции, а результат однозначный.
У меня так сделано: на каждую кнопку - один байт, в нём счётчик о 5-ти разрядах, флаг состояния "нажато" и 2 флага событий "нажали" и "отпустили". Раз в 10 мс (где как, от 10 до 30) опрос кнопок и реакция на состояние (чаще - на событие).
makakus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опрос кнопки на atmega 16 2517212 Микроконтроллеры, АЦП, память и т.д 10 31.03.2012 10:22
Опрос клавиатуры ra0wbj Микроконтроллеры, АЦП, память и т.д 3 13.10.2011 21:40
Опрос матричной клавиатурки serb-radio Электроника - это просто 2 31.07.2009 16:32
Опрос удалённых датчиков. picavr Микроконтроллеры, АЦП, память и т.д 6 20.03.2009 01:09
Опрос кнопки Electric111 Микроконтроллеры, АЦП, память и т.д 15 18.12.2007 22:48


Часовой пояс GMT +4, время: 19:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot