|
STM32F100 Непроизвольное срабатывание прерывания |
|
|
|
Aug 29 2014, 09:10
|
Группа: Участник
Сообщений: 13
Регистрация: 21-01-09
Пользователь №: 43 710

|
Требуется помошь в поиске проблемы. Непроизвольно срабатывает прерывание EXTI0_IRQHandler(). Нога подтянута к 3.3В резистором. И на нее подается импульс. Прерывание должно срабатывать по спаду. И срабатывает. Но время от времени, в обработчик залетает и выполняется проверка на EXTI_GetITStatus(EXTI_Line0). Импульсы в этот момент не поступают (слежу на осцилле). Что за магия такая? CODE void init_EXTI() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }
void init_NVIC() { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
int main(void) { RCC_Configuration(); init_timer();
init_EXTI(); init_NVIC();
NVIC_EnableIRQ(EXTI0_IRQn); NVIC_DisableIRQ(TIM6_DAC_IRQn);
while(1); }
void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
EXTI_ClearITPendingBit(EXTI_Line0); TIM_ClearITPendingBit(TIM6, TIM_IT_Update); TIM_SetCounter(TIM6, 0);
if (flag) { flag = 0; NVIC_EnableIRQ(TIM6_DAC_IRQn); } } }
Сообщение отредактировал IgorKossak - Aug 29 2014, 20:47
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
|
 |
Ответов
|
Sep 1 2014, 06:36
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
1. Есть еще образец платы, вдруг именно на этой какой не пропай в резюке, к примеру. Или у него тепловой шум такой...
2. Проверьте и напишите значения регистров конфигурации, не то что вы функциями делаете, а прям реальное значение этих регистров
3. Уберите все переключения в программе после окончания конфигурации, вы спокойно можете какими-то функциями горе библиотеки от СТМ чего то еще подключать по ходу дела, то есть вызываете для включения 6 таймера, а ставиться может любой бит
4. if (EXTI_GetITStatus(EXTI_Line0) != RESET) - вот это замените пожалуйста на temp_reg = Значение регистра флагов. if((temp_reg & НУЖНЫЙ_ПИН) != 0) Потому что внешние прерывание принимает прерывание от 18 источников, 16 из них ноги, а 2 источника это будильник и PVD (че такое кстати ?). Ваша проверка смотрит только на то что было внешние прерывание, но она не смотрит на то какой пин или что его вызывало. Да и вообще полезно для отладки попечатать состояние флагов, мало ли что там как... Кроме прерываний есть же еще и еванты
В общем общие рекомендации при поиски магии, устраните все ее источники в виде дурных библиотек. Работайте напрямую с регистрами проца. Это часто более быстро, и всегда более безопасно и определено!
|
|
|
|
|
Sep 1 2014, 07:14
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Golikov A. @ Sep 1 2014, 08:36)  4. if (EXTI_GetITStatus(EXTI_Line0) != RESET) - вот это замените пожалуйста на temp_reg = Значение регистра флагов. Потому что внешние прерывание принимает прерывание от 18 источников, 16 из них ноги, а 2 источника это будильник и PVD (че такое кстати ?). Ваша проверка смотрит только на то что было внешние прерывание, но она не смотрит на то какой пин или что его вызывало. Вот эту тему тоже высказать хотел. Присоединяюсь и настоятельно рекомендую разобраться со всеми ногами, которые обрабатываются _Line0. Это же вроде все типа PA0, PB0, и т.д.? Достаточно какой-то ноге из этой гвардии быть высокоомным входом (что именно и имеет место быть при рестарте процессора), как помехи гарантированы. Посему, влетая в прерывание, читайте еще состояние именно той ножки порта, которая прерывание вызвать должна была. P.S. не могу удержаться: заголовок темы уж очень медицинские термины напоминает, особенно слово "непроизвольное" и "прерывание". Фантазия пустилась в пляс...
Сообщение отредактировал KnightIgor - Sep 1 2014, 07:19
|
|
|
|
|
Sep 1 2014, 08:59
|
Группа: Участник
Сообщений: 13
Регистрация: 21-01-09
Пользователь №: 43 710

