三个外部中断INT0,INT1,INT2;对应由芯片外部引脚PD2、PD3、PB2上的电平的变化或状态作为中断触发信号。
INT0、INT1、INT2的中断触发方式取决于用户程序对MCU控制寄存器(MCUCR)以及MCU控制与状态寄存器(MCUCSR)的设定。其中,INT0和INT1支持4种中断触发方式,INT2支持2种。
INT0 | INT1 | INT2 | 说明 | |
上升沿触发 | Yes | Yes | Yes(异步) | |
下降沿触发 | Yes | Yes | Yes(异步) | |
任意电平变化触发 | Yes | Yes | —— | |
低电平触发 | Yes | Yes | —— | 无中断标志 |
任意电平变化触发表示只要引脚上有逻辑电平的变化就会产生中断申请(不管是上升沿还是下降沿都引起中断触发)。
▋低电平触发是不带中断标志类型的,即只要中断输入引脚PD2或PD3保持低电平,那么将一直会产生中断申请。
▋MCU对INT0和INT1的引脚上的上升沿或下降沿变化的识别(触发),需要I/O时钟信号的存在(由I/O时钟同步检测),属于同步边沿触发的中断类型。
▋MCU对INT2的引脚上的上升沿或下降沿变化的识别(触发),以及低电平的识别(触发)是通过异步方式检测的,不需要I/O时钟信号的存在。因此,这类触发类型的中断经常作为外部唤醒源,
用于将处在 Idle 休眠模式,以及处在各种其它休眠模
式的 MCU 唤醒。这是由于除了在空闲(Idel)模式时,I/O 时钟信号还保持继续工
作,在其它各种休眠模式下,I/O 时钟信号均是处在暂停状态的。
▋如果设置了允许响应外部中断的请求,那么即便是引脚PD2、PD3、PB2设置为输出方式工作,引脚上的电平变化也会产出外部中断触发请求。这一特性为用户提供了使用软件中断的途径。
与外部中断相关的寄存器和标志位
除了寄存器SREG中的全局中断允许标志位I外,与外部中断有关的寄存器有4个,共有11个标志位。其作用分别是3个外部中断各自的中断标志位,中断允许控制位,和用于定义外部中断的触发类型。
1)、MCU控制寄存器——MCUCR (ATmega328P EICRA - External Interrupt Control Register A外部中断控制寄存器A(0x69))
MCU控制寄存器MCUCR的低4位为INT0(ISCO1,ISC00)和INT1(ISC11、ISC10)中断触发类型控制位,中断触发方式:
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$35($0055) | SM2 | SE | SM1 | SM0 |