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



Pdf көрінісі
бет57/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   53   54   55   56   57   58   59   60   ...   129
Kurniz

Литература
1. Курниц А. FreeRTOS — операционная система 
для микроконтроллеров // Компоненты и тех-
нологии. 2011. № 2–5.
2. Barry R. Using the FreeRTOS real time kernel. 
A Practical Guide. 2009.
3. 
www.freertos.org
4. 
http://ru.wikipedia.org/wiki/Очередь_(програм-
мирование)
Рис. 6. Результат выполнения учебной программы № 3
Рис. 7. Последовательность выполнения задач в учебной программе № 3


23
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2011
www.kite.ru
микроконтроллеры
Андрей Курниц
kurnits@stim.by
Введение
Шестая часть статьи посвящена взаимо-
действию прерываний с остальной частью 
программы и поможет читателям ответить 
на следующие вопросы:
1) Какие API-функции и макросы можно ис-
пользовать внутри обработчиков преры-
ваний?
2) Как реализовать отложенную обработку 
прерываний?
3) Как создавать и использовать двоичные 
и счетные семафоры?
4) Как использовать очереди для передачи 
информации в обработчик прерывания 
и из него?
5) Каковы особенности обработки вложен-
ных прерываний во FreeRTOS?
События и прерывания
Встраиваемые микроконтроллерные си-
стемы функционируют, отвечая действиями 
на события внешнего мира. Например, полу-
чение Ethernet-пакета (событие) требует обра-
ботки в задаче, которая реализует TCP/IP-стек 
(действие). Обычно встраиваемые системы 
обслуживают события, которые приходят 
от множества источников, причем каждое со-
бытие имеет свое требование по времени ре-
акции системы и расходам времени на его об-
работку. При разработке встраиваемой 
микроконтроллерной системы необходимо 
подобрать свою стратегию реализации обслу-
живания событий внешнего мира. При этом 
перед разработчиком возникает ряд вопросов:
1) Каким образом события будут регистриро-
ваться? Обычно применяют прерывания, 
однако возможен и опрос состояния вы-
водов микроконтроллера.
2) В случае использования прерываний необ-
ходимо решить, какую часть программного 
кода, реализующего обработку события, по-
местить внутри обработчика прерывания, 
а какую — вне обработчика. Обычно стара-
ются сократить размер обработчика преры-
вания настолько, насколько это возможно.
3) Как обработчики прерываний связаны 
с остальным кодом и как организовать 
программу, чтобы обеспечить наибы-
стрейшую обработку асинхронных собы-
тий внешнего мира?
FreeRTOS не предъявляет никаких требо-
ваний к организации обработки событий, 
однако предоставляет удобные возможности 
для такой организации.
Прерывание (interrupt) — это событие 
(сигнал), заставляющее микроконтроллер 
изменить текущий порядок исполнения ко-
манд. При этом выполнение текущей после-
довательности команд приостанавливается, 
и управление передается обработчику пре-
рывания — подпрограмме, которую можно 
представить функцией языка Си. Обработчик 
прерывания реагирует на событие и обслу-
живает его, после чего возвращает управле-
ние в прерванный код [6]. Прерывания ини-
циируются периферией микроконтроллера, 
например прерывание от таймера/счетчика 
или изменение логического уровня на выво-
де микроконтроллера.
Следует заметить, что во FreeRTOS все 
API-функции и макросы, имена которых 
заканчиваются на FromISR или FROM_ISR, 
предназначены для использования в обра-
ботчиках прерываний и должны вызываться 
только внутри них.


Достарыңызбен бөлісу:
1   ...   53   54   55   56   57   58   59   60   ...   129




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

    Басты бет