|
Цитата(KnightIgor @ Sep 1 2014, 14:14)  P.S. не могу удержаться: заголовок темы уж очень медицинские термины напоминает, особенно слово "непроизвольное" и "прерывание". Фантазия пустилась в пляс... Если честно, я подумывал об этом же, когда писал. Но, спасибо что заметили, поржал на работе в голос... Хорошо, рядом никого не было (:
|
|
|
|
Сообщений в этой теме
Plexus STM32F100 Непроизвольное срабатывание прерывания Aug 29 2014, 09:10 Ant_m Цитата(Plexus @ Aug 29 2014, 13:10) Импул... Aug 29 2014, 09:45 Plexus Цитата(Ant_m @ Aug 29 2014, 16:45) А на G... Aug 29 2014, 10:43 Golikov A. это ваще может значить черти что, куча народу нары... Aug 29 2014, 11:51 Plexus Т.е. достаточно настроить все GPIO и проблема проп... Aug 30 2014, 05:01 Golikov A. где то краем ухо я слышал про ложные срабатывания ... Aug 30 2014, 05:55 adnega Цитата(Golikov A. @ Aug 30 2014, 09:55) г... Aug 30 2014, 08:57  Plexus Цитата(adnega @ Aug 30 2014, 15:57) Прави... Aug 30 2014, 09:56   adnega Цитата(Plexus @ Aug 30 2014, 13:56) Хорош... Aug 30 2014, 10:16    Plexus Цитата(adnega @ Aug 30 2014, 17:16) Это н... Aug 30 2014, 10:24 Golikov A. самое правильное, при прерывании проверять флаг, ч... Aug 30 2014, 14:16 Plexus Цитата(Golikov A. @ Aug 30 2014, 21:16) с... Aug 30 2014, 18:41 AHTOXA Цитата(adnega @ Aug 30 2014, 14:57) Прави... Aug 30 2014, 14:41 Golikov A. ну он же не кортекс-м...
Можно в 2 словах откуда ... Aug 30 2014, 15:06 adnega Цитата(Golikov A. @ Aug 30 2014, 19:06) н... Aug 30 2014, 15:53 AHTOXA Цитата(Golikov A. @ Aug 30 2014, 21:06) н... Aug 30 2014, 19:11 adnega Цитата(AHTOXA @ Aug 30 2014, 23:11) Погуг... Aug 30 2014, 19:22  AHTOXA Цитата(adnega @ Aug 31 2014, 01:22) Флаги... Aug 30 2014, 21:30 Plexus Цитата(AHTOXA @ Aug 31 2014, 02:11) У вас... Aug 31 2014, 06:09  AHTOXA Цитата(Plexus @ Aug 31 2014, 12:09) Так д... Aug 31 2014, 08:04   Plexus Цитата(AHTOXA @ Aug 31 2014, 15:04) А, во... Aug 31 2014, 15:07    AHTOXA Цитата(Plexus @ Aug 31 2014, 21:07) Та фу... Aug 31 2014, 23:07 Golikov A. о разрешенных конечно, иначе это была бы мощная ба... Aug 30 2014, 19:42 Golikov A. а полингом проверить состояние пина нельзя? Кстати... Aug 31 2014, 06:18 Plexus Цитата(Golikov A. @ Aug 31 2014, 13:18) а... Aug 31 2014, 06:26 adnega Цитата(Plexus @ Aug 31 2014, 10:09) Если ... Aug 31 2014, 06:31 Plexus Цитата(adnega @ Aug 31 2014, 13:31) Либо ... Aug 31 2014, 06:43  adnega Цитата(Plexus @ Aug 31 2014, 10:43) Дребе... Aug 31 2014, 06:58 adnega А мне очень не нравится эта строчка
Цитатаif (flag... Aug 31 2014, 09:51 Golikov A. ЦитатаФлаг в периферийном модуле сбрасывается мгно... Aug 31 2014, 11:16 adnega Цитата(Golikov A. @ Aug 31 2014, 15:16) н... Aug 31 2014, 13:01 Golikov A. мне кажется у вас все таки проходит какая - то пом... Aug 31 2014, 17:04 adnega Цитата(Golikov A. @ Aug 31 2014, 21:04) м... Aug 31 2014, 20:11  Plexus Цитата(adnega @ Sep 1 2014, 03:11) А рези... Sep 1 2014, 02:47 AHTOXA Цитата(Golikov A. @ Sep 1 2014, 12:36) 4.... Sep 1 2014, 07:55 KnightIgor Цитата(AHTOXA @ Sep 1 2014, 09:55) Нет. Т... Sep 1 2014, 10:34 adnega Таймеры в STM32 очень функциональные. Я бы сделал ... Sep 1 2014, 08:14 Golikov A. мне лень было лезть и смотреть именно эти функции.... Sep 1 2014, 08:14 AHTOXA Цитата(Golikov A. @ Sep 1 2014, 14:14) мн... Sep 1 2014, 11:22 Golikov A. Да я вроде предложил ему привести что получилось в... Sep 1 2014, 11:41 AHTOXA Цитата(Golikov A. @ Sep 1 2014, 17:41) Да... Sep 1 2014, 12:29 Plexus Господа, да вы что в самом то деле?
Для меня любая... Sep 1 2014, 12:42 ViKo А осциллограф-то хороший был? Он может словить кор... Sep 1 2014, 12:47 Golikov A. ЦитатаВы всерьёз думаете, что ошибка в библиотечны... Sep 1 2014, 15:32 ISF Столкнулся с похожей проблемой что и автор топика.... May 9 2017, 08:30 scifi Цитата(ISF @ May 9 2017, 11:30) Мне хочет... May 9 2017, 10:01  ISF Цитата(scifi @ May 9 2017, 11:01) Вы в ку... May 9 2017, 12:04 Baser Цитата(ISF @ May 9 2017, 11:30) При любом... May 9 2017, 12:26 ISF Цитата(Baser @ May 9 2017, 13:26) Удивите... May 9 2017, 13:19 rudy_b Вы все про высокое, а причина может быть намного п... May 9 2017, 12:45 amiller По моему STM ведёт себя абсолютно правильно. Фронт... May 9 2017, 13:20 ISF Цитата(amiller @ May 9 2017, 14:20) По мо... May 9 2017, 13:59  amiller Цитата(ISF @ May 9 2017, 17:59) Согласен ... May 9 2017, 15:05  jcxz Цитата(ISF @ May 9 2017, 15:59) Но почему... May 9 2017, 21:29   Forger Подозреваю, что речь идет о неком хитроумном спосо... May 9 2017, 21:34    jcxz Цитата(Forger @ May 9 2017, 23:34) Очевид... May 9 2017, 21:44     Forger Нынче существуют 5V армы. Они по-идее должны пройт... May 9 2017, 21:55 Baser Цитата(ISF @ May 9 2017, 16:19) К тому же... May 9 2017, 14:55 ViKo А попробовать одной рукой взяться за плату, за цеп... May 9 2017, 16:04 ISF Цитата(ViKo @ May 9 2017, 17:04) А попроб... May 9 2017, 19:34 ViKo У вас там электромагнитная аномалия! А в друго... May 9 2017, 20:32 Forger Цитата(ViKo @ May 9 2017, 23:32) А в друг... May 9 2017, 21:25 ISF Был задан вполне конкретный вопрос - какого чёрта ... May 10 2017, 04:56 Forger Цитата(ISF @ May 10 2017, 07:56) Был зада... May 10 2017, 06:28 adnega Цитата(ISF @ May 10 2017, 07:56) какого ч... May 10 2017, 07:31 jcxz Цитата(ISF @ May 10 2017, 06:56) На любом... May 10 2017, 08:24 ViKo Если топикстартер выложит hex-код программы, любой... May 10 2017, 09:52 jcxz Цитата(ViKo @ May 10 2017, 11:52) Если то... May 10 2017, 10:06 adnega Цитата(ViKo @ May 10 2017, 12:52) Мне тож... May 10 2017, 10:49 Сергей Борщ QUOTE (ViKo @ May 10 2017, 12:52) Мне тож... May 10 2017, 11:44  Forger Цитата(Сергей Борщ @ May 10 2017, 14:44) ... May 10 2017, 14:00 ViKo Есть ST-Link/V2-Isol
http://www.st.com/content/st_... May 11 2017, 17:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|