打印

psoc里中断嵌套

[复制链接]
4674|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenxu_1|  楼主 | 2010-8-31 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在遇到个需要中断嵌套的问题,因为psoc1里中断不能嵌套,但是可以在中断函数里重新使能全局中断从而允许其他的中断能够响应,但是这又风险,我也试过,结果程序崩溃了,请教高手,这个应该怎么样处理? c 环境
沙发
chenxu_1|  楼主 | 2010-9-1 09:08 | 只看该作者
版主呢?

使用特权

评论回复
板凳
jxin| | 2010-9-1 15:12 | 只看该作者
中断嵌套是可以的, 你是怎么嵌套的?

使用特权

评论回复
地板
chenxu_1|  楼主 | 2010-9-3 08:44 | 只看该作者
就是一个中断执行的时候还能够响应其他的中断,因为另一个中断发生的频率比较低但是优先级要高。

使用特权

评论回复
5
chenxu_1|  楼主 | 2010-9-3 08:45 | 只看该作者
3# jxin

就是一个中断执行的时候还能够响应其他的中断,因为另一个中断发生的频率比较低但是优先级要高。

使用特权

评论回复
6
jxin| | 2010-9-3 11:04 | 只看该作者
可以的,If you want the interrupts to be serviced within an ISR then please follow the below mentioned procedure:

ISR:

Disable all the low priority interrupts
Enable the Global Interrupts

Service the interrupt

Re-enable the low priority interrupts
Exit the ISR

使用特权

评论回复
7
chenxu_1|  楼主 | 2010-9-3 11:19 | 只看该作者
6# jxin

恩,我是在中断里使能了全局中断,但是程序出现了崩溃。我是想在最高优先级中断里能响应优先级不高的中断。还有,优先级能不能人为设置啊?好像它是固定的吧。

使用特权

评论回复
8
llia| | 2010-9-3 14:58 | 只看该作者
:dizzy:

使用特权

评论回复
9
PSoC_Rock| | 2010-9-3 16:34 | 只看该作者
LZ, 到底那一个是高优先级的中断? 你能具体说说你的中断吗?

使用特权

评论回复
10
chenxu_1|  楼主 | 2010-9-4 09:09 | 只看该作者
9# PSoC_Rock

是这样的:24533里开启了sar8,pwm和io口的中断,sar8和pwm都是几十微妙固定周期的中断,io那就是多少毫秒才中断一次,但是我要求io中断必须及时,如果io口有触发,而此时sar8或者pwm中断正在执行,这时候io中断就会不及时,有延时。我的目的就是避免这种有延时的情况产生。
我之前是在sar8中断里重新开启全局中断仿真了一下,但是发现程序里面的全局变量出现了随机值,被改变了。
请教这种情况该怎么处理,谢谢

使用特权

评论回复
11
chenxu_1|  楼主 | 2010-9-7 09:28 | 只看该作者
help!  help!

使用特权

评论回复
12
whlz58| | 2010-9-7 12:32 | 只看该作者
看样子你的程序没有时基,SAR8定时读取,根本不用中断,PWM用中断干什么,io及时是做什么的说清楚

使用特权

评论回复
13
zhanglli| | 2010-9-7 14:08 | 只看该作者
感觉乱七八糟的

使用特权

评论回复
14
chenxu_1|  楼主 | 2010-9-7 15:51 | 只看该作者
pwm中断可以取掉,只留sar8中断和io中断,既然用到就有用的道理,只是遇到这种情况看看大家有没有好的解决方法。

使用特权

评论回复
15
PSoC_Rock| | 2010-9-9 17:26 | 只看该作者
在PSoC里IO中断具有比PWM和SAR8更高的优先级, 但是PSoC不支持中断嵌套,所以在需要中断嵌套时,要象6楼说的:
Disable all the low priority interrupts
Enable the Global Interrupts

Service the interrupt

Re-enable the low priority interrupts
Exit the ISR
在Disable all the low priority interrupts 时,也要清除已有的中断请求. 在IO中断被响应时要做好现场保护,在退出时做好现场恢复.
另外在程序每次中断退出时可以观察堆栈和指针是否有异常,是否有堆栈碰到天花板的情况.

使用特权

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

本版积分规则

8

主题

107

帖子

1

粉丝