Действительно простой, непреодолимый планировщик задач.
Это супер простой, не преуспевший, планировщик задач. Этот демонстрационный проект был сделан в Atmel Studio 7 для микроконтроллера Atmega48p, но может быть легко перенесен.
Смысл этого планировщика состоит в том, чтобы вызовать и выполнить каждую задачу с выбранной периодичности.
Планировщик находится в папке ОС (OS.C и OS.H). Хотя это не операционная система, я все еще называю ее ОС, потому что именование проще (ОС короче, чем планировщик, дух).
Есть три основные, важные функции:
Есть три состояния:
Заблокирован: ожидает звонка от таймера
Готово: готов к исполнению
Приостановлено: отключено, ничего не сделает
Рисунок 2. Диаграмма состояния задач.
OS_TASKTIMER () - это функция, которая организует задачи. Это должно быть в прерывании таймера (в демонстрации это таймер на 1 секунду, но может быть чем угодно). Внутри функции есть счетчик. Если счетчик больше, то время разрыва задачи, оно помещает его в готовое состояние.
Рисунок 3. Диаграмма активности OS_TASKTIMER ().
OS_TASKEXECUTION () - это функция, которая вызывает задачи. Это должно быть в основной () бесконечной петле. Он проверяет, есть ли какие -либо готовые задачи, а затем выполняет их в стиле FIFO. Стоит отметить, что из -за этого это просто мягкое реальное время. Если вы выберете время неправильного времени, то в состоянии готового состояния может быть слишком много задач, и может произойти нежелательные задержки.
Рисунок 4. Диаграмма активности OS_TASKEXECUTION ().
Демонстрация предназначена для демонстрации того, как работает планировщик. Есть три задачи, и каждая задача моргает светодиод (в порту D 0,1,2) с 1, 2 и 5 секунд. Вторая задача начинается в приостановленном состоянии, поэтому она никогда не выполняется.