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上)。第二個任務以懸浮狀態開始,因此從未執行。