AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。高可靠性、功能强、高速度、低功耗和低价位一直是衡量单片机性能的重要指标,而AVR单片机是典型高性能单片机。
早期单片机,比如51单片机为了提高可靠性(防止数据误读或跑飞)采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。例如51单片机需要12个晶振周期才能组成1个机器周期,而且很多指令需要2个机器周期才能执行。AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,采用精简指令集,取指周期短,又可预取指令,实现流水作业,故可高速执行指令。AVR单片机在12个晶振周期中能执行12条指令,从这个角度看,如果晶振频率相同,AVR的速度是51的12倍到24倍。
AVR有32个通用寄存器,在进行大量复杂运算时,AVR的32个寄存器可相当于51的32个累加器,克服了51系列单片机只有单一累加器数据处理造成的瓶颈现象,在复杂运算时速度比51快5倍以上。由此可看出,51与AVR相比是多么慢,AVR是多么快。
AVR系列单片机多内部集成了多路AD转换器、电压比较器、ISP、I2C、JTAG总线电路、UART串口、大功率IO口、看门狗等实用电路,并且很多AVR单片机型号有EEPROM、FLASH、SRAM三种存储器,可以实现实时修改程序存储器中的内容,即AVR单片机可以自己修改自己的程序。同时AVR一般能工作在宽电压范围(2.7~6.0V),有的居然可以在1.8V电压下工作。以上这些性能只是AVR众多性能中的一部分,然而已经让51系列单片机望尘莫及了。
如此高性能的单片机价格居然和51单片机差不多,比如ATmega8价格为8元左右,ATmega16在13元左右,这是AVR有极高性价比的真实写照。
AVR家族人丁兴旺,包括ATinyAVR(微小型)、低功耗类、ATmegaAVR高中低档5类单片机。它们都基于同一核心技术,但在内部集成的电路多少上有不同。不论你要做电子手表还是视频处理,都有一款合适的AVR单片机能满足你的需要。
本文只列出ATmega16中档单片机的性能:
16KB的FLASH程序存储器;512B的EEPROM;1KB的SRAM;32个快速寄存器;32个大功率IO口;20个中断;2个外部中断口;有SPI、SUART、I2C总线接口;2个8位定时器;1个16位定时器;3个PWM通道;有实时时钟RTC;8个10位AD通道;电压比较器;看门狗;内置时钟振荡器;JTAG接口;ISP在线编程;电压范围为2.7V-5.5V;外部时钟晶振0-16MHz;有PID和多种贴片封装。
AVR的IO口能输出20mA和吸收40mA的电流,不仅可直接驱动LED,甚至可直接驱动微型直流减速电机。而且AVR的IO口可编程设置成输入、输出、高阻态状态,是真正的3态IO口。和51相比使用AVR开发产品你会发现前所未有的方便和自由。
AVR单片机可上操作系统,比如UCOS2、Linux等,自主编程实现操作系统功能也很容易。
根据任务具体需要选择最合适的单片机,使单片机资源充分利用,使系统性价比达到最高,同时兼顾未来扩展需要,不要一味选用高性能单片机,这就是选单片机的原则。
用ARM+操作系统做超声波测距仪——杀鸡用了牛刀。用AVR中档单片机做机器视觉——有些吃不消。如果把它们调换一下,一切就恰到好处了。
学AVR单片机的好书是《AVR单片机嵌入式系统原理与应用实践》,封面见下图。
AVR一般采用CVAVR编程软件编程,也可用GUNGCCAVR、AVRStudio软件编程。可采用汇编或C语言编程。烧程序前先输出HEX文件,然后用SLISP(双龙ISP)软件加载,再通过ISP编程线或者25针并口连接线烧入AVR单片机,支持在线编程。
由于AVR单片机最小系统很简单,就是电源+晶振(可不用)+LED+ISP接口(通电就运行,断电就停止,不用复位电路),因此任何初学者都可以用面包板搭出AVR最小系统,并且编程实践。
使用AVR单片机时注意要正确设置熔丝位,SLISP软件就可设置,熔丝位可决定单片机是采用外部晶振还是采用内部时钟振荡器,如果熔丝位设置为采用外部晶振,而电路中没有接入晶振,则AVR程序不能运行。很多初学者忽视了这一点,他们的AVR系统不能运行却找不到原因。再有就是AVR的IO口在使用前需先编程设置其状态,否则你将发现程序在运行,但IO口没信号。