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、最小系统