Darti 0 8 июля, 2016 Опубликовано 8 июля, 2016 (изменено) · Жалоба Есть прерывание от таймера T7, в любой момент его должно прервать прерывание от rx USART. Настраиваю приоритеты у T7 ставлю низкий например 5, в отладчике это вижу. Настраиваю USART ставлю 0, наивысший приоритет, тоже в отладчике это вижу. Оба прерывания срабатывают, но по логике очевидно что USART не пребивает T7. Довел до абсурда внутри T7 сделал зависон while(1) вижу что контроллер там висит в отладке. Начинаю слать какую нибудь байду по уарту, контроллер в прерывание не заходит. Не понимаю почему так. Ведь по логике вещей достаточно засунуть приоритеты в разные группы так и сделано NVIC_SetPriority(USART2_IRQn, 0), NVIC_SetPriority(TIM7_IRQn, 5);. Почему не работает вложенное прерывание? Изменено 9 января, 2023 пользователем haker_fox Уточнил название темы, добавил теги, переместил в нужный раздел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба Хотя-бы укажите какое у Вас ядро, а ещё лучше - МК. А то ARM - понятие растяжимое и контроллеры прерываний разные Если у Вас Cortex-M, то всё должно работать. Очевидно где то у Вас в коде ошибка, только Вы и можете её найти. И для тестов приоритетов в Cortex-M "зависоны" делать нет надобности. В NVIC есть соответствующий регистр, позволяющий программно возбуждать прерывания - он Вам будет полезен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба __NVIC_PRIO_BITS точно правильный? Процессор надо бы указывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darti 0 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба stm32l151 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба В тему топика: Вложенные прерывания :beer: NVIC отдыхает. тяпница-развратница B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба Ой влоооооженные (: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба NVIC отдыхает. тяпница-развратница B) Стоит ставить тэг [NSFW] для таких картинок. :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darti 0 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 8 июля, 2016 Опубликовано 8 июля, 2016 (изменено) · Жалоба Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду? Приоритеты или группы? Это разные вещи. NVIC_SetPriority задаёт приоритет. Так и пишите - приоритет. При такой путанице непонятно что же показывает отладчик. Изменено 8 июля, 2016 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darti 0 8 июля, 2016 Опубликовано 8 июля, 2016 (изменено) · Жалоба Разобрался, как то слишком уж запутанно. Проблема была в том что NVIC_PriorityGroup влияет на preemption priority и subpriority, как то везде об этом невнятно пишут. Без поллитры не обойтись Изменено 8 июля, 2016 пользователем Darti Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 июля, 2016 Опубликовано 8 июля, 2016 · Жалоба Можно просто отключить группы. Нафиг они нужны? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться