10.0 中断
(持续)
ample, 如果 这 软件 Trap routine 是 located 在 0310 十六进制,
然后 这 vector location 0yFE 和 -0yff 应当 包含 这
数据 03 和 10 十六进制, 各自. 当 一个 软件 Trap
中断 occurs 和 这 VIS 操作指南 是 executed, 这
程序 jumps 至 这 地址 指定 在 这 vector 表格.
这 中断 来源 在 这 vector 表格 是 列表 在 顺序 的
分级, 从 最高的 至 最低 priority. 如果 二 或者 更多 使能
和 pending 中断 是 发现 在 这 一样 时间, 这
一个 和 这 最高的 priority 是 serviced 第一. 在之上 返回
从 这 中断 维护 routine, 这 next 最高的-水平的
pending 中断 是 serviced.
如果 这 VIS 操作指南 是 executed, 但是 非 中断 是 en-
abled 和 pending, 这 最低-priority 中断 vector 是
使用, 和 一个 jump 是 制造 至 这 相应的 地址 在
这 vector 表格. 这个 是 一个 unusual occurrence, 和 将 是
这 结果 的 一个 错误. 它 能 legitimately 结果 从 一个 改变
在 这 使能 位 或者 pending flags 较早的 至 这 执行 的
这 VIS 操作指南, 此类 作 executing 一个 单独的 循环 instruc-
tion 这个 clears 一个 使能 标记 在 这 一样 时间 那 这
pending 标记 是 设置. 它 能 也 结果, 不管怎样, 从 inad-
vertent 执行 的 这 VIS command 外部 的 这 context
的 一个 中断.
这 default VIS 中断 vector 能 是 有用的 为 applica-
tions 在 这个 时间 核心的 中断 能 出现 在 这
servicing 的 另一 中断. 相当 比 restoring 这 pro-
gram context (一个, b, x, 等.) 和 executing 这 RETI instruc-
tion, 一个 中断 维护 routine 能 是 terminated 用 返回-
ing 至 这 VIS 操作指南. 在 这个 情况, 中断 将 是
serviced 在 转变 直到 非 更远 中断 是 pending 和
这 default VIS routine 是 started. 之后 测试 这 GIE 位 至
确保 那 执行 是 不 erroneous, 这 routine 应当
restore 这 程序 context 和 execute 这 RETI 至 返回
至 这 interrupted 程序.
这个 技巧 能 保存 向上 至 fifty 操作指南 循环 (t
c
), 或者
更多, (50µs 在 10 MHz 振荡器) 的 latency 为 pending
中断 和 一个 penalty 的 更少的 比 ten 操作指南 循环
如果 非 更远 中断 是 pending.
至 确保 可依靠的 运作, 这 用户 应当 总是 使用 这
VIS 操作指南 至 决定 这 源 的 一个 中断. al-
though 它 是 可能 至 poll 这 pending 位 至 发现 这
源 的 一个 中断, 这个 实践 是 不 推荐. 这
使用 的 polling 准许 这 标准 arbitration ranking 至 是
改变, 但是 这 可靠性 的 这 中断 系统 是 compro-
mised. 这 polling routine 必须 individually 测试 这 使能
和 pending 位 的 各自 maskable 中断. 如果 一个 软件
Trap 中断 应当 出现, 它 将 是 serviced last, 甚至
though 它 应当 有 这 最高的 priority. 下面 确实
情况, 一个 软件 Trap 可以 是 triggered 但是 不 ser-
viced, 结果 在 一个 inadvertent “locking out” 的 所有
maskable 中断 用 这 软件 Trap pending 标记.
问题 此类 作 这个 能 是 避免 用 使用 VIS
操作指南.
表格 6. 中断 Vector 表格
Arbitration Ranking 源 描述
Vector 地址
(便条 17)
(hi-低 字节)
(1) 最高的 软件 INTR 操作指南 0yFE–0yFF
(2) 保留 0yFC–0yFD
(3) 外部 G0 0yFA–0yFB
(4) 计时器 T0 Underflow 0yF8–0yF9
(5) 计时器 T1 t1a/underflow 0yF6–0yF7
(6) 计时器 T1 T1B 0yF4–0yF5
(7) microwire/加 BUSY 低 0yF2–0yF3
(8) 保留 0yF0–0yF1
(9) 通用同步/异步串行接收/发送器 Receive 0yEE–0yEF
(10) 通用同步/异步串行接收/发送器 Transmit 0yEC–0yED
(11) 计时器 T2 t2a/underflow 0yEA–0yEB
(12) 计时器 T2 T2B 0yE8–0yE9
(13) 计时器 T3 t2a/underflow 0yE6–0yE7
(14) 计时器 T3 T3B 0yE4–0yE5
(15) 端口 l/wakeup 端口 L 边缘 0yE2–0yE3
(16) 最低 Default VIS 保留 0yE0–0yE1
便条 17:
y 是 一个 能变的 这个 代表 这 VIS 块. VIS 和 这 vector 表格 必须 是 located 在 这 一样 256-字节 块 除了 如果 VIS 是 located 在 这 last
地址 的 一个 块. 在 这个 情况, 这 表格 必须 是 在 这 next 块.
COP8SG 家族
www.国家的.com 36