This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用的是MSP430F6638,通过ADC12进行5个通道的重复序列采集,并触发DMA0进行连续单次数据传输,DMA0SZ=128,。现在我单独开启ADC12或DMA0的中断使能,两者都能正常执行中断;但同时开启时,DMA0的中断就响应不了了,但数据传输正常。现在能确定的是ADC12中断处理时间很短,可以退出中断服务程序,不是中断排队的问题。而且还发现两个向量表ADC12IV和DMAIV偏移地址相同(0Eh),这样设计的原因和有点何在?是不是因为这个原因造成两模块中断冲突?如何解决?谢谢!
我没有开中断嵌套,因为ADC要求实时采集。如果同时中断,应该处理完优先级较高的ADC中断,然后立刻处理DMA中断吧。
那个……不好意思哈,我之前情况描述有误(我看到的数据时以前存储在数组中的数据……),实际情况是:开启ADC中断后,ADC中断可以响应,但DMA就无法触发了,无法传送数据(ADC中断中没有访问ADC12MEM,也没有清ADC12IFG),感觉ADC响应中断比DMA触发更快,是不是中断函数中CPU无法让出总线控制权呢?谢谢!
现在我用TimerA0捕获与DMA配合也出现类似的问题:关闭捕获中断的话,TA0CCR2.IFG能触发DMA;如果开启捕获中断,DMA就不能被触发……中断结束会自动清除TA0CCR2.IFG,但为什么在这之前TA0CCR2.IFG置位时不能触发DMA呢?
虽然我用的是5系列,但6系列的应该也是一样
DMA里关于触发源有说明,如果作为触发源的TA0CCR2的CCIE置位了,那么TA0CCR2的CCIFG不会触发传送,也就是二者不可得兼。