一款新型煙草稱重讀卡定級器的設計與實現(xiàn)
3.2 任務調度與實現(xiàn)
嵌入式實時操作系統(tǒng)μC/OS-II任務的調度由任務調度器控制,任務調度器的主要工作有兩項:一是在任務就緒表中查找具有最高優(yōu)先級的就緒任務;二是實現(xiàn)任務的切換。
本系統(tǒng)啟動多任務后,所有應用任務都處于就緒狀態(tài),并在任務就緒表中登記。任務調度器選擇當前優(yōu)先級最高的任務開始執(zhí)行。以鍵盤掃描任務為例,鍵盤被設定為150ms掃描一次,若有鍵盤按下,進行鍵處理,若無鍵按下,繼續(xù)掃描。在150ms延時的過程中,鍵盤掃描任務交出CPU使用權,由調度器查詢剩下就緒狀態(tài)任務的優(yōu)先級,選擇當前優(yōu)先級最高的任務開始執(zhí)行。150ms延時結束,若無更高級的任務就緒,程序將回到鍵盤掃描任務繼續(xù)執(zhí)行。CPU在不同任務之間輪換,保證近似每時每刻讓優(yōu)先級最高的就緒任務處于運行狀態(tài)。
在μC/OS-II操作系統(tǒng)中,某些任務需要特定的信號量,任務只有取得相應的信號量才能繼續(xù)執(zhí)行下去。例如,ADC任務必須等待A/D轉換完成信號量ADCSem就緒方能執(zhí)行,因此,當ADC任務得到CPU使用權時,若該信號量未能就緒,則該任務掛起,并交出CPU控制權。若該信號量就緒,則執(zhí)行任務。
在任何時刻,若有中斷發(fā)生,系統(tǒng)將當前任務掛起,轉而執(zhí)行中斷服務子程序(ISR)。以串口中斷1(上位機通訊)為例,當串口中斷發(fā)生時,意味著上位機有命令要發(fā)送給控制器,系統(tǒng)將中斷當前正在執(zhí)行的任務,轉入串口中斷1服務程序執(zhí)行。在中斷程序中,系統(tǒng)先判斷是發(fā)送中斷還是接收中斷,然后進行相應的處理。
程序代碼大體如下所示:

上位機通訊中斷程序執(zhí)行完畢后,調度器查詢當前就緒任務,若無更高級的任務就緒,程序將回到斷點處繼續(xù)執(zhí)行原先被中斷的任務。若有更高級的任務就緒,系統(tǒng)轉而執(zhí)行優(yōu)先級高的任務。
4 結語
本系統(tǒng)將煙葉收購過程中煙農信息采集、煙葉自動過磅、煙葉等級設置、煙葉數(shù)據(jù)處理整合在一起,真正實現(xiàn)了煙草收購的智能化管理,在保證收購質量的同時極大地提高了收購速度,縮短了收購周期,降低了收購成本。本文介紹的煙草稱重讀卡定級器先后在各地的基層煙站進行推廣實施,實踐證明,本煙草稱重讀卡定級器精度高、實時性好、運行穩(wěn)定、可靠性高、抗干擾能力強,可以在同類行業(yè)中推廣應用。本文引用地址:http://www.czjhyjcfj.com/article/159540.htm
評論