<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è) > 嵌入式系統 > 設計應用 > 基于Small RTOS51的數據采集器設計

基于Small RTOS51的數據采集器設計

作者: 時(shí)間:2004-12-11 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹如何運用 多任務(wù)操作系統進(jìn)行嵌入式控制器的軟件。首先介紹 多任務(wù)操作系統,然后介紹該操作系統進(jìn)行器軟件系統的。

關(guān)鍵詞: 多任務(wù)操作系統

引 言

  隨著(zhù)嵌入式系統的發(fā)展,嵌入式軟件向軟件平臺靠近,單片機軟件設計不再是單一線(xiàn)程結構方式,而是逐步采用多任務(wù)的設計思想。實(shí)時(shí)內核也稱(chēng)為實(shí)時(shí)操作系統或RTOS。它使得實(shí)時(shí)應用程序的設計、擴展和維護變得更容易,不需要大的改動(dòng)就可以增加新的功能。通過(guò)應用程序分割成若干獨立的任務(wù),RTOS使得應用程序的設計過(guò)程大為簡(jiǎn)化。使用可剝奪性?xún)群藭r(shí),所有時(shí)間要求苛刻的事件都得到了盡可能快捷、有效的處理。通過(guò)有效的服務(wù),如信號量、郵箱、隊列、延時(shí)、超時(shí)等,RTOS使得資源得到更好的利用。

  目前8位單片機在嵌入式系統中,應用還是最廣泛的。51多任務(wù)系統中,Keil C51 所帶的RTX51 Full 太大(6KB多),且需要外部RAM,又無(wú)源代碼,很多時(shí)候不實(shí)用。RTX51 Tiny雖然?。?00多字節),但是任務(wù)沒(méi)有優(yōu)先級和中斷管理,也無(wú)源代碼,也不太實(shí)用。而uC/OSII雖有源代碼,但是它太大,又需要外部RAM,所有函數又必須是重入函數,用在51這類(lèi)小片內RAM的單片機上有點(diǎn)勉強。Small RTOS為小RAM系統設計,RAM需求小,比較適合51這種資源比較少的系統上。

1 器系統設計

1.1 數據采集器原理

  數據采集器是將采集到的電表脈沖信號轉換為電能量數據整理保存,并與上行設備通信傳輸到管理單元進(jìn)行電表數據的統一管理。

1.2 硬件設計

  主控制器采用AT89C52芯片,利用7032將脈沖信號采樣,經(jīng)過(guò)CPU的處理將數據存儲到EEPROM芯片中,數據通過(guò)紅外信道上傳到掌上電腦中。系統框圖如圖1所示。

2 Small RTOS51多任務(wù)操作系統

  Small RTOS是一個(gè)源代碼公開(kāi)的多任務(wù)實(shí)時(shí)操作系統,Small RTOS 51是其在8051系列處理器上的移植(使用Keil C51)。Small RTOS可以簡(jiǎn)化那些復雜而且時(shí)間要求嚴格的工程的軟件設計工作。

Small RTOS有以下的特點(diǎn)。

① 公開(kāi)源代碼。只要遵循許可協(xié)議,任何人可以免費獲得源代碼。

② 可移植。盡量把與CPU相關(guān)部分壓縮到最小,與CPU無(wú)關(guān)部分用ANSI C編寫(xiě)。

③ 可固化。Small RTOS為嵌入式系統設計,如果有固化手段,它可以嵌入到產(chǎn)品中成為產(chǎn)品的一部分。

④ 占先式。Small RTOS可以管理17個(gè)任務(wù),用戶(hù)最多可以使用16個(gè)任務(wù),每個(gè)任務(wù)優(yōu)先級不同。

⑤ 中斷管理。中斷可以使正在執行的任務(wù)掛起。如果優(yōu)先級更高的任務(wù)被中斷喚醒,則高優(yōu)先級的任務(wù)在中斷嵌套全部退出后立即執行。中斷嵌套層數可達255 層。如果需要,可以禁止中斷嵌套管理。

⑥ RAM需求小。Small RTOS為小RAM系統設計,因而RAM需求小,相應的,系統服務(wù)也少。

