《avr基本原理与应用》由会员分享,可在线阅读,更多相关《avr基本原理与应用(133页珍藏版)》请在金锄头文库上搜索。
1、- 1 -,第2章,AVR基本原理及应用,- 2 -,本章目标, 了解ATmega16的特点、外部引脚 理解ATmega16的存储器映像 了解AVR熔丝位作用 掌握ATmega16通用I/O口的配置和使用 掌握ATmega16中断的配置和使用 掌握ATmega16定时器的配置和使用 掌握USART和SPI的配置和使用,- 3 -,2.2 通用I/O接口,2.3 中断系统,2.4 定时器,2.5 USART,2.6 SPI,- 4 -,2.1 ATmega16概述,ATmega16是一款中档功能的AVR单片机,较全面地体现了AVR的特点,不仅适合对AVR的入门学习,也满足一般应用,AVR的3大系
2、列:tinyAVR、megaAVR和XMEGA,- 5 -,2.1 ATmega16概述,ATmega16特点 ATmega16外部引脚 ATmega16结构 系统时钟与熔丝位 复位源与复位方式,- 6 -,2.1.1 ATmega16特点,采用先进RISC结构的AVR内核,大多数指令的执行时间为单个指令周期; 片内含16KB的Flash程序存储器、1KB的SRAM数据存储器及512字节EEPROM数 据存储器; 片内含JTAG接口,支持扩展的片内ISP调试功能,可实现对片内Flash、EEPROM、 熔丝位配置等的下载编程; 丰富的外围接口:3个定时/计数器接口、模拟比较器和模数转换器接口、
3、面向字节 的两线接口TWI(兼容IIC硬件接口),1个USART和1个SPI串行接口等; 宽电压:ATmega16L为2.75.5V,ATmega16为4.55.5V,ATmega16A为 2.75.5V; 高速度:ATmega16L为08MHz,ATmega16为016MHz,ATmega16A为 016MHz; 低功耗:ATmega16L工作在1MHz、3V、25度时的典型功耗:正常模式为1.1mA, 空间模式为0.35mA,掉电模式为1 A。 多达21种类型的内外部中断源; 片内含上电复位电路以及可编程的掉电检测复位电路BOD; 片内含有1/2/4/8MHz经过标定的、可校正的RC振荡器
4、,可作为系统时钟使用; 有6种休眠模式支持节电方式工作。,ATmega16功能丰富、性能较高,具有下述主要特点:,- 7 -,本教材配套开发板采用的单片机型号是ATmega16A ATmega16A电压范围更宽,速度更快,同时功耗更低 基本结构及功能与ATmega16和ATmega16L相同 在后续的讲解中,以ATmega16为例讲解相关结构及原理,注意:,2.1.1 ATmega16特点,- 8 -,ATmega16有3种典型的封装形式:,2.1.2 ATmega16外部引脚,PDIP-40(双列直插) TQFP-44(方形) MLF-44(贴片形式),双列直插,方形/贴片,- 9 -,2.
5、1.2 ATmega16外部引脚,引脚分类:特殊功能引脚和I/O引脚 特殊功能引脚主要包括: 电源引脚 系统晶振引脚 芯片复位引脚 I/O引脚:4个8位端口PA,PB,PC,PD,- 10 -,Vcc:芯片供电(片内数字电路电源)输入引脚,使用时连接到电源正极。 AVcc:端口A和片内ADC模拟电路电源输入引脚。不使用ADC时,直接 连接到电源正极;使用ADC时,应通过一个低通电源滤波器与Vcc相连。 AREF:使用ADC时,可作为外部ADC参考源的输入引脚。 GND:芯片接地引脚,使用时接地。,1)电源引脚,2.1.2 ATmega16外部引脚特殊功能引脚,电源引脚包括Vcc、AVcc、AR
6、EF和GND,其功能分别概括如下:,- 11 -,XTAL2:片内反相振荡放大器的输出端。 XTAL1:片内反相振荡放大器和内部时钟操作电路的输入端。,2)系统晶振引脚,2.1.2 ATmega16外部引脚特殊功能引脚,系统晶振引脚为XTAL2和XTAL1,其功能分别概括如下:,3)芯片复位引脚,复位引脚为RESET引脚,其主要功能是引起芯片的硬件复位,其具体做法为在该引脚上施加一个最小脉冲宽度为1.5s的低电平。,- 12 -,ATmega16的I/O引脚有4个8位端口,分成PA,PB,PC和PD,全部是 可编程控制的双(多)功能复用的I/O引脚。 4个端口的第一功能均是通用双向数字输入/输
7、出(I/O)口,每一位都可 以由指令设置为独立的输入或输出口。 除了作为通用输入/输出引脚外,每个I/O引脚还具有第二功能,芯片引 脚图中括号内的名称即代表其第二功能,需通过设置相应的寄存器使能 位开启。 默认情况下,按第一功能处理。,2.1.2 ATmega16外部引脚I/O引脚,- 13 -,当I/O口设置为输入方式时,引脚内部还配置有上拉电阻,可通过编程 设置为上拉有效或上拉无效。 芯片RESET复位后,所有I/O口的默认状态为输入方式,上拉电阻无 效,即I/O为输入三态高阻状态。 当I/O口设置为输出方式时,在5V工作电压下,若其输出为高电平,可 以输出20mA的电流;若其输出为低电平
8、,最大可以吸收40mA的电流。,2.1.2 ATmega16外部引脚I/O引脚,对各引脚第一功能作如下说明:,- 14 -,ATmega16主要构成:,2.1.3 ATmega16结构,AVR CPU(内核) 存储器(Flash、SRAM、EEPROM) 各种功能的外围和I/O接口 相关的数据、控制和状态寄存器,- 15 -,AVR内核是ATmega16的核心部分,由算术逻辑单元ALU、程序计数器PC、指令寄存器、指令译码器和32个8位通用寄存器组成。,2.1.3 ATmega16结构内核结构,ATmega16的32个8位通用寄存器R0R31构成一个“快速访问通用寄存器组”,访问时间为1个时钟
9、周期,- 16 -,ATmega16的存储器结构包括: Flash程序存储器 SRAM数据存储器 EEPROM数据存储器 这3个存储器空间相互独立,物理结构也不同,2.1.3 ATmega16结构存储器结构,- 17 -,1)Flash程序存储器,2.1.3 ATmega16结构存储器结构,ATmega16具有16K8或8K16的支持ISP的Flash存储器 用于存放程序指令代码 以16位(字)为一个存储单元 作为数据读取时,以字节为单位 地址空间为0x0000-0x1FFF,- 18 -,2)SRAM数据存储器,2.1.3 ATmega16结构存储器结构,ATmega16共有1120个数据存
10、储器,包含片内SRAM,及映射到数据存储器空间的32个8位通用寄存器和64个8位I/O寄存器,均以8位(字节)为一个存储单元。其中: 32个通用寄存器:映射到数据存储器空间的地址为0x00000x001F。 64个I/O寄存器:I/O空间地址为0x000x3F,映射到数据存储器空间的地 址为0x00200x005F,其寄存器空间分配表详见附录1。 片内SRAM:数据存储器空间地址为0x00600x045F。,- 19 -,3)EEPROM数据存储器,2.1.3 ATmega16结构存储器结构,ATmega16包含512字节的EEPROM数据存储器 EEPROM用于保存系统的设定参数、固定表格和
11、掉电后的数据等 可以提高系统的保密性 以8位(字节)为一个存储单元 地址范围为0x00000x01FF 按字节读写,- 20 -,SREG是一个8位状态寄存器 用来存放指令执行后的有关状态和结果的标志 SREG的每一位状态标志位均代表不同的含义,其状态通常是在程序执行 中自动形成的,也可根据需要人为修改 SREG在I/O空间的地址为0x3F(0x005F),2.1.3 ATmega16结构SREG,I:全局中断使能位。I位置1时,使能全局中断,CPU可以响应中断请求;I位清0时,全局中断禁止,CPU不响应任何中断要求。,- 21 -,2.1.4 系统时钟与熔丝位系统时钟,系统时钟为控制器提供时
12、钟脉冲,是控制器的心脏 系统时钟频率越高,单片机的执行节拍越快,处理速度也 越快 ATmega16的最高工作频率为16MHz,- 22 -,2.1.4 系统时钟与熔丝位系统时钟,ATmega16的系统时钟源可以选择下述3种方式提供: 直接使用片内的1/2/4/8MHz的RC振荡源。由于RC振荡源本身的频 率与标称值有较大的误差,而且受温度变化影响较大,会影响系统 稳定性,实际中较少使用。 在引脚XTAL1和XTAL2上外接由晶振和电容构成的谐振电路,配合 片内的OSC振荡电路构成的振荡源。可提供016MHz的频率,灵活 性高,精度和稳定度也高。是常用的系统时钟驱动方式。 直接使用外部的时钟源输
13、出的脉冲信号。 本教材的开发板采用7.3728MHz的外部晶振作为系统时钟源,- 23 -,AVR单片机中有一组专用的与芯片功能、特性、参数配置相关的可编 程熔丝位。 其中,几个专门的熔丝位用于配置芯片要使用的系统时钟源的类型。 AVR的熔丝位有0和1两种状态。 0:允许编程。 1:禁止编程。 熔丝位的配置(编程)可以通过并行方式、ISP串行方式和JTAG串行 方式实现,可多次编程。 ATmega16出厂时的缺省配置为使用内部1MHz的RC振荡源作为系统 时钟。因此,在第一次使用前,必须先正确配置熔丝位,使其与使用 的系统源类型相匹配。,2.1.4 系统时钟与熔丝位熔丝位及配置,- 24 -,
14、复位是单片机芯片本身的硬件初始化操作 复位的主要功能是把程序计数器的PC初始化为0x0000,使单片机从 0x0000单元开始执行程序,同时绝大部分的寄存器(通用寄存器和 I/O寄存器)也被复位操作清0。,2.1.5 复位源与复位方式,- 25 -,系统上电复位。ATmega16内部含上电复位电路,当系统电源电压Vcc 低于上电复位门限电平时,单片机复位。 外部复位。由外加在RESET引脚上的低电平产生的。当RESET引脚为 拉至低电平且低电平持续时间大于1.5us时,单片机复位。 掉电检测复位。ATmega16有一个片内BOD(电源检测)电路,用于 对运行中的系统电压Vcc检测。当BOD使能
15、,且Vcc低于掉电检测复位 门限(4V或2.7V,通过熔丝位设置)时,单片机复位。 看门狗复位。ATmega16内部集成了一个看门狗定时器WDT。当WDT 使能且WDT超时溢出时,单片机复位。 JTAG复位。当使用JTAG接口时,可由JTAG口控制单片机复位。,2.1.5 复位源与复位方式,ATmega16的5种复位方式:,- 26 -,2.2 通用I/O口,ATmega16有4组8位的通用I/O接口,分别是PORTA,PORTB,PORTC,PORTD(简称PA,PB,PC,PD),对应芯片上的32个I/O引脚。 其第一功能可作为数字通用I/O接口使用,而复用功能可分别用于中断、定时/计数器
16、等应用。,- 27 -,2.2 通用I/O口,基本结构 寄存器 通用I/O编程,- 28 -,2.2.1 基本结构,通用I/O口的工作方式和表现特征由I/O寄存器来控制 每组通用I/O口都配备有3个8位寄存器: (其中n表示A,B,C,D) 方向控制寄存器DDRn:控制I/O口的输入输出方向 数据寄存器PORTn:决定输出电平 输入引脚寄存器PINn 所有的端口引脚都有上拉电阻,可使I/O引脚保持高电平,防止外界干 扰影响电平变化,- 29 -,2.2.1 基本结构,当设置为输出(DDRn=1)时:内部上拉电阻无效,此时PORTn中的数据通过一个推挽电路输出到外部引脚。当PORTn=1时,IO引脚呈现高电平,同时可以输出20mA的电流;而当PORTn=0时,IO引脚呈现低电平,同时可以吸纳20mA的电流。 当设置为输入(DDRn=0)时:读取外部引脚电平时应读取PINn的值,读得的值即为外部引脚上的真实电平。在该方式下,PORTn可以控