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

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

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

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

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

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


 
Опции темы

Зажание кнопки (STM32F4)

Непрочитано 03.02.2016, 11:23  
Реостат
Частый гость
 
Регистрация: 29.10.2015
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Реостат на пути к лучшему
По умолчанию Зажание кнопки (STM32F4)

Добрый день.
Исследую внешние прерывания для STM32F4 на плате Discovery. Не могу понять, как реализовать "зажатие" кнопки. Т.е. длительный процесс.

Сейчас я сделал простое нажатие и отжатие кнопки (мгновенное действие). Т.е. простое переключение диодов.

А хочется сделать это:
Зажал кнопку - загорелся зеленый диод.
Убрал палец с кнопки - загорелся оранжевый диод.

Как обработчик прерывания правильно написать/сконфигурировать?
Реклама:
Реостат вне форума  
Непрочитано 03.02.2016, 11:56  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

А если использовать флаг нажатия кнопки, нажал кнопку - выставить флаг. В цикле проверять флаг, есть флаг, но не нажата кнопка, зажечь желтый и убрать флаг.
andries5 вне форума  
Непрочитано 03.02.2016, 12:00  
Реостат
Частый гость
 
Регистрация: 29.10.2015
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Реостат на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

Да, да. Сейчас флаг состояния как раз используется.
Ааа, смысле в основном цикле делать проверку?
Реостат вне форума  
Непрочитано 03.02.2016, 12:08  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

На таком камне есть смысл запускать RTOS. А там уже делать проверку кнопок в отдельной задаче.
Easyrider83 вне форума  
Непрочитано 03.02.2016, 12:21  
Реостат
Частый гость
 
Регистрация: 29.10.2015
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Реостат на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

До RTOS пока еще не дошел.
Т.е. Вы хотите сказать, что отслеживание длительного процесса зажатия кнопки одним только внешним прерыванием не отделается?


А есть тут возможность отслеживать кроме нажатия кнопки еще и ее отжатие?
Т.е. при событии "кнопка нажата" ставим флаг состояния = ON. При событии "кнопка отпущена" - OFF.
Реостат вне форума  
Непрочитано 03.02.2016, 12:41  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

Используйте прерывание по таймеру. По нажатию инкременируйте переменную. По отпусканию оценивайте результат.
RTOS не бойтесь. Там все просто. Руки сразу развяжутся.
Easyrider83 вне форума  
Непрочитано 03.02.2016, 13:56  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

Сообщение от Реостат Посмотреть сообщение
А есть тут возможность отслеживать кроме нажатия кнопки еще и ее отжатие?
Т.е. при событии "кнопка нажата" ставим флаг состояния = ON. При событии "кнопка отпущена" - OFF.
Конечно есть. Можно вызвать прерывание по Rising событию и по Falling событию. В прерывании определить какое именно событие произошло и выполнить соответствующее действие. Не забывать про дребезг.
andries5 вне форума  
Непрочитано 03.02.2016, 21:09  
Реостат
Частый гость
 
Регистрация: 29.10.2015
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Реостат на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

Да, и в самом деле - флаг "EXTI_Trigger_Rising_Falling".
Реостат вне форума  
Непрочитано 04.02.2016, 02:20  
kolobok0
Частый гость
 
Регистрация: 10.09.2010
Адрес: Резиновая
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 14 раз(а) в 12 сообщении(ях)
kolobok0 на пути к лучшему
Счастье Re: Зажание кнопки (STM32F4)

Сообщение от Реостат Посмотреть сообщение
Добрый день.
...Не могу понять, как реализовать "зажатие" кнопки. Т.е. длительный процесс....Как обработчик прерывания правильно написать/сконфигурировать?
Тут уже выше всё ключевое прозвучало. Первое(чтоб не с граблей начинать) - проникнитесь темой дребезга контактов. Пока это не пощупаете - все Ваши алгоритмы будут на уровне пятиклассника.

вторую тему, я бы сразу обозвал - обработка нескольких клавиш(клавиатуры). Пускай это будет тупо несколько входов, а не матрица, пока.

сразу пишите по "взрослому" - нажатие, двойное нажатие, удержание(автоповтор клавиши), комбинация клавиш.

Если в рукопашную, чисто программно - то обычно прикрывают(как в писюке биос) тонким слоем обработчика аппаратуру(в данном случае обработчик прерывания). Ну и софтово разруливать состояния, функционал и внешний интерфейс (Ваш API).

Но можно и аппаратуру заставить выполнять какую-либо работу. Но это можно потом - более глубже задуматься, что можно "убрать в железо" мк.

обычно, чтоб отсечь дребезг - используют квантованный временной интервал. Обычно это один из таймеров.

И тут уже прозвучало замечание - для такой мощи как STM32F - делать на супер циклах можно в случае: когда Вы понимаете точно, что хотите добиться(в чём выигрыш). ну и в чём проигрыш конечно-же. Например: если Вы делаете на коленке чисто помигать светодиодами - тащить РТОС это явно перебор. А вот если это серьёзный распределённый проект(в котором сидят несколько программеров) - то использовать супер цикл= надо иметь веские аргументы.

удачи вам
(круглый)
kolobok0 вне форума  
Непрочитано 04.02.2016, 08:19  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Зажание кнопки (STM32F4)

Сообщение от kolobok0 Посмотреть сообщение
сразу пишите по "взрослому" - нажатие, двойное нажатие, удержание(автоповтор клавиши), комбинация клавиш.
Пусть вначале напишет для обычных нажатий, со срабатыванием при нажатии. Потом уже дальше "по-взрослому" будет. А то запутается. Пытаться сразу сделать всё сразу, не делав раньше даже простого - сломать себе мозг. Методы для обычной линейной клавиатуры и для матричной будут разными.
Да и далеко не в каждой клавиатуре нужен сразу весь набор обработок нажатий. То есть, если кнопки клавиатуры только на вкл/выкл, то зачем там автоповтор и длительное нажатие. Как бы принцип разумной достаточности.
NewWriter вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишем свое API Easyrider83 Embedd С 96 22.05.2016 01:23
Как отследить короткое и продолжительное нажатие кнопки в фонаре? poligon_85 Микроконтроллеры, АЦП, память и т.д 414 08.04.2015 20:53
Режимы сна Атмега-8 putmannn AVR 123 08.03.2013 15:30
Западают от холода мембранные кнопки! Sukhanov Производственное оборудование 16 09.02.2012 07:32
usb-flash адаптер - самостирание от кнопки neokolyan Микроконтроллеры, АЦП, память и т.д 12 23.03.2011 17:33


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.