Например TDA7294

Форум РадиоКот • Просмотр темы - Опрос кнопок микроконтроллером
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт дек 30, 2025 17:09:07

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 509 ]     ... , , , 9, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 15:14:32 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 20013
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
shads писал(а):
Подключение через INT0 или INT1
О, у меня так: 2 кнопки повесил на внешние прерывания. Но вопрос не об этом.

А что если для различения одиночного/длинного нажатия использовать постоянно крутящийся таймер со временем переполнения ≈256 мс? И считать сколько раз он перпеполнился пока нажата кнопка.
Плюс в том, что он будет настроен всего 1 раз в начале проги.
Минус — погрешность 256 мс если его не обнулять.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 16:01:29 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Конечно. для 2 сек "длинного" нажатия этого хватит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 16:23:03 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 20013
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вот только как понять что кнопку не отпустили на долю секунды? А что её именно постоянно держали?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 16:37:11 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Сработает прерывание же. сбрасываешь счетчик и признак ожидания длинного нажатия.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 16:44:30 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 20013
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В том-то и дело, не хотел я выходить из обработчика прерывания пока таймер крутится (не переполнился).
Нехорошо, конечно, висеть в прерывании. Но мне и спешить-то некуда :)

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 16:55:24 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Если не выходишь из прерывания, то можно и обычные задержки использовать, по милисекундам накручивать в цикле и как насчитаешь 2000мс - выполнять функцию. Один фиг работа программы будет остановлена.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 18:38:20 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Gudd-Head писал(а):
В том-то и дело, не хотел я выходить из обработчика прерывания пока таймер крутится (не переполнился).
Нехорошо, конечно, висеть в прерывании. Но мне и спешить-то некуда :)

В теле обработчика сбрасываем флаг переполнения нужного таймера, далее организовать бесконечный цикл проверки флага переполнения таймера и при установке флага увеличивать счетчик переполнений, проверяем количество переполнений и если мало, то сбросываем флаг и возвращаемся в цикл проверки флага переполнения, если переполнений хватает, то выходим из прерывания, глушим этот канал INT до тех пор пока кнопка еще в нажатом состоянии, ну или что-то типа того, выполняем нужный код этого события.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 20:14:57 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Как-то это совсем неправильно и расточительно. Зачем в прерывании задерживаться? По нажатию сбрасываем счетчик, а по отпусканию проверяем сколько насчитал переполнений таймер и выполняем нужную функцию. Но... все это хорошо, а в реальности получим облом из-за дребезга контактов. Если уж гоняем таймер впустую, то пусть там же и опрашивается кнопка. Кнопка нажата? +1 в счетчик, кнопка только что отпущена? проверяем счетчик выполняем нужную функцию и сбрасываем счетчик.
Прерывания на копку нужно использовать только тогда когда нужна мгновенная реакция, например защита в станке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 23:27:06 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Цитата:
... а по отпусканию проверяем сколько насчитал переполнений таймер и выполняем нужную функцию
Кстати, вот это тоже не правильно, считать нужно во время удержания кнопки, а иначе не понятно, сколько уже продержали, передержали или недодержали, узнаем когда отпустим получается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср апр 16, 2014 23:36:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18450
Откуда: Новочеркасск
Рейтинг сообщения: 5
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alexeyslav писал(а):
Прерывания на копку нужно использовать только тогда когда нужна мгновенная реакция, например защита в станке.
когда-то я уже писал... видимо, пора повторять :)

прерывания для кнопок - это вообще в подавляющем большинстве случаев глупость. и даже для защиты станка мгновенная реакция (напомню: для скромненького AVR с тактовой частотой 1 МГц время реакции на внешний запрос прерывания составит порядка 16 микросекунд) совершнеео не требуется!

мышечная реакция специально тренированного человека редко превышает 50 миллисекунд, у большинства обычных людей она около 100 миллисекунд и более. время срабатывания реле в станке примерно того же порядка. остановка шпинделя или там еще какой-то движущейся части займет уже секунды...

поэтому по всему добиваться микросекундной реакции на нажатие кнопки совершенно бессмысленно...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Чт апр 17, 2014 00:39:54 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Gudd-Head писал(а):
Вот только как понять что кнопку не отпустили на долю секунды? А что её именно постоянно держали?

Я уже лет 10 пользуюсь первым вариантом отсюда http://asis-kbr.ru/forum/viewtopic.php?f=13&t=173
И защита от дребезга есть и длинные\короткие нажатия отличает...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Чт апр 17, 2014 01:35:04 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Ну, тогда смотреть на счетчик он будет расти только если кнопка удерживается, иначе он находится в нуле.

А насчет защиты, когда-то показывали по телевизору изобретение некой защиты - не то что шпиндель, а пила останавливается после подачи сигнала настолько быстро что зубья проходят не больше милиметра. Это именно счет идет на микросекунды. Хотя тут конечно микроконтроллеру уже не место, если он вдруг будет находится в обработке другого прерывания за это время пила может оттяпать палец...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср май 07, 2014 16:27:22 
Родился