目前,Small RTOS的最新版本為1.20.0??梢赃M(jìn)行任務(wù)的建立、刪除、動(dòng)態(tài)內存分配等操作。

3 任務(wù)分解設計

  數據采集器主要包括采集處理、顯示處理、按鍵處理、通信處理等模塊,由中斷處理相應采集脈沖信號和串口通信。因此,將任務(wù)分解為按鍵顯示處理、接收數據、命令處理、發(fā)送數據、采樣濾波處理、系統檢測6個(gè)任務(wù)。

  主程序進(jìn)行系統初始化以后,順序建立6個(gè)任務(wù),進(jìn)入CPU休眠狀態(tài)。各個(gè)任務(wù)運行后,首先進(jìn)入任務(wù)休眠狀態(tài),等待相應任務(wù)的喚醒。任務(wù)被喚醒以后,進(jìn)行相應處理,再次進(jìn)入休眠狀態(tài)。這樣,可以減少任務(wù)切換,減輕系統負擔。

  任務(wù)框圖如圖2所示,主程序流程如圖3所示。

  脈沖到來(lái)時(shí),引發(fā)相應外部中斷,由中斷處理程序處理后,置相應信號量,然后喚醒采樣濾波處理任務(wù)。采樣濾波處理任務(wù)將數據整理后,存儲到外部存儲器中。

  串口數據到來(lái)時(shí),引發(fā)串口中斷,串口中斷處理程序喚醒數據接收任務(wù)。數據接收任務(wù)完成數據包的接收,并根據通信數據包的特點(diǎn)進(jìn)行錯誤處理。數據包被正確接收后,喚醒命令處理任務(wù)。命令處理任務(wù)判斷數據包的校驗和,若正確就處理相應的命令。命令處理完成以后,將回應數據打包,然后喚醒發(fā)送數據任務(wù),將數據通過(guò)串口發(fā)送出去。

  每個(gè)任務(wù)均采用以下結構。

while(1)

{

OSWait(K_SIG, 0); // 任務(wù)睡眠,等待任務(wù)喚醒處理過(guò)程

}

任務(wù)的喚醒用OSTaskResume(TASK_ID)完成。

  串口接收和發(fā)送處理采用隊列模式,設立發(fā)送和接收兩個(gè)緩沖區,獨立的進(jìn)出隊列處理。數據解包和數據打包采用單獨處理方式,這樣單獨處理通信協(xié)議,以利于今后協(xié)議的改動(dòng)。

  串口緩沖I/O模塊的程序見(jiàn)本刊網(wǎng)站www.dpj.com.cn。

  系統節拍設置:將OS_TICKS_PER_SEC設為20,即系統時(shí)鐘節拍為每秒20次。定義定時(shí)器0的中斷時(shí)間設為50ms。

#define m_Fosc 11059200L

#define m_TIME 65536L - (m_Fosc / (OS_TICKS_PER_SEC *

12L))

void InitTimer0(void) {

TMOD = (TMOD 0xF0) | 0x01;

TH0 = m_TIME / 256;

TL0 = m_TIME % 256;

ET0 = 1;

TF0 = 0;

}

  TestSys任務(wù)定時(shí)檢測各任務(wù)的回應,若長(cháng)時(shí)間沒(méi)有回應,則啟動(dòng)復位功能,熱啟動(dòng)整個(gè)系統,以保證系統的可靠性。

  由于單片機采用AT89C52,片內RAM為256,使用DS12887中的一部分RAM作為擴展。隊列長(cháng)度各為15個(gè)字節時(shí),程序經(jīng)過(guò)9級優(yōu)化后,RAM占用140字節,XRAM占用106字節。由于系統RAM很小,因此,沒(méi)有使用信號量和消息進(jìn)行數據傳輸。在其它應用時(shí),可以根據系統資源進(jìn)行信號量和消息的使用,這樣可以更有效地使任務(wù)運行。

4 結 論

  在嵌入式系統中,使用RTOS是大勢所趨,因為在大多數情況下編程效率比執行效率重要。利用Small RTOS多任務(wù)系統設計,可以使51單片機發(fā)揮的更有效,并且今后的軟件維護和改進(jìn)更方便,更可靠。



關(guān)鍵詞: 設計 數據采集 RTOS51 Small 基于

評論


相關(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>