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

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

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

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

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

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


 
Опции темы
Непрочитано 21.08.2021, 04:38  
tester01
Частый гость
 
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tester01 на пути к лучшему
По умолчанию stm32 interrupt

Приветствую, есть stm32f103C8T6, к нему подключены 4 кнопки EXTI line 15:10 interrupts. Включены подтягивающие резисторы к плюсу. Так же параллельно каждой кнопки стоят конденсаторы 0.1мкф, для устранения дребезга. Но примерно раз в 10 нажатий на одну и ту же кнопку приходят ложные прерывания с какой-то другой кнопки. Уже и пробовал и отдельно резисторы ставить для подтяжки на 10к.Ом, не помогает. Так же заметил странную реакция на прикосновение к пинам к которым подключены эти кнопки, если просто прикасаться руками ничего не происходит, если взять пинцет, то срабатывает прерывание. Если же убрать конденсаторы, вроде бы все становится нормально, но конечно придется уже программно бороться с дребезгом, чего бы не хотелось т.к. очень важна скорость реакции на прерывания. Почему так может происходить? Все время на атмеги ставил конденсаторы и отлично помогали бороться с дребезгом.
Реклама:
tester01 вне форума  
Непрочитано 21.08.2021, 09:52  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,715
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: stm32 interrupt

1. Использовать подтягивающие резисторы - плохая идея из-за их высокоомности.
2. RC подавление - тоже не идеально. Прерывание как настроено? На фронт, спад?
3. Смотри разводку и взаимное расположение линий от кнопок. У тебя достаточно высокоомная цепь. И реакция на касания - это вполне нормально.

Попробуй так:
DanilinSA вне форума  
Сказали "Спасибо" DanilinSA
tester01 (21.08.2021)
Непрочитано 21.08.2021, 10:07  
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,731
Сказал спасибо: 2,439
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: stm32 interrupt

А,если 100к заменить на 1ком?
baiderin вне форума  
Непрочитано 21.08.2021, 13:24  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: stm32 interrupt

Сообщение от tester01 Посмотреть сообщение
ставил конденсаторы и отлично помогали бороться с дребезгом
Так STM32 в несколько раз быстрее, вот и успевает.
Думаю, там не столько дребезг, сколько слишком пологий фронт, по нему прерывание может отработать несколько раз. Триггера Шмитта, насколько помню, там не предусмотрено. По первому срабатыванию запрещать прерывание на несколько мс.
pambaru вне форума  
Непрочитано 21.08.2021, 13:48  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,715
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: stm32 interrupt

Нет, триггер Шмитта на дискретных входах есть. Хотя насчет гистерезиса ... надо смотреть.
Я не понял, на что автор ветки жалуется? На наличие дребезга или на помехи на линии от замыкания других кнопок?
DanilinSA вне форума  
Непрочитано 21.08.2021, 15:23  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: stm32 interrupt

Не нужны никакие прерывания, чтобы кнопки или концевики обрабатывать! Достаточно в основном цикле вызывать обработчик, который и будет реагировать на события (вот так, например). Поменяла кнопка состояние — все, в течение 50-100мс не реагируем на нее вообще никак, а спустя это время уже можно опять проверять.
Если провода к кнопкам очень длинные или много помех, то лучше внешнюю подтяжку сделать (вплоть до 1кОм, как выше советовали). Если и помех нет, и провода короткие, то внутренней подтяжки хватит.

P.S. Если там сильные индуктивные наводки, может, до кондера стоит еще и маленькую индуктивность эдак на 0.1мГн добавить?
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Эти 2 пользователя(ей) сказали Спасибо eddy за это сообщение:
Easyrider83 (22.08.2021), tester01 (23.08.2021)
Непрочитано 21.08.2021, 23:48  
tester01
Частый гость
 
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tester01 на пути к лучшему
По умолчанию Re: stm32 interrupt

Сообщение от DanilinSA Посмотреть сообщение
Прерывание как настроено? На фронт, спад?
На спад
Сообщение от pambaru Посмотреть сообщение
Думаю, там не столько дребезг, сколько слишком пологий фронт, по нему прерывание может отработать несколько раз.
Нет, дело именно в том что не от одной и той же кнопки приходит несколько прерываний, а еще и иногда от одной из кнопок которые вообще не трогал.
Сообщение от eddy Посмотреть сообщение
Если провода к кнопкам очень длинные или много помех, то лучше внешнюю подтяжку сделать (вплоть до 1кОм, как выше советовали). Если и помех нет, и провода короткие, то внутренней подтяжки хватит.
Провода не слишком длинные, 5-8 см. Пока все на макетке собрано.
Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_20210821_234434.jpg
Просмотров: 0
Размер:	2.28 Мб
ID:	165231   Нажмите на изображение для увеличения
Название: IMG_20210821_234449.jpg
Просмотров: 0
Размер:	2.47 Мб
ID:	165232  
tester01 вне форума  
Непрочитано 21.08.2021, 23:56  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,058
Сказал спасибо: 2,563
Сказали Спасибо 11,890 раз(а) в 5,964 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: stm32 interrupt

Сообщение от tester01 Посмотреть сообщение
Пока все на макетке собрано.
Земля на кнопках, мне кажется, не очень.
Внешняя подтяжка не больше 30 кОм должна помочь. Или схема из второго поста.

Есть еще вариант. Емкость параллельно контактам достаточно большая, поэтому при замыкании кнопок вполне может возникать достаточно мощный ЭМ импульс, а контакт кнопки (сама железяка) выполнять роль излучателя (типа как в искровом телеграфе). Судя по фото, контакты кнопок расположены параллельно, а это наилучшее расположение для перекрестных наводок. Спасет десятикилоомник между кнопкой и конденсатором.

Удачи!
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 22.08.2021 в 01:13.
akegor вне форума  
Непрочитано 22.08.2021, 01:46  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: stm32 interrupt

Сообщение от eddy Посмотреть сообщение
Не нужны никакие прерывания, чтобы кнопки или концевики обрабатывать!
Вот это верный совет.
Реагировать надо не на нажатие, а на отпускание. И в тот момент мы уже должны знать, как долго кнопку держали нажатой и принимать решение, шум это или пользователь нервный.
Easyrider83 вне форума  
Непрочитано 22.08.2021, 03:11  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 722
Сказал спасибо: 363
Сказали Спасибо 803 раз(а) в 377 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: stm32 interrupt

Не помешало бы убедиться, что флаги Pending register (EXTI_PR) для подключенных кнопок своевременно и корректно очищаются. Для очистки достаточна просто запись 1 в бит(ы), без RMW.
И вообще проверить код.

Думается, прерывания от кнопок логичнее использовать для выхода из спячки и/или как сигнал о том, что пора приступить к их программной обработке, как исчерпывающе описал eddy, пост #6. Конечный автомат позволит реализовать достаточно изощренную логику: длинные/короткие/одновременные нажатия и т.п.


А сейчас вдруг причина окажется в лишнем контакте там, где его не должно быть Шутка
j-Roger вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучаем STM32 Cortex M3 EugVor ARM 6166 19.02.2024 18:22
Публикации КОМПЭЛ КОМПЭЛ Электроника - это просто 255 11.08.2023 18:12
Драйвер (не VCP) для встроенного USB STM32 vvv998 ARM 106 08.11.2014 21:36
xMEGA прерывания . megavoltk2 Микроконтроллеры, АЦП, память и т.д 3 24.04.2012 16:58
Помогите настроить АЦП в Atmega32 sergx1300 Микроконтроллеры, АЦП, память и т.д 72 09.11.2010 00:28


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


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