独闷闷网

 找回密码
 立即注册
搜索
查看: 2607|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 鸿哥,为什么你每次进定时中断后把定时中断关掉,退出中断时才打开?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-3 11:51:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2014-11-3 12:11 编辑

Ray-上海:
鸿哥,为什么你每次进定时中断后把中断关掉?

伟-肇庆:
鸿哥应该是不想中断嵌套吧。

鸿哥--深圳:
是的。我不想中断嵌套。而且我这样做都是在能满足项目对时间精度范围的要求下。

Ray-上海:
万一你在处理中断时,还有更高一级的中断发生咋办?

鸿哥--深圳:
没有万一。

Ray-上海:
程序不可能只有一个中断吧。

鸿哥--深圳:
我的程序框架就只有一个定时中断。我关的都是自己的定时中断。当然,如果用到串口的情况下,会有一个串口接收中断。但是这个时候我会把串口接收中断设为最高优先级,而且进入定时中断后,我只关定时中断,串口接收中断还是可以抢占定时中断的。

Ray-上海:
那就是牺牲了定时的准确来换取中断不被打断,是这样理解的吧?

鸿哥--深圳:
也可以这样理解。但是我觉得不能算牺牲时间的准确性吧,毕竟这个对时间的影响甚微,因为我大部分的定时中断虽然代码多,但是执行时间很快的。而且我认为关闭有一定的必要,因为不关闭的话,我印象中在实际项目中出过一次问题,所以我就养成了进定时中断关闭自己,退出定时中断的时候再打开它的习惯。

Ray-上海:
既然是定时中断,我觉得不应该这样处理。

鸿哥--深圳:
你如果不关闭它,也不一定会有大的问题,也许时间精度更加高。但是这个是我的习惯,很多人都劝过我,但是我还是会坚持我的习惯和感觉。

Ray-上海:
既然是定时中断,我觉得不应该这样处理

鸿哥--深圳:
你如果不关闭它,也不一定会有大的问题,也许时间精度更加高。但是这个是我的习惯,很多人都劝过我,但是我还是会坚持我的习惯和感觉。

Ray-上海:
既然开了定时中断,就必须尽量保证定时时间的准确性,这是程序运行的一个时间节奏。

鸿哥--深圳:
但是我关闭它并没有对时间产生多大影响,这个影响甚微。如果你不是用定时器做实时时钟,那么这个时间是可以满足百分之九十以上的项目的。我觉得还是要根据项目需求来看的。

Ray-上海:
而且每次进入中断关闭定时中断,然后重装初值,每次定时中断的周期都不一样。

鸿哥--深圳:
怎么会不一样,我觉得每次定时的中断周期是一样的。


风雪--重庆:
关了定时器的话,相当于在执行中断函数的时候定时器不会跑,执行一条语句大概几微妙,整个中断函数也不过几十微秒,我觉得这个精度还是很高的。

小侠--广州:
计时的时间是一样的,中断周期应该算成计时时间加上中断函数的处理时间。所以会有一些差别。

鸿哥--深圳:
是的,但是中断函数的处理时间几乎每次都是一样的。这样就保证了每次中断时间的一致性。同时,中断周期不用严格按照公式来算,只要大概按公式算个差不多就行了,因为我最后还留了一手对付时间准确性的办法,那就是我反复在连载贴里提到的,如何修正时间精度的办法。

小侠--广州:
但是中断程序的处理时间相对于计时时间是很短的,按鸿哥的想法是不需要精确定时的程序可以忽略。鸿哥的例子里面的程序都是触发中断以后关闭定时器,然后进行中断处理,跳出中断前再赋初值,然后打开定时器。

鸿哥--深圳:
是的。我觉得这样做并不影响每次定时中断的时间,因为我每次定时中断都是这么做,所以就保证每次中断时间的一致性,这样我在累计定时中断次数的时候,时间的准确性就有了保证。最后再通过利用我在连载帖子里介绍的修正时间精度办法进行修正,时间的准确度还是很有保证的,只不过不能完全按照公式那样去计算而已。我在项目里都是这样做的,我相信经得起考验。
小侠--广州:
我也没有觉得这个精度会不准,我只是从指令执行的角度分析一下这个问题。







乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-7-27 15:50 , Processed in 0.153105 second(s), 17 queries .

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