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

 
 
> Вложенные прерывания
Darti
сообщение Jul 8 2016, 11:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Есть прерывание от таймера T7, в любой момент его должно прервать прерывание от rx USART. Настраиваю приоритеты у T7 ставлю низкий например 5, в отладчике это вижу. Настраиваю USART ставлю 0, наивысший приоритет, тоже в отладчике это вижу. Оба прерывания срабатывают, но по логике очевидно что USART не пребивает T7. Довел до абсурда внутри T7 сделал зависон while(1) вижу что контроллер там висит в отладке. Начинаю слать какую нибудь байду по уарту, контроллер в прерывание не заходит. Не понимаю почему так. Ведь по логике вещей достаточно засунуть приоритеты в разные группы так и сделано NVIC_SetPriority(USART2_IRQn, 0), NVIC_SetPriority(TIM7_IRQn, 5);. Почему не работает вложенное прерывание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
jcxz
сообщение Jul 8 2016, 11:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Хотя-бы укажите какое у Вас ядро, а ещё лучше - МК. А то ARM - понятие растяжимое и контроллеры прерываний разные biggrin.gif
Если у Вас Cortex-M, то всё должно работать. Очевидно где то у Вас в коде ошибка, только Вы и можете её найти.
И для тестов приоритетов в Cortex-M "зависоны" делать нет надобности. В NVIC есть соответствующий регистр, позволяющий программно возбуждать прерывания - он Вам будет полезен.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 8 2016, 11:51
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



__NVIC_PRIO_BITS точно правильный?
Процессор надо бы указывать.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Darti
сообщение Jul 8 2016, 12:13
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



stm32l151
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 8 2016, 12:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



В тему топика: Вложенные прерывания beer.gif
NVIC отдыхает. тяпница-развратница cool.gif
Go to the top of the page
 
+Quote Post
Obam
сообщение Jul 8 2016, 12:34
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Ой влоооооженные (:


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 8 2016, 13:01
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(jcxz @ Jul 8 2016, 15:28) *
NVIC отдыхает. тяпница-развратница cool.gif

Стоит ставить тэг [NSFW] для таких картинок. cranky.gif
Go to the top of the page
 
+Quote Post
Darti
сообщение Jul 8 2016, 13:40
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jul 8 2016, 13:56
Сообщение #9


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



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

Приоритеты или группы? Это разные вещи.
NVIC_SetPriority задаёт приоритет. Так и пишите - приоритет. При такой путанице непонятно что же показывает отладчик.

Сообщение отредактировал GetSmart - Jul 8 2016, 14:26


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Darti
сообщение Jul 8 2016, 14:00
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Разобрался, как то слишком уж запутанно. Проблема была в том что NVIC_PriorityGroup влияет на preemption priority и subpriority, как то везде об этом невнятно пишут. Без поллитры не обойтись

Сообщение отредактировал Darti - Jul 8 2016, 14:38
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 8 2016, 16:23
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Можно просто отключить группы. Нафиг они нужны?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 06:49
Рейтинг@Mail.ru


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