Главный цикл

  • Вызов задачи 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мс

Все. Основной алгоритм получается практически линейным. Остальное делает ядро. Не меняя структуры можно добавить еще задач, навешать их в любом порядке. И это практически не повлияет на выполнение остального кода, разве что придется немного скорректировать настройки таймера.

В прошлой части возник вопрос организации программы по задачам. Чтобы можно было разбить программу на кучу независимых частей и не заморачиваться на тот счет, что где то у нас будет затык.
Затык, конечно может быть, это все же не вытесняющая многозадачность с защищенным режимом, но разрулить все будет гораздо проще.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: