资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,广西大学电气工程学院 海涛,第2,章,ATmega,的内部结构及接口特点,第2章,M,16,单片机,的,主要特征及基本结构,4.,1,ATmega16,的主要性,能,:,1、先进的,、,高性能的的8位,CPU,内核结构:,1)耗先进的,RISC(,精简指令集,计算机,)结构;,2)高速度,低功耗的 新8 位中央处理器;,2、非易失性程序和数据存储器:,3、,丰富的核外功能资源电路:,完善的串、并、及,JTAG(,联合测试行动组)接口,。,4、电压范围宽、功率消耗低、时钟频率灵活。,5、极高的性价比和适于高级语言开发,;,4.2,M,16,的,基本组成及,引脚配置,ATmega16 TQFP/MLF,引脚配置,ATmega16,内部结构方框图,M16,的,引脚基本功能(1),1、,VCC:,数字电路电源(+,5,V),2、,GND:,地(0,V),3、,端口,A(PA7,PA0),端口,A,为8 位双向,I/O,口,也是,A/D,转换器的模拟输入端。具有可编程的内部上拉电阻。其输出缓冲器可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。,M16,的,引脚功能,(2),4、端口,B(PB7.PB0),为8位双向,I/O,口,具有可编程的内部上拉电阻。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。,5、端口,C(PC7.PC0),为8 位双向,I/O,口,具有可编程的内部上拉电阻。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口,C,也处于高阻状态。,M16,的,引脚功能(3),6、,端口,D(PD7.PD0),为8位双向,I/O,口,具有可编程的内部上拉电阻。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。,7、,RESET:,复位输入引脚。,8、,XTAL1:,反相振荡放大器与片内时钟操作电路的输入端。,9、,XTAL2:,反相振荡放大器的输出端。,10,、,AVCC:,端口,A,与,A/D,转换器的电源,。,11、,AREF:,A/D,的模拟基准电压输入引脚。,4.3,AVR,单片机的,CPU,内核,ALU,算术逻辑单元,AVR,的,ALU,与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的,ALU,运算只需要一个时钟周期。,ALU,操作可分为3 类:,算术、逻辑和位操作。,状态寄存器,SREG,的位定义,Bit,7-I:,全局中断使能,位,Bit 6 T:,复制存放位,Bit 5 H:,半字节进借位标志位,Bit 4,S:,符号位,S=N V,Bit 3 V:,补码溢出标志位,Bit 2 N:,负数标志位,Bit 1 Z:,零标志位,Bit 0 C:,字节进借位标志位,状态寄存器的功能,状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以实现条件操作,所有,ALU,运算都将影响状态寄存器的内容。,在进入中断服务程序时,状态寄存器不会自动保存,中断返回时也不会自动恢复。这些工作需要软件(进出栈)来处理,。,AVR,的,CPU,内核,(1),CPU,结构综述:,1、,AVR,采用,Harvard,结构,具有独立的数据,和程序总线。主要包括,ALU、,通用寄存器组、,状态寄存器,SREG、,指令计数器,PC(13,位)、指令寄存器,IR、,指令译码器,IE,等。,2、快速访问寄存器是8 位通用工作寄存器,,访问时间为一个时钟周期。,3、32个通用寄存器的后6个,可以组成3个16位,的间接寻址寄存器使用。,AVR,的,CPU,内核,(2),4、,ALU,支持寄存器之间,以及寄存器和常数之间的算,术和逻运算。,5、程序流程通过有/无条件的跳转指令和调用指令,来控制,从而直接寻址整个地址空间。,6、程序存储器空间分为两个区:引导程序区,(,Boot,区),和应用程序区。,7、在中断和调用子程序时,程序计数器(,PC),的返回地,址保存于堆栈之中。堆栈位于通用数据,SRAM,的后部,,因此其深度仅受限于,SRAM,的大小。,AVR,的,CPU,内核,(3),8、,堆栈指针寄存器,位于,I/O,空间,可以进行读写访问。,9、,AVR,有一个灵活的,中断系统模块,,其控制寄存器位于,I/O,空间。状态寄存器里有全局中断使能位。各个,中断的优先级与其在中断向量表的位置有关,中断向,量地址越低,优先级越高。,10、专用寄存器空间包含64个可以直接寻址的专用寄存器,,作为,CPU,的外围电路。,AVR,的,I/O,存储器,ATmega16,所有的,I/O,端口及外围设备都被放置于,I/O,专用空间。所有的,I/O,寄存器都可以通过,IN,与,OUT,指令来访问,在32个通用工作寄存器和,I/O,之间传输数据。,地址为0,x00-0 x1F,的前32个,I/O,寄存器还可用,SBI,和,CBI,指令直接进行位寻址,而,SBIS,和,SBIC,则用来检查某一位的值,。,I/O,专用寄存器列表(1),I/O,专用寄存器列表(2),I/O,专用寄存器列表(3),4.4,AVR,的,存储器,M16,的,程序存储器,M16,系统内可编程的,Flash,程序存储器:,ATmega16,具有,16,K,字节(,8,K,字0000-1,FFF),的在线编程,Flash,,用于存放程序指令代码。,其,结构具有两个主要的存储器空间:应用程序存储空间和引导程序存储空间。两个空间通过对应锁定位来选择,引导区程序可用,SPM,指令再应用修改。,M16,的,数据存储器,数据存储器的寻址方式有5 种,:,1),直接寻址;,2)间接寻址;,3)带常偏移量的间接寻址;,4)带预减量的间接寻址;,5)带后增量的间接寻址;,ATmega16,数据存储器含有:32个通用寄存器;64,个,I/O,专用寄存,器及1024个字节的,SRAM。,可以通过所有上述的寻址方式进行访问。,通用寄存器的,R26,到,R31,可用做间接寻址的指针寄存器,数据存储器映像,32个通用寄存,X、Y、Z,间接寄存器,寄存器,R26R31,除了用作通用寄存器外,常常作为数据间接寻址用的地址指针,堆栈与堆栈指针,1、,堆栈,是,SRAM,存储器的一段连续字节空间。主要用来保存临时数据、局部变量和中断服务与调用子程序的返回地址。堆栈常设在,SRAM,最高端,一般予留8到16个字节大小。,2、,堆栈指针寄存器是指示堆栈即存地址的16位寄存器(,SP)。,高8位为,SPH,与低8位为,SPL,,其地址分别为$3,E($005E),和$3,D(005D),,堆栈指针总是指向堆栈的顶部。,3、堆栈指针必须指向数据,SRAM,堆栈区。调用子程序和使用中断之前必须定义堆栈指针寄存器内容,且堆栈指针必须指向高于0,x60,的地址空间,一般就设为最高位。,4、使用,PUSH,指令将数据压入堆栈时,指针减一;而子程序或中断返回地址压入堆栈时指针将减二。,5、使用,POP,指令将数据弹出堆栈时,堆栈指针加一,;而,用,RET,或,RETI,指令,从子程序或中断子程序返回时堆栈指针加二。,指令执行两级流水时序,AVR CPU,由系统时钟,clkCPU,驱动,此时钟直接来自选定的时钟源,芯片内部对此时钟不再分频。,单时钟周期,ALU,操作时,图2.7 描述的是寄存器文件内部访问时序。在一个时钟周期里,,ALU,可以同时对两个寄存器的操作数进行操作,同时将结果保存到目的寄存器中。,EEPROM,地址寄存器 ,EEARH,和,EEARL,Bits 15.9,Res,:,保留位,读操作返回值为零。,Bits 8.0,EEAR8.0:EEPROM,地址。,EEPROM,数据寄存器,EEDR,Bits 7.0-EEDR7.0;,对于,EEPROM,的读/写操作:,读操作:,EEDR,中是从,EEAR,单元读取的数据;,写操作:,EEDR,中是需要写到,EEAR,单元的数据。,EEPROM,的 控制寄存器,EECR,Bits 7.4,Res,:,保留位,Bit 3,EERIE:EEPROM,准备好中断使能位,Bit 2,EEMWE:EEPROM,主机写使能位,Bit 1,EEWE:EEPROM,写使能位,Bit 0,EERE:EEPROM,读使能位,4.5,系统时钟及时钟选项,AVR,的时钟系统及其分布:,1、,CPU,时钟,clkCPU,2、I/O,时钟,clk,I/O,3、Flash,时钟,clkFLASH,4、,异步定时器时钟,clkASY,5、ADC,时钟,clkADC,时钟系统分配图,M16,的,时钟源,ATmega16,可通过,Flash,熔丝位选择钟源,。,器件时钟选项,CKSEL 3.0,外部晶体,/,陶瓷振荡器,1111-1010,外部低频晶振,1001,外部,RC,振荡器,1000-0101,标定的内部,RC,振荡器,0100-0001,外部(来)时钟,0000,时钟源的熔丝位配置与选择,内部时钟源,器件出厂时:,时钟选择选择熔丝位,CKSEL=,“,0001,”,,,复位延时熔丝,位,SUT=,“,10,”,。,这个缺省设置的时钟源是1,MHz,的内部,RC,振荡器,启动时间为65,MS,最长。,这种设置保证用户可以通过,ISP,或并行编程器得到所需的时钟源,。,外部晶体振荡器接线,图,XTAL1,与,XTAL2,分别为用作片内振荡器的反向放大器的输入和输出。,图2.12 晶体振荡器连接图,图2.13 外部,RC,配置,CKOPT,功率熔丝位,CKSEL3.1,频率范围,使用晶体时,电容,C,和,C2,的,推荐范围,(,PF),1(弱振),101,(,1),0.4-0.9,-,陶瓷谐振器,1,110,0.9-3.0,12-22,1,111,3.0-8.0,12-22,0(强振),101,110,111,1.0,12-22,外部晶体振荡器工作模式,外部的,RC,工作模式选择,片内标定的,RC,振荡器工作模式,CKSEL3.0,频率范围(,MHz),CKSEL3.0,标称频率(,MHz),0101,0.9,0001,(,1),1.0,0110,0.9-3.0,0010,2.0,0111,3.0-8.0,0011,4.0,1000,8.0-12.0,0100,8.0,启动时的熔丝位选择,启动时间由熔丝位,SUT,确定,启动功率由熔丝位,CKOPT,确定,4.6,电源管理及睡眠模式,MCU,控制寄存器,MCUCR,Bits 7,5,4,SM2.0:,休眠模式选择位,2、1 和0,Bit 6,SE:,休眠使能位。为了使,MCU,在执行,SLEEP,指令后进入休眠模式,,SE,必须置位。,SM2,SM1,SM0,休眠模式,0,0,0,空闲模式,0,0,1,ADC,噪声抑制模式,0,1,0,掉电模式,0,1,1,省电模式,1,0,0,保留,1,0,1,保留,1,1,0,Standby,(1),模式,1,1,1,扩展,Standby,(1),模式,电源管理及睡眠模式列表,4.7,系统控制和复位,复位时所有的,I/O,寄存器都被设置为初始值,程序从复位向量处开始执行。,复位源:,M16,有5个复位源,1、上电复位。,2、外部复位。,3、看门狗复位。,4、掉电检测复位。,5、,JTAG AVR,复位。,MCU,控制和状态寄存器,MCUCSR,Bit 4,JTRF:JTAG,复位标志,置位有效。,Bit 3,WDRF:,看门狗复位标志,置位有效。,Bit 2,BORF:,掉电检测复位标志,置位有效。,Bit 1,EXTRF:,外部复位标志,置位有效。,Bit 0,PORF:,上电复位标志,置位有效。,系统上电复位(1),2、上电复位:,上电复位,(,POR),脉冲由片内检测 电路产生。,3、外部复位:,外部复位由外加,于,RESET,引脚的低电 平产生。,4、掉电检测:,工作过程中发生外部复位时序,工作过程中发生掉电检测复位时序,系统掉电复位(2),看门狗复位(3),看门狗复位,看门狗定时器溢出时将产生持续时间为1个,CK,周期的复位脉冲。在脉冲的下降沿,延时定时器开始对,tTOUT,记数。,内部电压基准源的特性,符号,参数,最小值,典型值,最大值,单位,V,BG,能隙基准源电压,1.15,1.23,1.35,V,t,BG,能隙基准源启动时间,40,70,s,I,BG,能隙基准源功耗,10,A,ATmega16,具有片内能隙基准源,用于掉电检测,或者是作为模拟比较器或,ADC,的输入。,ADC,的2.56,V,基准电压由此片内能隙基准源产生。,片内基准电压,看门狗定时器,看门狗定时器由独立的1,MHz,片内振荡器驱动,其复位指令,WDR,用来复位看门狗定时器,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有8个选项。,看门狗定时器控制寄存,WDTC,Bits 7.5,Res,:,保留位,Bit 4,WDTOE:,看门狗修改使能,Bit 3,WDE:,使能看门狗,Bits 2.0,WDP2,WDP1,WDP0:,看门狗定,时器预分频器2,1 和 0。,4.8,中断系统,ATmega16,的,中断向量就是中断的入口地址,中断入口设置,(复位和中断向量,),复位和中断向量位置的确定,下表给出在不同的,BOOTRST/IVSEL,设置下,复位和中断向量的位置,用户可以在此直接写程序,。,1.熔丝位,BOOTRST,被编程时(0),,MCU,复位后程序跳转到,BootLoader,(Boot Reset Address)。,2.,当寄存器,GICR,的,IVSEL,置位时,中断向量转移到,Boot,区的起始地址。此时各个中断向,量的实际地址为表中地址与,Boot,区起始地址之和。,通用中断控制寄存(,GICR),Bit 1,IVSEL:,中断向量选择位。为0时不修改,,为1时转移到,BOOT,区。,Bit 0,IVCE:,中断向量修改使能位。,为1时允许修改,为0时不允许修改。,复位和中断向量位置的确定,下表给出在不同的,BOOTRST/IVSEL,设置下,复位和中断向量的位置,用户可以在此直接写程序,。,1.熔丝位,BOOTRST,被编程时(0),,MCU,复位后程序跳转到,BootLoader,(Boot Reset Address)。,2.,当寄存器,GICR,的,IVSEL,置位时,中断向量转移到,Boot,区的起始地址。此时各个中断向,量的实际地址为表中地址与,Boot,区起始地址之和。,中断与中断处理,1、中断处理,M16,有21个中断源(含复位,中断,),每个中断在程序存储器空间都有独立的中断向量(即入口地址)。所有的中断事件都有自己的使能位,当使能位置位,且状态寄存器的全局中断使能,位,I,也置位时,中断可以进行。,2、中断两种,的,类型,第一种由事件触发并置位中断标志,。,对于这类中断,程序计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志。,第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中断标志,。,中断响应时间,中断响应时间:,1、,AVR,中断响应时间最少为4个时钟周期。4个时钟周期后,程序跳转到实际的中断处理程序。(在这4个时钟期期间,PC,自动入栈。在通常情况下,中断向量为一个跳转指令,此跳转需要3个时钟周期。),2、如果中断在一个多时钟周期指令执行期间发生,则在此多周期指令执行完毕,后,MCU,才会执行中断程序。,3、若中断发生,时,MCU,处于休眠模式,中断响应时间还需增加4个时钟周期。,4.9,I/O,输入/输出端口,1、,作为通用的数字,I/O,使用时,所有,AVR,的,I/O,端口都具有真正的读-修改-写功能。,2、用,SBI,或,CBI,指令可以单独改变任一管脚的方向。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动,LED。,3、,所有端口引脚都有内部上拉电阻,且 有保护二极管,与,VCC,和地相连,在输入时可以选用。,通用数字,I/O,的端口,端口引脚配置,每个端口都具有三个寄存器:,(,X=A、B、C、D),DDRx,-,数据方向寄存器,、,PORTx,-,数据数值寄存器,、,PINx,-,引,脚电平寄存器。,每个端口寄存器都有8个位,:(,n=0、1、2、3、4、5、6、7),DDRxn,-,寄存器端口位,、,PORTxn,-,寄存器端口位,、,PINxn,-,寄存器端口位。,I/O,引脚等效原理,图,1、数据方向寄存器:,DDRxn,;,2、,数据数值寄存器:,PORTxn,;,3、,端口引脚寄存器:,PINxn,;,端口配置注意事项:,1、,DDRxn,用来定义端口工作方向,。,X,表示端口,,n,表示引脚。,DDRxn,=1,,该端口位配置为输出。内拉电阻无效。,DDRxn,=0,,该端口位配置为输入。,2、当端口引脚配置为输入时:,若,PORTxn,=1,,PUD=0,,内拉电阻使能。,PUD=1,,内拉电阻无效。,若,PORTxn,=0,PUD=0/1,,内部上拉电阻无效。,3、,复位时各引脚均为高阻态。,即使此时并没有时钟在运行。,端口设置举例,例2.7 配置端口,A,的引脚03输出高电平、引脚47输出低电平。,DDRA0 x0FF;/8,位全高电平1,表示输出,DDRTA0 x0F;,例2.8 假设端口,B,的引脚和外部连接、要读端口,B,的电平。,unsigned char c;/,定义无符号字符,C,C=PINB;/,令,C,等于,B,端口电平,本 章 小 结,本章主要介绍,ATmega,单片机内部结构、指令特点及引脚封装及主要特性。,1、,AVR,采用了,Harvard,结构,具有独立的数据和程序总线。,2、,ATmega16,有如下特点:16,K,字节的系统内可编程,Flash,32,个通用,I/O,口线,32个通用工作寄存器;支持片内调试与编程;三个具有比较模式的灵活的定时器/计数器(,T/C);,片内/外中断;可编程串行,USART,,有起始条件检测器的通用串行接口;具有片内振荡器的可编程看门狗定时器;一个,SPI,串行端口,,以及六个可以通过软件进行选择的省电模式。,3,、,I/O,存储器空间包含,64,个可以直接寻址的地址,作为,CPU,外设的控制寄存器、,SPI,,以及其他,I/O,功能。映射到数据空间即为寄存器文件之后的地址,0,x20-0 x5F。,4、,对算术逻辑单元、状态寄存器、,X、Y、Z,寄存器、堆栈指针进行了说明。详细阐述了单片机的数据存储单元的数据调用存储,数据寄存器的使用,芯片时钟的选择,中断相量以及,I/O,的引脚使用设置。相应的寄存器使用也做了详细的讲解。,1,.,ATmega16,的主要特性有哪些?,2,.,ATmega16,有哪几个,I/O,端口?正确使用这些端口要进行怎样的设置?,3,.,ATmega16,的,A,端口除了可作为,I/O,外还可作什么用?,4,.,状态寄存器每一位是如何定义的?,5,.,堆栈的概念及工作过程是怎样的?,习 题,6,.,ATmega16,的数据存储器和程序存储器包括哪些?如何进行访问?,7,.,AVR,的时钟系统及其分布是怎样的?,8,.与,AVR,电源管理相关的寄存器是哪个?,AVR,睡眠模式有哪几种?,9,.,ATmega16,有几个复位源?请说出它们的名字。涉及到的寄存器是什么?,10,、,AVR,每个端口引脚都具有三个寄存器位,请说出它们的名字。这些寄存器有什么作用,?,11、什么是中断响应时间?最少需要几个时钟周期?,12,、,MCU,控制和状态寄存器(,MCUCSR),每一位的作用是什么?,13,、,ATmega16,的中断向量的中断向量有哪些?,14、通用中断控制寄存器(,GICR),的作用是什么?如何设置?,
展开阅读全文