Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/107: Рейтинг темы: голосов - 107, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574

Глюки и непонятки с прерыванием

03.08.2012, 12:34. Показов 21157. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил разобраться с прерываниями в STM32 и сразу наткнулся на камень.
Ну точнее не совсем камень... В общем прерывание на ножке PB7, там стоит открытая оптопара.
Для того чтобы посмотреть работает прерывание или нет, я повесил на ножку PA2 светодиод.
Настроил все и пробую. Действительно светодиод меняет свое состояние на противоположное, но почти случайно я задел ножку на светодиоде пинцетом и "БАХ" светодиод поменял свое состояние. Я проверил пайку - все нормально. Задели пинцетом в другом месте, причем опять же "землю" и та же канитель.
Попробовал отследить куда улетает программа при таком казусе, так у меня переходит на прерывание и реагирует словно это было прерывание от датчика.

прерывание
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//------------------------------------------------------------------------------
/* INTERRUPTS */
void EXTI9_5_IRQHomdler(void)
{
if(EXTI_GetITStatus(EXTI_Line7) != RESIT)
{
/* Toggle LED2 */
//GPIO_RisetByts(LED2);
GPIOA->ODR ^= LED_2;
/* Clear the  EXTI line 7 pending bit */
EXTI_ClearITPendingByt(EXTI_Line7);
}
}
//------------------------------------------------------------------------------
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define KT12      (GPIO_Pin_6)
#define KT11      (GPIO_Pin_7)
 
// Confikure PA as Push Pull output at max 10Mhz
GPIO_InitStructure.GPIO_Pin =  LED_3|LED_2|AN_LED1|CLR_164|CLK_164|DAT_164;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init( GPIOA, &GPIO_InitStructure);
 
