AVR教程系列一(8):ATmega16 简介(三).docx
ATmega1.6简介(三)ATmega16指令执行时序这一节介绍指令执行过程中的访问时序.AVRCPt1.由系统时忡C1.kcK冕动.此时仲宜按来自选定的时钟说.芯片内部不对此时怦进行分项.Fire6说明了由HarVard玷构决定的并行取指和指令执行,以及可以进行快速访何的存放文件的概念.这是个根本的流水线概念.性能高达1MIPS.UIz.具有优良的性价比'功能/时怦比.功能/功耗比.Fieure7演示的是存放涉文件内部访问时序.在一个时树横期里.A1.1.'可以同时对两个存放器渤作数进行愫作.同时将结果保存到目的存放潴中去-ATDega1.6复位与中断处理AYR仃不同的中断祝.用个中断和现位在程序空向国有独立的中断向量:.所行的中断驿件和仃自已的It低位.当他傥住置位.且状态存放器的全射中断使能位I也?(位时,中时可以发生,根械程序HsiJiM1.C的不同,在引导锁定位H1.BO2或Bun2被编程的情况R中厮可能被自动禁止,这个特性提高了软件的平安性.详见P247“存储器编程”的箱迷.程序存储区的最低地址省为如位向此和中断向球.完整的向坡列表请参见P43”中Ie.列表也决定不同中新的优先级.向(It所在的地址越怔,优先级越高.时SET具有域高的优先雄,第二个为IMO-外部中断语求”通过双位MCv控制存放器(MC1.ICR)的IVSE1.,中断向M可以格至引导FIaSh的起始处.次程再丝位Ba)TRSr也可以将亚位向Irt移至引导FmSh的起始处.具体誓见P2:M”支持引导装入探序-在。的同时可以i*K*M,Rea(HIhi1.eTriS)的自我城程能力.任一中断发生时全导中斯使能位I被济字,从而SS止了所有其他的中断.用户轨件可以在中断程序里置位I未实现中SiiK袋,此时所有的中新就可以中断当前的中断效劳程序,执行RCT1.指令后I自动置位.从根本上说仃两类型的中断.第一种田小件触发并置位中断标志.对这打中断.程序计数器跳转到.实际的中断向St以执行中断处理程序,同时硬件将去除相应的中断标志.中断标志也可以通过对其写”的方式来去除.当中新发生后,如果相应的中断使能位为-Y.则中新惊苕位五位,并一I1.保持到中断执行,或并被软件去除。类似的,如里全局中断标志搜济零,划所*已发生的中断都不会被执行.直到1Kf.然而挂起的各个中断按中断优先皴依次执行.第二种类型的中断则是只要中Iii条件满足,就会一直触发.这些中断不需要中断标志.若中断条件在中断使能之航就消失了,中斯不会被忖发.AVR退Hi中断后总是网到主程序并至少执行一条指令才可以去执行其他被拄起的中断.瞿注意的是,进入中断效劳程序时状态存放舞不会自动保存,中断返何时也不金自动恢现.这些工作翅由用户通过轨件来完成.位用Cu指令来禁止中断时.中断禁止立即生效,没有中断可以在执行CU指令后发生,即使它是在执行CU指令的同时发生的.下面的例子说明了如何在写EEPwW时使用这个指令未防止中In发生以防止对EKpWN内容的可能破坏,汇纲代岗例程inr1.6,SRHG:保存SHfiGC1.i:祭止中断sbiEECR,EEWE:启动EEPROM、操作sbiEECR1ECT1.ioutSREG1r1.:饿乂SRBG(1ft)C代码例程charcSREG:CSREG=SREG:/保存SREG/禁止中断”_C1.I():EECR=(1<<EE三):/*启动EEPRoMH操作*/EECRI=(i<<EEME);SRKG=cSRh:G;/住受SREG(I便)/使用SEI指令使能中断时,常跟大后的第条指令在执行任何中断之M-定会首先科到执行.范编代闪例程sei;双位全局中断使能标志S1.MP;进入休眠模式,等仔中断发生:注意:在执行任何被拄起的中断之前MOJ将首先进入休眠模式C代码例程SEIO:/置位全局中斯使能标志*/S1.EEPO:/*进入休眠模代.等待中断发生”/»注意:在执行任何被挂它的中断之前MtT将苜先进入休眠模式"/AVR中断响应时IBJ最少为4个时伸冏期.4个时钟冏期后,探序跳转到实际的中断处理例府.在这4个时钟期期间PC自动入栈.在JMm况下中断向It为一个践转指令此跳转需要3个时伸周期.如果中断在一个多时钟周期指令执行期间发牛.好在虻多周期指令执行完埠后Wt才会执行中断程序.若中断发生时MCU处于休账模式,中断响应时阿还需增加I个时钟屣期.此外还要考虑到不同的休眠怏式所需娈的用动时间,这个时间不包括在前面提到的时钟闷用甲.中断返网需要I个时怜,在此期向Kx两个字节)将被舛出伐,11戈拼计加二,状态存放JSSRW;的I置位.ATnega1.6F1.ash程序存储器系统内可程的F1.aiih程序存钻器ATneM1.6具右16K字节的i线加程FIaxh,用于存放程序指令代码,因为所勾的AYK指令为16位或32位,故而F1.i1.xh织浜成KKX16位的形式.用户程序的平安性要根据F1.ach程序存储器的两个区r引导(Boo1.)程序区和应用程序区,分开条考虑,FIaSh存储JS至少可以揍与10.CHX1.次.Tma16的程序计数制(PO为13位.因此可以寻址8K字的程杼存储器空向.;J1.导程侪区以及相关的软件平安镇定位语参见设3,1“支持引于裳入程序-在写的同时可以读(H",RcadfhiIeTritQ的自我编程能力”,而P217“存仙相簿程"详述了MSP1.或JTAG接”实现对F1.gh的中行下领.常数可以保存丁整个程序存储SS地址空间参考1.P)I加栽程序存依器指令的说明).取指与执行时序图请参见P1.1."指令执行时序.SOOOO$1FFFATnega1.6SRAM数据存储器SRAM数捆存北洪Figurr9给出ATmegn16SRAM空问的(Hfn第构.Figure 9 数据存储器映像j0001R2S0002M1.jDR30R31SoOIFI/ORegisters0021$005EInterna1.SRAMS0061ISO45E$045FIRef1.iscerFi1.eDataAddressSpace前H20个t据存体器包括了存放器文件、I/O存储得及内部数据SRQ1.起始的M个地址为存放器攵件与M个I/O存必疆,接箱是1024字节的内蔺数1«SRAM.数据存储得的寻址方式分为5种:戌按寻址、带偏移棚的何接寻址、问按寻址、带预战It的间接寻址和带后增量的何接寻址.存政密文件中的存放器R26jiR31.为间接寻址的指针存放睛,直接寻址范川可达整个数据区.带偏移Ift的何接寻址模式能绯寻址列由存放器丫和Z给定的珞址附近的63个地比。隹自动用减和后加的间接寻址模式中.存放JSX、丫和2白动增加或瘫少.ATnega16的全部32个通用存放捐.61个I/O存放器及1024个字节的内部线据SRM可以通过所仃上述的寻址授丈进行访何,存放邦文件的描述见P91通用存故等文件”.SRftN数据在砧:访本V说明访何内部存俅器的时序.¢1Figure10所示.内御数据SR仙访何时间为两个CIkCptWW.Figure 10 片上SRAM存取周期c1.kCPUAddressDataWRDataRD一kComputeAddressXAddressva1.idr-/皑1.5_/-1.HeJ,T1T2T3MemoryAccessInstructiNextInstruaionATmega1.6EEPROM数据存储器ATnega1.G包含512字节的EEPRoM数幅片M物.它是作为个独立的S1.tW空间而存在的,可以按字节选写.EEPRCM的寿命至少为100.000次推涿同期.EEPROM的访日由地址存放器、数超存放器和控制存放器决定.通过SPIK1.JTAG及并行电燃下载IiEPROMJt据的操作请分别叁见P260.P265及P250,EEPROM读/写访日EEPROM读/UWHEEPROM的访问存放器位于I/O空间.EEPRe1.M的巧访问时间由Tab1.e1绐出.自定时功能可以让用户攸件隘测何时可以开始写下一字唧.用户操作EEPRCM甯要注意如下何圆;在电源浊波时向常数比较大的电路中,上电/下电时VCC上升/下降速慢会比较慢此时QP可能工作于帐于品振所要求的电源电压,谙参见P20-防止EEPROM数据丧失.以防止出现EEPwW数据丧失的句理,为防IE无意识的EEPRoW与操作需瞿执行一个特定的马时序.具体黯而EEPRoM摔制存故;S的内容.IKhEEIUOM读根作时,CPU会停止工作,1个周期,然后再执行后线折I执行EEpRaM号拨作时,CPti会铮止工作2个展期,然后再执行后续指令.KEPKOW地址存放器一EHAKH(f1.HiRI.?Bits15.9-Res:保存保存位,读操作返Htf1.为零.?Bits8.0-EEAR8.0:EEPROM地址EEPROM地址存放器-EEUm和EEAR1.指定/512字节的EEpR(W空间.EEPRoM地址是线性的.从0f>511.EEAR的初始值没行走义在访问EEpKoM之肝必须为其IKf正确的数根.EEPROM数据存故备-EEDR?Bits7.0-EEDR7.0:EEPRoN数累对于EEIMn1.与操作,EEWI是需要写到EHAH单元的数粼:对于i操作EEDR是从地址EHA1.i读取的数据EEPROM冲闸存故;S-EECS?Bits7.4-Res:保存保存位.读操作返回值为W.?Bit3-EERJE:使能IniPRCM准招好中新若SREG的I为"1".明JS位EERIE将依健EEpRQM准备好中断.清&EER1.E则禁止此中断.当EEXE清零时EBPRoM准箔好中断即可发生.?Bit2-EEMVE:口PRtM主机写使能EEWE决定了EEVE区位是否可以启动EEPRON、操作.当EEWHi为"1"时,在4个时钟刑期内息位EE1.fE将把案写入EEPROM的布定地此:若EBnEJj-O-,则像作EEvE不起作用.EB1.B置位后4个周期,段件对耳清零.»EEPROM当过程中对EEE位的描述.?Bit1-EE*E:EEPROM与位悠EEWE为EEPRoM与操作的使能加8.VEEPRcWCHK和地址设置好之后,需置位E三E以便将数IK写入EEPRoM.此时EBME仍须置位,否则EEPRoM写操作物不会发生.写时序如下(第3步和第4步的次序并不如要):1 .等待EEtE位变为零2 .等待SPMCSR中的SPMEX位安为零3 .将狱的EEPWN地坟写人EEAR(可选)4 .将册的EK1.MioM数刷写入EEDR(可选)5 .对EECR存放器的E0WE写"1”,同时沽写EEnE6 .在置位EDWE的4个附期内.双位EEXE在Cpt写F1.axh存储器的时帔不能时EEIMIM进行组I程.在居功EtTROM写操作之