OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5309|回复: 7

关于freertos绝对延时的时间误差

[复制链接]

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-6-17 16:35:12 | 显示全部楼层 |阅读模式
5金钱
各位使用这个绝对延时函数的时候有没有发现他的误差是多少哦?我在测试的时候发现大概有0.2-0.3ms的误差。vTaskDelayUntil( &xLastWakeTime,    250/portTICK_RATE_MS);延时的是25ms,但是测试的结果误差比较大。
请问各位大佬测试的误差是多少呢?有什么办法优化的吗?

现象如下:


3.png
2.png
1592382254(1).jpg

最佳答案

查看完整内容[请看2#楼]

OS的delay函数,都基于SysTick,而SysTick中断优先级又最低。 有些地方有进入临界段关中断操作、有些地方有跟高优先级中断的任务在运行等等 总之很多情况都会影响SysTick的中断函数的立即执行,中断和程序扩展等等使OS的延时增加了更多不确定性,所以没法确定误差。 要减小误差,就减少临界操作,尽量降低高优先级中断任务执行时间等等,但通常不这么做。 要精确延时选择硬件定时器。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
743
金钱
743
注册时间
2018-9-1
在线时间
177 小时
发表于 2020-6-17 16:35:13 | 显示全部楼层
本帖最后由 ultraelec 于 2020-6-17 18:12 编辑

OS的delay函数,都基于SysTick,而SysTick中断优先级又最低。
有些地方有进入临界段关中断操作、有些地方有跟高优先级中断的任务在运行等等
总之很多情况都会影响SysTick的中断函数的立即执行,中断和程序扩展等等使OS的延时增加了更多不确定性,所以没法确定误差。
要减小误差,就减少临界操作,尽量降低高优先级中断任务执行时间等等,但通常不这么做。
要精确延时选择硬件定时器。
uevip#126.com
回复

使用道具 举报

0

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2538
金钱
2538
注册时间
2019-10-18
在线时间
403 小时
发表于 2020-6-17 17:12:13 | 显示全部楼层
这个是按系统节拍来的
是绝对延时而不是精确延时
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2020-6-17 17:28:16 | 显示全部楼层
decai 发表于 2020-6-17 17:12
这个是按系统节拍来的
是绝对延时而不是精确延时

freertos不是有两个延时的吗,绝对延时和相对延时,绝对延时是更准的啊,精准延时是哪个?
兄弟你测试这个绝对延时的误差是多少哦?
回复

使用道具 举报

19

主题

334

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1108
金钱
1108
注册时间
2018-11-6
在线时间
240 小时
发表于 2020-6-17 21:02:25 | 显示全部楼层
ultraelec 发表于 2020-6-17 18:11
OS的delay函数,都基于SysTick,而SysTick中断优先级又最低。
有些地方有进入临界段关中断操作、有些地方 ...

同意楼上。
   
    FreeRTOS 和 uCOSII等都属于软实时操作系统,没有办法得到非常精确的延时,要想得到精确的延时必须使用【硬实时操作系统】,但是我们普通人消费不起呀!

回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2020-6-18 09:33:19 | 显示全部楼层
ultraelec 发表于 2020-6-17 16:35
OS的delay函数,都基于SysTick,而SysTick中断优先级又最低。
有些地方有进入临界段关中断操作、有些地方 ...

谢谢指导
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2020-7-8 16:54:27 | 显示全部楼层
ultraelec 发表于 2020-6-17 16:35
OS的delay函数,都基于SysTick,而SysTick中断优先级又最低。
有些地方有进入临界段关中断操作、有些地方 ...

大神 你好 可以讲讲这个选择硬件定时器,具体是一个怎样的步骤吗?
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2020-7-8 17:04:12 | 显示全部楼层
霸王猫 发表于 2020-6-17 21:02
同意楼上。
   
    FreeRTOS 和 uCOSII等都属于软实时操作系统,没有办法得到非常精确的延时,要想得 ...

找了一下 硬实时 - 代表产品 VxWorks,那个汽车控制气囊的就是用的这个,但是平常我接触到的好像只有freertos ucosii 请问还有什么方法可以提高那个延时的精准度吗?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表