一、正确装备AVR的熔丝位 对AVR熔丝位的装备是比较详尽的作业,用户往往忽视其重要性,或感到不易把握。下面给出对AVR熔丝位的装备操作时的一些关键和需求留意的相关事项。 (1)在AVR的器材手册中,对熔丝位运用已编程(Programmed)和未编程(Unprogrammed)界说熔丝位的状况,“Unprogrammed”表明熔丝状况为“1”(制止);“Programmed”表明熔丝状况为“0”(答应)。因而,装备熔丝位的进程实践上是“装备熔丝位成为未编程状况“1”或成为已编程状况“0””。 (2)在运用经过挑选打钩“√”方法确认熔丝位状况值的编程工具软件时,请首要仔细阅读软件的运用说明,弄清楚“√”表明设置熔丝位状况为“0”仍是为“1”。 (3)运用CVAVR中的编程下载程序时应特别留意,由于CVAVR编程下载界面初始翻开时,大部分熔丝位的初始状况界说为“1”,因而不要运用其编程菜单选项中的“all”选项。此刻的“all”选项会以熔丝位的初始状况界说来装备芯片的熔丝位,而实践上其往往并不是用户所需求的装备成果。假如要运用 “all”选项,应先运用“read->fuse bits”读取芯片中熔丝位实践状况后,再运用“all” 选项。 (4)新的AVR芯片在运用前,应首要检查它熔丝位的装备状况,再依据实践需求,进行熔丝位的装备,并将各个熔丝位的状况记载存案。 (5)AVR 芯片加密今后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状况依然能够读取但不能修正装备。芯片擦除指令是将Flash和 E2PROM中的数据铲除,并一起将两位确认位状况装备成“11”,处于无确认状况。但芯片擦除指令并不改动其它熔丝位的状况。 (6)正确的操作程序是:在芯片无确认状况下,下载运转代码和数据,装备相关的熔丝位,最终装备芯片的确认位。芯片被确认后,假如发现熔丝位装备不对,有必要运用芯片擦除指令,铲除芯片中的数据,并免除确认。然后从头下载运转代码和数据,修正装备相关的熔丝位,最终再次装备芯片的确认位。 (7)运用ISP串行方法下载编程时,应装备SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状况默以为“0”,表明答应ISP串行方法下载数据。只要该位处于编程状况“0”,才能够经过AVR的SPI口进行ISP下载,假如该位被装备为未编程“1”后,ISP串行方法下载数据当即被制止,此刻只能经过并行方法或JTAG编程方法才能将SPIEN的状况从头设置为“0”,敞开ISP。一般状况下,应坚持SPIEN的状况为“0”,答应ISP编程不会影响其引脚的I/O功用,只要在硬件电路规划时,留意ISP接口与其并接的器材进行必要的阻隔,如运用串接电阻或断路跳线等。 (8)当你的体系中,不运用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需求作为I/O口运用时,有必要设置熔丝位JTAGEN的状况为 “1”。芯片出厂时JTAGEN的状况默以为“0”,表明答应JTAG接口,JTAG的外部引脚不能作为I/O口运用。当JTAGEN的状况设置为“1” 后,JTAG接口当即被制止,此刻只能经过并行方法或ISP编程方法才能将JTAG从头设置为“0”,敞开JTAG。 (9)一般状况下不要设置熔丝位把RESET引脚界说成I/O运用(如设置ATmega8熔丝位RSTDISBL的状况为“0”),这样会形成ISP的下载编程无法进行,由于在进入ISP方法编程时前,需求将RESET引脚拉低,使芯片先进入复位状况。 (10)运用内部有RC振动器的AVR芯片时,要特别留意熔丝位CKSEL的装备。一般状况下,芯片出厂时CKSEL位的状况默以为运用内部1MHz的RC振动器作为体系的时钟源。假如你运用了外部振动器作为体系的时钟源时,不要忘掉首要正确装备CKSEL熔丝位,不然你整个体系的守时都会出现问题。而当在你的规划中没有运用外部振动器(或某钟特定的振动源)作为体系的时钟源时,千万不要误操作或过错的把CKSEL熔丝位装备成运用外部振动器(或其它不同类型的振动源)。一旦这种状况发生,运用ISP编程方法则无法对芯片操作了(由于ISP方法需求芯片的体系时钟作业并发生守时操控信号),芯片看上去“坏了”。此刻只要运用取下芯片运用并行编程方法,或运用JTAG方法(假如JTAG为答应时且方针板上留有JTAG接口)来挽救了。另一种挽救的方法是:测验在芯片的晶体引脚上暂时人为的叠加上不同类型的振动时钟信号,一旦ISP能够对芯片操作,当行将CKSEL装备成运用内部1MHz的RC振动器作为体系的时钟源,然后再依据实践状况从头正确装备CKSEL。 (11)运用支撑IAP的 AVR芯片时,假如你不运用BOOTLOADER功用,留意不要把熔丝位BOOTRST设置为“0”状况,它会使芯片在上电时不是从Flash的 0x0000处开端履行程序。芯片出厂时BOOTRST位的状况默以为“1”。关于BOOTRST的装备以及BOOTLOADER程序的规划与IAP的运用请参阅本章相关内容。 二、AVRmega16单片机中重要熔丝位的装备 (1)CLKSEL[3:0]:用于挑选体系的时钟源。 (2)SPIEN:SPI下载使能位。默许状况为答应“0”。 (3)WDTON:WDT守时器一直敞开设置位。默以为“1”,表明制止WDT一直敞开。 (4)EESAVE:履行擦除指令时是否保存EEPROM中的内容,默许状况为“1”,表明履行片内擦除指令时,EERPOM中的内容和Flash中的内容一同被擦除。 (5)BOOTRST:决议芯片上电时,第一条履行指令的地点地址。默许状况为“1”,表明发动时从0x0000开端履行。假如BOOTRST设置为“0”,则发动时从Bootloader区的(6)开端地址处开端履行程序。 (7)BOOTSZ1和BOOTSZ0:确认Bootloader区的巨细及其开端的首地址。默许状况为“00”,表明Bootloader区为1024个字的巨细,开端首地址为0x1C00。 三、JTAG口的运用与装备 AVRmega16上,JTAG的4个端口与PC口中的4位运用相同的引脚(TDI/PC5、TDO/PC4、TMS/PC3和TCK/PC2),假如运用JTAG口的功用,一旦设置JTAG接口处于使能状况,那么PC[5:2]就不能作为一般的I/O口运用了,这就意味着削减了可用的I/O口线。 在AVRmega16中,运用两个熔丝位(JTAGEN和OCDEN)和MCUCSR寄存器中的JTD位对JTAG进行操控。其间JTD位能够由程序指令进行改动。下表给出3个操控位对JTAG的操控
注:JTD操控位上电复位的初值是“0”,一起为了避免意外敞开或封闭JTAG口,需求运用特定的指令操作时序对JTD进行设置:有必要在4个时钟周期内对JTD位重复2次写入,才能将JTD标志设置成所期望的值。 |
四、进步体系可靠性的熔丝位装备
(1)BOD功用:对体系电压进行检测的功用,一旦体系电压低于设定的门限电压后,AVR将主动中止正常运转,进入复位状况。
关于5V体系,设置BOD电平为4.0V,然后答应BOD检测。
关于3V体系,设置BOD电平为2.7V,然后答应BOD检测。
(2)延时发动时刻:经过AVR熔丝位装备,最长延时发动时刻到达65ms。
(3)CKOPT熔丝位的运用:在引脚XTAL1和XTAL2上外接由石英晶体并合作片内的OSC振动电路构成的振动源时,CKOPT的作用是操控片内OSC振动电路的振动起伏;CKOPT=”1″时,振动电路为半幅振动;CKOPT=”0″时,振动电路为全幅振动;
当体系时钟频率较高(>8MHz)或要求抗干扰能力强时,应该设置CKOPT为“0”。当体系时钟频率较低(<2MHz)时,能够考虑将CKOPT设置为“1”(出厂默许值),这样能够削减电流的耗费。