Transcript 认识AVR

第1章 认识AVR单片机
一
二
概述
AVR内核结构
一、概述
1、AVR单片机主要特点
8051结构的单片机采用复杂指令系统CISC(Complex
Instruction Set Computer)体系。
由于CISC结构存在指令系统不等长,指令数多,CPU利用
效率低,执行速度慢等缺陷,已不能满足和适应设计中高档
电子产品和嵌入式系统应用的需要。ATMEL公司发挥其Flash
存储器技术的特长,于1997年研发和推出了全新配置采用精
简指令集RISC(Reduced Instruction Set CPU)结构的新型
单片机,简称AVR单片机。
一、概述
1、AVR单片机主要特点
RISC结构是为了提高CPU运行的速度而设计的芯片
体系。它的关键技术在于采用流水线操作(Pipelining),和
等长指令体系结构,使一条指令可以在一个单独操作中完
成,从而实现在一个时钟周期里完成一条或多条指令。
 精简指令总数
 精简指令寻址方式
 精简指令执行周期
一、概述
1、AVR单片机主要特点
ATMEL公司的AVR是8位单片机中第一个真正的
RISC结构的单片机。它采用了大型快速存取寄存器组、
快速的单周期指令系统以及单级流水线等先进技术,使得
AVR单片机具有高达1MIPS/MHz的高速运行处理能力。
AVR采用流水线技术,在前一条指令执行的时候,就取出
现行的指令,然后以一个周期执行指令。大大提高了CPU
的运行速度。而在其它的CISC以及类似的RISC结构的单
片机中,外部振荡器的时钟被分频降低到传统的内部指令
执行周期,这种分频最大达12倍(8051)。
一、概述
1、AVR单片机主要特点
简言之:
8051:CISC,多周期,速度慢
AVR: RISC,单周期,流水线,速度快
一、概述
2、AVR单片机选型
表1:AVR型号分类
一、概述
2、AVR单片机选型
表2:ATmage内核选型
一、概述
2、AVR单片机选型
表2:ATmage内核选型
一、概述
2、AVR单片机选型
表2:ATmage内核选型
表2:中高档
表2:中高档
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
1)采用先进RISC结构的AVR内核(哈弗结构)
131条机器指令,且大多数指令的执行时间为单个系
统时钟周期;
32个8位通用工作寄存器;
工作在16MHz时具有16MIPS的性能。
配备只需要2个时钟周期的硬件乘法器
2)片内含有较大容量的非易失性的程序和数据存储器
16K字节在线可编程(ISP)Flash程序存储器采用Boot
Load技术支持IAP功能;1K字节的片内SRAM数据存储器,可
实现3级锁定的程序加密; 512个字节片内在线可编程
EEPROM数据存储器(寿命>10万次);
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
3)片内含JTAG接口
可通过JTAG口对片内的Flash、EEPROM、配置熔丝位
和锁定加密位实施下载编程;
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
4)集成丰富的外围资源
● 1个可编程的增强型全双工的,支持同步/异步通信的
串行接口USART;
● 1个可工作于主机/从机模式的SPI串行接口(支持ISP
程序下载);
● 片内模拟比较器;
● 内含可编程的,具有独立片内振荡器的看门狗定时器
WDT;
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
4)集成丰富的外围资源
●2个带有分别独立、可设置预分频器的8位定时器/计数器;
● 1个带有可设置预分频器、具有比较、捕捉功能的16位定时
器/计数器;
● 片内含独立振荡器的实时时钟RTC;
● 4路PWM通道; 8路10位ADC;
● 面向字节的两线接口TWI(兼容I2C硬件接口);
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
5)其他特点
●片内含上电复位电路以及可编程的掉电检测复位电路BOD;
● 片内含有1M/2M/4M/8M,经过标定的、可校正的RC振荡器,
可作为系统时钟使用;
● 多达21个各种类型的内外部中断源;
● 有6种休眠模式支持省电方式工作;
二、AVR内核结构
1、AVR CPU内核
(1)ATmage16 特点
6)宽电压、低功耗
●工作电压范围宽:ATmega16L 2.7—5.5v,ATmega16
4.5—5.5v;
● 运行速度:ATmega16L 0—8M,ATmega16 0—16M;
● 低功耗:ATmega16L工作在1MHz、3v、25度时的典型功
耗为,正常工作模式 1.1mA,空闲工作模式 0.35mA,掉
电工作模式 <1uA;
二、AVR内核结构
(2)ATmage16 内核结构
ATmage16 CPU包括:
● ALU运算逻辑单元、32个8位快速访问通用寄存器组(
寄存器文件)、程序计数器PC、指令寄存器、指令译码器
。
● 程序存储器Flash。
● 数据存储器RAM和EEPROM。
● 各种功能的外围接口、I/O,以及与它们相关的数据、
控制、状态寄存器等。
二、AVR内核结构
(3)系统时钟
ATmega16的片内含有4种频率(1/2/4/8M)的RC振荡
源,可直接作为系统的工作时钟使用。同时片内还设有一
个由反向放大器所构成的OSC(Oscillator)振荡电路,
外围引脚XTAL1和XTAL2分别为OSC振荡电路的输入端和输
出端,用于外接石英晶体等,构成高精度的或其它标称频
率的系统时钟系统。
ATmega16最高的工作频率为16M(16MIPS)。时钟频
率越高,其耗电量也越大,也容易受到干扰(或干扰别人
)。在具体设计时,应根据实际产品的需要,尽量采用较
低的系统时钟频率,这样不仅能降低了功耗,同时也提高
了系统的可靠性和稳定性。
二、AVR内核结构
(3)系统时钟
三种时钟源:
1)使用片内1/2/4/8MRC振荡源;
2)使用外部晶振。在XTAL1、XTAL2上外接晶体及电容
使用片内的OSC(Oscillator)振荡电路;
3)使用外部有源晶振。
方式2和方式3的电路连接见图 (a)和(b)。
二、AVR内核结构
(3)系统时钟
方式2是比较常用的方法,晶体可在0-16MHz之间选择,
电容值在20pF-30pF之间(最好与所选用的晶体相匹配)。
当对系统时钟电路的精度要求不高的话,可以使用第
1种方式——内部晶振,此时XTAL1和XTAL2引脚悬空。
第3种在AVR系统不常用。
二、AVR内核结构
(5)封装及引脚功能
DIP封装
TQFP封装
二、AVR内核结构
(5)封装及引脚功能
DIP封装
TQFP封装
二、AVR内核结构
(5)封装及引脚功能
1)电源及复位
VCC: 芯片供电(片内数字电路电源)输入引脚,使用
时连接到电源正极。
AVCC:为端口A和片内ADC模拟电路电源输入引脚。不使
用ADC时,直接连接到电源正极;使用ADC时,应通过一
个低通电源滤波器与Vcc连接。
AREF:使用ADC时,可作为外部ADC参考源的输入引脚。
GND: 芯片接地引脚,使用时接地。
XTAL2:片内反相振荡放大器的输出端。
XTAL1:片内反相振荡放大器和内部时钟操作电路的输
入端。
二、AVR内核结构
(5)封装及引脚功能
2)32条I/O口
分成PA、PB、PC和PD四组端口,每组8个,全部是
可编程控制、多功能复用I/O引脚。
四组端口的第一功能是通用的双向数字输入/输出
(I/O)口,每一位都可以由指令设置为独立的输入口
,或输出口。
当I/O设置为输入时,引脚内部还配置有上拉电阻
,可通过编程使上拉有效或无效。
二、AVR内核结构
(5)封装及引脚功能
2)32条I/O口
I/O口输出方式:
高电平能够输出20mA的电流;
而当其输出低电平时,可以吸收40mA的电流。
因此AVR的I/O口驱动能力非常强,能够直接驱动
LED发光二极管、数码管等。
芯片Reset复位后,所有I/O口的缺省状态为输入方
式,上拉电阻无效,即I/O为输入高阻的三态状态。
二、AVR内核结构
2 存储器地址
(1)数据存储器SRAM
二、AVR内核结构
(1)数据存储器SRAM
全部共1120个数据存储器地址为线性编址,前96个地
址为寄存器组(32个8位通用寄存器),I/O寄存器(64个
8位I/O寄存器),分配在SRAM数据地址空间的$0000~
$001F,$0020~$005F。
5种寻址方式:
Ю直接寻址;
Ю带偏移量的间接寻址;
Ю间接寻址;
Ю带预减量的间接寻址;
Ю带后增量的间接寻址。
二、AVR内核结构
(2)内部EEPROM存储器
AVR系列单片机还包括64B~4K字节的EEPROM数据存
储器。它们被组织在一个独立的数据空间中。这个数据
空间采用单字节读写方式。
EEPROM 的使用寿命至少为 10万次写/擦循环。
ATmega16的EEPROM容量是512字节,地址范围为$0000~
$01FF。
EEPROM数据存储器可用于存放一些需要掉电保护,
而且比较固定的系统参数、表格等。
二、AVR内核结构
3、寄存器
(1)通用寄存器组
32个通用寄存器的,所有的通用寄存器操作指令
均带有方向的,并能在单一时钟周期中访问。
二、AVR内核结构
3、寄存器
(1)通用寄存器组
每个通用寄存器还被分配在AVR的数据存储器空
间中,他们直接映射到数据空间的前32个地址,因此
也可以使用访问SRAM的指令对这些寄存器进行访问。
二、AVR内核结构
3、寄存器
(1)通用寄存器组
AVR寄存器组最后的6个寄存器R26~R31具有特殊
的功能,这些寄存器每两个合并成一个16位的寄存器,
作为对数据存储器空间(使用X、Y、Z)以及程序存
储器空间(仅使用Z寄存器)间接寻址的地址指针寄
存器。在不同指令的寻址模式下,利用地址寄存器可
实现地址指针的偏移、自动增量和减量(参考不同的
指令)等不同形式的间址寻址操作。
二、AVR内核结构
(2)I/O口寄存器
二、AVR内核结构
(2)I/O口寄存器
二、AVR内核结构
(2)I/O口寄存器
二、AVR内核结构
(2)I/O口寄存器
二、AVR内核结构
(2)I/O口寄存器
AVR系列单片机所有I/O口及外围接口的功能和配置
均通过I/O寄存器的进行设置和使 CPU访问I/O寄存器。
二、AVR内核结构
(3)状态寄存器及堆栈指针
1)状态寄存器SREG
SREG是一个8位标志寄存器,用来存放指令执行后的
有关状态和结果的标志。可硬件或软件修改。
SREG的位反映了CPU运算、操作结果的状态。
SREG在I/O空间的地址为$3F($005F),其各标志位的
意义如下:
二、AVR内核结构
(3)状态寄存器及堆栈指针
1)状态寄存器SREG
● 位7—I: 全局中断使能位
中断总控制开关。置“1”时,打开总中断,清 “0”
所有中断被禁止,CPU不响应任何的中断请求。
除了该标志位用于AVR中断的总控制,各中断源受其独
立中断屏蔽寄存器(GIMSK、TIMSK)控制。
如果全局中断触发寄存器被清另(“0”),则全局中
断被禁止,但单独的中断触发控制在GIMSK和TIMSK中的值
保持不变。在中断发生后,I位由硬件清除,并由RETI(中
断返回)指令置位,从而允许子序列的中断响应。
二、AVR内核结构
(3)状态寄存器及堆栈指针
1)状态寄存器SREG
● 位6—T: 位复制存储
位复制指令BLD和BST使用T标志位作为源和目标。通用
寄存器组中任何一个寄存器中的一位可以通过BST指令被复
制到T中,而用BLD指令则可将T中的位值复制到通用寄存器
组中的任何一个寄存器的一位中。
● 位5—H: 半进位标志位
● 位4—S: 符号标志位。S = N⊕V
是负数标志位N和2的补码溢出标志位V两者异或值。
在正常运算条件下(V=0,不溢出)S=N,即运算结果最高
位作为符号是正确的。而当产生溢出时V=1,此时N失效,
但S=N⊕V还是正确的。对于有符号数据而言,执行减法或
比较操作后,S标志能正确指示两个数的大小。
二、AVR内核结构
1)状态寄存器SREG
● 位3—V: 2补码溢出标志位
2的补码溢出标志位V,支持2的补码运算,为模2补码加、
减运算溢出标志。溢出表示运算结果超过了正数(或负数)
所能表示的范围。
加法溢出表现为正+正=负,或负+负=正;
减法溢出表现为正-负=负,或负-正=正。
溢出时,运算结果最高位(N)取反才是真正的结果符号。
●位2—N: 负数标志位
负数标志位直接取自运算结果的最高位,N=1时表示运算
结果为负,否则为正。但发生溢出时不能表示真实的结果
二、AVR内核结构
1)状态寄存器SREG
● 位1—Z: 零值标志位
零值标志位表明在CPU运算和逻辑操作之后,其结果是否
为零,当Z=1表示结果为零。
● 位0-C:进/借位标志
进位标志位表明在CPU的运算和逻辑操作过程中有无发
生进/借位。
二、AVR内核结构
2)SP堆栈指针
堆栈是数据结构中所使用的专用名词,它是由一块连续的
SRAM空间和一个堆栈指针寄存器组成,主要应用于快速便捷
的保存临时数据、局部变量和中断调用或子程序调用的返回
地址。
堆栈在系统程序的设计和运行中起者非常重要的作用,
只要程序中使用了中断和子程序调用,就必须正确的设置堆
栈指针寄存器SP,在SRAM空间建立堆栈区。
堆栈是一种特殊的线性数据结构,数据的进出在堆栈的
顶部进行,并遵循后进先出(LIFO)的原则。
堆栈指针实际上就是堆栈顶部的地址,它随着堆栈中数
据的进出而变化。堆栈指针寄存器SP中保存着堆栈指针,即
堆栈顶部的地址。
二、AVR内核结构
2)SP堆栈指针
AVR的堆栈是向下增长的,即新数据进入堆栈时栈顶指针
的数据将减小(注意:这里与51不同,51的堆栈是向上增长
的,即进栈操作时栈顶指针的数据将增加),所以尽管原则
上堆栈可以在SRAM的任何区域中,但通常初始化时将SP的指
针设在SRAM最高处。
对于具体的ATmega16芯片,堆栈指针必须指向高于$0060
的SRAM 地址空间,因为低于$0060的区域为寄存器空间。
ATmega16片内集成有1K的SRAM,不支持外部扩展SRAM,所以
堆栈指针寄存器SP的初始值应设在SRAM的最高端:$045F处。
二、AVR内核结构
2)编程
将“bin”(二进制)或“HEX”(16进制)格式的文件,
烧入芯片。
完成如下操作:
●对片内的Flash、EEPROM进行擦除、数据的写入(包括运行
代码)、和数据的读出。
●实现对AVR配置溶丝位的设置;芯片型号的读取;加密位的
锁定等。
a.编程器编程(并口)
最传统的编程方式,速度快,需要占用芯片众多的引脚
和12V的电压,所以必须采用专用的编程器单独对芯片操作。
芯片必须从PCB板上取下来,不可以实现芯片在线(板)的编
程操作,不适合系统调试以及产品的批量生产需要。
二、AVR内核结构
2)编程
b.ISP编程(串口)
占用比较少的外围引脚,所以可以实现芯片的在线编
程(In System Programmable),不需要将芯片从PCB板
上取下来,是最方便和最常用的编程方式。而采用SPI方
式编程,只需要一跟简单的编程电缆,同时可以方便的实
现I/O口的共用,因此是最常使用的方式。其不足之处是
不能实现系统的在片实时仿真调试。
c.JTAG编程(串口,仿真)
使用JTAG方式编程的优点是,通过JTAG口还可以
实现系统的在片实时仿真调试(On Chip Debug),缺点
是需要占用AVR的4个I/O引脚。
二、AVR内核结构
2)编程
d.IAP编程( Boot Load)
IAP(In Application Programmable)在运行编程方式。
是采用了ATMEL称为自引导加载(Boot Load)技术实现。
用在一些需要进行远程修改更新系统程序,或动态改变系
统程序的应用中才采用。
ATmega16片内集成了16K字节的支持系统在线可编程
(ISP)和在应用可编程(IAP)的Flash程序存储器,以
及512个字节的EEPROM数据存储器。
另外还有一些专用的可编程单元-熔丝位,用于加密
锁定和对芯片的配置等。
由于ATmega16片内含有SPI和JTAG口,使用3种编程的
方式:高压并行编程、串行SPI编程、串行JTAG编程。
二、AVR内核结构
5、熔丝设置(勿轻易设置!!!)
ATmega16单片机在售出时,片内的Flash 存储器和
EEPROM 存储器阵列是处在擦除的状态(即内容 = $FF),
且可被编程。同时其器件配置熔丝位的缺省值为使用内部
1M的RC振荡源作为系统时钟!使用已编程(Programmed)和未编程(Unprogrammed)定义加密位和熔丝位
的状态。
“Unprogrammed”表示熔丝状态为“1”(禁止),
“Programmed”表示熔丝状态为“0”(允许),
即
1:未编程
0:编程
在没把握前提下不要轻易设置熔丝位,否则会导致芯
片报废!建议使用专用软件“集成”烧写熔丝位。
具体参考相关手册。
二、AVR内核结构
6、最小系统