引 言
隨著嵌入式系統(tǒng)的發(fā)展,嵌入式軟件設(shè)計(jì)向軟件平臺(tái)靠近,單片機(jī)軟件設(shè)計(jì)不再是單一線程結(jié)構(gòu)方式,而是逐步采用多任務(wù)的設(shè)計(jì)思想。實(shí)時(shí)內(nèi)核也稱為實(shí)時(shí)操作系統(tǒng)或RTOS。它使得實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)、擴(kuò)展和維護(hù)變得更容易,不需要大的改動(dòng)就可以增加新的功能。通過應(yīng)用程序分割成若干獨(dú)立的任務(wù),RTOS使得應(yīng)用程序的設(shè)計(jì)過程大為簡化。使用可剝奪性內(nèi)核時(shí),所有時(shí)間要求苛刻的事件都得到了盡可能快捷、有效的處理。通過有效的服務(wù),如信號量、郵箱、隊(duì)列、延時(shí)、超時(shí)等,RTOS使得資源得到更好的利用。
目前8位單片機(jī)在嵌入式系統(tǒng)中,應(yīng)用還是最廣泛的。51多任務(wù)系統(tǒng)中,Keil C51 所帶的RTX51 Full 太大(6KB多),且需要外部RAM,又無源代碼,很多時(shí)候不實(shí)用。RTX51 Tiny雖然?。?00多字節(jié)),但是任務(wù)沒有優(yōu)先級和中斷管理,也無源代碼,也不太實(shí)用。而uC/OSII雖有源代碼,但是它太大,又需要外部RAM,所有函數(shù)又必須是重入函數(shù),用在51這類小片內(nèi)RAM的單片機(jī)上有點(diǎn)勉強(qiáng)。Small RTOS為小RAM系統(tǒng)設(shè)計(jì),RAM需求小,比較適合51這種資源比較少的系統(tǒng)上。
1 數(shù)據(jù)采集器系統(tǒng)設(shè)計(jì)
1.1 數(shù)據(jù)采集器原理
數(shù)據(jù)采集器是將采集到的電表脈沖信號轉(zhuǎn)換為電能量數(shù)據(jù)整理保存,并與上行設(shè)備通信傳輸?shù)焦芾韱卧M(jìn)行電表數(shù)據(jù)的統(tǒng)一管理。
1.2 硬件設(shè)計(jì)
主控制器采用AT89C52芯片,利用7032將脈沖信號采樣,經(jīng)過CPU的處理將數(shù)據(jù)存儲(chǔ)到EEPROM芯片中,數(shù)據(jù)通過紅外信道上傳到掌上電腦中。系統(tǒng)框圖如圖1所示。
2 Small RTOS51多任務(wù)操作系統(tǒng)
Small RTOS是一個(gè)源代碼公開的多任務(wù)實(shí)時(shí)操作系統(tǒng),Small RTOS 51是其在8051系列處理器上的移植(使用Keil C51)。Small RTOS可以簡化那些復(fù)雜而且時(shí)間要求嚴(yán)格的工程的軟件設(shè)計(jì)工作。
Small RTOS有以下的特點(diǎn)。
① 公開源代碼。只要遵循許可協(xié)議,任何人可以免費(fèi)獲得源代碼。
② 可移植。盡量把與CPU相關(guān)部分壓縮到最小,與CPU無關(guān)部分用ANSI C編寫。
③ 可固化。Small RTOS為嵌入式系統(tǒng)設(shè)計(jì),如果有固化手段,它可以嵌入到產(chǎn)品中成為產(chǎn)品的一部分。
④ 占先式。Small RTOS可以管理17個(gè)任務(wù),用戶最多可以使用16個(gè)任務(wù),每個(gè)任務(wù)優(yōu)先級不同。
⑤ 中斷管理。中斷可以使正在執(zhí)行的任務(wù)掛起。如果優(yōu)先級更高的任務(wù)被中斷喚醒,則高優(yōu)先級的任務(wù)在中斷嵌套全部退出后立即執(zhí)行。中斷嵌套層數(shù)可達(dá)255 層。如果需要,可以禁止中斷嵌套管理。
⑥ RAM需求小。Small RTOS為小RAM系統(tǒng)設(shè)計(jì),因而RAM需求小,相應(yīng)的,系統(tǒng)服務(wù)也少。
目前,Small RTOS的最新版本為1.20.0??梢赃M(jìn)行任務(wù)的建立、刪除、動(dòng)態(tài)內(nèi)存分配等操作。
3 任務(wù)分解設(shè)計(jì)
數(shù)據(jù)采集器主要包括采集處理、顯示處理、按鍵處理、通信處理等模塊,由中斷處理相應(yīng)采集脈沖信號和串口通信。因此,將任務(wù)分解為按鍵顯示處理、接收數(shù)據(jù)、命令處理、發(fā)送數(shù)據(jù)、采樣濾波處理、系統(tǒng)檢測6個(gè)任務(wù)。
主程序進(jìn)行系統(tǒng)初始化以后,順序建立6個(gè)任務(wù),進(jìn)入CPU休眠狀態(tài)。各個(gè)任務(wù)運(yùn)行后,首先進(jìn)入任務(wù)休眠狀態(tài),等待相應(yīng)任務(wù)的喚醒。任務(wù)被喚醒以后,進(jìn)行相應(yīng)處理,再次進(jìn)入休眠狀態(tài)。這樣,可以減少任務(wù)切換,減輕系統(tǒng)負(fù)擔(dān)。
任務(wù)框圖如圖2所示,主程序流程如圖3所示。
脈沖到來時(shí),引發(fā)相應(yīng)外部中斷,由中斷處理程序處理后,置相應(yīng)信號量,然后喚醒采樣濾波處理任務(wù)。采樣濾波處理任務(wù)將數(shù)據(jù)整理后,存儲(chǔ)到外部存儲(chǔ)器中。
串口數(shù)據(jù)到來時(shí),引發(fā)串口中斷,串口中斷處理程序喚醒數(shù)據(jù)接收任務(wù)。數(shù)據(jù)接收任務(wù)完成數(shù)據(jù)包的接收,并根據(jù)通信數(shù)據(jù)包的特點(diǎn)進(jìn)行錯(cuò)誤處理。數(shù)據(jù)包被正確接收后,喚醒命令處理任務(wù)。命令處理任務(wù)判斷數(shù)據(jù)包的校驗(yàn)和,若正確就處理相應(yīng)的命令。命令處理完成以后,將回應(yīng)數(shù)據(jù)打包,然后喚醒發(fā)送數(shù)據(jù)任務(wù),將數(shù)據(jù)通過串口發(fā)送出去。
每個(gè)任務(wù)均采用以下結(jié)構(gòu)。
while(1)
{
OSWait(K_SIG, 0); // 任務(wù)睡眠,等待任務(wù)喚醒處理過程
}
任務(wù)的喚醒用OSTaskResume(TASK_ID)完成。
串口接收和發(fā)送處理采用隊(duì)列模式,設(shè)立發(fā)送和接收兩個(gè)緩沖區(qū),獨(dú)立的進(jìn)出隊(duì)列處理。數(shù)據(jù)解包和數(shù)據(jù)打包采用單獨(dú)處理方式,這樣單獨(dú)處理通信協(xié)議,以利于今后協(xié)議的改動(dòng)。
串口緩沖I/O模塊的程序見本刊網(wǎng)站www.dpj.com.cn。
系統(tǒng)節(jié)拍設(shè)置:將OS_TICKS_PER_SEC設(shè)為20,即系統(tǒng)時(shí)鐘節(jié)拍為每秒20次。定義定時(shí)器0的中斷時(shí)間設(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ù)的回應(yīng),若長時(shí)間沒有回應(yīng),則啟動(dòng)復(fù)位功能,熱啟動(dòng)整個(gè)系統(tǒng),以保證系統(tǒng)的可靠性。
由于單片機(jī)采用AT89C52,片內(nèi)RAM為256,使用DS12887中的一部分RAM作為擴(kuò)展。隊(duì)列長度各為15個(gè)字節(jié)時(shí),程序經(jīng)過9級優(yōu)化后,RAM占用140字節(jié),XRAM占用106字節(jié)。由于系統(tǒng)RAM很小,因此,沒有使用信號量和消息進(jìn)行數(shù)據(jù)傳輸。在其它應(yīng)用時(shí),可以根據(jù)系統(tǒng)資源進(jìn)行信號量和消息的使用,這樣可以更有效地使任務(wù)運(yùn)行。
4 結(jié) 論
在嵌入式系統(tǒng)中,使用RTOS是大勢所趨,因?yàn)樵诖蠖鄶?shù)情況下編程效率比執(zhí)行效率重要。利用Small RTOS多任務(wù)系統(tǒng)設(shè)計(jì),可以使51單片機(jī)發(fā)揮的更有效,并且今后的軟件維護(hù)和改進(jìn)更方便,更可靠。
- 集器設(shè)計(jì)(5359)
抗干擾定型機(jī)數(shù)據(jù)采集器系統(tǒng)電路設(shè)計(jì) —電路圖天天讀(64)
7395
數(shù)據(jù)采集器發(fā)展
CR300數(shù)據(jù)采集器
GP1數(shù)據(jù)采集器(點(diǎn)將科技)
[原創(chuàng)]DENSO BHT-300BW數(shù)據(jù)采集器
[原創(chuàng)]DENSO BHT-304QW數(shù)據(jù)采集器
不是NI公司的數(shù)據(jù)采集器,怎么加入labview進(jìn)行采集呢?
什么是RS485轉(zhuǎn)LoRaWAN的數(shù)據(jù)采集器?
分享一款不錯(cuò)的基于STM32數(shù)據(jù)采集器的設(shè)計(jì)
基于LabVIEW和USB接口數(shù)據(jù)采集器的設(shè)計(jì)
基于串行通信的虛擬儀器數(shù)據(jù)采集器
如何去設(shè)計(jì)并實(shí)現(xiàn)一種現(xiàn)場數(shù)據(jù)采集器?
安捷倫數(shù)據(jù)采集器34970A特價(jià)搶購
工業(yè)數(shù)據(jù)采集器的優(yōu)勢
怎樣去設(shè)計(jì)一種基于STM32F107的數(shù)據(jù)采集器呢
求 基于UDP協(xié)議的LabVIEW以太網(wǎng)數(shù)據(jù)采集器程序
要用USB7310數(shù)據(jù)采集器和labview進(jìn)行數(shù)據(jù)采集具體要怎么操作
福祿克FLUKE 2638A全能型數(shù)據(jù)采集器
Small RTOS51 下CAN 總線數(shù)據(jù)收發(fā)實(shí)現(xiàn)
27small_rtos1.12.1源代碼下載
130Fluke2638A:精密多通道數(shù)據(jù)采集器,溫濕度巡檢儀
34980A數(shù)據(jù)采集器34980A產(chǎn)品介紹
安捷倫34970A數(shù)據(jù)采集器34972A
安捷倫34980A數(shù)據(jù)采集器34972A
安捷倫數(shù)據(jù)采集器34970A用戶手冊
數(shù)據(jù)采集儀
基于C8051F340的數(shù)據(jù)采集器設(shè)計(jì)
270基于Small RTOS51的汽車動(dòng)態(tài)稱重儀的設(shè)計(jì)
45Small RTOS51 應(yīng)用實(shí)例和分析
3290基于PIC單片機(jī)開發(fā)的高精度數(shù)據(jù)采集器
1484
低成本的U盤數(shù)據(jù)采集器設(shè)計(jì)
3610
基于dsPIC30F的高精度數(shù)據(jù)采集器的研制
4152
多功能低功耗海洋數(shù)據(jù)采集器的設(shè)計(jì)
0基于C++的數(shù)據(jù)采集器的設(shè)計(jì)與實(shí)現(xiàn)
0低價(jià)位、高性能!34970A數(shù)據(jù)采集器使用一覽#數(shù)據(jù)采集器


