跳转到主内容
Knowledgebase
Home
Renesas Electronics China - Knowledgebase

我该用什么方法来处理3个或3个以上优先级别的多个中断?

最新更新:2011年10月 04日

Question:

我该用什么方法来处理3个或3个以上优先级别的多个中断?

Answer:

78K0 可以设置两个优先级别的中断。
每个中断有一个默认的优先级别。
因此每个中断的实际优先级根据这两类优先级别决定。

当同时发生多个中断时(CPU 可以响应中断),CPU 响应最高优先级的中断。
如果两个中断有相同的优先级,CPU 响应默认优先级较高的中断。
通过使用优先级别规定功能,可以轻松实现2个优先级别的多中断处理。
然而,如果使用2个优先级别以上的中断,必须小心关注它们的处理过程。

一般在这种情况下,使用中断屏蔽功能。

以下的解释使用了4个中断, INTP0INTP3, 假定它们的优先级别为:

 
INTP2 > INTP3 > INTP0 > INTP1.

此时,PPR0 和 PPR1 被设置为1,PPR2 和 PPR3 设置为0。
每个中断的处理过程如下。
处理流程在附件中描述。

(1)当 INTP2 被响应时的处理 [处理流程 (1)]
由于这个中断的优先级最高,所以没有必要响应其他的中断。
因此,在处理过程中,屏蔽中断。

(2) 当 INTP3 被响应时的处理 [处理流程 (2)]
如果此中断处理发生,必须响应 INTP2
此时也必须屏蔽 INTP0INTP1

因为最高优先级已经分配给 INTP3,当 INTP3 正在被执行时,PSW 的 ISP 标志为0, INTP0INTP1 已经被指定为低优先级,所以中断自动被禁止。

因此,你可以认为中断可以被使能。
然而,如果在 INTP3 处理过程中再次输入 INTP3,就必须屏蔽 INTP3

所以设置 PMK3 中断屏蔽标志之后,必须使能中断。
此外,在退出中断处理之前,必须屏蔽中断并清除 PMK3。



(3) 当 INTP0 被响应时的处理 [处理流程 (3)]
如果此中断处理发生,必须只响应 INTP2INTP3
此外,必须禁止 INTP0 本身和 INTP1

为此要在使能中断前设置 PMK0 和 PMK1。
此外,在退出中断处理之前,屏蔽中断并清除 PMK0 和 PMK1。

(4) 当 INTP1 被响应时的处理 [处理流程 (4)]
如果此中断处理发生,必须响应除 INTP1 本身 之外的中断(INTP2, INTP3, INTP0), 所以必须在使能中断之前设置 PMK1。
此外,在退出中断处理之前,屏蔽中断并清除 PMK1。

 
Suitable Products