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


Tools  → [WinAVR] Make all



Pdf көрінісі
бет18/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   14   15   16   17   18   19   20   21   ...   129
Kurniz

Tools 
[WinAVR] Make all (рис. 8). 
Сообщение об отсутствии ошибок (Errors: 
none) означает успешную сборку и получе-
ние файла прошивки rtosdemo.hex, который 
должен появиться в директории проекта.
Используя любой программатор, необхо-
димо загрузить файл прошивки в целевой 
МК. Автор использовал для этой цели аналог 
отладчика JTAG ICE (рис. 9). Возможна за-
грузка и через интерфейс SPI.
Подключив осциллограф к выводам 1, 2 
разъема J2 — они подключены к выводам 
PF0 и PF1 ATmega128 соответственно (обо-
значены красным на рис. 9), можно наблю-
дать совместную работу двух независимых 
задач (рис. 10).
Рассмотрим подробнее, что происходит. 
Пусть после старта планировщик первой 
запустит задачу 1 (рис. 11). Она выполняет-
ся на протяжении 1 системного кванта вре-
мени, который задан равным 1 мс в файле 
рис. 6. Мезонинный модуль WIZ200WEB
рис. 7. Окно редактора Programmers Notepad


114
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2011
компоненты
микроконтроллеры
FreeRTOSConfig.h. В это время задача 2 на-
ходится в состоянии готовности. После чего 
вызывается планировщик, который перево-
дит задачу 1 в состояние готовности, а зада-
чу 2 — в состояние выполнения, так как зада-
чи имеют одинаковый приоритет и задача 1 
уже отработала один квант времени.
Пока выполняется задача 1, она увеличи-
вает свой счетчик ul. Когда планировщик 
переводит задачу 1 в состояние готовности, 
переменная ul сохраняется в собственном 
стеке задачи 1 и не увеличивается, пока вы-
полняется задача 2. Как только переменная ul 
достигает значения 4000, она обнуляется 
(момент времени t1), а логический уровень 
на выводе PF0 инвертируется, однако это мо-
жет произойти только в течение кванта вре-
мени выполнения задачи 1. Аналогично ведет 
себя задача 2, но ее счетчик обнуляется по до-
стижении значения 8000. Таким образом, эта 
простейшая программа генерирует меандр 
с «плавающим» полупериодом, а разброс 
продолжительности полупериода достигает 
одного системного кванта, то есть 1 мс.
Выводы
В статье были рассмотрены основ-
ные принципы, заложенные во все ОСРВ. 
Описаны соглашения об именах иденти-
фикаторов и типах данных, используемых 
в исходном коде ядра FreeRTOS. Большое 
внимание уделено задаче как базовой еди-
нице программы для FreeRTOS. Подробно 
рассмотрены состояния задачи, дано объяс-
нение понятию приоритета задачи. Описана 
API-функция создания задачи xTaskCreate()
Приведен пример наипростейшей про-
граммы, выполняющейся под управлением 
FreeRTOS, приведены результаты тестиро-
вания и описаны происходящие процессы 
без углубления во внутреннюю реализацию 
FreeRTOS.
В следующих публикациях будет продол-
жено рассмотрение задач. Подробно будет 
рассказано о приоритетах задач, показано, 
каким образом можно менять приоритеты 
во время выполнения программы. Внимание 
будет уделено правильному способу приоста-
навливать задачи на заданное время и фор-
мировать задержки. Будет рассказано о задаче 
«бездействие» и о функции, вызываемой каж-
дый системный квант времени. Будет показа-
но, как правильно уничтожать задачи. Весь 
материал будет снабжен подробными при-
мерами.
n
Литература
1. Курниц А. FreeRTOS — операционная система 
для микроконтроллеров // Компоненты и тех-
нологии. 2011. № 2.
2. 


Достарыңызбен бөлісу:
1   ...   14   15   16   17   18   19   20   21   ...   129




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

    Басты бет