0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

定时器管理模块的实现及在无线传感器网络中的应用

电子设计 来源:单片机与嵌入式系统应用 作者:陈晓炜,石江宏 2021-05-05 09:31 次阅读

引言

定时器通信协议正常运行的基本要素之一,主要用于各种定时和帧重传的任务。通信协议在单片机系统上实现所使用的定时器,定时精度要求不高,但数量要求比较大。由于硬件资源有限,不可能为每一个单独任务分配一个硬件定时器,只能通过单个硬件定时器模拟多个软件定时器的方法,来满足协议中的定时应用需要。

用一定的数据结构将这些软件定时器组织起来,并提供统一的调用接口,称为“定时器管理”。目前定时器管理主要有2种实现方法:

①静态数组法。将定时器节点存储在数组中。优点是逻辑简单,占用ROM较少。但这种方案有明显的缺点:当硬件定时器中断发生时,要对所有定时器节点进行减法操作,时间开销很大,且时延不确定(与定时器数目相关)。

②delta链表法。按照定时器的定时值升序排列,形成链表。后一个定时器的定时值是前面所有定时器的值加上本节点的值。这样,在每次的时钟中断处理中,只需对第1个定时器节点进行减法操作,大大减少了时间开销。但是,该方案逻辑复杂,ROM用量大,需要频繁分配回收内存,容易形成内存碎片。

1 定时器管理模块的设计

定时器管理模块的设计基于静态数组法。使用一个定时器节点数组来保存所有的定时请求,数组的每一项代表一个可用的定时器节点。每一个定时器节点都有一个状态项,表示该定时器正处于空闲、使用或溢出状态。定时器的定时值和定时器超时后要发送的消息也存储在定时器节点中,从而实现用一个硬件定时器为用户提供多个软件定时器。

为了解决中断处理时间开销大的问题,在模块中引入一个辅助定时器,辅助定时器的值总是等于所有定时器节点中的最小定时值。在硬件定时器中断处理中,仅对辅助定时器进行减法操作,从而大大缩短了中断处理的时间。设计原理如图1所示。

pIYBAGCKDciAavS4AAAxJ6LrKAg978.png

2 定时器管理模块的实现

2.1 数据结构和函数接口

定时器管理模块使用的相关数据结构定义如下:

o4YBAGCKDfiAbcgBAAAjhggqwGM175.png

字段state保存了定时器节点的状态,可能取值为空闲(T_FREE)、使用 (T_INUSE)或溢出(T_OVERFLOW)。

字段count保存了定时器节点的定时值,最大取值为65 535。如果设置硬件定时器中断为10 ms,则软件定时器最大定时约为655 s,可以满足大多数应用需要。

字段msg指向定时器的用户消息。在启动定时器时,指向消息的指针被保存在此字段。当定时时间结束后,中断处理函数会自动发出这个消息以通知用户任务。

由于数组的下标是唯一的,可作为识别节点的唯一ID号。下文中提到的节点ID号均表示节点在数组中的下标。

MAX_TIMER_NUM表示系统允许的最大定时器数,其值取决于具体应用需要。

本模块提供的关键接口函数如下:

pIYBAGCKDfKAfch1AAAdIdw1IWc011.png

2.2定时器的初始化

使用定时器管理模块前,需要进行定时器的初始化。主要是初始化定时器节点数组,将每一个定时器节点设置为空闲状态,同时将辅助定时器置零,辅助ID指向0xFF(表示空)。

2.3定时器的启动

启动一个定时器,主要是将节点数组中一个空闲状态的节点置为使用状态。如果这个新启用的定时器,是所有定时器中定时值最小的,还要更新辅助定时器。函数以指向定时器消息的指针和定时值为参数,启动定时器流程如图2所示。成功启动定时器后,返回该定时器节点的ID号。

o4YBAGCKDcGAHucaAABRAugQUYQ158.png

2.4定时器的删除

在目标定时器到期之前,由于某种原因用户可能会要求取消定时器。如重发定时器,用户在发送数据帧后启动该定时器,并等待对方返回响应帧。如果在定时时间结束时没有收到响应帧,用户就需要重发原数据帧;如果在定时时间结束之前收到响应帧,用户就需要马上取消该定时器,然后进行下一次通信过程。

删除定时器函数以定时器节点ID号作为输入参数,将定时器节点设为空闲状态,并根据需要更新辅助定时器,流程如图3所示。

