реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> stm32f4, EXTI, PD6, не срабатывает
BlackOps
сообщение Jun 7 2013, 03:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



не срабатывает

Библиотеку стандартную не использую, хотя только под нее примиеры и находил.

вот так включаю прерывание (использованы парa функций СМ4)
Код
// Enable SYSCFG clock
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;

// External interrupt from pin PD6
SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI6_PD; //


EXTI->IMR = 0x01; // Mask MR0
EXTI->RTSR = 0x01; // Rising Edge detection
EXTI->FTSR = 0x00; // Falling edge detect OFF



NVIC_SetPriority(EXTI9_5_IRQn, 0x0000000f);

NVIC_EnableIRQ(EXTI9_5_IRQn);


Порт настроен как вход, с подтяжкой к земле.

обработчик пока пустой, пока просто хочу проверить перейдет ли он вообще в прерывание
Код
void EXTI9_5_IRQHandler()
{
    for(;;)
    {
    }
}


вроде настроено все как надо, а две функции СМ4 ставят приоритет и включают прерывание, Пин 6 между Пин9 и Пин5, так что думаю верно все выбрано.

что я упустил?

попробовал добавить после всей инициализации это:
EXTI->SWIER = 0x01;

т.е. программно включить прерывание, тоже не помогает пока


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
Brain13
сообщение Jun 7 2013, 06:17
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-08-09
Пользователь №: 52 078



Тактирование порта подано?
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jun 7 2013, 06:23
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(Brain13 @ Jun 7 2013, 10:17) *
Тактирование порта подано?

да, подано, на этом порту и УСАРТ работает, все нормально.

Я еще вот что сделал сейчас:
EXTI->SWIER = 0x01;
pr_reg = EXTI->PR;

И значение pr_reg = 1 в дебаггере, т.е. бит установился, вроде как среагировал на прерывание эмулированное программным путем, но проблема в том, что он не хочет переходить в обработчик прерывания.

кстати, вторая проблема в том что EXTI->PR имеет значение 0 когда провод подтягиваю к 3.3В, сам порт как я уже сказал настроен на подтяжку на землю.


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 7 2013, 09:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Всё прекрассно работает. В частности переключаю на лету ногу SPI и жду готовности от АЦП

// Работа с ножкой готовности АЦП
#define ADCPIN_DOUT GPIOC->MODER = PIN2X(SPI3_MISO,AF)|MODER_C
#define ADCPIN_RDY GPIOC->MODER = PIN2X(SPI3_MISO,IN)|MODER_C
// Настройка прерывания по готовности (свалу импульса)
#define ADCPIN_RDY_INTEN EXTI->IMR |= PIN(SPI3_MISO)
#define ADCPIN_RDY_INTDIS EXTI->IMR &= ~PIN(SPI3_MISO)
#define ADCPIN_RDY_INIT EXTI->FTSR |= PIN(SPI3_MISO); SYSCFG->EXTICR[2] = PORTC_PIN<<12
#define ADCPIN_RDY_INTCLR EXTI->PR = PIN(SPI3_MISO)

Вы SYSCFG не загрузили
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 7 2013, 12:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Как-то форум не очень чётко работает. Не меняется число ответов в теме и последний ответ игнорируется.
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jun 7 2013, 15:13
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(SasaVitebsk @ Jun 7 2013, 13:07) *
Вы SYSCFG не загрузили

как это не загрузил? загрузил. Проблема не в этом была. Я маску просто не так настроил.
надо было:
EXTI->IMR = 0x40; // Mask MR0
EXTI->RTSR = 0x40; // Rising Edge detection
EXTI->FTSR = 0x00; // Falling edge detect OFF

т.е. EXTI->IMR = (1 << 6); потому что у меня пин 6.

а я просто EXTI->IMR = 0х01; писал, я просто думал любой бит там можно выбрать для линии прерывания, а должна быть маска


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 13:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016