Гость do_not_know_Linux 21 августа, 2021 Опубликовано 21 августа, 2021 (изменено) · Жалоба скажите вот чтобы сделать прерывание от кнопки по снисходящему фронту на ноге PA1 для включения светодиода на PC13 после того как я включу тактирование что еще нужно сделать? если быть точнее то что выбрать из NVIC EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C это будет 23 позиция в регистре NVIC_ISER0 и для PA1 какой мод выбрать? 00: Analog mode 01: Floating input (reset state) 10: Input with pull-up / pull-down 11: Reserved In output mode (MODE[1:0] > 00): 00: General purpose output push-pull 01: General purpose output Open-drain 10: Alternate function output Push-pull 11: Alternate function output Open-drain если ниспадающий фронт то значит на нем будет единица и надо чтобы стал 0 для того чтобы прерывание случилось? значит на ногу надо подать напряжение ? правильно? какой мод использовать скажите только давайте пожалуйста не будет делать как раньше. давайте сначала решим вопрос. не будет специально ругаться чтобы не отвечать. Изменено 21 августа, 2021 пользователем Гость Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 21 августа, 2021 Опубликовано 21 августа, 2021 · Жалоба вобщем планирую с помощью кнопки один конец которой буден подключен к GND а другой к PA1 включить светодиод на PC13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 22 августа, 2021 Опубликовано 22 августа, 2021 · Жалоба 8 часов назад, do_not_know_Linux сказал: если ниспадающий фронт то значит на нем будет единица и надо чтобы стал 0 для того чтобы прерывание случилось? значит на ногу надо подать напряжение ? правильно? какой мод использовать скажите Естественно режим ноги должен быть "вход с подтяжкой вверх". Можно без подтяжки (плавающий вход), если есть внешний подтягивающий резистор. И самое главное: прочитать раздел мануала "External interrupt/event controller (EXTI)". И сконфигурить EXTI соответствующим образом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 22 августа, 2021 Опубликовано 22 августа, 2021 · Жалоба 56 minutes ago, jcxz said: И самое главное: прочитать раздел мануала "External interrupt/event controller (EXTI)". И сконфигурить EXTI соответствующим образом. спасибо... скажите, а из таблици векторов NVIC, что выбрать? EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C это? Table 61. Vector table for connectivity line devices находится в Reference manual. это не бред. мне нужет адрес 0x0000_009C к примеру этот. и позиция 23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C тут 23 позиция мне скажет какой бит использовать в регистре ISER0 можете помочь? знаете какой вектор NVIC нужен для того чтобы зажечь светодиод от кнопки которая будет между PA1 и GND пишу не на CИ а на Assembler. поэтому так. я не хочу обсуждать что ассемблер не годится для таких вещей. единственное что сейчас нужно обсудить так это какой вектор подходит. помогите если знаете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 22 августа, 2021 Опубликовано 22 августа, 2021 · Жалоба 40 минут назад, do_not_know_Linux сказал: можете помочь? знаете какой вектор NVIC нужен для того чтобы зажечь светодиод от кнопки которая будет между PA1 и GND Ещё раз: 1 час назад, jcxz сказал: И самое главное: прочитать раздел мануала "External interrupt/event controller (EXTI)". И сконфигурить EXTI соответствующим образом. там всё есть. И про вектора в том числе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 22 августа, 2021 Опубликовано 22 августа, 2021 · Жалоба 53 minutes ago, jcxz said: И про вектора в том числе ошибка мне может дорого стоить. МК очень легко выходят из строя. поэтому надо знать точно и именно поэтому я зашел сюда. EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C это правильный вектор для того чтобы зажечь светодиод от кнопки которая будет между двух пинов PA1 и GND? если не знаете то в этом нет ничего дурного. просто надо тогда будет пождождать тех кто знает. может быть они помогут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 22 августа, 2021 Опубликовано 22 августа, 2021 (изменено) · Жалоба 6 minutes ago, do_not_know_Linux said: МК очень легко выходят из строя Ограничьте ток через светодиод... Что ещё за причирны выхода из строя беспокоят? Кнопки (контакты) имеют "дребезг". Заводить на прерывание плохая идея. Изменено 22 августа, 2021 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 22 августа, 2021 Опубликовано 22 августа, 2021 · Жалоба 8 minutes ago, GenaSPB said: Ограничьте ток через светодиод... на кнопке что между GND и PA1 и так подпаян резистор. 11 minutes ago, GenaSPB said: Заводить на прерывание плохая идея. да я не спорю. но мне надо разобраться как это работает. сейчас вся проблема в том что мне нужно знать точно какой вектор выбрать. Вы можете подсказать? EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C напишите пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 22 августа, 2021 Опубликовано 22 августа, 2021 (изменено) · Жалоба У Вас будет миллион раз прерывание... или десяток тысяч. Про номер прерыванмя читайте даташит. Вы собираетесь обрабатывать PA1 а упоминаете 9..5 Изменено 22 августа, 2021 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба Прерывание не то. EXTI9_5 для выводов PA9...PA5, PB9...PB5 и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба 20 hours ago, do_not_know_Linux said: EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C это правильный вектор для того чтобы зажечь светодиод от кнопки которая будет между двух пинов PA1 и GND? если не знаете то в этом нет ничего дурного. просто надо тогда будет пождождать тех кто знает. может быть они помогут. EXTIxxx - цифра обозначает номер линии порта, т.е. для EXTI1 будут соответствовать PA1, PB1, PC1 и т.д. Какой порт будет выбран для обслуживания данного прерывания выбирается в регистре SYSCFG_EXTICRx Итак, чтобы активировать прерывание на ножке PA1, вам надо в NVIC разрешить прерывание EXTI1 и в SYSCFG_EXTICR1 в биты 0..3 записать нули, что будет соответствовать порту А. Получается комбинация PORT.PIN = SYSCFGR_EXTICRx.EXTIx Так же в блоке EXTI вам надо настроить на какой фронт будет реагировать EXTI и поставить маску на запросы прерываний, в вашем случае маску на бит 1. Ну и написать обработчик прерывания для EXTI1. А почему, исходя из каких соображений, вы решили, что вам нужен вектор EXTI9_5 ? Какая ваше логика при этом была ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба 2 hours ago, dimka76 said: вам надо в NVIC разрешить прерывание EXTI1 7 14 settable EXTI1 EXTI Line1 interrupt 0x0000_005C это ? я правильно понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба 42 minutes ago, do_not_know_Linux said: 7 14 settable EXTI1 EXTI Line1 interrupt 0x0000_005C это ? я правильно понял? это Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба 15 minutes ago, dimka76 said: это уважаемый dimka76, скажите, а если это будет PA9... тогда 23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 23 августа, 2021 Опубликовано 23 августа, 2021 · Жалоба 14 minutes ago, do_not_know_Linux said: уважаемый dimka76, скажите, а если это будет PA9... тогда 23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C так? Да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться