Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет72/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   68   69   70   71   72   73   74   75   ...   129
Kurniz

Вложенность прерываний
Во многих архитектурах микроконтролле-
ров прерывания имеют приоритеты, которые 
могут быть жестко заданы, но может суще-
ствовать возможность и конфигурировать 
уровни приоритетов прерываний.
Важно различать приоритет задач и прио-
ритет прерываний. Приоритеты прерываний 
аппаратно фиксированы в архитектуре микро-
контроллера (или определены при его кон-
фигурации), а приоритеты задач — это про-
граммная абстракция на уровне ядра FreeRTOS. 
Приоритет прерываний задает преимущество 
на выполнение того или иного обработчика 
прерывания при возникновении сразу несколь-
ких прерываний. Задачи не выполняются 
во время выполнения обработчика прерыва-
ния, поэтому приоритет задач не имеет ника-
кого отношения к приоритету прерываний.
Под вложенностью прерываний понима-
ется корректная работа FreeRTOS при одно-
временном возникновении сразу нескольких 
прерываний с разными приоритетами, когда 
обработчик низкоприоритетного прерыва-
ния еще не завершился, а возникает высоко-
приоритетное прерывание, и процессор начи-
нает выполнять его программу-обработчик.
Большинство портов FreeRTOS допу-
скает вложение прерываний. Эти порты 
требуют задания одного или двух конфи-
гурационных макроопределений в файле 
FreeRTOSConfig.h:
1. configKERNEL_INTERRUPT_PRIORITY — 
задает приоритет прерывания, исполь-
зуемого для отсчета системных квантов 
FreeRTOS. Если порт не использует ма-
кроопределение configMAX_SYSCALL_
INTERRUPT_PRIORITY, то для обеспече-
ния вложенности прерываний все прерыва-
ния, в обработчиках которых встречаются 
API-функции FreeRTOS, должны иметь 
этот же приоритет.
2. conf igMAX_SYSCALL_INTERRUPT_
PRIORITY — задает наибольший приоритет 
прерывания, из обработчика которого мож-
но вызывать API-функции FreeRTOS (чтобы 
прерывания могли быть вложенными).
Получить модель вложенности прерыва-
ний без каких-либо ограничений можно задав 
значение configMAX_SYSCALL_INTERRUPT_


Достарыңызбен бөлісу:
1   ...   68   69   70   71   72   73   74   75   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет