历史上的今天
今天是:2025年01月11日(星期六)
2020年01月11日 | AVR熔丝位操作时的要点和需要注意的相关事项
2020-01-11 来源:elecfans
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。
下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。

在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止)“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。
在使用通过选择打钩“&raDIC;”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“&radIC;”表示设置熔丝位状态为“0”还是为“1”。
使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“All”选项。此时的“All”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“All”选项,应先使用“Read->Fuse Bits”读取芯片中熔丝位实际状态后,再使用“All” 选项。
新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。
AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。
正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。
当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。
一般情况下不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATmega8熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在进入ISP方式编程时前,需要将RESET引脚拉低,使芯片先进入复位状态。
使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦ISP可以对芯片操作,立即将CKSEL配置成使用内部1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。
使用支持IAP的AVR芯片时,如果你不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不是从Flash的0x0000处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。
上一篇:详解avr单片机的io原理及作用
下一篇:基于AVR的自动扶梯
史海拾趣
|
许多人认为,可移植性就是软件从一个平台换到另一个硬件平台,仍然能正常运行的能力。这种说法是很笼统的,我们在细想一下,其中至少存在以下几个层面: 是否需要修改代码。 是否需要修改配置。 是否需要重新编译。 是否能够 ...… 查看全部问答> |
|
EBOOT中在初始化DM9000之前读取其ID一直返回错误,下面是程序: uint8 ReadReg(uint8 offset) { *((volatile uint8 *)(IOBase)) = (uint8)(offset); return ((uint8 ...… 查看全部问答> |
|
如果有时间的话,考虑做一个简化版的TCP/IP TO CAN的网关,毕竟成本优势太明显了 [ 本帖最后由 dyc1229 于 2010-10-15 13:27 编辑 ]… 查看全部问答> |
|
【低功耗】Altera发布具有安全特性的低功耗新系列Cyclone III LS FPGA 继续扩大在低功耗解决方案上的领先优势,Altera公司今天发布了具有安全特性的低功耗新系列FPGA。新的Altera Cyclone III LS FPGA在单位面积电路板上具有密度最大的逻辑、存储器和DSP资源。这些器件是功耗最低的FPGA,200K逻辑单元(LE)的静态功耗小 ...… 查看全部问答> |
|
Zigbee协议指无线传感器网络节点要进行相互的数据交流就要有相应的无线网络协议(包括MAC层、路由、网络层、应用层等), Zigbee协议可以适应无线传感器的低花费、低能量、高容错性等的要求,其基础是IEEE 802.15。它不仅可以处理低级MAC层和物 ...… 查看全部问答> |
|
紧急求助,cc2430怎么和AT89c52之间该怎么连接呢? 我是想把AT89c52记录的脉冲数传到cc2430上,再cc2430用zigbee协议把从AT89C52中收到的数据发出去.那个cc2430怎么和AT89c52之间该怎么连接呢?… 查看全部问答> |
|
replyreload += \',\' + 1332494;介绍一个非隔离型T8灯电源原理图,希望LED灯具工程师多提宝贵意见,发表见解! Timson,如果您要查看本帖隐藏内容请回复… 查看全部问答> |




