打印

如何解决特殊情况下中断时间不够用的情况

[复制链接]
1656|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xianting77|  楼主 | 2009-9-16 22:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近调试一个程序的时候发现了中断中时间不够用的情况,测试看出是被优先级高的中断给打断了
在普通运行的时候,系统各个程序可以独立的运行!
但是在很特殊的情况,我的系统中的4MS中断会被优先级高中断打断而时间不够用,那么我
想可了几个方案,想参考下各位的意见!
1:给CPU超频提高速度,设置倍频的寄存器,但是这样稳定性就下降了
2:加大中断的时间,但是时间加的太长,原先的4MS中断中的任务会有延迟的现象
3:在原先的4MS中断内再切成若干的时间块,设置中断计数器,比如三次
  中断计数后执行比较耗时间的任务,这样至少不会被多次打断;两次中断
  计数后执行较快的任务;这样看上去能解决问题,但是还是增加了4ms中断的
  任务量,至少多了判断的时间!
请教各位这样的问题有更好的解决方法吗?

相关帖子

沙发
awey| | 2009-9-17 01:32 | 只看该作者
如果定时那么重要,不能把定时中断的优先级设为最高吗?

或者高优先级的中断服务程序只做关键要紧的事,并做好标记,退出后再继续做次要的工作。

使用特权

评论回复
板凳
HWM| | 2009-9-17 07:54 | 只看该作者
一般中断服务程序的时间长度和优先级的合理关系是成“反比”规律。若不是如此情况可能是:一,未合理地分配好中断优先级;二,未能将中断服务中的主次部分分离(注意若有严格的时序关系是不能任意分离的);三,系统本身具有“较长时间”的资源竞争(CPU),此类情况若MCU中有DMA或其它可并行(相对于CPU)处理功能可利用的话还可能解决问题,否则只能采用更为强大的MCU或多核系统。

使用特权

评论回复
地板
tyw| | 2009-9-17 08:08 | 只看该作者
中断里仅修改标志,处理尽量挪到外面来

使用特权

评论回复
5
xianting77|  楼主 | 2009-9-18 14:55 | 只看该作者
楼上的正解 我准备将部分中断中的任务移出来!
可是我的4MS中断在特殊时候是有不够用了的情况,甚至4MS中断中处理了5MS的任务,但是应该是
溢出了,可是系统还能正常的工作,我的问题是:
1)中断不够用了,是否系统会有不确定的因素?
2)如果在处理4MS的任务时,被自己打断了,会有怎样的后果?

使用特权

评论回复
6
李冬发| | 2009-9-18 22:01 | 只看该作者
就设置几个标识能用到4ms吗?!倒塌

使用特权

评论回复
7
因特网用户| | 2009-9-18 23:35 | 只看该作者
搬个小板凳听课

使用特权

评论回复
8
HWM| | 2009-9-19 09:12 | 只看该作者
LZ:

1)中断不够用了,是否系统会有不确定的因素?

可能被其他中断源中断,或你本来估计有误(4MS并非最长用时)。

2)如果在处理4MS的任务时,被自己打断了,会有怎样的后果?

一般来说,只要你当前中断未推出,是不会被“自己”再次中断的。

解决办法:可以将中断中非“即时性”部分移出,用相应标志来通知主程序随后执行。

此方法有两方便的约束:
1)移出的部分必须是相对来说非“即时性”,且和其它事件无时序关联性。
2)此中断触发的(时间)密度不宜过高,否则会发生“遗漏”。

使用特权

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

本版积分规则

10

主题

45

帖子

2

粉丝