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.
看手册上讲,IFRx.y在读取中断向量时自动清除,但是外设的中断标志是要手动清除的。我的疑惑是,如果外设的标志不清除,那么即使清除了PIE中的中断,那么,外设还是会再触发PIE中断的,请问这是怎么回事
从图上可以看出,中断信号的传递方向。从 IFRx.y -> IFR -> CPU. IFRx.y在响应中断前的时候自动清除, IFR在中断响应程序中手动清除。
你所说的“外设的中断标志”是指IFR吗? “PIE中的中断“指哪个位?
请查阅文档SPRUFB0D的114页的Figure 78.
中断信号的传递方向。从 IFRx.y -> IFR -> CPU. IFRx.y在响应中断前的时候自动清除, IFR在中断响应程序中手动清除。
你所说的“外设的中断标志”是指IFR吗? “PIE中的中断“指哪个位?
不是啊,CPU and Instruction SetReference里边写的是IFR bit会自动清除,另外在System Control and Interrupt 那本报讯手册里提到PIEIFRx.y也会自动化清除,但是来自外设的INTx.y并没有因此而取消,所以PIEIFR还是会受到影响,因为,除非是将INTx.y的中断信号清楚了,再清除PIEIFRx.y才不会有影响吧。可是手册上写的是在获取中断向量时,就清除了相应的位,INTx.y的信号清除不是得在中断服务程序中吗
在CPU响应中断后,会自动清除IFR bit,同时将INTM bit 置位,以防止其它中断的发生;此外,CPU还会向PIE发送ACK信号,确认对中断进行了响应;当PIE收到ACK信号后会将PIEIFRx.y清除;而在中断响应程序中,需要用户将INTx.y、PIEACKx以及INTM手动清除,以便后续中断可以正常被响应。当INTx.y不被清除时,后续发生在此引脚上的中断将无法被识别。
请问PIE对PIEIFRx.y的清除是只有一次还是持续性的,在清除PIEIFR后,进入中断服务时是否会屏蔽INTx.y信号,如果是这样,请问在手册什么地方有讲。最后一句不太清楚,是指如果INTx.y不被清除一次,无法再向PIEIFR发送信号吗,还是指PIEIFR是在下降沿触发而非电平触发。但以其他单片机的经验,一般应是电平触发吧。如果不明白我意思,请看我底下的回贴。