Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вложенные прерывания
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Darti
Есть прерывание от таймера T7, в любой момент его должно прервать прерывание от rx USART. Настраиваю приоритеты у T7 ставлю низкий например 5, в отладчике это вижу. Настраиваю USART ставлю 0, наивысший приоритет, тоже в отладчике это вижу. Оба прерывания срабатывают, но по логике очевидно что USART не пребивает T7. Довел до абсурда внутри T7 сделал зависон while(1) вижу что контроллер там висит в отладке. Начинаю слать какую нибудь байду по уарту, контроллер в прерывание не заходит. Не понимаю почему так. Ведь по логике вещей достаточно засунуть приоритеты в разные группы так и сделано NVIC_SetPriority(USART2_IRQn, 0), NVIC_SetPriority(TIM7_IRQn, 5);. Почему не работает вложенное прерывание?
jcxz
Хотя-бы укажите какое у Вас ядро, а ещё лучше - МК. А то ARM - понятие растяжимое и контроллеры прерываний разные biggrin.gif
Если у Вас Cortex-M, то всё должно работать. Очевидно где то у Вас в коде ошибка, только Вы и можете её найти.
И для тестов приоритетов в Cortex-M "зависоны" делать нет надобности. В NVIC есть соответствующий регистр, позволяющий программно возбуждать прерывания - он Вам будет полезен.
GetSmart
__NVIC_PRIO_BITS точно правильный?
Процессор надо бы указывать.
Darti
stm32l151
jcxz
В тему топика: Вложенные прерывания beer.gif
NVIC отдыхает. тяпница-развратница cool.gif
Obam
Ой влоооооженные (:
Kabdim
Цитата(jcxz @ Jul 8 2016, 15:28) *
NVIC отдыхает. тяпница-развратница cool.gif

Стоит ставить тэг [NSFW] для таких картинок. cranky.gif
Darti
Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?
GetSmart
Цитата(Darti @ Jul 8 2016, 17:40) *
Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?

Приоритеты или группы? Это разные вещи.
NVIC_SetPriority задаёт приоритет. Так и пишите - приоритет. При такой путанице непонятно что же показывает отладчик.
Darti
Разобрался, как то слишком уж запутанно. Проблема была в том что NVIC_PriorityGroup влияет на preemption priority и subpriority, как то везде об этом невнятно пишут. Без поллитры не обойтись
jcxz
Можно просто отключить группы. Нафиг они нужны?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.