<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于時(shí)間觸發(fā)嵌入式系統的設計與應用

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

作者: 時(shí)間:2013-12-13 來(lái)源:網(wǎng)絡(luò ) 收藏
line-height: 22px; text-indent: 2em; font-family: 宋體, Georgia, verdana, serif; ">SREG=0×80或SEI();調度器必須先設定一個(gè)默認的時(shí)間片,這并不是件簡(jiǎn)單的事。時(shí)間片過(guò)長(cháng)會(huì )導致系統對交互行為的響應表現欠佳;時(shí)間片太短又會(huì )明顯地增大調度器處理耗時(shí),而留給任務(wù)運行的時(shí)間卻很短。

本文引用地址:http://dyxdggzs.com/article/227567.htm

根據筆者經(jīng)驗,一個(gè)較為可取的時(shí)間片是略大于一次典型的交互所需要的時(shí)間,使大多數進(jìn)程在一個(gè)時(shí)間片內完成。經(jīng)反復嘗試,時(shí)間片選擇在1~5ms之間執行效率較高,這樣既可滿(mǎn)足響應速度的要求又能把任務(wù)執行的時(shí)間降到最低。該時(shí)間與任務(wù)個(gè)數和任務(wù)運行時(shí)間均有關(guān),具體大小視情況而定。

4.3 中斷服務(wù)程序

建議該函數由CTC方式激活,當某任務(wù)需要運行時(shí),使之處于就緒態(tài)等待被執行。該函數內容由具體任務(wù)而定。

4.4 調度器任務(wù)添加函數

該函數用來(lái)將任務(wù)添加到消息隊列,以保證條件滿(mǎn)足時(shí)被調用,函數如下所示:

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

{定義靜態(tài)變量i;循環(huán)判斷任務(wù)隊列是否有空間;若無(wú),報錯返回;否則,添加任務(wù);}

4.5 調度函數

刷新函數雖然能夠直接激活任務(wù),但若直接運行,長(cháng)任務(wù)將破壞時(shí)標中斷,這意味著(zhù)所有的系統定時(shí)都將受到嚴重影響,造成許多任務(wù)不能被調度。因此,為了在長(cháng)任務(wù)存在的情況下使調度器的可靠性最大化,分離刷新和調度這兩個(gè)操作是必要的。

采用的是FCFS算法,為了提高系統的響應速度,必須要求Durationtask

void SCH_Dispatch_Tasks(void){定義靜態(tài)變量i;如果運行標志位大于0,則執行該任務(wù);該標志位清零;如果是單次任務(wù),則將其刪除;}

4.6 調度器任務(wù)刪除函數

void SCH_Delete_Task(const uint8task_id){定義 靜態(tài)返回值;若指針函數為空,返回空閑代碼;否則,對其延遲、周期、狀態(tài)等變量清零;返回代碼;}

5.應用實(shí)驗

以電磁爐系統為例,進(jìn)一步介紹基于A(yíng)VR微控制器的的具體應用。

電磁爐系統是一個(gè)復雜的,如圖2所示,AVR要處理大量的外圍設備,為便于開(kāi)發(fā),將整個(gè)程序按照硬件及功能進(jìn)行模塊劃分,各個(gè)功能模塊之間通過(guò)傳遞消息的方式來(lái)完成多任務(wù)的處理。

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

針對該應用,可設計功能模塊:MSGMap[],該數組由各個(gè)功能模塊組成,具體子函數如表1所列,使用函數數組的方式可以增強程序的擴展能力。如果有新的外設,只需在這里添加對應的模塊入口,并完成相應的模塊就可以增加系統的功能。

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

其中每個(gè)任務(wù)的運行周期間隔時(shí)間是程序中設定的參數(周期應為4ms的倍數),具體執行時(shí)間由AVR Studio測得,均應小于設定時(shí)間片4ms,否則應用將出錯,需重新設定時(shí)間片大小或再次分割功能模塊。其中看門(mén)狗處理任務(wù)是唯一的搶占式任務(wù)。

6.結論

實(shí)驗表明,以AVR微控制器為核心的控制系統,外圍擴展功能強大、開(kāi)發(fā)較簡(jiǎn)單,結合以理念為內核的操作系統,設計時(shí)一次只為一個(gè)任務(wù)分配空間,每個(gè)任務(wù)的存儲開(kāi)銷(xiāo)只有8個(gè)字節,采用由C語(yǔ)言與匯編混合式編程,簡(jiǎn)單、安全,可預測性強,尤其適用于對成本和穩定性均有要求的中小企業(yè)。隨著(zhù)嵌入式系統的發(fā)展,基于A(yíng)VR的時(shí)間觸發(fā)嵌入式系統必然有著(zhù)廣闊的應用前景。

電磁爐相關(guān)文章:電磁爐原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>