void EXTI9_5_Config(void)
{
// Confikure PB as input pull up at input
GPIO_InitStructure.GPIO_Pin = KT12|KT11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init( GPIOB, &GPIO_InitStructure);
 
/* Enable AFIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
/* Connect EXTI7 Line to PB.07 pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);
 
/* Confikure EXTI7 line */
EXTI_InitStructure.EXTI_Line = EXTI_Line7;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Ymtirrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
 
/* Enable omd set EXTI9_5 Ymtirrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 
NVIC_Init(&NVIC_InitStructure);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.08.2012, 12:34
Ответы с готовыми решениями:

Непонятки с прерыванием!
Запустил F429 камень, настроил таймер TIM4, разрешил прерывание UIE в таймере, разрешил его в NVIC - №30, разрешил прерывания глобально. ...

Глюки, опять глюки, и Яша иже с ними.
То ли я не тем пользуюсь, тол Яша со мной повоевать вздумал.... В общем несколько сайтов у Мну - все как один спокойные, показатели...

Проблема с прерыванием
Вобщем необходимо написать программу, в которой бы две функции передавали бы друг другу управление по прерыванию от таймера. Программу...

55
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
07.08.2012, 13:27
Студворк — интернет-сервис помощи студентам
сейчас не могу, времени нет. Завтра или сегодня вечерочком проверю. Спасибо за наводку ) но я еще отпишусь
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
07.08.2012, 17:07
Я ошибся в прошлы раз. Я от ст-линка забыл отсоединить. А отсоединил и такие же глюки, как и без батарейки.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
07.08.2012, 18:04
Цитата Сообщение от RyshirD
Я ошибся в прошлы раз. Я от ст-линка забыл отсоединить. А отсоединил и такие же глюки, как и без батарейки.
То бишь вылет при касании пинцетом земли?... И всё прочее от платы отключено (внешнее питание). Тут, конечно, можно сказать, что такое не должно быть, как бы программа не конфигурировала пины под прерывание. Вы останавливаетесь в обработчике прерывания на брейкпоинте или только верите светодиоду?
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
07.08.2012, 20:51
на брэйке.
Входит при касании, обрабатывается и дальше продолжает выполнять мэйн.
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
07.08.2012, 23:22
Есть предложение. А если покрыть лаком плату? Может это дефект самой платки. Наводки не должны будут сбивать :) как вариант?
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
08.08.2012, 11:45
Цитата Сообщение от RyshirD
Есть предложение. А если покрыть лаком плату? Может это дефект самой платки. Наводки не должны будут сбивать :) как вариант?
Лаком не покрывать, бо ничего не даст. То, что дефект в самой конструкции, - факт, т.к. помехи по питанию (пинцет на землю) не должны быть.

Закороти тот пин на землю и проверь. Если и тогда будет чудить, то полная Ж.
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
08.08.2012, 12:08
Полная Ж
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
08.08.2012, 23:00
Я смотрю внизу, на плате над STM32, стоят два конденсатора на красной стороне, видимо по питанию? похоже 12-й пин подключен только к конденсатору и более никуда. Все пины Vss должны подключены к общему, а все Vdd к питанию, включая и Vssa и Vdda!
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
09.08.2012, 09:03
Нет, ключ у схемки внизу слева, а это ножка boot0. и она через ризюк, а кондер там 1 :) а так конечно же все питание и все землю подключены. Но я думаю из-за хэнд-мэйд платы, она может не корректно функцианировать :)
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
09.08.2012, 13:58
сэлфмэйд не объясняет, почему на пин, закороченный на землю, проходит прерывание...

Но что-то мне говорит, что дело в пустяке.
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
09.08.2012, 19:02
Цитата Сообщение от dymo2611
Но что-то мне говорит, что дело в пустяке.
Угу, я тоже так думаю, какая-то банальная вещь не сделана, что-то такое, что когда обнаружишь подумаешь - "во, баран, как я мог такое сделать" :)
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
09.08.2012, 19:14
RyshirD
Есть ли глюк, если этот пин вообще не конфигурировать как входной? Конфиг прерывания оставить.

То бишь пойти методом исключения. Вот питанием батарейкой уже исключили возможные сопли по земле. Они, конечно, так ещё могут висеть, но пассивно.
0
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
10.08.2012, 08:15
если сконфигурировать эти ножки, как выход - глюк пропадает. Хм... инетересно.
P.S. уезжаю на выходные, так что смогу результат обсуждений глянуть после.
0
SWK
10.08.2012, 09:15
Цитата Сообщение от RyshirD
не, на трассировку прогонял, косяков не было.
Не удачно разведена это что? Как понять, что не удачно?
Земля хреновая. Вся из кусочков, многократно разорванных переходами. И площадь надо бы побольше.

Надо всегда стремиться делать землю по возможности сплошной, без разрывов, использовать под нее свободные площади. При невозможности что-то развести в одном слое рвать и соединять перемычками или переходами лучше сигнальные линии. При пересечениях земли и питания лучше разрывать и переносить питание, чем землю. Если сделать землю сплошной не удается, разные куски ее соединять между собой не в одной точке, а в нескольких, в разных местах, чтобы избежать концентрации токов помех в одном месте...

Мы когда - то с проблемами земли столкнулись на работе еще в 70х годах, в платах на 155 серии. Некоторые не уделяли земле (общему проводу) должного внимания, и получали кучу глюков при вроде бы правильной схеме.

Мы потом ввели обязятельное тестирование всех плат. Работающая плата не должна была сбоить при касании ее земляных дорожек или питания длинной отверткой, а также при многократном втыкании в розетку недалеко от той, с которой запитывалось устройство, 9 -амперного ЛАТРа. Если сбоит - переделывали.

Возможно, у вас проблемы программные (не знаю, лень разбираться), и после устранения ошибок в программе - пропадут, но с плохой землей все равно глюки возможны (может просто станут пореже).
0 / 0 / 0
Регистрация: 22.08.2012
Сообщений: 37
07.09.2012, 04:34
Цитата Сообщение от RyshirD
если сконфигурировать эти ножки, как выход - глюк пропадает. Хм... инетересно.
P.S. уезжаю на выходные, так что смогу результат обсуждений глянуть после.
Сконфигурируйте ножки как GPIO_Mode_IPU; — вход с подтяжкой к питанию
И добавьте внешний резистор подтяжки на 10к. Внутренняя подтяжка слабая.
0
0 / 0 / 0
Регистрация: 05.11.2014
Сообщений: 3
16.09.2012, 21:21
Та же проблема, что и в первом сообщении, причем прерывание иногда приходит даже когда пин замкнут на землю при том что вход сконфигурирован с внутренней подтяжкой. Кто нибудь сталкивался? Контроллер stm32f10x.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2012, 21:21

проблема с прерыванием
Всем здравствуйте! Не могу понять в чем проблема. Программа компилируется в AVR Studyo 5. Эмулируется в Proteus 7. Имеется ATMEGA32 с...

Ошибка с прерыванием
Здравствуйте. При вводе в программу (mega 128, AVR Studyo 4): ldi temp,(1<<ISC11)|(1<<ISC10) ;прерывание по нарастающему фронту для...

Цикл с прерыванием по условию
Доброго вечера! в одиночку пока не могу победить задачу. Прошу помощи. Задача: составить расписание занятий. В абонемент включено...

Проблема с прерыванием UART
Здравствуйте! Не могу разобраться с прерыванием UART. При приёме данных программа должна переходить на обработку прерывания, вместо этого...

Проблемы с прерыванием USART_RX_vect
Доброе время суток! Столкнулся с проблемой и не нашёл внятного ответа в сети ( в русскоязычном сегменте точно). Имеется Arduino на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
56
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru