新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ZigBee无线网络的嵌入式智能家居监控系统

基于ZigBee无线网络的嵌入式智能家居监控系统

作者: 时间:2014-04-18 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/256955.htm

1.3.uC/OS-II的移植

实时系统中任务的执行大多数都是由外部事件触发的。也就是说,实时操作系统的主要工作就是响应并处理各种外部事件。因此,对于每个外部事件都对应有一个处理这个事件的程序模块,这些模块就是任务。在移植前,把问题分析清楚,将问题分割成多个任务,每个任务都是整个应用的一部分,被赋予一定的优先级,有自己的一套CPU寄存器和堆栈空间。任务执行一次后,设置延时OSTDIy,表明经过OSTDIy个定时器中断周期后任务再次运行,然后进行任务切换,让处于就绪态的优先级最高的任务运行。uC/OS-II的任务实际上就是一段程序,在运行该程序时,可以认为CPU就完全属于该程序本身。在本设计中,所移植的系统建立了8个任务(参照见图2):

0号任务,用来监测安防传感器(煤气泄露)。在执行该任务时通过网络协调器选择与安防传感器(煤气泄露)终端节点通信,采集传感器数据。

1号任务,用来监测安防传感器(温度)。在执行该任务时通过网络协调器选择与安防传感器(温度)终端节点通信,采集传感器数据。

2号任务,与0号任务对应,将安防传感器(煤气泄露)采集的数据最终通过以太网上传到上位机上。

3号任务,与1号任务对应,将安防传感器(温度)采集的数据最终通过以太网上传到上位机上。

4号任务,用来控制冰箱、空调、电视、灯的电源开关,通常情况下,这些开关型控制,只用一个任务就可以完成,只要在执行该任务时,同时通过网络协调器同时发送一个16位地址符就可以选择出所要执行开关任务的终端节点。

5号任务,单独为窗帘建立一个任务。因为窗帘的控制是一个闭环控制。

6号任务,为电表、水表、燃气表的数据采集建立一个任务。因为水表、电表、燃气表的数据对实时性要求没有那么高,可以分时采集,在执行该任务时,同时通过ZigBee网络协调器同时发送一个16位地址符就可以选择出所要执行数据采集任务的终端节点,另外,还要为该任务调用一个延时函数,并设置延时时钟周期数,从而最终实现在三表间轮流数据采集。

7号任务,用来对三表数据上传到上位机建立任务。对应于任务6,分别将从水、电、燃气表采集的数据立即上传。

它们具有各自独立的堆栈空间和不同的静态优先级,0号任务优先级最高,7号任务优先级最低。对于0号任务---3号任务,由于它们是保证家居安全的是不允许中断响应的,所以在这些任务开始执行时,一定要关闭中断。



评论


相关推荐

技术专区

关闭