基于ZigBee無線網(wǎng)絡的嵌入式智能家居監(jiān)控系統(tǒng)
1.3.uC/OS-II的移植
實時系統(tǒng)中任務的執(zhí)行大多數(shù)都是由外部事件觸發(fā)的。也就是說,實時操作系統(tǒng)的主要工作就是響應并處理各種外部事件。因此,對于每個外部事件都對應有一個處理這個事件的程序模塊,這些模塊就是任務。在移植前,把問題分析清楚,將問題分割成多個任務,每個任務都是整個應用的一部分,被賦予一定的優(yōu)先級,有自己的一套CPU寄存器和堆??臻g。任務執(zhí)行一次后,設置延時OSTDIy,表明經(jīng)過OSTDIy個定時器中斷周期后任務再次運行,然后進行任務切換,讓處于就緒態(tài)的優(yōu)先級最高的任務運行。uC/OS-II的任務實際上就是一段程序,在運行該程序時,可以認為CPU就完全屬于該程序本身。在本設計中,所移植的系統(tǒng)建立了8個任務(參照見圖2):
0號任務,用來監(jiān)測安防傳感器(煤氣泄露)。在執(zhí)行該任務時通過ZigBee網(wǎng)絡協(xié)調(diào)器選擇與安防傳感器(煤氣泄露)終端節(jié)點通信,采集傳感器數(shù)據(jù)。
1號任務,用來監(jiān)測安防傳感器(溫度)。在執(zhí)行該任務時通過ZigBee網(wǎng)絡協(xié)調(diào)器選擇與安防傳感器(溫度)終端節(jié)點通信,采集傳感器數(shù)據(jù)。
2號任務,與0號任務對應,將安防傳感器(煤氣泄露)采集的數(shù)據(jù)最終通過以太網(wǎng)上傳到上位機上。
3號任務,與1號任務對應,將安防傳感器(溫度)采集的數(shù)據(jù)最終通過以太網(wǎng)上傳到上位機上。
4號任務,用來控制冰箱、空調(diào)、電視、燈的電源開關,通常情況下,這些開關型控制,只用一個任務就可以完成,只要在執(zhí)行該任務時,同時通過ZigBee網(wǎng)絡協(xié)調(diào)器同時發(fā)送一個16位地址符就可以選擇出所要執(zhí)行開關任務的終端節(jié)點。
5號任務,單獨為窗簾建立一個任務。因為窗簾的控制是一個閉環(huán)控制。
6號任務,為電表、水表、燃氣表的數(shù)據(jù)采集建立一個任務。因為水表、電表、燃氣表的數(shù)據(jù)對實時性要求沒有那么高,可以分時采集,在執(zhí)行該任務時,同時通過ZigBee網(wǎng)絡協(xié)調(diào)器同時發(fā)送一個16位地址符就可以選擇出所要執(zhí)行數(shù)據(jù)采集任務的終端節(jié)點,另外,還要為該任務調(diào)用一個延時函數(shù),并設置延時時鐘周期數(shù),從而最終實現(xiàn)在三表間輪流數(shù)據(jù)采集。
7號任務,用來對三表數(shù)據(jù)上傳到上位機建立任務。對應于任務6,分別將從水、電、燃氣表采集的數(shù)據(jù)立即上傳。
它們具有各自獨立的堆??臻g和不同的靜態(tài)優(yōu)先級,0號任務優(yōu)先級最高,7號任務優(yōu)先級最低。對于0號任務---3號任務,由于它們是保證家居安全的是不允許中斷響應的,所以在這些任務開始執(zhí)行時,一定要關閉中斷。
評論