avr simple scheduler
1.0.0
一个非常简单,非抢先的任务调度程序。
这是一个超级简单,非抢先的任务调度程序。该演示项目是在Atmega48p微控制器的Atmel Studio 7中进行的,但可以轻松移植。
该调度程序的重点是用选定的周期性调用并执行每个任务。
调度程序在OS文件夹(OS.C和OS.H)内部。尽管它不是操作系统,但我仍然称其为OS,因为这种方式命名更容易(OS比调度程序短,DUH)。
有三个主要的重要功能:
有三个州:
阻止:等待计时器的电话
准备:准备执行
暂停:残疾,不会做任何事情
图2。任务的状态图。
OS_TASKTIMER()是组织任务的功能。它应该在计时器中断(在演示中是一个1秒的计时器,但可以是任何东西)。功能内部有一个计数器。如果计数器更大,那么任务的突发时间,它将其置于准备状态。
图3。os_taskTimer()的活动图。
os_taskexecution()是调用任务的函数。它应该在主()无限循环中。它检查是否有任何准备任务,然后以FIFO样式执行它们。值得一提的是,因此,这只是柔和的实时。如果您选择错误的时间,那么现成的状态可能会有太多任务,并且可能会发生不必要的延迟。
图4。OS_TASKEXECUTION的活动图()。
该演示旨在演示调度程序的工作原理。有三个任务,每个任务都闪烁着1、2和5秒的LED(在端口D 0,1,2上)。第二个任务以悬浮状态开始,因此从未执行。