<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ZigBee無線網(wǎng)絡的嵌入式智能家居監(jiān)控系統(tǒng)

          基于ZigBee無線網(wǎng)絡的嵌入式智能家居監(jiān)控系統(tǒng)

          作者: 時間:2014-04-18 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/256955.htm

          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í)行該任務時通過網(wǎng)絡協(xié)調(diào)器選擇與安防傳感器(煤氣泄露)終端節(jié)點通信,采集傳感器數(shù)據(jù)。

          1號任務,用來監(jiān)測安防傳感器(溫度)。在執(zhí)行該任務時通過網(wǎng)絡協(xié)調(diào)器選擇與安防傳感器(溫度)終端節(jié)點通信,采集傳感器數(shù)據(jù)。

          2號任務,與0號任務對應,將安防傳感器(煤氣泄露)采集的數(shù)據(jù)最終通過以太網(wǎng)上傳到上位機上。

          3號任務,與1號任務對應,將安防傳感器(溫度)采集的數(shù)據(jù)最終通過以太網(wǎng)上傳到上位機上。

          4號任務,用來控制冰箱、空調(diào)、電視、燈的電源開關,通常情況下,這些開關型控制,只用一個任務就可以完成,只要在執(zhí)行該任務時,同時通過網(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í)行時,一定要關閉中斷。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();