当AVR单片机芯片的VCC与系统电源接通后,根据RESET引脚的电平值的不同,单片机将进入不同的状态:复位状态、常规工作状态、编程状态。
1.RESET引脚电平为高
在通常情况下,RESET引脚通过一个上拉电阻接系统电源,为高电平“1”。在此条件下,一旦接通电源,AVR单片机将进入上电复位状态。经过短暂的内部复位操作后,芯片便进入了常规的工作状态(BOD和WDT引起的复位类同)。
AVR单片机处在常规工作状态时,有两种工作方式:正常程序执行工作方式和休眠节电工作方式。
(1)正常程序执行工作方式
正常程序执行工作方式是单片机的基本工作方式。由于硬件的复位操作将程序计数器置为零(PC=$0000),因此程序的执行总是从Flash地址的$0000开始的(指非BOOT LOAD方式启动)。
对于ATmega16来讲,Flash地址的$0002~$0028是中断向量区,所以真正实际要开始运行的程序代码一般放在从$002A以后的程序地址空间中。标准的做法是在Flash的$0000单元中放置一条转移指令JMP或RJMP,使得CPU在复位重新启动后,首先执行该转移指令,跳过中断向量区,转到执行实际程序的开始处。典型的程序结构如下:
Flash空间地址 指令字 说明
$0000 JMP RESET ;复位中断向量
(2)休眠节电工作方式(www.xing528.com)
休眠节电工作方式是使单片机处于低功耗节电的一种工作方式。当单片机需要处于长时间等待外部触发信号,待有外部触发后才做相应的处理,或每隔一段时间才需要做处理的情况时,可以使用休眠节电工作方式,以减小对电源的消耗。CPU处于等待的时候(待机状态)可进入休眠节电工作方式,此时CPU暂停工作,不执行任何指令。在休眠节电工作方式中,只有部分单片机的电路处于工作状态,而其他的电路停止工作,这样就可节省单片机对电源消耗,形成系统的省电待机状态。一旦有外部的触发信号,或等待时间到,CPU从休眠状态中被唤醒,重新进入正常程序执行工作方式。
ATmega16有6种不同的休眠模式,每一种模式对应的电源消耗也不同,被唤醒的方式也有多种类型,用户可以根据实际的需要进行选择。
休眠节电工作方式对使用电池供电的系统非常重要,AVR单片机提供了更多的休眠模式,更加符合和适应实际的需要。如ATmega16处在掉电休眠模式状态,其本身的耗电量小于1μA。
2.RESET引脚电平为低
AVR单片机通电后,如果RESET引脚的电平被外部拉为低电平“0”,则芯片将进入和处在复位状态,如图2-16和图2-17所示。通常情况下,该复位状态一直延续到RESET引脚的低电平被撤销。一旦RESET恢复了高电平,AVR单片机将重新启动,进入常规工作状态。利用该特点可以实现对AVR单片机系统的人工复位或外部强制复位操作。
尤其需要说明的是,一旦RESET引脚的电平被外部拉低,当满足某些特殊条件后,芯片将进入编程状态。例如,如果芯片带有SPI接口,支持SPI串行编程,则通过以下方式将使芯片进入SPI编程状态:
1)外部将SPI口的SCK引脚拉低,然后外部在RESET引脚上施加一个至少为2个系统周期以上低电平的脉冲;
2)延时等待20ms后,由外部通过AVR单片机的SPI口向芯片下发允许SPI编程的指令。
在AVR单片机的器件手册的存储器编程(Memory Programming)一章中串行下载(Ser-ial Downloading)一节里,详细介绍了利用AVR单片机的SPI接口实现ISP编程的硬件连接、编程方式状态的进入过程和串行编程的命令等。
一旦芯片进入编程状态,就可以通过SPI口将运行代码写入AVR单片机的程序存储器,对片内的Flash、EEPROM进行擦除、数据的写入(包括运行代码)和数据的读出,以及实现对AVR单片机配置熔丝位的设置、芯片型号的读取和加密位的锁定等操作了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。