OpenEdv-开源电子网

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

系统节拍1ms,但高精度的扫描频率是不是拖慢了系统?

[复制链接]

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
发表于 2016-11-24 10:21:58 | 显示全部楼层 |阅读模式
玩ucosiii第四天,正在把曾经的一个项目移植到系统上来。但其中一个任务是需要us级别的扫描频率,开定时器中断去处理,此时会关闭系统中断。这样频繁开关中断,不就干扰了系统节拍吗,导致实时性变差?请各位大神指教,在这种情况下有没有好的办法提高实时性。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-24 13:12:35 | 显示全部楼层
测试一下,调试一上。应该有一个适中的值。
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-24 15:47:15 | 显示全部楼层
大拿在哪里,这个问题没人解答吗??
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6656
金钱
6656
注册时间
2016-5-29
在线时间
909 小时
发表于 2016-11-24 19:53:59 | 显示全部楼层
系统节拍提高,就是给操作系统运行的时间变多了。系统进出中断的时间多了。实际上 是 重复跑了很多没有用的代码。一般性的OS 用8MS,或者10MS的节拍。
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-25 09:03:31 | 显示全部楼层
顶起来这个问题,怎么没人回答啊,原子哥和其它的大神都去哪了???
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-25 09:19:00 | 显示全部楼层
再把我的问题说一下,系统节拍1ms,开一个50us的TIM中断,而在这个中断里要处理一些数据,这时候系统节拍是停止的。假如在TIM中断里运行时间需要1ms(当然不会这么长,只是为了说明这个问题,也没有DMA),那系统节拍实际不就是1ms+1ms吗?那这样的情况明显就是拖慢了系统,各位在项目中有没有遇到类似的情况,都怎么解决,请不吝赐教~!
回复 支持 反对

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2016-11-25 10:13:51 | 显示全部楼层
束命 发表于 2016-11-25 09:19
再把我的问题说一下,系统节拍1ms,开一个50us的TIM中断,而在这个中断里要处理一些数据,这时候系统节拍是 ...

你50us的定时中断,处理任务自然不会超过50us,我认为不会影响到系统。另外ucos自己也有软定时器。
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-25 10:30:52 | 显示全部楼层
hyghyg1234 发表于 2016-11-25 10:13
你50us的定时中断,处理任务自然不会超过50us,我认为不会影响到系统。另外ucos自己也有软定时器。

是50us中断一次,但是不能保证中断函数里的处理时间就一定比50us小啊,另外系统软定时器达不到这么高精度~!
回复 支持 反对

使用道具 举报

8

主题

47

帖子

1

精华

高级会员

Rank: 4

积分
673
金钱
673
注册时间
2014-9-17
在线时间
88 小时
发表于 2016-11-27 16:57:55 来自手机 | 显示全部楼层
如果中断处理时间超过50us,那已经到了的50u中断请求也不会响应啊,因为你还没退出当前中断啊。所以不可能存在50us中断一次的
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
发表于 2016-11-28 09:42:37 | 显示全部楼层
本帖最后由 lvehe 于 2016-11-28 09:44 编辑

如果是50us中断一次,但不是每次中断的响应的时间都很长,是偶尔满足条件才会执行一次1ms的话,那么对系统的影响不会太大。但最好不要在中断中去执行1ms,而是应当发送一个信号量去通知某任务来处理。
我觉得你的这个中断太频繁了,可能不用操作系统会更好,因为操作系统经常会开关中断,多任务的话也可能要开关中断来保护数据等,如果关中断的时间超过50us,你的那个中断的响应就无法得到执行了。
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-28 09:55:01 | 显示全部楼层
lvehe 发表于 2016-11-28 09:42
如果是50us中断一次,但不是每次中断的响应的时间都很长,是偶尔满足条件才会执行一次1ms的话,那么对系统 ...

你的这个回复让我对操作系统有了更加系统的理解。一个星期,UCOS算是入门了,新移植的项目也正在试跑,3Q
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2015-2-11
在线时间
13 小时
发表于 2016-11-28 11:00:48 | 显示全部楼层
束命 发表于 2016-11-28 09:55
你的这个回复让我对操作系统有了更加系统的理解。一个星期,UCOS算是入门了,新移植的项目也正在试跑,3Q

你好! 我想问一下在你的50us中断里,是调用哪个函数去开关中断的?谢谢
知识在于分享
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2016-11-28 13:10:25 | 显示全部楼层
guo522129 发表于 2016-11-28 11:00
你好! 我想问一下在你的50us中断里,是调用哪个函数去开关中断的?谢谢

OSIntEnter();关
OSIntExit();开
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2015-2-11
在线时间
13 小时
发表于 2016-11-28 14:30:38 | 显示全部楼层
束命 发表于 2016-11-28 13:10
OSIntEnter();关
OSIntExit();开

谢谢,我也是使用这个,不知道是程序的问题还是其他,好像不起作用。
知识在于分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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