11 xmega 中断和可编程多级中断控制器

11 中断和可编程多级中断控制器

11.1特点

  • 短且可预测的中断响应时间
  • 每个中断的独立中断配置和向量地址
  • 可编程多级中断控制器
    如何使用中断,

11.2

必须全局启用中断才能生成任何中断。这是通过设置 CPU 状态寄存器中的全局中断启用 (I) 位来完成的。确认中断时,I 位不会被清除。每个中断级别也必须先使能,然后才能生成相应级别的中断。
当中断使能且存在中断条件时,PMIC 将接收中断请求。根据任何正在进行的中断的中断级别和中断优先级,中断要么被确认,要么保持挂起直到它具有优先级。当中断请求被确认时,程序计数器被更新以指向中断向量。中断向量通常是到中断处理程序的跳转;处理中断的软件程序。从中断处理程序返回后,程序从中断发生前的位置继续执行。在处理任何未决中断之前总是执行一条指令。
PMIC 状态寄存器包含状态信息,可确保在中断处理程序结束时执行 RETI(中断返回)指令时 PMIC 返回到正确的中断级别。从中断返回将使 PMIC 返回到进入中断之前的状态。状态寄存器 (SREG) 不会在中断请求时自动保存。从中断处理程序返回时不能使用 RET(子程序返回)指令,因为这不会将 PMIC 返回到其正确状态。
在这里插入图片描述

11.4

所有中断和复位向量在程序存储空间中都有一个单独的程序向量地址。程序存储空间中的最低地址是复位向量。所有中断都分配有单独的控制位,用于启用和设置中断级别,这在每个可以产生中断的外设的控制寄存器中进行设置。每个中断的详细信息在中断可用的外设中进行了描述。
所有中断都有一个与之关联的中断标志。当存在中断条件时,即使相应的中断未使能,也会设置中断标志。对于大多数中断,在执行中断向量时会自动清除中断标志。将逻辑 1 写入中断标志也将清除该标志。有些中断标志在执行中断向量时不会被清除,有些会在访问(读取或写入)相关寄存器时自动清除。这是针对每个单独的中断标志进行描述的。
如果在另一个更高优先级的中断正在执行或挂起时发生中断条件,则将设置并记住中断标志,直到中断具有优先级。如果在相应的中断未使能时发生中断条件,则中断标志将被设置并记住,直到中断使能或该标志被软件清除。类似地,如果在全局中断被禁用时发生一个或多个中断条件,则相应的中断标志将被设置并记住,直到全局中断被启用。然后根据优先级顺序执行所有挂起的中断。
从锁定部分执行代码时可以阻止中断;例如,当引导锁定位被编程时。此功能提高了软件安全性。有关锁定位设置的详细信息,请参阅第 323 页上的“内存编程”。当使用正确的签名写入配置更改保护寄存器时,中断会自动禁用多达四个 CPU 时钟周期。有关详细信息,请参阅第 13 页的“配置更改保护”。

11.4.1NMI 不可屏蔽中断

不可屏蔽中断 无视 I使能 ,也不能改变I bit位,其他中断不能打断不可屏蔽中断, 如果同时请求多个 NMI,则优先级根据中断向量地址是静态的,其中最低地址具有最高优先级。

11.4.2中断响应时间

3个时钟周期,
如果在设备处于睡眠模式时发生中断,则中断执行响应时间增加五个时钟周期。此外,响应时间会增加从所选睡眠模式的启动时间,
从中断处理例程返回需要四到五个时钟周期,具体取决于程序计数器的大小。在这些时钟周期内,程序计数器从堆栈中弹出,堆栈指针递增。

11.5中断等级

为每个中断源独立选择中断级别。对于任何中断请求,PMIC 还接收中断的中断级别。所有中断的中断级别配置的中断级别及其对应的位值如表 11-1 所示。
在这里插入图片描述
将中断请求的中断级别与中断控制器的当前级别和状态进行比较。更高级别的中断请求将从更低级别的中断中断任何正在进行的中断处理程序。当从上级中断处理程序返回时,下级中断处理程序将继续执行。

11.6 中断优先级

