AVR有不同的中断源。每个中断和复位在程序空间都有独立的中断向量。所有的中断事件 都有自己的使能位。当使能位置位,且状态寄存器的全局中断使能位I 也置位时,中断可 以发生。根据程序计数器PC 的不同,在引导锁定位BLB02 或BLB12 被编程的情况下, 中断可能被自动禁止。这个特性提高了软件的安全性。详见 P281“ 存储器编程” 的描述。
程序存储区的最低地址缺省为复位向量和中断向量。完整的向量列表请参见 P57“中断” 。 列表也决定了不同中断的优先级。向量所在的地址越低,优先级越高。RESET 具有最高 的优先级,第二个为INT0 – 外部中断请求0。通过置位MCU 控制寄存器 (MCUCR) 的 IVSEL,中断向量可以移至引导Flash的起始处,参见 P57“中断” 。编程熔丝位BOOTRST 也可以将复位向量移至引导Flash 的起始处。具体参见P268“ 支持引导装入程序 – 在写 的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。
任一中断发生时全局中断使能位I 被清零,从而禁止了所有其他的中断。用户软件可以在 中断程序里置位I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执 行RETI 指令后I 自动置位。
从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序 计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志。中 断标志也可以通过对其写”1” 的方式来清除。当中断发生后,如果相应的中断使能位为 "0",则中断标志位置位,并一直保持到中断执行,或者被软件清除。类似的,如果全局 中断标志被清零,则所有已发生的中断都不会被执行,直到I 置位。然后挂起的各个中断 按中断优先级依次执行。
第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中断标志。若 中断条件在中断使能之前就消失了,中断不会被触发。
AVR 退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断。
要注意的是,进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢 复。这些工作必须由用户通过软件来完成。
使用CLI 指令来禁止中断时,中断禁止立即生效。没有中断可以在执行CLI 指令后发生, 即使它是在执行CLI 指令的同时发生的。下面的例子说明了如何在写EEPROM 时使用这 个指令来防止中断发生以避免对EEPROM 内容的破坏。
汇编代码例程 |
in r16, SREG ; 保存SREG cli ; 禁止中断 sbi EECR, EEMWE ; 启动 EEPROM 写操作 sbi EECR, EEWE out SREG, r16 ; 恢复SREG (I 位) |
C 代码例程 |
char cSREG; cSREG = SREG; /* 保存SREG */ /* 禁止中断*/ _CLI(); EECR |= (1<EECR |= (1<SREG = cSREG; /* 恢复SREG (I 位) */ |
使用SEI 指令使能中断时,紧跟其后的第一条指令在执行任何中断之前一定会首先得到执行。
汇编代码例程 |
sei ; 置位全局中断使能标志 sleep ; 进入休眠模式,等待中断发生 ; 注意: 在执行任何被挂起的中断之前MCU 将首先进入休眠模式 |
C 代码例程 |
_SEI(); /* 置位全局中断使能标志*/ _SLEEP(); /* 进入休眠模式,等待中断发生*/ /* 注意: 在执行任何被挂起的中断之前MCU 将首先进入休眠模式*/ |
中断响应时间
AVR 中断响应时间最少为4 个时钟周期。4 个时钟周期后,程序跳转到实际的中断处理例 程。在这4 个时钟期期间PC 自动入栈。在通常情况下,中断向量为一个跳转指令,此跳 转需要3 个时钟周期。如果中断在一个多时钟周期指令执行期间发生,则在此多周期指令 执行完毕后MCU 才会执行中断程序。若中断发生时MCU 处于休眠模式,中断响应时间 还需增加4 个时钟周期。此外还要考虑到不同的休眠模式所需要的启动时间。
中断返回需要4 个时钟。在此期间PC( 两个字节) 将被弹出栈,堆栈指针加二,状态寄存 器SREG 的I 置位。
关键字:ATmega64 复位 中断处理
引用地址:
ATmega64 复位与中断处理
推荐阅读最新更新时间:2024-11-08 10:58
锂离子电池可复位电路保护的新方法
新型MHP器件 高倍率放电 锂离子电池 应用市场的快速增长创造了对高性价比电路保护器件的需求,这些器件在30V直流电压作用下可以提供30A+的保持电流。为满足这种需求,一种将双金属保护器和PPTC(聚合物正温度系数)器件并行连接的混合型器件已被研发出来。由此产生的MHP(metal hybrid PPTC ,金属混合PPTC)器件可提供一种可复位过流保护功能,同时还可利用PPTC器件的低阻抗特性来防止双金属保护器在更高电流下产生电弧放电。 应用 MHP 电路保护器件为电池组设计师和制造商们提供了一种可以优化空间、降低成本和增强安全性的方法,该器件技术可针对各种不同的应用进行配置。具备更高电压和保持电流的器件现正在开
[电源管理]
ATmega8 复位源
复位AVR 复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的 指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。如果程序永远不利用中 断功能,中断向量可以由一般的程序代码所覆盖。这个处理方法同样适用于当复位向量位 于应用程序区,中断向量位于Boot 区 — 或者反过来 — 的时候。Figure 14 为复位逻辑 的电路图。Table 15 则定义了复位电路的电气参数。 复位源有效时I/O 端口立即复位为初始值。此时不要求任何时钟处于正常运行状态。 所有的复位信号消失之后,芯片内部的一个延迟计数器被激活,将内部复位的时间延长。 这种处理方式使得在MCU 正常工作之前有一定的时间让电
[单片机]
51单片机控制SL811HS的USB主机底层驱动
引言 基于USB接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如U盘,移动硬盘,光驱,USB摄像头,USB鼠标键盘等,同时,51系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域,因此,如果在51单片机系统中增加USB主机接口,实现对USB从机设备的控制,则该单片机系统可以充分利用现有的各种USB从机设备,大大扩展单片机系统功能。 本设计实现了在51单片机系统中增加USB主机功能,采用普通51单片机外接专用USB接口芯片的方案,这种方案虽然会使系统传输速度受到限制,而且在稳定性有所欠缺,但此方案设计灵活性高,且易于移植,为低成本产品的开发提供了广阔前景,设计中采用51单
[应用]
ATtiny2313 复位与中断处理
AVR有不同的中断源。每个中断和复位在程序空间都有独立的中断向量。所有的中断事件 都有自己的使能位。当使能位置位,且状态寄存器的全局中断使能位 I 也置位时,中断可以发生。 ATtiny2313 的程序存储区的最低地址缺省为复位向量和中断向量。完整的向量列表请参见P40“中断” 。 列表也决定了不同中断的优先级。向量所在的地址越低,优先级越高。RESET 具有最高的优先级,第二个为 INT0 – 外部中断请求 0。 任一中断发生时全局中断使能位 I 被清零,从而禁止了所有其他的中断。用户软件可以在 中断程序里置位 I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执行 RETI 指令后I 自动置位。 从根本上说有两种
[单片机]
ATmega16 复位源
复位AVR 复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。如果程序永远不利用中断功能,中断向量可以由一般的程序代码所覆盖。这个处理方法同样适用于当复位向量位于应用程序区,中断向量位于Boot 区 — 或者反过来 — 的时候。Figure 15 为复位逻辑的电路图。Table 15 则定义了复位电路的电气参数。 复位源有效时I/O 端口立即复位为初始值。此时不要求任何时钟处于正常运行状态。 所有的复位信号消失之后,芯片内部的一个延迟计数器被激活,将内部复位的时间延长。这种处理方式使得在MCU 正常工作之前有一定的时间让电源达到稳定的电平
[单片机]
关于STM32F4的复位序列
初次接触到STM32F7,可能会有个疑惑,为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处开始执行吗?如果是,那这似乎看起来是冲突的。实际上,STM32F7是基于Cortex-M7内核,而Cortex-M7和Cortex-M3/M4的复位序列有些不一样。本文中,将针对这个问题做详细讲解。 STM32F4的复位序列 STM32F4基于Cortex-M4。对于基于Cortex-M3/M4的芯片,复位后总是从0x00000000地址处,取主堆栈指针(MSP)的值,从0x00000004处,取出PC的初始值(这个值是复位向量),然后从这个值对应的地址处取指。 这两个值,就是中断向量表里的第一个和第二个表项的值。
[单片机]
ATmega48 上电复位
上电复位 (POR) 脉冲由片内检测电路产生。检测电平请参见 Table20。 无论何时 VCC 低于检测电平 POR 即发生。 POR 电路可以用来触发启动复位,或者用来检测电源故障。 POR电路保证器件在上电时复位。VCC 达到上电门限电压后触发延迟计数器。在计数器溢出之前器件一直保持为复位状态。当 VCC 下降时,只要低于检测门限,RESET 信号立即生效。
[单片机]
TMS320VC5402 HPI接口与PCI总线接口设计
数字信号处理器DSP(Digital Signal Processor)是一种特别适合于进行数字信号处理的微处理器,凭借其运算速度快、功能强等特点,在各个领域的应用越来越广泛。但在很多场合下需要将DSP的各种外围设备同计算机连接,以实现数据传输。通常情况下可利用DSP的串口或I/O口来实现,但无论是接串口还是接I/O口都要占用DSP的硬件资源,同时数据的传输速度有时也不能满足系统的要求。为了解决这一问题,将DSP的HPI口通过PCl2040芯片桥接到PCI总线。本文以TMS320VC5402(简称VC5402)为例,介绍DSP的HPI口及其与PCl2040的接口设计。 1 HPI接口功能及特点 主机接口HPI(Host Pott
[应用]