jz-k3开发板光盘8.单片机和相关芯片atmega8515l_第1页
jz-k3开发板光盘8.单片机和相关芯片atmega8515l_第2页
jz-k3开发板光盘8.单片机和相关芯片atmega8515l_第3页
jz-k3开发板光盘8.单片机和相关芯片atmega8515l_第4页
jz-k3开发板光盘8.单片机和相关芯片atmega8515l_第5页
已阅读5页,还剩250页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

具有8KB具有8KB系统内可编程Flash的8位 本文是英文的中文翻译,其目的是方便中国用户的阅读。它无法自动跟随原稿的更新,同时也可能存在翻译上的错误。读者应该以英文原稿为参考以获得更Rev.–16MHz16 8K–Boot代码 :–Boot代码擦写:100,000擦写:100,000–达到64K–达到64K字节的可选外部器空8–三通–三通SPI35I/O40PDIP,44TQFP,44PLCC44MLF0-8MHz0-16MHzFigure1.ATmega8515

(OC0/T0) (T1) (AIN0) (AIN1) (SS) (MOSI) (MISO) (SCK) (RXD) (TDX) (INT0) (INT1) (XCK) (OC1A) (WR) (RD)

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PE0 PE1 PE2 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0PB4(SS)PB4(SS)PB1(T1)PB4(SS)PB1(T1)65432(MOSI)65432(MISO) (SCK) (RXD) (TXD) (INT0) (INT1) (XCK) (A8)PC0(A9)PC1(A12)

PA5 PA6 PA7 PE0 PE1 PE2 PC7 PC6

(MOSI) (MISO) (SCK) (RXD) (TXD) (INT0) (INT1) (XCK)

