1.2.5 ATmega128单片机的复位
当ATmega128单片机复位之后,所有的I/O寄存器都被恢复为初始值,程序从复位向量处开始执行。复位向量处存放的指令必须是绝对跳转指令JMP,以使程序跳转到对应复位处理代码。如果用户代码不使用中断,中断向量的存储位置可以由一般的程序代码所覆盖。这个处理方法同样适用于当复位向量位于应用程序区,中断向量位于程序存储器的Boot区的状况。
当复位发生时,ATmega128单片机的I/O端口立即被复位为初始值。此时不要求任何时钟处于正常运行状态。当所有的复位信号消失之后,ATmega128单片机内部的一个延迟计数器被激活,将内部复位的时间延长,从而能使ATmega128单片机在正常工作之前有一定的时间让电源达到稳定的电平,该延迟计数器的溢出时间通过熔丝位SUT与CKSEL设定。
1. ATmega1 28单片机的复位源
ATmega128单片机有5个复位源。
● 上电复位:当电源电压低于上电复位门限VPOT时,ATmega128单片机复位。
● 外部复位:当外加在RESET引脚上的低电平持续时间大于最小脉冲宽度时,ATmega128单片机复位。
● 掉电检测复位:当掉电检测复位功能使能,并且电源电压低于掉电检测复位门限电压VBOT时,ATmega128单片机复位。
● 看门狗复位:当看门狗使能,并且看门狗定时器溢出时,ATmega128单片机复位。
● JTAG复位:当复位寄存器被置位时,ATmega128单片机复位。
2. 上电复位
在上电复位(POR)过程中,其复位脉冲由片内检测电路产生,当VCC引脚上的电平低于检测电平POR时,发生上电复位事件。POR电路可以用来触发启动复位,或者用来检测电源故障。
POR电路可以保证ATmega128单片机在上电时复位,当VCC达到上电门限电压后触发延迟计数器,在计数器溢出之前器件一直保持为复位状态,当VCC下降时,只要低于检测门限,RESET信号立即生效。
图1.11和图1.12所示为ATmega128单片机在上电复位时RESET引脚不同连接方式下的信号时序图。
图1.11 RESET引脚连接到VCC的信号时序图
图1.12 RESET由外部电路控制的信号时序图
3. 外部复位
外部复位由外加于ATmega128单片机的RESET引脚上的低电平产生。当复位低电平持续时间大于最小脉冲宽度(1.5 μs)时触发复位过程,即使此时并没有时钟信号在运行。当外加信号达到复位门限电压 VRST(上升沿)时,tTOUT延时周期开始。在延时结束后,ATmega128单片机启动信号时序图如图1.13所示。
图1.13 外部复位的信号时序图
4. 掉电检测复位
ATmega128单片机具有片内BOD(Brown-out Detection)电路,该电路通过与固定触发电平的对比来检测工作过程中VCC的变化。触发电平通过熔丝位BODLEVEL来设定,可以设定为2.7V或4.0V。BOD的触发电平具有迟滞功能,以消除电源尖峰的影响。BOD电路的开关由熔丝位BODEN来控制。当BOD被使能后,一旦VCC下降到触发电平以下,BOD复位立即被激发。当VCC上升到触发电平以上时,延时计数器开始计数,一旦超过溢出时间tTOUT,ATmega128单片机即恢复工作。如果VCC一直低于触发电平并保持时间 tBOD(2μs),BOD电路将只检测电压跌落。图1.14所示为掉电检测复位示意图。
图1.14 掉电检测复位示意图
5. 看门狗复位
当看门狗定时器溢出时,将产生持续时间为1个时钟周期的复位脉冲,在脉冲的下降沿,延时定时器开始对 tTOUT计数,计数完成之后,ATmega128单片机即完成复位,如图1.15所示。
6. ATmega1 28单片机的复位控制寄存器
ATmega128单片机使用一个复位控制寄存器来对复位进行管理,该寄存器的内部结构如表1.18所示。其中后5位和ATmega128单片机的复位控制相关。
图1.15 看门狗复位时序图
表1.18 ATmega1 28单片机的复位控制寄存器MCUCSR
● JTRF:JTAG复位标志位。通过JTAG指令AVR_RESET可以使JTAG复位寄存器置位,引发ATmega128单片机复位,并使JTRF置位;上电复位后,该位被自动清零,也可以通过对该位写“0”来清除。
● WDRF:看门狗复位标志位。当看门狗复位发生时,该位被置位;上电复位后,该位被自动清零,也可以通过向该位写“0”来清除。
● BORF:掉电检测复位标志位。在掉电检测复位发生时被置位;上电复位后该位被自动清零,也可以通过写“0”来清除。
● EXTRF:外部复位标志位。当外部复位发生时被置位;上电复位后该位被自动清零,也可以通过写“0”来清除。
● PORF:上电复位标志位。上电复位发生时被置位;只能通过写“0”来清除。
7. 片内基准电压
ATmega128单片机具有片内基准电压源,用于掉电检测,或者作为模拟比较器或ADC模块的输入电源。ADC模块的2.56V基准电压也由此片内基准电压源产生。电压基准的启动时间可能影响其工作方式,其启动时间如表1.19所示。为了降低功耗,在不使用基准源时将关闭。该基准源仅在如下情况打开:
● BOD使能,即熔丝位BODEN被编程。
● 能隙基准源连接到模拟比较器,ACSR寄存器的ACBG位被置位。
● ADC模块被使能。
因此,当BOD被禁止时,置位ACBG或使能ADC后会启动基准源,为了降低掉电模式的功耗,可以禁止上述3种条件,并在进入掉电模式之前关闭基准源。
表1.19 内部电压基准源特性