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

 
 
> STM32F100 Непроизвольное срабатывание прерывания
Plexus
сообщение Aug 29 2014, 09:10
Сообщение #1





Группа: Участник
Сообщений: 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] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Sep 1 2014, 06:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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 (че такое кстати ?). Ваша проверка смотрит только на то что было внешние прерывание, но она не смотрит на то какой пин или что его вызывало. Да и вообще полезно для отладки попечатать состояние флагов, мало ли что там как... Кроме прерываний есть же еще и еванты

В общем общие рекомендации при поиски магии, устраните все ее источники в виде дурных библиотек. Работайте напрямую с регистрами проца. Это часто более быстро, и всегда более безопасно и определено!
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Sep 1 2014, 07:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Plexus
сообщение Sep 1 2014, 08:59
Сообщение #4





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



Цитата(KnightIgor @ Sep 1 2014, 14:14) *
P.S. не могу удержаться: заголовок темы уж очень медицинские термины напоминает, особенно слово "непроизвольное" и "прерывание". Фантазия пустилась в пляс...

Если честно, я подумывал об этом же, когда писал. Но, спасибо что заметили, поржал на работе в голос... Хорошо, рядом никого не было (:
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 09:47
Рейтинг@Mail.ru


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