o4YBAGCKDbuAQSSxAACgSSrd0Pc038.png

2.5定时器的驱动

软件定时器的驱动由硬件定时器提供。在硬件定时器中断中,首先将辅助定时器的值减1。如果辅助定时器值为0,则表示定时值最小的定时器已经超时,应将对应的消息发送给用户任务,将节点置为空闲状态,并重新计算其他节点的定时值,同时查找定时值最小的节点,更新辅助定时器。驱动流程如图4所示。

关键代码如下:

o4YBAGCKDeuAcIHWAABOnYTeBh0951.png

结语

本文设计的定时器管理器模块,具有逻辑简单、效率高的特点,在实验室自主研发的无线传感器网络中得到应用。在共包含30个节点的温、湿、光信息采集系统中,使用该定时器管理模块的无线传感器网络协议运行高效、稳定。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148494
  • 无线传感器
    +关注

    关注

    15

    文章

    767

    浏览量

    98048
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
收藏 人收藏

    评论

    相关推荐

    基于嵌入式网络无线传感器网络平台软硬件实现

    传感器节点发送的数据。系统的软件结构  我们的无线传感器网络系统,软件部分主要是在
    发表于 09-15 08:15

    无线传感器网络体系结构研究

    ,例如目录服务,资源管理、能量管理、生命周期管理。  安全中间件:为无线传感器网络应用业务
    发表于 03-23 14:57

    无线传感器网络的路由协议

    主要是围绕着减少能量消耗延长网络生命周期而进行设计的。无线传感器网络,路由协议不仅关心单个节
    发表于 08-07 10:26

    无线传感器网络交通领域的具体应用

    提供精确的输入信息。通过给终端节点安装温湿度、光照度、气体检测等多种传感器,还可以进行路面状况、能见度、车辆尾气污染等检测。无线传感器网络
    发表于 11-21 17:44

    基于无线传感器节点实现超长电池使用寿命

    传感器测量和无线数据传送只需大约30ms的时间即可完成,每分钟测量一次时,据估算,整个系统电池的使用寿命为10.5年。 随着IoT网络越来越普及,这个使用纳米级功耗系统
    发表于 09-10 11:47

    在线检测系统无线传感器网络开发

    者的设置,以手机短信和电子邮件的方式提供报警信息。  主要问题和解决方法  1.通讯问题  无线传感器网络应用到该项目的过程,最大问题
    发表于 10-31 16:50

    基于无线传感器网络的粮情监测系统的设计与实现

    特点,具有良好的应用前景。  关键词:无线传感器网络;粮情监测系统;CDMA;Sub-G  粮情监测领域,数据采集大多是由分布广阔领域里
    发表于 11-06 10:58

    基于Atmel的无线传感器网络节点的研究与实现

    的设计和管理提出了许多挑战。  无线传感器网络节点  无线传感器
    发表于 11-15 14:55

    基于LabVIEW的无线传感器网络监测平台设计

    监测平台的后面板程序设计流程如图4所示。  图4 无线传感器网络监测平台流程图  由于此监测平台通过串口实现PC机与无线
    发表于 11-16 15:46

    无线传感器网络的拓扑结构与应用

    网络的通讯体系结构  无线传感器网络实现需要自组织网络技术,相对于一般意义上的自组织
    发表于 12-05 15:17

    自主设计的无线传感器网络监测平台

    无线传感器网络监测平台流程图  由于此监测平台通过串口实现PC机与无线传感器
    发表于 04-24 06:07

    无线传感器网络简单介绍

    无线传感网络技术是典型的具有交叉学科性质的军民两用战略高技术,可以广泛应用于GF军事、国家安全、环境科学、交通管理、灾害预测、医疗卫生、制造业、城市信息化建设等领域。
    发表于 07-01 06:25

    XBee传感器创建无线传感器网络的应用

    网络得以与自配置和自修复的无线 Mesh 网络相连接。基于 XBee 传感器,客户可以 ZigBee
    发表于 07-26 07:04

    无线传感器网络底层平台由什么组成?

    提高系统的兼容性、稳定性、可移植性和开发效率。本文主要研究了无线传感器网络操作系统的底层平台,对无线模块、USART、SPI、中断和
    发表于 04-16 06:41

    怎么实现无线传感器网络

    IEEE 802.15.4标准是什么?怎么实现无线传感器网络无线传感器
    发表于 05-13 06:38