在每个中断级别内,所有中断都有优先级。当多个中断请求处于未决状态时,确认中断的顺序由中断请求的级别和优先级决定。可以按静态或动态(循环)优先级方案组织中断。高级和中级中断和 NMI 将始终具有静态优先级。对于低级中断,可以选择静态或动态优先级调度。

11.6.1静态优先级

中断向量 (IVEC) 位于固定地址。对于静态优先级,中断向量地址决定一个中断级别内的优先级,其中最低的中断向量地址具有最高优先级。有关所有具有中断功能的模块和外设的基地址的中断向量表,请参见器件数据表。请参阅本手册中每个模块和外设的中断向量摘要,了解中断列表及其在不同模块和外设中的相应偏移地址。
在这里插入图片描述

11.6.2 循环调度

为了避免具有静态优先级的低级中断可能出现的饥饿问题,其中某些中断可能永远不会被服务,PMIC 为低级中断提供循环调度。当启用循环调度时,下一次请求来自低级别的一个或多个中断时,最后确认的低级别中断的中断向量地址将具有最低优先级。
在这里插入图片描述

11.7 中断向量位置

表 11-2 显示了 BOOTRST 和 IVSEL 设置的各种组合的复位和中断向量布局。如果程序从不启用中断源,则不使用中断向量,并且可以将常规程序代码放置在这些位置。如果复位向量在应用程序部分,而中断向量在引导部分,情况也是如此,反之亦然.在这里插入图片描述

11.8 寄存器说明

11.8.1 STATUS – Status Register

在这里插入图片描述

  • Bit 7 – NMIEX: Non-Maskable Interrupt Executing
    如果正在执行不可屏蔽的中断,则设置该标志。当从中断处理程序返回 (RETI) 时,该标志将被清除。

  • Bit 6:3 – Reserved
    这些位未使用并保留供将来使用。为了与未来的设备兼容,在写入该寄存器时始终将这些位写入零。

  • Bit 2 – HILVLEX: High-level Interrupt Executing
    当执行高级中断或中断处理程序已被 NMI 中断时,设置此标志。当从中断处理程序返回 (RETI) 时,该标志将被清除。

  • Bit 1 – MEDLVLEX: Medium-level Interrupt Executing
    当执行中级中断或中断处理程序被更高级别的中断或 NMI 中断时,设置此标志。当从中断处理程序返回 (RETI) 时,该标志将被清除。

  • Bit 0 – LOLVLEX: Low-level Interrupt Executing
    当执行低级中断或中断处理程序已被更高级别的中断或 NMI 中断时,设置此标志。当从中断处理程序返回 (RETI) 时,该标志将被清除。

11.8.2INTPRI – Interrupt Priority Register-中断优先级寄存器

在这里插入图片描述

  • Bit 7:0 – INTPRI: Interrupt Priority
    **当启用循环调度时,该寄存器存储最后确认的低级中断的中断向量。下一次有一个或多个低级中断挂起时,存储的中断向量将具有最低优先级。该寄存器可从软件访问以更改优先级队列。如果禁用循环调度,则该寄存器不会重新初始化为其初始值,因此如果需要默认静态优先级,则必须将寄存器写入零。
    **

11.8.3 CTRL – Control Register

在这里插入图片描述

  • Bit 7 – RREN: Round-robin Scheduling Enable
    当设置 RREN 位时,循环调度方案为低级中断启用。当该位清零时,优先级根据中断向量地址是静态的,其中最低地址具有最高优先级。

  • Bit 6 – IVSEL: Interrupt Vector Select
    当 IVSEL 位被清零(零)时,中断向量被放置在闪存中应用程序部分的开头。当该位置位(1)时,中断向量被放置在闪存引导部分的开头。有关绝对地址,请参阅器件数据表。

  • Bit 5:3 – Reserved

  • Bit 2 – HILVLEN: High-level Interrupt Enable
    当该位置位时,所有高级中断都被使能。如果该位被清除,高级中断请求将被忽略。

  • Bit 1 – MEDLVLEN: Medium-level Interrupt Enable
    当该位置位时,所有中级中断都被启用。如果该位被清除,中级中断请求将被忽略

  • Bit 0 – LOLVLEN: Low-level Interrupt Enable
    当该位置位时,所有低级中断都被启用。如果该位被清除,低级中断请求将被忽略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值