中断模块
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断 A
运 行 中断B被挂起 中断 被挂起
程序
运 行
低优先级
等
待
运 行
中断B请求 中断 请求
采用中断优先处理机制
wk.baidu.com高优先级
中断 B
运 行 中断B返回 中断 返回
中断 A
等 级 森 严
运 行
等 待
运 行
中断B请求 中断 请求
程序
运 行
低优先级
等
待
运 行
中断A请求 中断 请求
中断优先处理机制
1. 在中断服务程序中,首先对I为清零,即EnableInterrupts 2. 选择优先级更高的中断源可以进入响应中断 3. 设置优先等级
如果在进入中断服务程序时,手动对I位清零: 如果在进入中断服务程序时,手动对 位清零 位清零:
– 任何其他可屏蔽中断都可以被响应,无论其优先级有多高 任何其他可屏蔽中断都可以被响应, – 中断响应由时间控制,可以实现中断嵌套 中断响应由时间控制, – 对中断执行无法预测
HPRIO寄存器 寄存器
– 写入 写入HPRIO中的中断向量的后八位,可以改变该中断的优先级 中的中断向量的后八位, 中的中断向量的后八位 – 同样,优先级的作用只有在多个中断源同时请求中断时在能体现 同样,
I
TIE_C1I
$EC
I
TIE_C2I
$EA
要求: 在低优先级的中断服务程序中, 要求: 在低优先级的中断服务程序中,高优先级的中断请求可以被响应
HPRIO = 0xEA: ECT0,1,2同时请求中断时,CPU将会首先响应通道2 默认时, CPU将会首先响应通道0
优先机制 – 多级
情况 1:
– 每个中断都单独发生,在一个中断程序执行时,没有其他中断
在ECT2中断服务程序中(自定义优先级最高):
– 用户程序
�
方案:优先机制 – 多级
在ECT0中断服务程序中:
TIE_C1I = 0; //关闭ECT1局部中断 TIE_C2I = 1; //开放ECT2局部中断 EnableInterrupts; //开放全局中断 … TIE_C1I = 1; //开放ECT1局部中断 TIE_C2I = 1; //开放ECT2局部中断
在ECT1中断服务程序中(自定义优先级最低):
TIE_C0I = 1; //开放ECT0局部中断 TIE_C2I = 1; //开放ECT2局部中断 EnableInterrupts; //开放全局中断 … TIE_C0I = 1; //开放ECT0局部中断 TIE_C2I = 1; //开放ECT2局部中断
– 两级
一个中断源为低优先级,其他为高优先级 在低优先级中断服务程序中,对I位清零 在高优先级中断服务程序中,不清零 利用局部的中断屏蔽位 比如Timer Channel0 的中断屏蔽位 TIE_C0I
–
多级
优先机制 - 两级
例如:
– – – – – – 中断向量地址 $FFF0 – FFF1 为低优先级 其他的中断为高优先级 在$FFF0 – FFF1 中断服务程序中,EnableInterrupts(I位清零) 其他的中断包括自己都可以在中断服务程序执行时,被响应 在其他的中断服务程序中,I位不清零(默认) 只有当前中断服务程序执行完后,才能响应其他的中断请求
HCS12中断
默认状态: 默认状态:
– 在进入中断服务程序时,I位自动置 ,禁止其他可屏蔽中断 在进入中断服务程序时, 位自动置 位自动置1, – 即使有优先级更高的中断请求,也必须等当前中断服务程序执行完以后才 即使有优先级更高的中断请求, 能响应 – 优先级的作用只有在多个中断源同时请求中断时在能体现 – 无法实现中断嵌套
HCS12默认中断处理机制
高优先级
中断 B
中断B请求 中断 请求 等 待 运 行 人 人 平 等
中断 A
运 行
程序
运行
等 待
等 待
运 行
低优先级
中断A请求 中断 请求
在可屏蔽中断服务程序中EnableInterrupts
高优先级
中断 B
中断A请求 中断 请求 运 行 等 待 运 行 长 幼 不 分
当同时有多个中断源请求中断时, 当同时有多个中断源请求中断时,中断向量地址最靠近 $FFFF的,将会首先被响应 的
优先机制 – 多级
自定义优先级 1 中 0 低 2 高 中断向量地 址 $FFEE, $FFEF $FFEC, $FFED $FFEA, $FFEB 中断源 ECT 通道0 ECT 通道1 ECT 通道2 CCR屏蔽位 I 局部屏蔽位 TIE_C0I HPRIO $EE
情况 2:
– 在执行ECT1的中断服务程序时,ECT0请求中断 – ECT0中断服务程序将被执行
情况 3:
– 在执行ECT2的中断服务程序时,ECT0请求中断 – ECT2的中断服务程序执行结束后,执行ECT0的中断服务程序
情况 4:
– – – – ECT1,ECT2同时请求中断 ECT1的中断服务程序先执行,当EnableInterrupts后 执行ECT2的中断服务程序 ECT2的中断服务程序执行结束后,返回执行ECT1的中断服务程序