MSP430f149中断

2019-08-01 16:38发布

本帖最后由 wlfbuaa 于 2013-8-25 17:58 编辑

程序要实现的功能:
同时采集两路信号输入:
A、通过芯片内部AD转换外部测量信号,将转换结果通过UART0发送到PC;
B、通过UART1接收外部信号,将结果通过UART0发送到PC。
现在涉及两个中断:AD和UART1串口中断。AD采样率比串口传输速率快挺多。
经过试验,程序只能进入AD中断,始终不能进入串口中断。单独接受信号两路都能接收。
搜寻网上,可能的问题是:430中断函数运行是当中断在执行的时候不接收其他中断。程序运行时AD中断先到,又由于AD中断的频率高,导致前一次AD中断结束之后,再次请求中断的时候又进入AD中断。不知道该如何解决这个问题,能够合理的执行两个中断,求指导谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
dirtwillfly
1楼-- · 2019-08-01 18:12
理论上讲,如果AD中断正在执行,串口来了信号会在AD中断执行完毕后执行串口中断
1988020566
2楼-- · 2019-08-01 21:25
串口中断的优先级调高。
1988020566
3楼-- · 2019-08-02 02:44
或者usb传输这个快。
wlfbuaa
4楼-- · 2019-08-02 03:11
dirtwillfly 发表于 2013-8-25 20:32
理论上讲,如果AD中断正在执行,串口来了信号会在AD中断执行完毕后执行串口中断 ...

多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。

这个是网上查询到的信息,我不知道是不是一定正确,不过根据对程序的执行结果来看,貌似中间不能再执行优先级更高的中断。谢谢!
wlfbuaa
5楼-- · 2019-08-02 04:06
本帖最后由 wlfbuaa 于 2013-8-26 08:42 编辑
1988020566 发表于 2013-8-25 23:20
串口中断的优先级调高。

刚看了下,是串口0的优先级高于AD高于串口1的优先级,之前一直以为串口的优先级高,修改下程序试试。谢谢提醒!
zhangchaoyang
6楼-- · 2019-08-02 05:16
 精彩回答 2  元偷偷看……

一周热门 更多>