- Вызов задачи 1
- Вызов задачи 3
- Вызов задачи 5
- Бесконечный цикл ожидания с опросом очереди
Таблица задач
- Задача_1: Зажечь диод 1. Поставить вызов задачи 2 в очередь с задержкой 1мс
- Задача_2: Погасить диод 1. Поставить вызов задачи 1 в очередь с задержкой 1мс
- Задача_3: Зажечь диод 2. Поставить вызов задачи 4 в очередь с задержкой 2мс
- Задача_4: Погасить диод 2. Поставить вызов задачи 3 в очередь с задержкой 2мс
- Задача_5: Зажечь диод 3. Поставить вызов задачи 6 в очередь с задержкой 5мс
- Задача_6: Погасить диод 3. Поставить вызов задачи 5 в очередь с задержкой 5мс
Все. Основной алгоритм получается практически линейным. Остальное делает ядро. Не меняя структуры можно добавить еще задач, навешать их в любом порядке. И это практически не повлияет на выполнение остального кода, разве что придется немного скорректировать настройки таймера.
В прошлой части возник вопрос организации программы по задачам. Чтобы можно было разбить программу на кучу независимых частей и не заморачиваться на тот счет, что где то у нас будет затык.
Затык, конечно может быть, это все же не вытесняющая многозадачность с защищенным режимом, но разрулить все будет гораздо проще.