当 AVR 芯片的 Vcc 与系统电源接通后,根据 RESET 引脚的电平值的不同,单片机将进行不同的状态:复位状态、常规工作状态、编程状态。
1. RESET 引脚电平为高
通常情况下,RESET 引脚通过一个上拉电阻接系统电源,为高电平“1” 。在此条件下,一旦接通电源,AVR 将进进上电复位状态。经过短暂的内部的复位操纵后,芯片便进进了常规的工作状态(BOD 和WDT 引起的复位类同) 。AVR 处在常规工作状态时,有两种工作方式:正常程序执行工作方式和休眠节电工作方式。
z 正常程序执行工作方式
正常程序执行工作方式是单片机的基本工作方式。由于硬件的复位操纵将程序计数器置为零(PC=$0000) ,因此程序的执行总是从 Flash 地址的$0000 开始的(指非 BOOT LOAD 方式启动)。
休眠节电工作方式
休眠节电工作方式是使单片机处于低功耗节电的一种工作方式。当单片机需要处于长时间等待外部触发信号,待有外部触发后才做相应的处理,或每隔一段时间才需要做处理的情况时,可以使用休眠节电工作方式,以减小对电源的消耗。CPU处于等待的时候(待机状态)可进进休眠节电工作方式,此时 CPU 暂停工作,不执行任何指令。在休眠节电工作方式中,只有部分单片机的电路处于工作状态,而其它的电路停止工作,这样就可节省单片机的对电源消耗,形成系统的省电待机状态。一旦有外部的触发信号,或等待时间到,CPU从休眠状态中被唤醒,重新进进正常程序执行工作方式。
2 RESET 引脚电平为低
AVR 通电后,假如 RESET脚的电平被外部拉为低电平“0” ,则芯片将进进和处在复位状态。通常情况下,该复位状态一直延续到 RESET脚的低电平被撤消。一旦 RESET恢复了高电平, AVR 将重新启动, 进进常规工作状态。利用该特点可以实现对 AVR系统的人工复位或外部强制复位操纵。
尤其需要说明的是,一旦 RESET 脚的电平被外部拉低,当满足某些特殊条件后,芯片将进入编程状态。例如,假如芯片带有 SPI 接口,支持 SPI 串行编程,则通过以下方式将使芯片进入 SPI编程状态:
z 外部将 SPI口的 SCK 引脚拉低, 然后外部在 RESET 引脚上施加一个至少为 2 个系统周期以上低电平脉冲;
z 延时等待 20ms 后,由外部通过 AVR 的SPI 口向芯片下发答应 SPI 编程的指令;
在AVR的器件手册的存储器编程(Memory Programming)一章中串行下载(SerialDownloading)一节里,具体先容了利用AVR的SPI接口实现ISP编程的硬件连接、编程方式状态的进进过程和串行编程的命令等。
一旦芯片进进编程状态,就可以通过 SPI 口将运行代码写进 AVR 的程序存储器,对片内的 Flash、EEPROM 进行擦除、数据的写进(包括运行代码)、和数据的读出,以及实现对 AVR配置溶丝位的设置、芯片型号的读取和加密位的锁定等操纵了。