18018|8

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

rtos调度怎么实现微妙级别延时? [复制链接]

freertos里面任务调度是ms级别的,但是有些任务需要us级别的延时,直接用循环操作延时函数的话,又担心占用处理器,影响别的任务调度的响应时间,怎么处理比较好?

最新回复

这个任务是软件实现的任务,微秒级别的话换arm9试试,要实现简单,就是开启一个硬件定时器,没有其他办法了。  详情 回复 发表于 2014-12-9 23:11
点赞 关注

回复
举报

420

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
首先你说的任务调度是ms级别的,应该指的是睡眠函数是ms级别的。us级别的延时往往可以用硬件定时器来实现,可以死循环读定时器的count, 到了时间就跳出循环。
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
在freertos里面时钟滴答的频率是1000HZ,所以一个滴答的周期就是1ms,所以他任务切换的最小单位也就是1ms。如果可以用死循环的话不用定时器也可以实现思路,任务调度是可抢占的,然后把检测任务优先级设定到最低优先级,然后死循环处理数据采样检测,当高优先级任务触发后可以抢占此任务,但是这个方案也有一个缺陷,如果高优先级的任务执行时间比较长的话,会导致此最低优先级的数据检测导致丢失数据
 
 
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

4
 
你的rtos基本理念理解有问题,时钟滴答的频率和任务切换的最小单位没任何关系。而且也没有任务切换的最小单位这个概念。时钟频率不建议超过100, 不然系统的效率会急剧下降。us级别的延时不会导致任务执行时间比较长。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

5
 
freertos缺省的发布是1000Hz,实际使用确实推荐采用更小的频率,我说的任务切换可能描述不准确,任务切换时间是可以做到很短的时间的,我的意思是任务调度周期,rtos肯定会根据一个时间来判断任务的调度,一个任务从睡眠到执行,延时时间大约在100us左右对其他rtos调度任务影响如何?
 
 
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

6
 
rtos肯定会根据一个时间来判断任务的调度,你说的应该是任务基于时间片的调度,基于时间片的调度的任务优先级都很低,高优先级的任务避免时间片调度,可以指定调度方式。100us对于低优先级的任务无所谓。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

7
 
freertos支持抢占调度和非抢占的时间片调度,我采用的抢占调度,延时的方案我会具体验证下,然后会给出结果。非常感谢txj的回复。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

8
 
其实一开始走入死胡同了,这个问题其实可以采用缓存来处理避免了延时的问题,采用定时器中断100us采一个点,存储在一个数组中(或者队列)a,200字节的长度对应20ms时间,满200字节后复制到另外一个200字节数组b,这样在任务中处理数组b就可以,任务阻塞在一个同步信号量上面,等待处理接收信号.完全避免掉了处理机的死循环延时。
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

9
 
这个任务是软件实现的任务,微秒级别的话换arm9试试,要实现简单,就是开启一个硬件定时器,没有其他办法了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表