新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种高效率的定时器管理模块设计

一种高效率的定时器管理模块设计

作者:时间:2010-03-24来源:网络收藏

摘要:首先说明常见方案的优缺点,然后针对通信协议的特点,了一种。该通过使用一个辅助,大大减少了定时器中断处理的时间开销。
关键词:软件定时器;相对定时器;定时器;通信协议

本文引用地址:http://www.eepw.com.cn/article/173423.htm

引言
定时器是通信协议正常运行的基本要素之一,主要用于各种定时和帧重传的任务。通信协议在单片机系统上实现所使用的定时器,定时精度要求不高,但数量要求比较大。由于硬件资源有限,不可能为每一个单独任务分配一个硬件定时器,只能通过单个硬件定时器模拟多个软件定时器的方法,来满足协议中的定时应用需要。
用一定的数据结构将这些软件定时器组织起来,并提供统一的调用接口,称为“定时器管理”。目前定时器管理主要有2种实现方法:
①静态数组法。将定时器节点存储在数组中。优点是逻辑简单,占用ROM较少。但这种方案有明显的缺点:当硬件定时器中断发生时,要对所有定时器节点进行减法操作,时间开销很大,且时延不确定(与定时器数目相关)。
②delta链表法。按照定时器的定时值升序排列,形成链表。后一个定时器的定时值是前面所有定时器的值加上本节点的值。这样,在每次的时钟中断处理中,只需对第1个定时器节点进行减法操作,大大减少了时间开销。但是,该方案逻辑复杂,ROM用量大.需要频繁分配回收内存,容易形成内存碎片。

1 定时器管理
定时器管理模块的基于静态数组法。使用一个定时器节点数组来保存所有的定时请求,数组的每一项代表一个可用的定时器节点。每一个定时器节点都有一个状态项,表示该定时器正处于空闲、使用或溢出状态。定时器的定时值和定时器超时后要发送的消息也存储在定时器节点中,从而实现用一个硬件定时器为用户提供多个软件定时器。
为了解决中断处理时间开销大的问题,在模块中引入一个辅助定时器,辅助定时器的值总是等于所有定时器节点中的最小定时值。在硬件定时器中断处理中,仅对辅助定时器进行减法操作,从而大大缩短了中断处理的时间。设计原理如图1所示。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