单片机(MCU)包含各种硬件模块(外设),旨在用于执行通信、时序和波形生成等专门任务。通常,每个外设都有许多信号用于指示其状态:操作完成、数据可用性或外设准备好接收新命令。中央处理单元(CPU)负责检查每个模块的相关更新。之后,CPU 必须处理每个模块的请求。随着外设模块越来越多,CPU 需要花费越来越多的时间来检查和处理所有模块。此 CPU 负荷会导致更长的响应时间和更高的功耗。传统上,MCU 使用两种主要方法来监视和处理外设:轮询和中断。
轮询意味着手动读取和检查由受监视外设更新的状态位。这为设计人员提供了很高的自由度,他们可以自由决定检查不同外设的频率和顺序。在应用程序仅等待特定状态的简单用例中,可以进行非常紧密的循环;检查此状态位并在出现特定状态时立即对其进行处理。尽管使用轮询方法可以带来非常快的响应速度,但仍然存在几个主要缺点。首先,响应能力会随着要检查的状态位数量的增加而降低。其次,CPU在执行每个状态位的代码测试时需要以工作模式运行,而这会增加功耗。
随着应用程序中涉及的外设和状态位数的增加,中断系统可提供更好的响应能力。中断系统采用了一种外设可以发送请求来中断 CPU 执行的方案。由于外设会在需要处理时提示 CPU,因此 CPU 无需主动轮询状态位。但是,当某个外设可以随时向 CPU 请求服务时,它不会考虑其他外设的需求,这会带来中断请求堆积的风险。因此,需要使用中断控制器来确定 CPU 处理待处理中断的顺序。传统上,tinyAVR®和megaAVR®器件的中断处理使用基于中断向量地址的预定义优先级。XMEGA® MCU 系列可以使用可编程多级中断控制器(PMIC)定制优先级队列,允许用户为中断分配三个优先级。在 tinyAVR 0 和 1 系列以及 megaAVR 0 系列中,中断处理技术具有更高的可配置性。本应用笔记详细介绍了新中断控制器的功能,它将预定义优先级和多级控制器组合使用。
http://www.microchip.com.cn/newcommunity//Uploads/201906/5cf5d4e2650d3.pdf
|