打印
[MCU]

定时器不够用的复用算法

[复制链接]
848|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
steeven_lee|  楼主 | 2015-6-5 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mbed上看到的定时器算法, 很有趣, 看看大家有什么建议:
1. 只用一个硬件定时器
2. timer, timeout, ticker都差不多
3. 理论上可以有无限多个软件模拟定时器
算法:
1. 用链表对定时器排序, 最近的靠前
2. 定时时间是最近那个
3. 中断触发后回调最近那个处理函数
4. 检查下一个, 如果也到时, 继续回调
5. 如果没到时, 设定定时时间

整个算法很简单实用, 一个硬件定时器搞定. 不知道精度怎样?? 估计会有几十条指令的精度误差, 对于几十兆的mcu, 精度应该在us级别?

相关帖子

沙发
yulunna| | 2015-6-6 00:08 | 只看该作者
模拟定时器越多误差越大,多个定时器就多个执行时间,这就一计数分频,以定时器作为基时钟,然后通过计数来分出各种周期的时钟,再通过设置的标识来作为此计生出来的时钟的中断标识:lol

使用特权

评论回复
板凳
steeven_lee|  楼主 | 2015-6-6 09:11 | 只看该作者
你说这个算法效率不高 添加时钟的时候按照到期时间排序 在中断中定时下一个就很快很方便 一般就是链表头上那个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