|
NVIC Cortex-M процов, Группы приоритетов прерываний |
|
|
|
May 7 2015, 09:49
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет!
Есть регистр Application Interrupt and Reset Control Register, в котором задается поле PRIGROUP, то есть разбитие прерываний на группы и подгруппы по приоритетам. Вопрос нафига оно надо, чисто для удобства?
допустим у нас 16 групп и 16 подгрупп, прерывание из 5 группы, 0 уровня, 5.0 (значение в поле приоритета 0x50 = 80) имеет приоритет выше прерывания 6.0 (значение в поле приоритета 0x60 = 96). Но так и прерывание 80 имеет приоритет выше 96.
То есть разбитие на группы получается чисто для человека, удобства чтения, что ли...
Более того это поле вынесено в другие регистра, а не в группу NVIC, который вроде как является частью всех кортексов. И как я понимаю его вообще не интересуют группы, ему нужен конечный номер, да еще с числом используемых им в реализации бит или же я ошибаюсь? в NVIC прерывание с высшим приоритетом всегда прервет текущее, а с тем же или более низким будет ждать окончание текущего, не зависимо от группы, или это не так? И прерываться будут только подгруппы? А внутри одной группы прерывания не будут друг друга прерывать?
|
|
|
|
|
 |
Ответов
|
May 8 2015, 06:45
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Golikov A. @ May 7 2015, 13:59)  я знаю, спасибо. Мои 5 копеек: во всех моих программах я вызываю: Код void NVIC_Basic_Config(void) { #if defined(__TARGET_CPU_CORTEX_M3) || defined(__TARGET_CPU_CORTEX_M4) NVIC_SetPriorityGrouping(0x03); #endif } и получаю 16 уровней приоритетов 16-ти подгрупп. При инициализации прерывания периферии я подгруппы не использую (всегда 0), только лишь раскидываю периферии по 16-ти приоритетам, чего, по моему мнению, более чем достаточно. По опыту хватило бы и 8-ми.
|
|
|
|
|
May 8 2015, 07:34
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(KnightIgor @ May 8 2015, 09:45)  и получаю 16 уровней приоритетов 16-ти подгрупп. Какой МК, если не секрет? Я как бы намекаю, что, например, в STM32 всего 4 бита приоритета, а в LPC - вообще 3. Поэтому это ваше щедрое деление 8 бит на 4 и 4 - это возможно только в очень богатом МК. Цитата(adnega @ May 8 2015, 10:18)  Одновременно прерывания наступить не могут Не прерывания, а запросы на прерывание. И не одновременно, а в пределах одного такта. Очень даже могут. Но очень редко. И на этот случай есть механизм разруливания коллизии, и он описан в мануале.
|
|
|
|
|
May 8 2015, 08:03
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(scifi @ May 8 2015, 10:34)  И не одновременно, а в пределах одного такта. Очень даже могут. Но очень редко. Обсуждение ведется в части целесообразности sub-приоритетов. Есть мнение, что это лишнее. Мол, отработать в природе они не смогут, т.к. событие очень редкое - должны придти запросы в пределах одного такта. Я же привел пример, как повысить вероятность "работы" sub-приоритетов. Вот скажите, если приоритетное прерывание работает (PRIO-1), возникает запрос на прерывание от менее приоритетного (PRIO-2.2), а затем через 1000 тактов возникает запрос на прерывание от другого источника с таким же низким приоритетом (PRIO-2.1). Можно считать, что нет разницы когда возникли несколько менее приоритетных прерываний, т.к. анализировать NVIC их будет в момент окончания более приоритетного прерывания? Кста, победит PRIO-2.1 именно за счет sub-приоритета.
|
|
|
|
Сообщений в этой теме
Golikov A. NVIC Cortex-M процов May 7 2015, 09:49 Uuftc Цитата(Golikov A. @ May 7 2015, 12:49) И ... May 7 2015, 09:56 Golikov A. А внутри группы будет запускаться первым прерывани... May 7 2015, 09:59 scifi К примеру, у STM32 есть только 4 бита для приорите... May 7 2015, 10:01 Golikov A. Я всегда работал в 0 режиме, когда все биты - это ... May 7 2015, 10:07 scifi Цитата(Golikov A. @ May 7 2015, 13:03) Хо... May 7 2015, 10:12 Golikov A. ЦитатаМануал. Ну нельзя же так неуважительно относ... May 7 2015, 10:12 jcxz Цитата(Golikov A. @ May 7 2015, 16:12) бу... May 7 2015, 11:00    jcxz Цитата(adnega @ May 8 2015, 14:03) Есть м... May 8 2015, 08:25     adnega Цитата(jcxz @ May 8 2015, 11:25) Не обяза... May 8 2015, 08:42   jcxz Цитата(scifi @ May 8 2015, 13:34) Я как б... May 8 2015, 08:18    scifi Цитата(jcxz @ May 8 2015, 11:18) Это в ка... May 8 2015, 08:23   KnightIgor Цитата(scifi @ May 8 2015, 08:34) Какой М... May 11 2015, 06:31 SasaVitebsk Цитата(Golikov A. @ May 7 2015, 12:49) А ... May 8 2015, 07:08 adnega ЦитатаВнутри группы при одновременном поступлении ... May 8 2015, 07:18
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|