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


3V數(shù)據(jù)采集器件LTC1289
Small RTOS51嵌入式實時操作系統(tǒng)具有什么特點?
數(shù)據(jù)采集器發(fā)展
CR300數(shù)據(jù)采集器
GP1數(shù)據(jù)采集器(點將科技)
USB數(shù)據(jù)記錄儀 / USB數(shù)據(jù)采集器
[原創(chuàng)]DENSO BHT-300BW數(shù)據(jù)采集器
[原創(chuàng)]DENSO BHT-304QW數(shù)據(jù)采集器
campbell scientific CR1000數(shù)據(jù)采集器程序
digitizerNETBOX數(shù)據(jù)采集器有什么特點?
【Thunderboard Sense試用申請】Thunderboard Sense物聯(lián)網(wǎng)數(shù)據(jù)采集器
【常見問題】與數(shù)據(jù)采集器相關的十八個問題解答
二手34970A|34970A數(shù)據(jù)采集器34901A
什么是RS485轉LoRaWAN的數(shù)據(jù)采集器?
回收34901A|二手34901A數(shù)據(jù)采集器|安捷倫
基于FPGA的數(shù)據(jù)采集器設計及可靠性分析
基于串行通信的虛擬儀器數(shù)據(jù)采集器
多通道數(shù)據(jù)采集保存的例子
如何去設計并實現(xiàn)一種現(xiàn)場數(shù)據(jù)采集器?
安捷倫數(shù)據(jù)采集器34970A特價搶購
工業(yè)數(shù)據(jù)采集器的優(yōu)勢
怎樣去設計一種基于STM32F107的數(shù)據(jù)采集器呢
求 基于UDP協(xié)議的LabVIEW以太網(wǎng)數(shù)據(jù)采集器程序
要用USB7310數(shù)據(jù)采集器和labview進行數(shù)據(jù)采集具體要怎么操作
請問用TLC2543芯片和單片機做一個模擬數(shù)據(jù)采集器怎么做?
福祿克FLUKE 2638A全能型數(shù)據(jù)采集器
Small RTOS51 下CAN 總線數(shù)據(jù)收發(fā)實現(xiàn)

RTOS數(shù)據(jù)采集系統(tǒng)中實時處理與高速性的設計考慮

small_rtos1.12.1源代碼下載

Fluke2638A:精密多通道數(shù)據(jù)采集器,溫濕度巡檢儀
華為數(shù)據(jù)采集器SmartLogger3000B
34980A數(shù)據(jù)采集器34980A產(chǎn)品介紹
安捷倫34970A數(shù)據(jù)采集器34972A
安捷倫34980A數(shù)據(jù)采集器34972A
安捷倫數(shù)據(jù)采集器34970A用戶手冊
基于C8051F340的數(shù)據(jù)采集器設計

基于Small RTOS51的汽車動態(tài)稱重儀的設計

編寫Small RTOS51 的驅動程序

Small RTOS51 應用實例和分析

才知道,數(shù)據(jù)采集器有這么多小技巧!# #硬聲新人計劃 #數(shù)據(jù)采集器 #電子工程師 #是德科技 #數(shù)采



基于PIC單片機開發(fā)的高精度數(shù)據(jù)采集器


來了來了!數(shù)據(jù)采集器接熱電偶測溫度教程,手把手教學~#數(shù)據(jù)采集器 #電子工程師



低成本的U盤數(shù)據(jù)采集器設計


多功能低功耗海洋數(shù)據(jù)采集器的設計

基于C++的數(shù)據(jù)采集器的設計與實現(xiàn)

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



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



分析智能電網(wǎng)數(shù)據(jù)采集器的設計方案

基于單片機的地震數(shù)據(jù)采集器計時精度測量

基于ARM的智能電網(wǎng)數(shù)據(jù)采集器設計


關于數(shù)據(jù)采集器的使用步驟及選購基本原則

數(shù)據(jù)采集器的作用_數(shù)據(jù)采集器硬件特點

GPRS數(shù)據(jù)采集器的介紹與應用

什么是數(shù)據(jù)采集器,數(shù)據(jù)采集器的分類有哪些

解讀關于CAN總線的數(shù)據(jù)采集器的設計


數(shù)據(jù)采集器是什么,有哪些功能

深圳梯云物聯(lián)電梯數(shù)據(jù)采集器的說明

為什么你需要RS485轉LoRaWAN的數(shù)據(jù)采集器?

數(shù)據(jù)采集器我一般該怎么維修維護


485網(wǎng)關數(shù)據(jù)采集器應用于工業(yè)現(xiàn)場設備數(shù)據(jù)采集


分布式光伏逆變器數(shù)據(jù)采集器方案

光伏數(shù)據(jù)采集器終端SoDate 7201

數(shù)據(jù)采集器安捷倫34970A維修不開機案例


如何挑選RS485轉LoRaWAN的數(shù)據(jù)采集器?


維修數(shù)據(jù)采集器是德34970A無法開機


電梯數(shù)據(jù)采集器,實現(xiàn)智能化管理的關鍵

34970A維修安捷倫數(shù)據(jù)采集器開機報錯,指標超差最新案例


電梯數(shù)據(jù)采集器的作用是什么?

誰會用到CAN總線數(shù)據(jù)采集器?

物聯(lián)網(wǎng)數(shù)據(jù)采集器的工作原理和工作流程

數(shù)據(jù)采集器是什么設備 數(shù)據(jù)采集器屬于什么設備類型

評論