22.08.2021, 04:01
|
#11
|
Частый гость
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32 interrupt
Сообщение от akegor
|
Внешняя подтяжка не больше 30 кОм должна помочь. Или схема из второго поста.
|
Я на 10к ставил, но правда только на одну из кнопок для теста. Пробовал нажимать на соседние кнопки после этого, и с этой кнопки с резистором все равно приходило прерывание. Буду тогда вторую схему пробовать, если и с ней не выйдет без прерываний придется делать, а то уже и так на этой проблеме на несколько дней завис. Но конечно все равно интересно докопаться почему так происходит
|
|
|
|
22.08.2021, 04:09
|
#12
|
Частый гость
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32 interrupt
Сообщение от j-Roger
|
Не помешало бы убедиться, что флаги Pending register (EXTI_PR) для подключенных кнопок своевременно и корректно очищаются. Для очистки достаточна просто запись 1 в бит(ы), без RMW.
И вообще проверить код.
|
Мне кажется что не откуда там взяться флагам, т.к. просто подаю питание, потом жму на только одну из кнопок все время, и периодически прилетают прерывания со всех соседних. Посмотрел код что куб создал, да, так очищается регистр.
Цитата:
|
#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI-›PR = (__EXTI_LINE__))
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
|
|
|
|
|
22.08.2021, 10:33
|
#13
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,727
Сказал спасибо: 130
Сказали Спасибо 1,111 раз(а) в 530 сообщении(ях)
|
Re: stm32 interrupt
Длинные провода в общей куче. Наводки были вполне ожидаемые. И земля кнопок последовательно с землей индикатора ... без комментариев.
Пожелания:
1) сигнал прерывания выдаем по фронту! Если кнопка тянет к земле.(И по спаду при кнопке к питанию). В этом случае имеем относительно плавный рост напряжения при заряде конденсатора. А не пакет шпилек в момент замыкания.
2) Програмно давим импульсные наводки.
У меня в аналогичной ситуации сделано было так:
1) Вешаем прерывание на кнопку. На фронт и спад.
2) Выделяем свободный таймер для счета.
3) По прерыванию кнопки (нажатие) сбрасываем таймер в 0. Старт таймера.
4) По прерыванию кнопки (отпускание) смотрим значение таймера . Если › константы - сигнал в программу о нажатии кнопки. Стоп таймера.
Давно это было, исходников уже не найду. И да ... причина - криво разведенная земля на плате.
|
|
|
Сказали "Спасибо" DanilinSA
|
|
|
22.08.2021, 10:53
|
#14
|
Частый гость
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32 interrupt
Сообщение от DanilinSA
|
И земля кнопок последовательно с землей индикатора ... без комментариев.
|
Не очень понял про последовательно с землей индикатора, что это значит.
Собрал по той схеме что скинули, ложные срабатывания пропали, все отлично работает.
Вот только одна кнопка которая подключена к PA12 не работает, выяснил что все из-за того что на ней включен подтягивающий резистор и напряжение не просаживается до нужного уровня. В коде проверил что куб создал, все нормально, все 4 кнопки инициализируются одинаково. Так же очистил полностью чип и все равно на ней присутствуют 3,3 вольта после этого. Взял вторую отладочную плату все тоже самое.
Это выходит я как-то спалил этот пин или так и должно быть? Но вот если вручную замкнуть этот пин на землю, прерывание срабатывает.
|
|
|
|
22.08.2021, 11:07
|
#15
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,091
Сказал спасибо: 2,566
Сказали Спасибо 11,900 раз(а) в 5,973 сообщении(ях)
|
Re: stm32 interrupt
Сообщение от tester01
|
Собрал по той схеме что скинули, ложные срабатывания пропали, все отлично работает.
|
Ограничили ток разряда ёмкости. Скорее - "телеграф".
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
22.08.2021, 11:34
|
#16
|
Частый гость
Регистрация: 19.07.2021
Сообщений: 28
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm32 interrupt
Кажется уже сам нашел причину, пин используется для usb и 1,5к резистором подтянут к плюсу
|
|
|
|
22.08.2021, 11:37
|
#17
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: stm32 interrupt
Что тут такое? Кнопки не можем, да? А зачем пинцетом тыкаете в выводы? Так еще и статику тыкните. Если и тыкают в выводы, то осциллографом.
Сообщение от tester01
|
PA12 не работает, выяснил что все из-за того что на ней включен подтягивающий резистор и напряжение не просаживается до нужного уровн
|
Плата какая? Блю-пилл на F103? Там на ПА12 на плате резистор стоит для нужд ЮСБ, 10 кОм, подтягивает к питанию.
Сообщение от tester01
|
Пока все на макетке собрано.
|
Чтоп не мучаться с пояниями, купите песпаечную макетку и набор проволочных и проводковых перемычек дня нее, вот так:
Последний раз редактировалось NewWriter; 22.08.2021 в 11:58.
|
|
|
|
22.08.2021, 13:00
|
#18
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 735
Сказал спасибо: 363
Сказали Спасибо 808 раз(а) в 380 сообщении(ях)
|
Re: stm32 interrupt
..........................
|
|
|
|
22.08.2021, 13:12
|
#19
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,091
Сказал спасибо: 2,566
Сказали Спасибо 11,900 раз(а) в 5,973 сообщении(ях)
|
Re: stm32 interrupt
Сообщение от NewWriter
|
купите песпаечную макетку
|
Пробовал. И на вкус, и на цвет - гуано.
Контакты в "пирожке" хреновые - сплошная контактная (фигурная) пластина на несколько "дирок" даже теоретически контакт не обеспечит. Разрезанных, чтобы были отдельные "пружинки" шины на разные гнезда, мне не попалось.
Перемычки - отдельная песня. От неконтакта "штырь(гнздо)-провод" до гнилых проводов, в которых наличие контакта зависит от степени изгиба. Наличие жил в проводе - до одной волосинки (пробовал резать и паять).
Не учите абдуринизму, таких учителей и без вас хватает.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
22.08.2021, 13:35
|
#20
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 735
Сказал спасибо: 363
Сказали Спасибо 808 раз(а) в 380 сообщении(ях)
|
Re: stm32 interrupt
Для нескольких кнопок/дисплея/мелочёвки самое то, собирается за минуты, перекоммутируется за секунды. Ну да, амперы не обеспечить, DDR5 не подключить,
но это уже другая история.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:09.
|
|