Зарегистрирован: Пт май 10, 2013 19:31:50
Сообщений: 12
Рейтинг сообщения: -4
Создал вначале крупную (по-моему) программку с 16 светодиодами не запахало. В итоге дошёл до 2 светиков и 2 кнопок. Не понимаю почему при нажатии и последующем отжатии светодиоды продолжают мигать. Действие ПИНД.1 также не помогло.


Вложения:
Project.rar [12.96 KiB]
Скачиваний: 289
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср май 07, 2014 18:31:38 
Грызет канифоль
Аватар пользователя

Карма: 10
Рейтинг сообщений: 106
Зарегистрирован: Пт ноя 15, 2013 20:58:23
Сообщений: 281
Рейтинг сообщения: 5
.Lexx. писал(а):
Не понимаю почему при нажатии и последующем отжатии светодиоды продолжают мигать. Действие ПИНД.1 также не помогло.

А мне вот непонятно назначение резисторов в вашей схеме (фрагмент). Догадываюсь, что наступил "летний сезон", отопление отрубили, а на улице хоть и май, но не подарок. Видимо Вы решили этими резисторами квартиру погреть. Ну, так они же нарисованные!!! В натуре греть будут, а на экране - нет. Да, для сугрева надо бы и уменьшить номинал на несколько порядков...
Для незнакомых с Протеусом поясню, что те стрелки вверх без обозначений - шина питания VCC=+5V. Приятного просмотра...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср май 07, 2014 20:30:54 
Родился

Зарегистрирован: Пт май 10, 2013 19:31:50
Сообщений: 12
Рейтинг сообщения: -2
Ошибся в схеме, действительно.
Сначала дорогой друг хотел послать вас нах_*Й... За ваш прекраснейший ответ. Ибо по существу, ответа как такового не было.
В итоге сам нашёл ошибку.
Ошибка элементарная, и очень обидная. Неправильно расставил подтягивающие резисторы, ибо в моей схеме выводы ATMEG висят в воздухе при не нажатой кнопке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср май 07, 2014 20:34:03 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4599
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
.Lexx. писал(а):
Ибо по существу, ответа как такового не было.
Ответ, как раз и был по существу, если Вы до сих пор не поняли этого. Отсюда Halex и говорил про нагрев, ибо они тупо на питании висят, а не делают подтяжку портов.

ЗЫ: Вовремя Вы свой пост снесли, ещё бы пару минут и ушли бы в БАНьку за оскорбления ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Ср май 07, 2014 20:57:40 
Грызет канифоль
Аватар пользователя

Карма: 10
Рейтинг сообщений: 106
Зарегистрирован: Пт ноя 15, 2013 20:58:23
Сообщений: 281
Рейтинг сообщения: 0
.Lexx. писал(а):
В итоге сам нашёл ошибку.

Только не повторите ее "натюрлих", в смысле - в железе. Если намерены разместить кнопки со стороны + питания - поставьте последовательно токоограничивающие резисторы, а то попалите порты, а я опять виноватым буду, что на это Вам не указал.
Аlex писал(а):
Ответ, как раз и был по существу...

Спасибо за понимание. Ибо, ибо ... (ну как там у Бендера в "12-ти стульях" ... не смог закончить мысль). А если серьёзно, то смысл своих подсказок как раз и вижу не в тупом "тыканье носом", а чтобы спрашивающий сам увидел косяк - это лучше и на дольше запоминается. Вроде получилось...
Ну, и, в конце то концов, с праздником нас, РадиоКотов!!! Выше антенны (ИМХО - хвосты) - дальше радиосвязь (ИМХО - "пометим" территорию)!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб авг 16, 2014 12:30:45 
Собутыльник Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 757
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Сообщений: 2896
Откуда: приходит весна?
Рейтинг сообщения: 0
Какое обычно время надо выждать, чтобы гарантировать, что дребезг кнопки закончился?

У меня идея опрашивать миниклавиатуру по прерыванию от таймера. При этом не хочется сильно заморачиваться. Если я поставлю достаточно редкое время опроса (допустим 0,016 с), то не вылезут ли какие-нибудь бяки у этого алгоритма?

То есть может ли длительность дребезга оказаться длиннее 0,016 с?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб авг 16, 2014 14:53:39 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Смотря какие кнопки, 16мс - это нормальный период для нормальных неразболтаных кнопок а для разболтаных дребезг может не закончится никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб авг 16, 2014 15:25:29 
Собутыльник Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 757
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Сообщений: 2896
Откуда: приходит весна?
Рейтинг сообщения: 0
Спасибо. У меня пока герконовые кнопки от какой-то старой советской вычислительной машины (или станка). Время дребезга вообще как-то нормируется? А то я пробовал измерять количество импульсов, возникающих во время включения и выключения этих герконов, их там попадалось чуть ли не до десяти.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 509 ]     ... , , , 9, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y