以前寫簡單的程序時間等待都用軟件延時Delay湊合用下就完了,最近練習其他功能時想吧功能都寫在一起,用軟延時就多少有點抵觸,感覺浪費單片機處理時間,于是就研究起了系統自帶的操作系統----rtx51tny,以為能很好的分配單片機運行時間,但實際運行過程中問題很大,最主要的問題是時間片增大的問題。
rtx51tny的設置簡單就不多說了,系統配置:STC8H單片機1T模式,40M,時間片設置1000,輪詢超時設置5(實際使用大于1就行,作用不大),計算時間片為:1/40M*1000=25us,實際使用單任務控制不停led取反就能得到單時間片運行時間,使用某一個寶網上的30塊邏輯分析儀最后測試得40us,所以實際情況為系統切換時間+等待時間是 15+25=40us
隨后我就在任務1加了顯示5位數碼管任務測得單時間片最小值為:40us左右-----最小時間片基本沒改變
51hei截圖_20220314174646.png (13.03 KB, 下載次數: 49)
下載附件
1
2022-3-14 17:55 上傳
51hei截圖_20220314175928.png (91.9 KB, 下載次數: 56)
下載附件
2022-3-14 17:59 上傳
后來我就在任務2加了ADC取樣取平均值任務測得單時間片最小值為:42左右-----最小時間片基本也沒改變
51hei截圖_20220314174646.png (13.03 KB, 下載次數: 51)
下載附件
2022-3-14 18:15 上傳
51hei截圖_20220314175928.png (91.9 KB, 下載次數: 59)
下載附件
2022-3-14 18:15 上傳
最后我前面的基礎上加了串口1通訊任務測得最小單時間片猛增加到 483us
7.png (41.12 KB, 下載次數: 53)
下載附件
2022-3-14 18:27 上傳
9.png (30.64 KB, 下載次數: 62)
下載附件
2022-3-14 18:27 上傳
8.png (20.8 KB, 下載次數: 67)
下載附件
2022-3-14 18:27 上傳
串口1通訊僅僅增加了一個中斷入口4,調試了好幾天,都沒找出來為什么時間片會由原來的40us----增加到--483us,是子程序的問題還是中斷的問題造成的????所以請論壇內大師給看下什么原因。
可以預見的是針對rtx51tny,先調試好子程序再加入主程序時會產生設置好的時間片增加的問題,子程序越多可能時間片增大的越多,所以中間的延時就需要重新按實際情況調試后填進去,至于是代碼增多還是中斷的造成的這個問題,目前還沒找找到原因。
|