taskYIELD(), в результате чего управление по-
лучает равноприоритетная задача-передатчик
2 (момент времени (4)). Когда она записывает
значение 200 в очередь, снова разблокируется
высокоприоритетная задача-приемник — мо-
мент времени (5), и цикл повторяется.
Следует отметить, что в ранее приведенном
примере, когда задача-приемник имеет более
высокий приоритет, чем задачи-передатчики,
очередь не может быть заполнена более чем
на 1 элемент данных.
Использование очередей для передачи составных типов Одним из типичных способов организа-
ции обмена между задачами с применени-
ем очередей является организация несколь-
ких задач-источников сообщений и одной
задачи-приемника сообщений (как и в учеб-
ной программе выше). При этом полезной
окажется возможность знать, какая именно
задача-источник поместила данные в оче-
редь, чтобы понять, какие именно действия
нужно выполнить с этими данными.
Простой способ достижения этого — ис-
пользовать в качестве элемента очереди
структуру, в которой хранятся как сами
данные, так и указан источник сообщения.
На рис. 5 показана организация обмена ин-
формацией между задачами в абстрактной
программе, реализующей контроллер двига-
теля с CAN-интерфейсом.
На рис. 5 изображена также структу-
ра xData, которая выступает в данном случае
типом элементов очереди. Структура содер-
жит два целочисленных значения:
Рис. 3. Результат выполнения учебной программы № 2
Рис. 4. Последовательность выполнения задач в учебной программе № 2
Рис. 5. Пример организации обмена информацией между задачами
103 КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 6 '2011 www.kit3e.ru