Перейти к содержанию
    

Гость do_not_know_Linux

  скажите вот чтобы сделать прерывание от кнопки  по снисходящему фронту на ноге 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 для того чтобы прерывание случилось?   значит на ногу надо подать напряжение ? правильно?  какой мод использовать скажите

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

Изменено пользователем Гость

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость do_not_know_Linux

вобщем планирую с помощью кнопки один конец которой буден подключен к GND а другой к PA1 включить светодиод на PC13

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, do_not_know_Linux сказал:

если ниспадающий фронт то значит на нем будет единица и надо чтобы стал 0 для того чтобы прерывание случилось?   значит на ногу надо подать напряжение ? правильно?  какой мод использовать скажите

Естественно режим ноги должен быть "вход с подтяжкой вверх". Можно без подтяжки (плавающий вход), если есть внешний подтягивающий резистор.

И самое главное: прочитать раздел мануала "External interrupt/event controller (EXTI)". И сконфигурить EXTI соответствующим образом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость do_not_know_Linux
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. поэтому так.   я не хочу обсуждать что ассемблер не годится для таких вещей.  единственное что сейчас нужно обсудить так это какой вектор подходит.  помогите если знаете

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 минут назад, do_not_know_Linux сказал:

можете помочь? знаете какой вектор NVIC нужен для того чтобы зажечь светодиод от кнопки которая будет между PA1 и GND

Ещё раз:

1 час назад, jcxz сказал:

И самое главное: прочитать раздел мануала "External interrupt/event controller (EXTI)". И сконфигурить EXTI соответствующим образом.

там всё есть. И про вектора в том числе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость do_not_know_Linux
53 minutes ago, jcxz said:

И про вектора в том числе

ошибка мне может дорого стоить. МК очень легко выходят из строя.  поэтому надо знать точно и именно поэтому я зашел сюда. 

EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C

это правильный вектор для того чтобы зажечь светодиод от кнопки которая будет между двух пинов PA1 и GND?  если не знаете то в этом нет ничего дурного. просто надо тогда будет пождождать тех кто знает.  может быть они помогут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, do_not_know_Linux said:

МК очень легко выходят из строя

Ограничьте ток через светодиод... Что ещё за причирны выхода из строя беспокоят?

Кнопки (контакты) имеют "дребезг". Заводить на прерывание плохая идея.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость do_not_know_Linux
8 minutes ago, GenaSPB said:

Ограничьте ток через светодиод...

 

на кнопке что между GND и PA1 и так подпаян резистор. 

 

11 minutes ago, GenaSPB said:

Заводить на прерывание плохая идея.

 

да я не спорю.  но мне надо разобраться как это работает.  сейчас вся проблема в том что мне нужно знать точно какой вектор выбрать.   Вы можете подсказать?

EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C

напишите пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас будет миллион раз прерывание... или десяток тысяч.
Про номер прерыванмя читайте даташит. Вы собираетесь обрабатывать PA1 а упоминаете 9..5

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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
2 hours ago, dimka76 said:

вам надо в NVIC разрешить прерывание EXTI1

7 14 settable EXTI1 EXTI Line1 interrupt 0x0000_005C

это ? я правильно понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 minutes ago, do_not_know_Linux said:

7 14 settable EXTI1 EXTI Line1 interrupt 0x0000_005C

это ? я правильно понял?

это

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость do_not_know_Linux
15 minutes ago, dimka76 said:

это

уважаемый dimka76, скажите, а если это будет  PA9... тогда 

23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C

так?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, do_not_know_Linux said:

уважаемый dimka76, скажите, а если это будет  PA9... тогда 


23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C

так?

 

Да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...