微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR笔记3:AVRmega单片机熔丝位的设置详解及应用举例

AVR笔记3:AVRmega单片机熔丝位的设置详解及应用举例

时间:11-27 来源:互联网 点击:

(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用 “all”选项,应先使用“read->

的叠加上不同类型的振荡时钟信号,一旦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的控制

JTAGENOCDENJTDLB2/LB1PC[5:2]功能
1XXX/XI/O
010X/XJTAG(仅允许下载编程)
011X/XI/O
0001/1JTAG(允许下载和在片调试)
001X/XI/O

注: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”(出厂默认值),这样可以减少电流的消耗。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top