1 / 9

HCS12 中断

HCS12 中断. 默认状态: 在进入中断服务程序时, I 位自动置 1 ,禁止其他可屏蔽中断 即使有优先级更高的中断请求,也必须等当前中断服务程序执行完以后才能响应 优先级的作用只有在多个中断源同时请求中断时在能体现 无法实现中断嵌套 如果在进入中断服务程序时,手动对 I 位清零: 任何其他可屏蔽中断都可以被响应,无论其优先级有多高 中断响应由时间控制,可以实现中断嵌套 对中断执行无法预测 HPRIO 寄存器 写入 HPRIO 中的中断向量的后八位,可以改变该中断的优先级 同样,优先级的作用只有在多个中断源同时请求中断时在能体现. 运 行. 等 待.

kimo
Download Presentation

HCS12 中断

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HCS12中断 • 默认状态: • 在进入中断服务程序时,I位自动置1,禁止其他可屏蔽中断 • 即使有优先级更高的中断请求,也必须等当前中断服务程序执行完以后才能响应 • 优先级的作用只有在多个中断源同时请求中断时在能体现 • 无法实现中断嵌套 • 如果在进入中断服务程序时,手动对I位清零: • 任何其他可屏蔽中断都可以被响应,无论其优先级有多高 • 中断响应由时间控制,可以实现中断嵌套 • 对中断执行无法预测 • HPRIO寄存器 • 写入HPRIO中的中断向量的后八位,可以改变该中断的优先级 • 同样,优先级的作用只有在多个中断源同时请求中断时在能体现

  2. 运 行 等 待 运 行 等 待 运 行 等 待 HCS12默认中断处理机制 中断B请求 高优先级 人 人 平 等 中断 B 中断 A 运 行 程序 低优先级 中断A请求

  3. 运 行 运 行 等 待 运 行 运 行 等 待 在可屏蔽中断服务程序中EnableInterrupts 高优先级 中断A请求 长 幼 不 分 中断 B 中断 A 中断B被挂起 程序 运 行 低优先级 中断B请求

  4. 运 行 运 行 等 待 运 行 运 行 等 待 采用中断优先处理机制 高优先级 中断 B 等 级 森 严 中断B返回 中断 A 中断B请求 程序 运 行 低优先级 中断A请求

  5. 中断优先处理机制 • 在中断服务程序中,首先对I为清零,即EnableInterrupts • 选择优先级更高的中断源可以进入响应中断 • 设置优先等级 • 两级 • 一个中断源为低优先级,其他为高优先级 • 在低优先级中断服务程序中,对I位清零 • 在高优先级中断服务程序中,不清零 • 多级 • 利用局部的中断屏蔽位 • 比如Timer Channel0 的中断屏蔽位 TIE_C0I

  6. 优先机制 - 两级 例如: • 中断向量地址 $FFF0 – FFF1 为低优先级 • 其他的中断为高优先级 • 在$FFF0 – FFF1 中断服务程序中,EnableInterrupts(I位清零) • 其他的中断包括自己都可以在中断服务程序执行时,被响应 • 在其他的中断服务程序中,I位不清零(默认) • 只有当前中断服务程序执行完后,才能响应其他的中断请求 当同时有多个中断源请求中断时,中断向量地址最靠近$FFFF的,将会首先被响应

  7. 优先机制 – 多级 要求: 在低优先级的中断服务程序中,高优先级的中断请求可以被响应 HPRIO = 0xEA: ECT0,1,2同时请求中断时,CPU将会首先响应通道2 默认时, CPU将会首先响应通道0

  8. 优先机制 – 多级 • 情况 1: • 每个中断都单独发生,在一个中断程序执行时,没有其他中断 • 情况 2: • 在执行ECT1的中断服务程序时,ECT0请求中断 • ECT0中断服务程序将被执行 • 情况 3: • 在执行ECT2的中断服务程序时,ECT0请求中断 • ECT2的中断服务程序执行结束后,执行ECT0的中断服务程序 • 情况 4: • ECT1,ECT2同时请求中断 • ECT1的中断服务程序先执行,当EnableInterrupts后 • 执行ECT2的中断服务程序 • ECT2的中断服务程序执行结束后,返回执行ECT1的中断服务程序

  9. 方案:优先机制 – 多级 • TIE_C1I = 0; //关闭ECT1局部中断 • TIE_C2I = 1; //开放ECT2局部中断 • EnableInterrupts; //开放全局中断 • … • TIE_C1I = 1; //开放ECT1局部中断 • TIE_C2I = 1; //开放ECT2局部中断 • 在ECT0中断服务程序中: • 在ECT1中断服务程序中(自定义优先级最低): • 在ECT2中断服务程序中(自定义优先级最高): • 用户程序 • TIE_C0I = 1; //开放ECT0局部中断 • TIE_C2I = 1; //开放ECT2局部中断 • EnableInterrupts; //开放全局中断 • … • TIE_C0I = 1; //开放ECT0局部中断 • TIE_C2I = 1; //开放ECT2局部中断

More Related