PA4 PA5 PA6 PA7 PE0 PE1 PE2 PC7 PC6 PC5(A8)PC0(A9)PC1(A12)MLFbottompadshouldbesolderedto*NC=Donotconnect(Maybeusedinfuture 方框 Figure2.结构框PB0-

PE0- PC0-PD0-AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元CISC微控制器最高至10倍的数据吞吐率。ATmega8515有如下特点:8K字节的系统内可编程Flash(具有同时读写的能力,即USART,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及三个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了本是以Atmel高密度非易失性器技术生产的。片内ISPFlash允许程序器通ISPAVR内核之中的引导程运行,实现了RWW操作。通过将8RISCCPU与系统内可编程的Flash集成在一个内,ATmega8515成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活试器/软件仿真器、仿真器及评估板。ATmega8515

本的典型值来源于对器件的仿真,以及其他基于相同产生工艺的AVR微控制器本上对AT90S4414/8515向下兼容。但两者间还会存在不兼容的问题。可通过对脚与AT90S4414/8515引脚100%兼容,也可在电路印刷板上替换AT90S4414/8515, USARTP127“AVRUSARTAVRUART兼容性”。 端口A(PA7..PA0) 低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。端口B(PB7..PB0) 低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。端口C(PC7..PC0) 端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。端口D(PD7..PD0) 端口D为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。端口E(PE2..PE0) 拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口E处于高阻状态。 代码例子 包含了一些简单的代码例子以说明如何使用各个不同的功能模块。这些例子都假定在编译之前已经包含了正确的头文件。有些C编译器在头文件里并没有包含位定义,而且各个C编译器对中断处理有自己不同的处理方式。请注意查阅相关文档以获取具体的信息。AVRCPU DataBus8-DataBus8-ControlI/OI/OModuleI/OModuleI/O32xAVRHarvard结构,具有独立的数据和程序总线。程序器里的指令通过一级流水线运行。CPU在执行一条指令的同时下一条指令(在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序器是可以在线编程的Flash。快速寄存器文件包括32个8位通用工作寄存器,时间为一个时钟周期。从而实寄存器文件里有6个寄存器可以用作316位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序器查询表的地址指针。这些附加的功能寄存器即为16位的X、Y、Z寄存器。多数指令长度为16位,亦即每个程序器地址都包含一条16位或32位的指令。程序器空间分为两个区:引导程序区(Boot区)和应用程序区。这两个区都有专门的锁定位以实现读和读/写保护。用于写应用程序区的SPM指令必须位于引导程序区。在中断和调用子程序时返回地址的程序计数器(PC保存于堆栈之中。堆栈位于通用数据SRAM,因此其深度仅受限于SRAM的大小。在复位例程里用户首先要初始化堆栈指针有关,中断向量地址越低,优先级越高。其他I/O功能。映射到数据空间即为寄存器文件之后的地址0x20-0x5F。ALU-算术逻辑单元 的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作。此外还提供了支持无/有符号数和分数乘法的乘法器。具体请参见指令集。状态寄存器 状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以实现条件操作。如指令集所述,所有ALU运算都将影响状态寄存器的内容。这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。76543210ITHSVNZC00000000Bit7I论单独中断标志置位与否,都不会产生中断。任意一个中断发生后I,而执行RETI指令后I恢复置位以使能中断。I也可以通过SEI和CLI指令来置位和。Bit6T位拷贝BLD把T拷贝到寄存器的某一位。Bit5HHBCD运算非常有用。详见指令集Bit4S,SNBit3V2Bit2NBit1ZBit0C 寄存器文件针对AVR增强型RISC指令集做了优化。为了获得需要的性能和灵活性,寄存器文件支持以下的输入/输出方案:Figure4.AVRCPU ……行时间为单个时钟周期。头32个地址。虽然寄存器文件的物理实现不是SRAM,这种内存组织方式在寄存器方面具有极大的灵活性,因为X、Y、Z寄存器可以设置为指向任意寄存器的指针。X、Y、Z寄存器 寄存器R26..R31除了用作通用寄存器外,还可以作为数据间接寻址用的地址指针。这三个间接寻址寄存器示于Figure5。Figure5.XYZ

R27 R26

R29

R31

堆栈指针主要用来保存临时数据、局部变量和中断/子程序的返回地址。堆栈指针总是指向堆栈的顶部。要注意AVR的堆栈是向下生长的,即新数据推入堆栈时,堆栈指针的数堆栈指针指向数据SRAM堆栈区。在此了子程序堆栈和中断堆栈。调用子程序和使能中断之前必须定义堆栈空间,且堆栈指针必须指向高于0x0的地址空间。使用PUSH指令将数据推入堆栈时指针减一;而子程序或中断返回地址推入堆栈时指针将减二。使用POP指令将数据弹出堆栈时,堆栈指针加一;而用RET或RETI指令从子程序或中断返回时堆栈指针加二。注意某些AVR器件的数据区太小,用SPL就足够了。此时将不给出SPH寄存器。8765432100000000000000000 这一节介绍指令执行过程中的时序。AVRCPU由系统时钟clkCPU驱动。此时钟直接比、功能/时钟比、功能/功耗比。Figure6.

1stInstruction2ndInstructionFetch3rdInstructionFetch3rdInstructionExecute4thInstructionFetchFigure7.ALU ResultWriteBack I也置位时,中断可PCBLB02BLB12被编程的情况下,中断可能被自动。这个特性提高了软件的安全性。详见P169“器编程”的描述。RESET具有最高的优先级,第二个为INT0–外部中断请求0。通过置位MCU控制寄存器(MCUCR)的支持引导装入程序–任一中断发生时全局中断使能位I被,从而了所有其他的中断。用户软件可以在I来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执行RETI指令后I自动置位。断标志也可以通过对其写”1”的方式来清除。当中断发生后,如果相应的中断使能位为中断标志被,则所有已发生的中断都不会被执行,直到I置位。然后挂起的各个中断复。这些工作必须由用户通过软件来完成。使用CLI指令来中断时,中断立即生效。没有中断可以在执行CLI指令后发生,CLIEEPROM时使用这个指令来防止中断发生以避免对EEPROM内容的破坏。inr16, sbiEECR,启动EEPROMsbiEECR,outSREG,SREG(IcharcSREGSREG;/*SREG/*中断EECR|=1<<EEMWE);/*启动EEPROMEECR|=SREGcSREG;/*SREG(I ;在执行任何被挂起的中断之前MCU/*在执行任何被挂起的中断之前MCU 执行完毕后MCU才会执行中断程序。若中断发生时MCU处于休眠模式,中断响应时间器SREG的I置位。系统内可编程的Flash

本节讲述ATmega8515的器。AVR结构具有两个主要的器空间:数据器空间和程序器空间。此外,ATmega8515还有EEPROM器以保存数据。这三个程序器的两个区:引导(Boot)程序区和应用程序区,分开来考虑。引导装入程序–在写的同时可以读(RWW,Read-While-Write)的自我编程能力”,而P169“器编程”详述了用SPI接口实现对Flash的串行。常数可以保存于整个程序器地址空间(参考LPM加载程序器指令的说明)。取指与执行时序图请参见P10“指令执行时序”。Figure8.程序ApplicationApplicationFlashBootFlashSRAM数据 前608个数据器包括了寄存器文件、I/O器及内部数据SRAM。起始的96个地址为寄存器文件与I/O器,接着是512字节的内部数据SRAM。普通模式下,寄存器文件、I/O器、扩展的I/O器以及内部数据SRAM占据了低608字节。因此,在使用外部64928P22外部器接口”。当SRAM的地址超出内部SRAM的地址时,MCU将对外部SRAM(指令相同)。内部SRAM时读/写锁存信号(PD7和PD6)无效。若要外部SRAM,必须置位MCUCR的SRE。外部SRAM比内部的要多一个时钟周期,这意味着LD、ST、LDS、STS、LDD、STD、PUSHPOP指令将多一个时钟周期。如果堆栈放置于外部SRAM,则中SRAM1、2、3个等待周期,则周期将相应变为2、3、4个时钟周期;中断和子程序调用的开销则变为5、7、9个时钟周期。以及后加的间接寻址。寄存器R26到R31为间接寻址的指针寄存器。带预减和后加的间接寻址模式要用到X、Y、Z指针。存器文件说明见P8“通用寄存器文件”。Figure9.数据ExternalSRAM(0-64Kx8)ExternalSRAM(0-64Kx8)(512x8)64I/O32Data$0020- 本节说明内部器的时序。如Figure10所示,内部数据SRAM时间为两clkCPUFigure10.SRAM

MemoryAccess EEPROM数据器 ATmega8515包含512字节的EEPROM数据器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM的至少为100,000次擦除周期。EEPROM的访EEPROM读/写EEPROM的寄存器位于I/O空间下一字节。用户操作EEPROM需要注意如下问题:在电源滤波时间常数比较大的电路VCC上升/下降速度会比较慢。此时CPU可能工作于低于晶振所要求的电源电压。请参见P21防止EEPROM数据丢失”以避免出现EEPROM数据丢失的执行EEPROMCPU会停止工作48–8–––––––76543210RRRRRRR0000000XXXXXXXXX和Bits15..9ResBits8..0EEAR8..0EEPROMEEPROM地址寄存器–EEARH和EEARL指定了512字节的EEPROM空间。EEPROM地址是线性的,从0到511。EEAR的初始值没有定义。在EEPROM之前必须为其赋77654321000000000

EEPROMEEDR是需要写到EEAREEDR是从地址EEAR的数据。76543210––––RRRR000000X0Bits7..4Res若SREG的I为"1",则置位EERIE将使能EEPROM准备好中断。EERIE则此中断。当EEWE时EEPROM准备好中断即可发生。Bit2EEMWE:EEPROM钟周期内置位EEWE将把数据写入EEPROM的指定地址;若EEMWE为"0“,则操作EEWE不起作用。EEMWE置位后4个周期,硬件对其。见EEPROM写过程中对EEWE位的描述。Bit1EEWE:EEPROMEEWE为EEPROM写操作的使能信号。当EEPROM数据和地址设置好之后,需置位发生。写时序如下(第3步和第4步的次序并不重要):EEPROMEEAREEPROMEEDR在CPU写Flash器的时候不能对EEPROM进行编程。在启动EEPROM写操作之Flash2CPU对Flash进行编程时才有用。如果CPU都不会写Flash,步骤(2)可省略。请参见P156“支持引导装入程序–在写的同时可以读(RWW,Read-While-Write)的自我编程能力”。56EEPROM写使能操寄存器可能被修改,引起EEPROM操作失败。建议此时关闭全局中断标志I。Bit0EERE:EEPROM数据读入EEAR。EEPROM数据的只需要一条指令,且无需等待。EEPROM后CPU要停止4个时钟周期才可以执行下一条指令。用户在EEPROM时应该检测EEWE。如果一个写操作正在进行,就无法EEPROM,也无法改变寄存器EEAR。Table1.EEPROMEEPROM8.5Note:1.1MHzCKSEL下面的代码分别用汇编和C函数说明如何实现EEPROM的写操作。在此假设中断不会在则EEPROM写函数还需要等待正在运行的SPM命令的结束。;sbicrjmpoutEEARH,outEEARL,;将数据写入数据寄存器outsbisbivoidEEPROM_write(unsignedintuiAddress,unsignedchar{while(EECR&;EEAR=uiAddress;EEDR=/*EEMWEEECR|=EECR|=};sbicrjmpoutEEARH,outEEARL,sbi;自数据寄存 数 unsignedcharEEPROM_read(unsignedint{while(EECR&;EEAREECR|=return}

EEPROMEEPROM的写操作将继续,并在全的掉电模式。因此在执行掉电指令之前应结束EEPROM的写操作。防止EEPROM数据丢失 若电源电压过低,CPU和EEPROM有可能工作不正常,造成EEPROM数据的毁坏(丢EEPROMEEPROM写操作所需要的最低电压;二是CPU本身已经无法正常工作。当电压过低时保持AVRRESET信号为低。这可以通过使能的掉电检测电路BOD来实现。如果BOD电平要求则可以使用外部复位电路。若写操作过程当中I/O ATmega8515的I/O空间定义见P228“寄存器概述”ATmega8515所有的I/O及外设都被放置于I/O空间。所有的I/O位置都可以通过IN与OUT指令来,在32个通用工作寄存器和I/O之间传输数据。地址为0x00-0x1F的I/O寄存器还可用SBICBI指令直接进行位寻址,而SBISSBIC则用来检查某一位的值。内容请参见指令集。使用IN和OUT指令时地址必须在0x00-0x3F之间。如果要象SRAM一样通过LD和ST指令I/O寄存器,相应的地址要加上0x20为了与后续产品兼容,保留未用的未应写"0",而保留的I/O"1AVR不同,CBI和SBI指令只能对某些特定的位进行操作,因而可以用于包含这些状态标志的寄存器。CBI与SBI指令只对0x00到0x1F的寄存器有效。外部器接 使能外部器(XMEM)时,可以使用专门的外部器引脚(参见P2Figure1,P62Table26,P65Table32和P70Table38)。器配置如Figure11所示。InternalInternalLowerUpper(0-64Kx8)

外部器接口控制位于3个寄存器当中,MCU控制寄存器–MCUCR、扩展MCU控制寄存器–EMCUCR以及特殊功能IO寄存器–SFIOR。使能XMEM接口后,XMEM接口数据方向寄存器按照接口要求配置,详见P55“I/O端口”。XMEM接口将自动检测当前的是内部器还是外部器。如果的是外部器,XMEM接口按照Figure13(此图没有等待周期)输出地址,数据和控制信号。当ALE产生由高电平到低电平的变化时,AD7:0出现有效的地址。数据传输过程中ALE保持为低。使能XMEM接口之后,即使内部 器也会在地址线,数据线和ALE引脚产生动作,但是RD和WR信号不会发生变化。 可以使用正常的引脚数据方向设置了。要注意的是,XMEM接口后内部SRAM地址以上的器不会映射为内部SRAM。Figure12说明了如何利用一个8位锁存器将外部SRAM连接到AVR。 由于XRAM接口的工作速度很高,当系统的工作条件高于8MHz@4V和4MHz@2.7V时要注意选择地址锁存器。此时典型的老式74HC系列锁存器已经要求了。DQG拉低之后的数据保持时间XRAM接口的设计出发点是保证G拉低之后地址信号保持时间最少为th5ns。具体请参考Table98~P193Table105中的参数tLAXX_LD/tLLAXX_ST。计算外部器件的时间要求时必须考虑D到Q的传输延迟tPD。而G拉低之前的数据建立时间tSU决不能大于地址有效到ALE拉低的时间(tAVLLC)减去PCB的线路延迟时间(与负载电容有关)。 对PORT写"0“以上拉电阻。XMEM接口还提供了AD7:0的总线保持功能。总线保持可以由软件禁用与使能,如P27“IOSFIORAD7:0的前一个数据,同时XMEM接口使AD7:0总线处于三态。 外部器器件有不同的时序要求。为了满足这些要求,ATmega8515XMEM接口提供了4种不同的等待状态,如Table3所示。在选择等待状态之前首先要考虑外部器器件的时序要求。相对于ATmega8515的信号建立要求,最重要的参数是器时间。外部寄存器的时间为接收到片选/地址信号直到这个地址的数据出现在总线上的时间间隔。这个时间不能大于ALE拉低到数据稳定的时间(参见Table98到P193Table105tLLRL+tRLRH-tDVRH)。软件可以设置不同的等待状态。而且可以将外部器空间分为两个区,每个区具有独立的等待状态。从而可以将两个具有不同时序要求的器器XMEMXMEMFigure89Figure92Table98Table105XMEM接口是异步的,所有的波形都与内部系统时钟有关。由于内部时钟和外部时钟(XTAL1)的相位差与温度和工作电压有关,因此XMEM接口不适合于同步操作。 SystemClock

A15:8Prev. DA7:0Prev.

Address

DA7:0(XMBK=0)Prev.

DA7:0(XMBK=1)Prev. 1.SRWn1=SRW11(高地址器区)或SRW01(低地址器区),SRWn0=SRW10(高地址器区)或SRW00(低地址器区)。T4中的ALE脉冲仅在下一个指令RAM(内部的或是外部的)时才会出现Figure14.SRWn1=0及SRWn0=1(1)时的外部数 SystemClock

A15:8Prev. DA7:0Prev.

Address

DA7:0(XMBK=0)Prev. DA7:0(XMBK=1)Prev. 1.SRWn1=SRW11(高地址器区)或SRW01(低地址器区),SRWn0=SRW10(高地址器区)或SRW00(低地址器区)T5中的ALE脉冲仅在下一个指令RAM(内部的或是外部的)时才会出Figure15.SRWn1=1及SRWn0=0(1)时的外部数 SystemClock

A15:8Prev. DA7:0Prev.

Address

DA7:0(XMBK=0)Prev. DA7:0(XMBK=1)Prev. 1.SRWn1=SRW11(高地址器区)或SRW01(低地址器区),SRWn0=SRW10(高地址器区)或SRW00(低地址器区)T6中的ALE脉冲仅在下一个指令RAM(内部的或是外部的)时才会出Figure16.SRWn1=1及SRWn0=1(1)时的外部数 SystemClock

A15:8Prev. DA7:0Prev.

Address

DA7:0(XMBK=0)Prev. DA7:0(XMBK=1)Prev. 1.SRWn1=SRW11(高地址器区)或SRW01(低地址器区),SRWn0=SRW10(高地址器区)或SRW00(低地址器区)T7中的ALE脉冲仅在下一个指令RAM(内部的或是外部的)时才会出7654321000000000Bit7SRESRAM/XMEM能,且自动按照要求配置端口方向寄存器。SRE将使外部SRAM无效,相关端口可以当作普通I/O口使用。Bit6SRW10等待状态选择位详见下面SRWn部分的说明。

7654321000000000对于不同的外部器地址可以配置不同的等待状态。外部器地址空间可以分为两个区,而且可以具有独立的等待周期设置位。SRL2,SRL1和SRL0用来对器地址空间进行分区,如Tale2和Fiure11所示。SRL2,SRL1和SRL0设置为0,即整个外部器地址空间为一个大区。此时等待周期通过SRW11和SRW10设置。.000低地址器区=高地址器区=0x0260-001低地址器区=0x0260-高地址器区=0x2000-010低地址器区=0x0260-高地址器区=0x4000-011低地址器区=0x0260-高地址器区=0x6000-100低地址器区=0x0260-高地址器区=0x8000-101低地址器区=0x0260-高地址器区=0xA000-110低地址器区=0x0260-高地址器区=0xC000-111低地址器区=0x0260-高地址器区=0xE000-Table3.00011011Note:1.n=0或1(低/高地址器区765476543210––00000000据不变,即使XMEM接口将这些口线设置为三态。XMBK为零时总线保持功能。在缺省条件下,使能外部器之后所有的端口C引脚都被用作地址。如果系统不64,928字节外部器地址空间,端口C的某些引脚可以释放,用作普通的XMMn来外部器所有64KB的位置。000864,928无00170106PC7-0115PC7-1004PC7-1013PC7-1102PC7-111全部的端口使用小于64KB的外部器 如Figure11所示,外部 器映射到内部器之后,当头608字节时,外部器 器的头608字节不可(地址0x0000~0x25F)。但当外部器小于64KB时,例如为32KB,则通过从0x8000~0x825F的定址,很容易对其进 。由于外部器地址位A15没有与外部器相连接,地址0x8000~0x825F将作为外部器的0x0000~0x25F。不推荐对0x825F向上寻址,因为这些位置已经Figure17Figure17.32KB外部器地址映AVRMemoryAVRMemoryExternal32KInternal使用全部64KB外部器 如Figure11所示,外部器映射到内部器之后,因此在缺省条件下MCU只能访问64KB的外部器(地址0x0000~0x025F为内部器所保留)。然而,可以利用地址的方法来整个64KB的外部器,由软件控制XMMn位。通过设置端口C输出0x00,并释放最,器接口就可以地址0x0000-0x1FFF了。请汇编代码例程 ldir16,0xFFoutDDRC,r16ldir16,0x00outPORTC,释放 r16,stsXMCRB,;写0xAA到外部器的0x0001地 r16, r16,stsXMCRB,;将0x55写入外部器地址(OFFSET+ r16, C代码例程#defineOFFSETvoid{unsignedchar*p=(unsignedchar*)(OFFSET+DDRC=0xFF;PORTC=0x00;XMCRB=(1<<XMM1)|*p=0xaa;XMCRB=0x00;*p=} 1. Figure18为AVR的主要时钟系统及其分布。这些时钟并不需要同时工作。为了降低功耗,可以通过使用不同的睡眠模式来无需工作的模块的时钟,如P37“电源管理及睡眠模式”。Figure18.cSourceExternalWatchdogResetCPUAVRControlCPU时钟-clkCPU 栈指针的数据器。终止CPU时钟将使内核停止工作和计算。I/O时钟-clkI/O 有如下几种通过熔丝位选择的时。时钟输入到AVR时钟发生器,并通往其他合Table5.时选择RC1000-RC0100-Note:1.“1“0每个时在后续部分单独介绍。当CPU自掉电模式或省电模式唤醒之后,被选择的时CPU从复WDT振荡器周期数列于Table6。看门狗振荡器的频率与工作电压有关,具体请参见P196“ATmega8515典型特性”。Table6.(VCC(VCC4.14.34K656964K默认时在出厂时CKSEL=“0001”,SUT=“10”。默认 为有最长启动时间的内部 XTAL1和XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如Figure19所示。这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。熔丝位CKOPT用来选择这两种放大器模式的其中之一。当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2驱动第二个时钟缓冲器的情况。而且这种模式的频率范围比较宽。当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。对于谐振器,CKOPT未编程时的最大频率为8MHzCKOPT编程时为16MHzC1C2的数值要一样,不管使用的是晶体还是谐振器。最佳的数值与使用的晶体或谐振器有关,还与杂散电容和环境的电磁噪声有关。Table7给出了针对晶体选择电容的一些指Figure19.

位CKSEL3..1来选择,如Table7所示。.频率范围C1C210.4-–10.9-12-13.0-12-0101,110,1.012- 1..(VCC=02584.102586501K–01K4.111K65116K–晶体振荡器,BOD使116K4.1116K65 1.这些选项只能用于工作频率不太接近于最大频率,而且启动时的频率稳定性对于应用2这些选项是为陶瓷谐振器设计的,可以保证启动时频率足够稳定。而且当工作频率不太 为了使用32.768kHz钟表晶体作为器件的时,必须将熔丝位CKSEL设置为“1001”以选择低频晶体振荡器。晶体的连接方式如Figure19所示。通过对熔丝位CKOPT的编值为36pF。.(VCC=1K4.11K6532K65Note:1.外部RC振荡器 对于时间不敏感的系统,可以使用Figure20所示的外部RC振荡器。频率可以通过方程能XTAL1和GND之间的片内36pF电容,从而无需外部电容。Figure20.RC C

位CKSEL3..0选取,如Table10所示。Table10.RC-0.9-3.0-8.0-.(VCC=18–184.1186564.1 1.标定的片内RC振荡器 标定的片内RC振荡器提供了固定的1.0、2.0、4.0或8.0MHz的时钟。这些频率都是5V、25C下的标称数值。这个时钟也可以作为系统时钟,只要按照Table12对熔丝位CKSEL进行编程即可。选择这个时钟(此时不能对CKOPT进行编程)之后就无需外部器件了。复位时硬件将标定字节加载到OSCCAL寄存器,自动完成对RC振荡器的标定。在5V,25C和频率为1.0MHz时,这种标定可以提供标称频率±3%的精度;使用用这个振荡器作为系统时钟时,看门狗仍然使用自己的看门狗定时器作为溢出复位的依据。的有关标定数据的信息请参见P171“标定字节”。. 1.SUT确定,如Table13XTAL1.(VCC=6–64.1665

1.76543210 器频率偏差。复位时1MHz的标定数据(标识数据的高字节,地址为0x00)自动加载到 标识数据,然后将标定数据保存到Flash或EEPROM之中。这些数据可 ,然后加载到OSCCAL寄存器。当OSCCAL为零时振荡器以最低频率标定的振荡器用来为EEPROM和Flash定时。有写EEPROM和Flash的操作时不要将频率标定到超过标称频率的10%,否则写操作有可能失败。要注意振荡器只对1.0、2.0、4.0和8.0MHz这四种频率进行了标定,其他频率则无法保证。Table14.RCOSCCAL 为了从外部时驱动,XTAL1必须如Figure21所示的进行连接。同时,熔丝位GND之间的36pF电容。Figure21..(VCC=6–64.1665 睡眠模式可以使应用程序关闭MCU中没有使用的模块,从而降低功耗。AVR具有不同MCUCRSESLEEP指令。具体哪一种模式(空闲模式、掉电模式、Standby模式)由MCUCR的SM2MCUCR的SM1和过启动时间,外加4个时钟周期后,MCU就可以运行中断例程了。然后返回到SLEEP的下一条指令。唤醒时不会改变寄存器文件和SRAM的内容。如果在睡眠过程中发生了复位,则MCU唤醒后从中断向量开始执行。P30Figure18ATmega8515不同的时钟系统及其分布。此图在选择合适的睡眠模7657654321000000000

Bit5SE为了使MCU在执行SLEEP指令后进入睡眠模式,SE必须置位。为了确保进入睡眠模式是程序员的有意行为,建议仅在SLEEP指令的前一条指令置位SE。一旦唤醒立即清除SE。Bit4SM176543210–––00000000Bit5SM27657654321000000000Bits7SM0Table16.000001010011100101110Standby模式111Note:1.Standby 当SM2..0为000时,SLEEP指令将使MCU进入空闲模式。在此模式下,CPU停止运行,而SPI、USART、模拟比较器、定时器/计数器、看门狗和中断系统继续工作。这个睡眠模式只停止了clkCPU和clkFLASH,其他时钟则继续工作。象定时器溢出与USART传输完成等内外部中断都可以唤醒MCU。如果不需要从模拟比较器中断唤醒MCU,为了减少功耗,可以切断比较器的电源。方法是置位模拟比较器控制和状态寄存器ACSR的ACD。如果ADC使能,进入此模式后将自动启动一次转换。 当SM2..0为010时,SLEEP指令将使MCU进入掉电模式。在此模式下,外部晶体停复位、外部电平中断INT0或INT1,或外部中断INT2可以使MCU脱离掉电模式。这个MCU从掉电模式唤醒时,必须保持外部电平一定的时间。具体请参见P73“外部中断”。唤醒周期与由熔丝位CKSEL定义的复位周期是一样的,如P31“时”所示。Standby模式 当SM2..0为110时,SLEEP指令将使MCU进入Standby模式。这一模式与掉电模式唯一的不同之处在于振荡器继续工作。其唤醒时间只需要6个时钟周期。.XXXXXX 1.时为外部晶体或谐振2.INT2INT1与 模拟比较器 在空闲模式时,如果没有使用模拟比较器,可以将其关闭。在ADC噪声抑制模式下也是如此。在其他睡眠模式模拟比较器是自动关闭的。如果模拟比较器使用了内部电压基准源,则不论在什么睡眠模式下都需要关闭它。否则内部电压基准源将一直使能。请参见P154“模拟比较器”以了解如何配置模拟比较器。 如果应用没有利用掉电检测器BOD,这个模块也可以关闭。如果编程熔丝位BODEN使这个电流将占总电流的很大。请参看P44“掉电检测复位”以了解如何配置BOD。 当使用BOD、模拟比较器时可能需要内部电压基准源。若这些模块都了,则基准源程中是使能的,其输出立即可以使用。请参见P46“片内基准电压”以了解基准源启动时 作,从而消耗电流。在次的睡眠模式下,这个电流将占总电流的很大。请参看P49“看门狗定时器”以了解如何配置看门狗定时器。 电阻性负载。在睡眠模式下I/O时钟clkI/O被停止了,输入缓冲器也了。从而保证输P59“数字输入使能和睡眠模式”。此时输入不能悬空,信号电平也不应该接近VCC/2,否复位AVR 指令必须是绝对跳转JMP指令,以使程序跳转到复位处理例程。如果程序不会使能当所有的复位信号之后,延迟计数器被激活,从而延长了内部复位,并使得在MCUCKSEL由用户设定。延迟时间的选择请参见P31“时”。 (VBOTMCUFigure22.Register(MCUCSR)Pull-upCKSEL[3SUT[1Table18.VV掉电检测复位门限电压BODLEVEL=VBODLEVEL=BODLEVEL=2BODLEVEL=2Notes:1.VPOT2.一些器件的VBOT可能比标称的最小工作电压还要低。这些器件在生产测试过程中进行了VCC=VBOT的测试,保证在VCC下降到处理器无法正常工作之前产生掉电检测复位。ATmega8515L的测试条件为BODLEVEL=1,ATmega8515的测试条件为BODLEVEL=0。BODLEVEL=1不适用于ATmega8515。 上电复位(POR)脉冲由片内检测电路产生。检测电平列于Table18。POR在VCC低于检测电平时产生。POR电路可以用来触发启动复位,或者用来检测电源故障。Figure23.MCU启动过程,RESET. 时(参见Table18)即触发复位过程,即使此时并没有时钟信号在运行。当外加信号达到复位门限电压VRST(上升沿)时,tTOUT延时周期开始。延时结束后MCU即启动。Figure25. 检测工作过程中VCC的变化。此触发电平可以通过设置熔丝位BODLEVEL来设定BOD电平为2.7V(BODLEVEL不编程)或4.0V(BODLEVEL被编程)。触发电平还具有迟滞功能以消除电源尖峰的影响。这个迟滞功能可以解释为VBOT+=VBOT+VHYST/2以及VBOT-VBOTVHYST/2BOD电路的开关由熔丝位BODEN控制。当BOD使能后(BODEN被编程),一旦VCC下降到触发电平以下(VBOT-Figure26),BOD复位立即被激发。当VCC上升到触发电平以上如果VCC一直低于触发电平并保持如Table18所示的时间tBODBOD电路将只检测电VV 定时器开始对tTOUT记数。请参见P49以了解看门狗定时器的具体操作过程。Figure27.

76543210–––00R0”片内基准电 基准电压使能信号和启动时间电压基准的启动时间可能影响其工作方式。启动时间列于Table19。为了降低功耗,可以控BODBODEN因此,当BOD被 时,置位ACBG或使能ADC后要启动基准源。为了降低掉电模式 Table19.V 看门狗定时器由独立的1Mhz片内振荡器驱动。这是VCC=5V时的典型值。请参见特性数据以了解其他VCC电平下的典型值。通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔,如P48Table21所示。看门狗复位指令WDR用来复位看门狗定时器。及时复位定时器,一旦时间超过复位周期,ATmega8515就复位,并执行复位向量指向的程序。具体的看门狗复位时序在P45有说明。为了防止无意之间看门狗定时器或改变了复位时间,根据熔丝位S8515C和WDTON提供了3个不同的保护级别,如Table20所示。安全级别0相应于AT90S4414/8515Table20.WDT如何1202Figure28

76543210–––RRR00000000Bits7..5ResWDE时必须先置位WDCE,否则不能看门狗。一旦置位,硬件将在紧接的4个时钟周期之后将其。请参考有关WDE的说明来看门狗。工作于安全级别1和2Bit3WDE:在同一个指令内对WDCEWDE"1“WDE已经为"1“工作于安全级别2时是无法看门狗定时器的。参见P49“改变看门狗定时器配置的时间序列”。Bits2..0WDP2WDP1WDP021.VCC3.0VVCC5.0V00016K17.116.300132K34.332.501064K68.565011128K0.140.13100256K0.270.26101512K0.550.521101,024K1.11.01112,048K2.22.1WDCE和ldir16,outWDTCR,ldir16,outWDTCR,void{/*WDCE和WDEWDTCR=(1<<WDCE)|/*关闭WDT*/WDTCR}

安全级别0 这个模式与AT90S4414/8515的看门作相兼容。看门狗的初始状态是的,可以需要遵守有关WDE的说明。安全级别1 能它。改变定时器溢出周期及(已经使能的)看门狗定时器时需要执行一个特定的时在同一个指令内对WDCEWDE"1“WDE已经为"1“安全级别2 在这个模式下,看门狗定时器总是使能的,WDE的读返回值为"1”。改变定时器溢出周 本节说明ATmega8515的中断处理。更一般的AVR中断处理请参见P11“复位与中断处理”。Table22.1234TIMER15TIMER116TIMER117TIMER18TIMER09SPI,PTIMER0 1.当熔丝位BOOTRST被编程时,复位后程序跳转到BootLoader。请参见P156支持引导装入程序–在写的同时可以读(RWW,Read-While-Write)的自我编程能力”。2.当寄存器MCUCR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断向量的实际地址为表中地址与Boot区起始地址之和。Table23BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永于应用区,而其他中断向量位于Boot区,则复位向量之后可以直接写程序。反过来亦是.1011Boot0001Boot 1.Boot区复位地址列于P167Table78。对于熔丝位BOOTRST,“1”表示未编程,“0”表示 rjmp;rjmp;rjmp;rjmp; ; ;rjmp;rjmp;rjmp;rjmp;rjmp;rjmp; ;rjmp;IRQ2 ;rjmp;rjmp;); RAM <instr> RESET:ldir16,high(RAMEND out 设置堆栈指针为RAM ldi out <instr>;.org rjmp IRQ0 rjmp IRQ1 rjmp SPM IRQ0IRQ1 rjmp SPM;.org); RAM <instr>当熔丝位BOOTRSTBoot区为8KGICR ResetIRQ0IRQ1 rjmp SPM;); RAM <instr>

TheGeneralInterruptControlRegistercontrolsthecementoftheInterruptVector76543210–––RRR00000000Bit1IVSEL当IVSEL为"0“时,中断向量位于Flash器的起始地址;当IVSEL为"1“时,中断向BootBootBOOTSZ确定。具体请P156(RWW,Read-While-Write的自我编程能力”。为了防止无意之间改变中断向量表,修改IVSEL时需要遵照如下过程:IVSELIVSEL写操作,则中断在置位IVCE之后的4个时钟周期保持。状态寄存器的位I不受此序列的影响。Note:若中断向量位于Boot区,且Boot锁定位BLB02;若中断向量位于应用区,且Boot锁定位BLB12被编程,则执行Boot区的程序时中断被。有关Boot锁定位的细节请参见P156“支持引导装入程序–在写的同时可以读(RWW,Read-While-Write)的自我编程能力”fordetailsonBootLockbits。IVSELIVCEIVCEIVSEL写操作之后4IVCE被硬件。如前面所述,置位IVCE将中断。代码如下:ldir16,outMCUCR,bootldir16,outMCUCR,void{/*使能中断向量的修改*/MCUCR=(1<<IVCE);/*将中断向量转移到boot*/MCUCR=(1<<IVSEL);} 作为通用数字I/O使用时,所有AVRI/O端口都 正的读-修改-写功能。这意味着用SBI或CBI指令改变某些管脚的方向(或者是端口电平、/使能上拉电阻)时不会关的上拉电阻。并有保护二极管与VCC和地相连,如Figure29所示。请参见P186“电气特性”以获取完整的参数列表。Figure29.I/O

SeeFigure本节所有的寄存器和位以通用格式表示:小写的“x”表示端口的序号,而小写的“n”代表PORTB3B3位,而本节的通用格式为PORTxn。物理I/O寄存器和位定义列于P71“I/O端口寄存器的说明”。每个端口都有三个I/O器地址:数据寄存器–PORTx、数据方向寄存器–DDRx和作为通用数字I/O时的端口请参见P55I/O的端口。多数端口引脚是与第二功能复用的,如P60端口的第二功能”所示。请参见各个模块的具体说明以了解引脚I/OI/OFigure30I/OFigure30. I/O

READ READPORTxPINNote:1.WPxWDxRRxRPxRDx对于同一端口的所有引脚都是一样的。clkI/OSLEEP 每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn,如P71“I/O端口寄存器的说明”所示。DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。当引脚配置为输入时,若PORTxn为"1“,上拉电阻将使能。如果需要关闭这个上拉电阻,可以将PORTxn,或者将这个引脚配置为输出。复位时各引脚为三态,即使此为高阻态({DDxnPORTxn0b00({DDxnPORTxn0b11两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}=0b01)或输出低电平({DDxn,PORTxn}=0b10)这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受通过置位SFIOR寄存器的PUD来所有端口的上拉电阻。在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn}=0b00)或输出高电平({DDxn,PORTxn}=0b10)作为中间步骤。Table24.00X(Hi-010011(Hi-10X输出低电平11X输出高电平引脚上的数据 不论如何配置DDxn都可以通过PINxn寄存器来获得引脚电平如Figure30所示,PINxn寄存器的各个位与其前面的锁存器组成了一个同步器这样就可以避免在内部时钟状态发生改变的短时间范围内由于引脚电平变化而造成的信号不稳定。其缺点是引入了延迟。Figre31为引脚电平时同步器的时序图。最大和最小传输延迟分别为tpd,max和tpd,min。inr17,inr17,SYNCLATCH下面考虑第一个系统时钟下降沿之后起始的时钟周期。当时钟信号为低时锁存器是关闭的;而时钟信号为高时信号可以自由通过,如图中SYNCLATCH信号的阴影区所示。时钟为低时信号即被锁存,然后在紧接着的系统时钟上升沿锁存到PINxntpd,max和pd,min所示,引脚上的信号转换延迟界于½~1½个系统时钟。如Figure32所示,软件赋予的引脚电平时需要在赋值指令out和指令in之间有一个时钟周期的间隔,如nop指令。out指令在时钟的上升沿置位SYNCLATCH信号。此时同步器的延迟时间tpd为一个系统时钟。outPORTx,inr17,outPORTx,inr17,SYSTEMSYNCLATCH下面的例子演示了如何置位端口B的引脚0和1,引脚2和3,以及将引脚4到7设的那样,我们在输出和输入语句之间插入了一个nop指令。汇编代码例程 nop;端口引 C代码例程unsignedchar/*定义上拉电阻和设置高电平输出/*为端口引脚定义方向PORTB=(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);DDRB=(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);/*nop/*端口引脚*/i=PINB;Note:1. 如Figure30所示,数字输入信号(触发器的输入)可以钳位到地。图中的SLEEP信号由MCU的睡眠控制器在各种睡眠模式下设置,以防止在输入悬空或模拟输入电平接近VCC/2时消耗太多的电流。引脚作为外部中断输入时SLEEP信号无效。在使能引脚的第二功能时SLEEP也让位于第二功能,如P60“端口的第二功能”里描述的那样。而引脚上又施加了高电平,则MCU从睡眠模式唤醒时相应的外部中断标志将置位。因为在睡眠时由于SLEEP信号的作用内部信号被钳位到地,而唤醒后外部高电平输入到内部未连接引脚的处理 如果有引脚未被使用建议给这些引脚赋予一个确定电平虽然如上文所述在休眠模式下大多数数字输入被禁用,但还是需要避免因引脚没有确定的电平而造成悬空引脚在其它数字输入使能模式(复位、工作模式、空闲模式)消耗电流。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。但要注意的是复位时上拉电阻将被禁用。如果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻。不推荐直接将未用引脚与VCC或GND 除了一般的数字I/O之外,大多数端口引脚都具有第二功能。Figure33说明了由Figure30简化出来的端口引脚控制信号是如何被第二功能所重载的。这些被重载的信号不会出现在所有的端口引脚,但本图可以看作是适用于AVR系列处理器所有端口引脚的一般说clkPUOExn:PxnPULL-UPOVERRIDEENABLEPUOVxn:PxnPULL-UPOVERRIDEVALUEDDOExn:PxnDATADIRECTIONOVERRIDEENABLEDDOVxn:PxnDATADIRECTIONOVERRIDEVALUEPVOExn:PxnPORTVALUEOVERRIDEENABLEPVOVxn:PxnPORTVALUEOVERRIDEVALUEDIEOExn:PxnDIGITALINPUT-ENABLEOVERRIDE

INPUT-ENABLEOVERRIDEVALUESLEEP:SLEEP

PULLUP WRITE READ READPORTx WRITE READPORTxclk I/O DIGITALINPUTPINnON OGINPUT/OUTPUTPINnON 1.WPxWDxRRxRPx和RDx对于同一个端口的所有引脚都是一样的。clkOSLEEP和PUD则对所有的端口都是一样的。其他信号则只对某一个信号有效。Table25.若PUOE置位,则PUOV置位/时上拉电阻使能/禁DDxn、PORTxnPUD寄存器各个位的设置号,输出驱动使能由DDxn寄存器控制若DDOE置位,则DDOV置位/时输出驱动使能/禁止,而不管DDxn寄存器的设置如何如果这个信号置位,且输出驱动使能,端口数据由PVOV控制;若PVOE,且输出驱动使能,端口数据由寄存器PORTxn控制PORTxn如何设置如果这个信号置位,数字输入使能由DIEOV控制;若睡眠模式)止,而不管MCU的状态如何(正常模式,睡眠模式)输出765476543210––00000000Bit2–PUD:上拉电置位时,即使将寄存器DDxn和PORTxn配置为使能上拉电阻({DDxn,PORTxn}=0b01),I/O端口的上拉电阻也被。请参见P56“配置引脚”。 Table26.AAD7(外部器接口地址及数据位AD6(外部器接口地址及数据位AD5(外部器接口地址及数据位AD4(外部器接口地址及数据位AD3(外部器接口地址及数据位AD2(外部器接口地址及数据位AD1(外部器接口地址及数据位AD0(外部器接口地址及数据位Table27.PA7..PA4~(WR|ADA(1))~(WR|ADA)•~(WR|ADA)•~(WR|ADA)•WR|WR|WR|WR|A7•ADAD7OUTPUT•A6•ADA|D6OUTPUT•A5•ADA|D5OUTPUT•A4•ADA|D4OUTPUT•00000000D7D6D5D4–––– 1.ADA为地址有效(ADdressActive的缩写,代表地址输出的时间。请参见P22外部存储器接口”。Table28.PA3..PA0~(WR|ADA)•~(WR|ADA)•~(WR|ADA)•~(WR|ADA)•WR|WR|WR|WR|A3•ADA|D3OUTPUT•A2•ADA|D2OUTPUT•A1•ADA|A0•ADA|D0OUTPUT•00000000D3D2D1D0–––– 端口B的第二功能列于Table29Table29.BSCKSPIMISOSPI总线的主机输入/从机输出信号MOSISPI总线的主机输出/从机输入信号SS(SPI从机选择输入AIN1(模拟比较器负极输入AIN0(模拟比较器正极输入T1(T/C1外部计数器输入T0(T/C0外部计数器输入)OC0T/C0)SCKBBit何,这个引脚都将设置为输入。当工作于主机模式时,这个引脚的数据方向由DDB7控制。设置为输入后,上拉电阻由PORTB7控制。MISOBBit制。设置为输入后,上拉电阻由PORTB6控制。MOSIBBit制。设置为输入后,上拉电阻由PORTB5控制。SSBBit由PORTB4控制。AIN1B,BitAIN0B,BitT1BBitT0/OC0BBit配置为输出(DDB0设置为“1”)。OC0也是 Table31将端口B的第二功能与P60Figure33的重载信号关联在了一起。SPIMSTRINPUT和SPISLAVEOUTPUT构成了MISO信号,而MOSI可以分解为SPIMSTROUT-PUT和SPISLAVEINPUT。Table30.PB7..PB4SPE•SPE•SPE•SPE•PORTB7•PORTB6•PORTB5•PORTB4•SPE•SPE•SPE•SPE•0000SPE•SPE•SPE•0SCKSPISPIMSTR000000000SCKSPIMSTRSPISPI––––Table31.PB3..PB00000000000001000000OC000000000000–0T1T0AIN1AIN0–– 端口C的第二功能示于Table32Table32.CA15(外部器接口地址位A14(外部器接口地址位A13(外部器接口地址位A12(外部器接口地址位A11(外部器接口地址位A10(外部器接口地址位A9(外部器接口地址位A8(外部器接口地址位A15CBitA14CBitA13CBitA12CBitA11CBit A10CBit A9CBit A8CBit Table33.PC7..PC4SRE•SRE•SRE•SRE•0000SRE•SRE•SRE•SRE•1111SRE•SRE•SRE•SRE•00000000––––––––SRESRE•SRE•SRE•SRE•0000SRE•SRE•SRE•SRE•1111SRE•SRE•SRE•SRE•00000000–––––––– 端口D的第二功能列于Table35Table35.DRD(读出外部器选通WR(写入外部器选通OC1A(T/C1输出比较A匹配输出XCKUSART输出INT11INT00TXD(USART输出引脚RXDUSARTRDDBitWRDBitOC1ADBit作为输出(DDD5置1)。在 模式的定时器功能中,OC1A引脚作为输出。XCK端口DBitINT1DBitINT0/XCK1DBit除)。TXDDBit出,此时DDD1不起作用。RXD端口DBit出,此时DDD0不起作用。但是PORTD0仍然控制上拉电阻。Table36.PD7..PD4000000001100XCK00000000–––––––0000000PORTD0•000010000000INT1INT0001100INT1INT0––––– 端口E的第二功能列于Table38Table38.EOC1B(T/C1输出比较B匹配输出ALE(外部器地址锁存使能ICPT/C1)INT2(外部中断2输入)OC1BEBit ALEE,BitICP/INT2EBit0000000000100000INT200100INT2输入,ICP–––76547654321000000000765432100000000076543210RRRRRRRR7654321000000000765432100000000076543210RRRRRRRR76543210000000007654321000000000765476543210RRRRRRRR7654321000000000765432100000000076543210RRRRRRRR76543210–––––RRRRR0000000076543210–––––RRRRR0000000076543210–––––RRRRRRRR 外部中断通过引脚INT0、INT1与INT2触发。只要使能了中断,即使引脚INT0..2配置通过设置MCU控制寄存器MCUCR与MCU控制与状态寄存器MCUCSR,中断可以由下降沿、上升沿,或者是低电平触发(INT2为边沿触发中断)。当外部中断使能并且配置为电平触发(INT0/INT1),只要引脚电平为低,中断就会产生。若要求INT0与INT1在信号下降沿或上升沿触发,I/O时钟必须工作,如P30“时钟系统及其分布”说明的那样。模式唤醒。在睡眠过程(除了空闲模式)中I/O时钟是停止的。通过电平方式触发中断,从而将MCU从掉电模式唤醒时,要保证电平保持一定的时间,MCU对噪声的敏感程度。电平以看门狗的频率检测两次。在5.0V25C的条件下,看门狗的标称时钟周期为1µs。看门狗时钟受电压的影响,具体请参考P186“电气特性”。只要在采样过程中出现了合适的电平,或是信号持续到启动过程的末尾,MCUSUTP30所示。若信号出现于两次采样过程,但在启动过程结束之前就了,MCU仍将唤醒,但不再会中断了。要求的电平必须保持足够长的时间以使MCU结束唤醒过程,然后触发电平中断。 7654321000000000Bit32ISC11ISC101Bit1Bit外部中断1由引脚INT1激发,如果SREG寄存器的I标志位和相应的中断位置位的话。触发方式如Tale0所示。在检测边沿前MCU首先采样INT1引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。Table40.100011011Bit10ISC01ISC000Bit1Bit外部中断0由引脚INT0激发,如果SREG寄存器的I标志位和相应的中断位置位的话。触发方式如Tale1所示。在检测边沿前MCU首先采样INT0引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。00Table00

Table41.00110117654321000000000Bit0ISC22异步外中断2由外部引脚INT2激活,如果SREG寄存器的I标志和GICR寄存器相应的中断位置位的话。若ISC2写0,INT2的下降沿激活中断。若ISC2写1,INT2的上升沿激活中断。INT2的边沿触发方式是异步的。只要INT2引脚上产生宽度大于Table42然后才会产生中断。而且只要将引脚拉低,就会中断请求。改变ISC2时有可能发生中断。因此建议首先在寄存器GICR里清除相应的中断使能位INT2,然后再改变ISC2。 记在重新使能中断之前通过对GIFR寄存器的相应中断标志位INTF2写'1’使其。Table42.外部76543210–––RRR00000000Bit7INT11当INT1为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制1位1/0(ISC11与ISC10)决定中断是由上升沿、下降沿,还是INT1电平触发的。只要使能,即使INT1引脚被配置为输出,Bit6INT00当INT0为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制0位1/0(ISC01与ISC00)决定中断是由上升沿、下降沿,还是INT0电平触发的。只要使能,即使INT0引脚被配置为输出,Bit5INT22当INT2为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制2位1/0(ISC2与ISC2)决定中断是由上升沿、下降沿,还是INT2电平触发的。只要使能,即使INT2引脚被配置为输出,只

76543210–––––RRRRR00000000Bit7INTF1断服务程序之后该标志自动。此外,标志位也可以通过写入”1”来。Bit6INTF0断服务程序之后该标志自动。此外,标志位也可以通过写入”1”来。Bit5INTF2断服务程序之后该标志自动。此外,标志位也可以通过写入”1”来。注意,当信号的逻辑变化,详见P59“数字输入使能和睡眠模式”。定时器/计时器0

(TOV0 Figure34为8位定时器/计数器的简化框图。实际引脚排列请参考P2“ATmega8515的引于P86“8位定时器/计数器寄存器的说明”。Clock Clock (FromPrescaler= ==Control 号在定时器中断标志寄存器TIFR都有反映。所有中断都可以通过定时器中断寄存器TIMSK单独进行。图中没有给出TIFR和TIMSK。T/C可以通过预分频器由内部时驱动,或者是通过T0引脚的外部时来驱动。时钟选择逻辑模块控制使用哪一个时与什么边沿来增加(或降低)T/C的数值。如果没有选择时T/C就不工作。时钟选择模块的输出定义为定时器时钟clkT0。双缓冲的输出比较寄存器OCR0一直与T/C的数值进行比较。比较的结果可用来产生波,或在输出比较引脚OC0上产生变化频率的输出,如P78输出比较单元说明的那样。比较匹配还将置位比较标志OCF0。此标志可以用来产生输出比较中断请求。 本文的许多寄存器及其各个位以通用的格式表示。小写的“n”取代了T/C的序号,在此即为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论