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

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

3天内不再提示

浅谈rtimer定时器原理和rtimer移植

西西 2018-02-16 10:21 次阅读

rtimer可以满足精准定时的需要,但是没有常见的next指针来挂接后续节点, 为了减少rtimer中断挂接一个rtimer结构是不错的做法,大多数定时器位宽为16位,因此rtimer的频率必须小于30kHz。

一.rtimer用途

Contiki系统引入rtimer可以满足精准定时的需要,一些对时间极为敏感的模块(如MAC协议)依赖于rtimer。和etimer的粗粒度(常见为100Hz)不同,rtimer是细粒度(常见为10kHz)定时器。根据经验,细粒度定时器如果中断频繁特别容易消耗CPU资源,为此contiki设计rtimer时尽可能地减少中断,大部分应用场合为读取定时器计数值。

二.数据结构

Rtimer的数据结构如图1所示,time赋值为下一次定时器超时中断的时刻点,func是定时器超时中断的回调函数,ptr是传递给回调函数的数据指针。

浅谈rtimer定时器原理和rtimer移植

从图1发现,rtimer没有常见的next指针来挂接后续节点,确实,contiki为了减少rtimer中断的爆发只能挂接一个rtimer结构,如图2所示。如果同时挂接2个或以上的rtimer结构,那么最新挂接的有效,其它的rtimer结构将丢失,即图3的解释。

这种只能挂接1个rtimer的机制使设计很简单,并且硬件定时器中断只在需要的时候才爆发,极大降低了CPU负荷。当然,它也带来一个限制,只能串行使用rtimer定时器的中断回调功能,即不具备排队功能。

浅谈rtimer定时器原理和rtimer移植

三.rtimer中断时序

图4展示了rtimer的中断时序,当调用rtimer_arch_schedule()时,它设置rtimer定时器的中断间隔时长timeout,中断服务程序rtimer_irq_handler会调用rtimer-》callback()回调函数。

需要特别注意2点:中断只允许发生一次,即rtimer_arch_schedule()使能中断,而rtimer_irq_handler()禁止中断;rtimer-》callback()是在中断状态下运行,特别注意防止竞态错误,例如,调用process_poll()合法,调用process_post()非法。

浅谈rtimer定时器原理和rtimer移植

四.rtimer移植

有了上述rtimer的理论,再来移植rtimer就比较容易了,即,基于MCU实现rtimer-arch.c和rtimer-arch.h。

需要特别注意,大多数定时器(尤其是8位MCU)位宽为16位,即MAX=65535,而MAC协议往往需要1秒以上的定时周期,因此rtimer的频率必须小于30kHz。一个比较好的数值是10kHz,它既可以保证比较好的精度(间隔为100us),又具备6.5秒的满量程,这可以适应大多数的应用需要。

另外,大多数应用需要随机撤销和重启动rtimer,它可以通过添加2个函数来实现:rtimer_arch_disable_irq()和rtimer_arch_enable_irq()。

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

    关注

    23

    文章

    3237

    浏览量

    114471
收藏 人收藏

    评论

    相关推荐

    STM32定时器(二)定时器中断

    常规定时器:基本定时器TIM6&TIM7)、通用定时器(TIM2~TIM5,TIM9~TIM14)、高级定时器(TIM1&TIM8)
    的头像 发表于 07-21 14:54 4327次阅读
    STM32<b class='flag-5'>定时器</b>(二)<b class='flag-5'>定时器</b>中断

    浅谈555定时器的原理及其应用

    555定时器是一种应用十分广泛的中规模集成电路。本文扼要地分析了555定时器的基本原理,并较为详细地介绍了用555定时器构成的单稳态触发、双稳态触发
    发表于 08-10 09:34 323次下载

    555定时器

    555定时器555定时器555定时器555定时器555定时器555定时器555
    发表于 11-10 17:25 52次下载

    浅谈labviEW定时器

    LABVIEW提供了几种定时器(包括DELAY)
    发表于 01-13 17:21 34次下载

    浅谈定时器基础知识与PWM输出原理

    单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电机还是舵机,都会用到定时器,比如最常用的有刷直流电机,会使用定时器产生PWM波来调节转速,通过定时器的正交编码
    的头像 发表于 04-05 10:35 1.4w次阅读
    <b class='flag-5'>浅谈定时器</b>基础知识与PWM输出原理

    定时器电路图工作原理(声光提示定时器电路/555定时器电路/相片曝光定时器电路)

    定时器根据其输入条件导致完成动作的不同可分为接通延时型定时器、断开延时型定时器、保持型接通延时定时器、脉冲型定时器和扩张型脉冲
    发表于 11-05 16:07 1.8w次阅读
    <b class='flag-5'>定时器</b>电路图工作原理(声光提示<b class='flag-5'>定时器</b>电路/555<b class='flag-5'>定时器</b>电路/相片曝光<b class='flag-5'>定时器</b>电路)

    STM32定时器-基本定时器

    目录定时器分类基本定时器功能框图讲解基本定时器功能时钟源计数时钟计数自动重装载寄存
    发表于 11-23 18:21 31次下载
    STM32<b class='flag-5'>定时器</b>-基本<b class='flag-5'>定时器</b>

    基于硬件定时器的软件定时器

    概括硬件定时器很精确,软件定时器无论如何都有延迟,主要用在不需要精确定时的地方,而且软件定时比较浪费单片机资源。梳理讲到定时器,大家多多少少
    发表于 11-25 09:51 8次下载
    基于硬件<b class='flag-5'>定时器</b>的软件<b class='flag-5'>定时器</b>

    STM32——高级定时器、通用定时器、基本定时器的区别

    STM32——高级定时器、通用定时器、基本定时器的区别
    发表于 11-26 15:21 110次下载
    STM32——高级<b class='flag-5'>定时器</b>、通用<b class='flag-5'>定时器</b>、基本<b class='flag-5'>定时器</b>的区别

    STM32定时器学习---基本定时器

    STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器。那么STM32单片机的基本定时器如何操作以及编程呢?下面我们就来详细的了解一下STM32F1系列的产品,除了
    发表于 12-02 14:06 27次下载
    STM32<b class='flag-5'>定时器</b>学习---基本<b class='flag-5'>定时器</b>

    SysTick 定时器

    的SysTick定时器来实现延时,可以不占用系统定时器,节约资源。由于SysTick是在CPU核内部实现的,跟MCU外设无关,因此它的代码可以在不同厂家之间移植。本 章 将 使用系统滴答定时器
    发表于 12-05 14:51 9次下载
    SysTick <b class='flag-5'>定时器</b>

    31章-定时器

    基本定时器TIMSTM32F1 系列中,除了互联型的产品,共有8 个定时器,分为基本定时器,通用定时器和高级定时器。基本
    发表于 01-17 09:39 3次下载
    31章-<b class='flag-5'>定时器</b>

    定时器开关怎么接线?

    定时器开关:时间定时器开关、开关定时器、电源开关定时器,是控制用电器自动定时开启、关闭的电气装置。
    的头像 发表于 02-24 15:38 9961次阅读
    <b class='flag-5'>定时器</b>开关怎么接线?

    基础定时器实验

    STM32内部共有8个定时器,其中Timer1和Timer8属于高级定时器,Timer2~Timer5属于通用定时器,8个定时器的资源独立,互不影响。
    的头像 发表于 03-01 15:59 1153次阅读
    基础<b class='flag-5'>定时器</b>实验

    什么是软件定时器?软件定时器的实现原理

    软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的
    的头像 发表于 05-23 17:05 2678次阅读