數(shù)據(jù)采集器-34970A數(shù)據(jù)采集器不開機(jī)維修#數(shù)據(jù)采集器 #測量儀器


冤大頭才買數(shù)據(jù)采集器?示波器能否取代數(shù)據(jù)采集器#電路知識(shí) #電工 #數(shù)據(jù)采集器 #示波器使用教程


兩分鐘學(xué)會(huì)34970A數(shù)據(jù)采集器設(shè)置通訊接口的方法 #數(shù)據(jù)采集器 #電子測量儀器


34972A數(shù)據(jù)采集器不開機(jī)了?板卡燒焦?報(bào)錯(cuò)604?#數(shù)據(jù)采集器 #不開機(jī) #開機(jī)報(bào)錯(cuò) #芯片級維修


一種便攜式高速數(shù)據(jù)采集器的研究實(shí)現(xiàn)_張珂
1基于ARM_WiFi的能耗數(shù)據(jù)采集器設(shè)計(jì)_王文慶
3有關(guān)數(shù)據(jù)采集器通訊協(xié)議的設(shè)置步驟
10基于MSP430F149的數(shù)據(jù)采集器的設(shè)計(jì)
17分析智能電網(wǎng)數(shù)據(jù)采集器的設(shè)計(jì)方案
6基于ARM的智能電網(wǎng)數(shù)據(jù)采集器設(shè)計(jì)
4539
關(guān)于數(shù)據(jù)采集器的使用步驟及選購基本原則
7969數(shù)據(jù)采集器的作用_數(shù)據(jù)采集器硬件特點(diǎn)
10718GPRS數(shù)據(jù)采集器的介紹與應(yīng)用
3174什么是數(shù)據(jù)采集器,數(shù)據(jù)采集器的分類有哪些
6842解讀關(guān)于CAN總線的數(shù)據(jù)采集器的設(shè)計(jì)
4762
數(shù)據(jù)采集器是什么,有哪些功能
10683數(shù)據(jù)采集器我一般該怎么維修維護(hù)
3099
485網(wǎng)關(guān)數(shù)據(jù)采集器應(yīng)用于工業(yè)現(xiàn)場設(shè)備數(shù)據(jù)采集
946
光伏數(shù)據(jù)采集器終端SoDate 7201
1數(shù)據(jù)采集器34980A自檢報(bào)錯(cuò)維修——安泰安捷倫儀器維修
3083
數(shù)據(jù)采集器安捷倫34970A維修不開機(jī)案例
1895
如何挑選RS485轉(zhuǎn)LoRaWAN的數(shù)據(jù)采集器?
1338
維修數(shù)據(jù)采集器是德34970A無法開機(jī)
1389
電梯數(shù)據(jù)采集器,實(shí)現(xiàn)智能化管理的關(guān)鍵
117434970A維修安捷倫數(shù)據(jù)采集器開機(jī)報(bào)錯(cuò),指標(biāo)超差最新案例
2947
電梯數(shù)據(jù)采集器的作用是什么?
1373誰會(huì)用到CAN總線數(shù)據(jù)采集器?
1072物聯(lián)網(wǎng)數(shù)據(jù)采集器的工作原理和工作流程
7306數(shù)據(jù)采集器是什么設(shè)備 數(shù)據(jù)采集器屬于什么設(shè)備類型
6454啟明云端案例|MC669-CN在逆變器數(shù)據(jù)采集器方案上的應(yīng)用
1650
數(shù)據(jù)采集器如何設(shè)置四線歐姆?
1838數(shù)據(jù)網(wǎng)關(guān)與數(shù)據(jù)采集器的關(guān)系
6341
多通道數(shù)據(jù)采集器怎么看數(shù)據(jù)
1897多通道數(shù)據(jù)采集器能采集什么
1882多通道數(shù)據(jù)采集器的作用有哪些
1774多通道數(shù)據(jù)采集器的特點(diǎn)和功能有哪些
2428國產(chǎn)ADC兼容AD7606在便攜式振動(dòng)數(shù)據(jù)采集器中應(yīng)用
1220
關(guān)于公司入庫用的PT850條碼數(shù)據(jù)采集器,您了解嗎?
1049
使用雙CAN口數(shù)據(jù)采集器時(shí)需要注意什么
835數(shù)據(jù)采集器在智能家居中的應(yīng)用
1824數(shù)據(jù)網(wǎng)關(guān)與數(shù)據(jù)采集器的區(qū)別
2383數(shù)據(jù)采集器的工作原理解析 實(shí)時(shí)數(shù)據(jù)采集器的優(yōu)勢是什么
2413數(shù)據(jù)采集器的類型與特點(diǎn) 如何優(yōu)化數(shù)據(jù)網(wǎng)關(guān)的性能
1665選擇數(shù)據(jù)采集器時(shí)需要考慮的因素
1435數(shù)據(jù)采集器的市場趨勢與前景
1381PDA二維數(shù)據(jù)采集器的工作原理,二維碼采集器有什么推薦產(chǎn)品?
1111
手持采集器是干什么用的 PDA采集器的主要功能與應(yīng)用場景
958
實(shí)時(shí)、高效,解鎖氣象數(shù)據(jù)采集新速度——?dú)庀?b class="flag-6" style="color: red">數(shù)據(jù)采集器
678醫(yī)療專用條碼采集器如何選擇?醫(yī)用數(shù)據(jù)采集器(PDA)品牌推薦
365
電子發(fā)燒友App



評論