LAS9891 0 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 5 minutes ago, jcxz said: Если немного подумать, то для опроса кнопок совешенно не нужно определять = "с какой ноги пришло прерывание". Если вам нужен именно опрос кнопок, а не что-то иное. Согласен. Но изначально были условия: уже готовая схема, обязательный опрос кнопок по прерываниям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 6 минут назад, mitya1698 сказал: ну так это и есть 1 вариант проверки уровня на порту. Вы тоже не читаете вопрос, на который отвечаете. Читаем внимательно: 22 минуты назад, LAS9891 сказал: Как в обработчике прерывания определить с какого пина возникло прерывание? Сначала уровень активирующий IRQ возник на пине1, через пару тактов - на пине2. Как определите какой именно пин вызвал IRQ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба если это часы для кто быстрее собрал кубик рубика, то не годится :) Не определим того, кто первый, в остальных задачах вероятно это не важно - вызвали оба, обработаем обоих. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба Всем спасибо, я выяснил что хотел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 3 minutes ago, jcxz said: Подумайте что будет если активный уровень (генерящий прерывание) появился на ноге1, а через 1мкс - такой же уровень появился на ноге2. Как определите с какой ноги пришло прерывание Если Вам нужно обрабатывать нажатия кнопок, то какая разница какая из них вызвала прерывание? Все равно ведь надо обработать все нажатые кнопки. Так что если к моменту входа в прерывание активный уровень выставлен от нескольких кнопок - всех их и обрабатываете. Цель прерывания в данном случае - проинформировато, что какая-то из кнопок была нажата. Или две кнопки. Или больше. А дальше Вы уже проверяете какие кнопки нажаты и действуете в соответствии с этим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 4 минуты назад, LAS9891 сказал: Согласен. Но изначально были условия: уже готовая схема, обязательный опрос кнопок по прерываниям. Так что мешает делать его по этой схеме? Ещё раз: Для опроса кнопок совершенно не нужно знать "какой именно пин возбудил прерывание". Сигнал прерывания нужно использовать только как сигнал о том, что что-то изменилось на порту. Всё. А все дальнейшие операции с пинами кнопок выполнять периодическим чтением их состояния через GPIO. И делать это до тех пор, пока все кнопки висящие на EXTI0 не окажутся отжатыми. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба Если одна кнопка на PA0, вторая - на PB0, то только одна из них может быть настроена на EXTI. То есть исходная задача не решается вообще никак - только одна из кнопок на Px0 может вызывать прерывание. Одну из кнопок надо уносить на PxY, где X - любой, а Y != 0. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 3 минуты назад, AndyBig сказал: Цель прерывания в данном случае - проинформировато, что какая-то из кнопок была нажата. Я вообще-то об этом и писал. Только исходный вопрос ТС был несколько иной. Напоминаю: 29 минут назад, LAS9891 сказал: Как в обработчике прерывания определить с какого пина возникло прерывание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 1 марта, 2023 Опубликовано 1 марта, 2023 · Жалоба 1 minute ago, jcxz said: Так что мешает делать его по этой схеме? Да ничего не мешает. Меня интересовало есть ли возможность проверить это по регистрам EXTIx, ну раз нет, значит определю по другому. 6 minutes ago, Сергей Борщ said: только одна из кнопок на Px0 может вызывать прерывание проверим Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 2 марта, 2023 Опубликовано 2 марта, 2023 · Жалоба 19 hours ago, LAS9891 said: Всем спасибо, я выяснил что хотел. Выше уже поминали дребезг кнопок. Вы знаете, как с ним бороться? (чтобы сэкономить Вам немного времени: типичное время дребезга мелких тактовых кнопок 5..20 мс, больших не-тактовых - легко до 100 мс, - на это точно нужны EXTI?. На "изначально были условия: ... обязательный опрос кнопок по прерываниям" можно ответить опросом кнопок по прерыванию таймера. Потратьте сэкономленное время на разбор вариантов антидребезга.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 2 марта, 2023 Опубликовано 2 марта, 2023 · Жалоба 19 часов назад, LAS9891 сказал: проверим Интересно, как? Документация утверждает однозначно: 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 2 марта, 2023 Опубликовано 2 марта, 2023 · Жалоба 1 час назад, xemul сказал: обязательный опрос кнопок по прерываниям" можно ответить опросом кнопок по прерыванию таймера. Строго говоря - одних прерываний таймера может быть недостаточно. И прерывания от EXTI всё равно нужны. Вы же не знаете условий эксплуатации. Может у ТС батарейное питание? В этом случае оптимальное решение = начальное_EXTI + затем IRQ_от_таймера (пока все кнопы не окажутся отпущенными). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 2 марта, 2023 Опубликовано 2 марта, 2023 · Жалоба Всё может быть (кроме смысла в обсуждении очередного сферического коня). Я говорил про необязательность самостоятельной полировки древка грабель. (у мну коробочки с потреблением в статике ~0.1 мкА просыпаются по прерыванию от кнопок; другие коробочки, где есть часовой кварц, и можно позволить 2-3-.. мкА, просыпаются по прерыванию от RTC; были коробочки, которые пинала внешняя сторожевая собака. При этом основная масса поделий для входов с динамикой +- как от кнопок благополучно обходится опросом по софтовому таймеру с периодом 2^-7 с. А общего у всех коробочек - алгоритм антидребезга.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 3 марта, 2023 Опубликовано 3 марта, 2023 (изменено) · Жалоба 20 hours ago, Сергей Борщ said: Документация утверждает однозначно: У меня на самом деле GD32F103RB, и тут я не нашёл System configuration controller Вообще пост получился исключительный. Мне было лень внимательно читать даташит и решил быстренько спросить на форуме. Я как всегда ожидал ответа в стиле "читай даташит", ну и готовился, что закидают помидорами, а тут на две страницы ответов/споров, даже после того, как я уже выяснил то, что хотел изначально. Магия блин. Вопрос не глобального масштаба - а популярности... В серьёзных темах ответа не дождешься, только "читайдаташитами" закидают. Изменено 3 марта, 2023 пользователем LAS9891 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 3 марта, 2023 Опубликовано 3 марта, 2023 · Жалоба Цитата У меня на самом деле GD32F103RB, и тут я не нашёл System configuration controller смотрите 7.5.10. EXTI sources selection register 0 (AFIO_EXTISS0) - апельсин, вид с боку. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться