時分多線程技術在單片機中的應用
在統籌考慮任務線程段的代碼量、外設響應、系統響應性能以及線程切換的數據保護量后,確定以lOms作線程時間片的切換單位。主要考慮以下幾方面因素:
(1)任務線程段代碼量的大小
根據各功能模塊大小,依據相關性以及時序等邏輯關系,在考慮各功能模塊內聚性、線程切換運算量的基礎上,進行模塊分解、合并,組成線程執行代碼段,以確保線程執行代碼段(包括中斷服務程序的執行時間)能在時間片內完成,從而簡化了控制模型,降低了多線程中上下文之間切換的復雜度。
例如處理鍵盤輸入,為實現鍵盤輸入的消抖動干擾、冗余讀取鍵值以及持續按鍵與點擊按鍵功能。通過設置若干標識變量,細分鍵值處理線程的時序作業步驟,使每個作業執行時間片小于lOms,從而適應時鐘片調度的時間約束條件,降低設計風險。
對按鍵的20~30ms防抖動延時,可通過設置標識量keydelay,在時間片中斷服務程序中進行延時計數,而在主循環程序中就可進行如下處理。

(2)外設響應
在考慮MCU同各種外設交互的延時因素中,要綜合平衡外設延時時間、線程切換、時間片周期等因素對系統整體綜合性能的影響,最大限度地提升CPU利用率。
(3)A/D數據轉換速率
對所讀溫度、功率值的采樣頻率,根據C8051F005的片上A/D轉換速率以及數字濾波處理的信號冗余讀數要求,兼顧時間片大小。
3 特別注意事項
①時間片中斷T2應設最高優先級,以免其他中斷程序干擾時間片調度程序的實時性處理。
②中斷服務程序的調度算法應盡量簡短,提高系統的響應能力。
③注意堆棧操作的溢出控制。
④分配在時間片中的線程代碼段要有合理的組合與調度考慮,以均衡負擔CPU的時間片,降低設計風險。
⑤在初始化系統狀態時,確保線程狀態標識的創建,以及時間片中斷T2的使能。
⑥慎重處理中斷服務程序執行時間,避免擠占線程時間片的正常處理,引起控制紊亂、系統崩潰。
結語
針對日益復雜、多樣、高實時要求的應用項目,本文提供了一種易于設計、功能便于擴充的解決方案。由此也啟示我們,采用正確、靈活的設計方法,綜合運用現有技術,可有效提高單片機應用系統性能,擴大應用領域,增強實時控制能力,降低開發難度。
評論