
AVR单片机芯片死锁的恢复办法以及熔丝位配置.doc
13页搞错熔丝位,导致芯片死锁的恢复办法说明:本贴仅具一般的参考性请有这方面的高手指正及投稿,让这个专题更加完整与专业当你改动了 AVR 的熔丝位配置,重新加电后,想再用 ISP 下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种主频而无法正常工作(仅限于内部 RC 振荡的情况)解决方法为:1寄回给芯片服务商,让他们帮忙将芯片恢复这是最省事,但是最费时间,最无可奈何的方法使用编程器将芯片恢复到出厂状态这个方法,需要你有编程器通过外加有源晶振的办法,让其恢复这个方法最可行它可以恢复大部分熔丝位搞错的芯片接法如下:恢复方法:接上上图的有源晶振,重新通电,就能用 ISP 下载线修改错误的熔丝位了修改完成后,断电,将有源晶振拆走,看看是否已经恢复正常还有一个办法,如果没有有源晶振的话可以用其他工作正常的单片机的时钟作为外部晶振,只要将工作正常的单片机的 XTAL2 脚连接熔丝设置错误的单片机的 XTAL1 引脚即可像我使用 AVR910 下载线的可直接把 AT90S2313 的时钟输出连到被设置错的芯片就可恢复了,很方便此方法由彩虹数码提供)后记与补充 (2004-10-27) :本网站会员彩虹数码提供了在炜煌系列编程器改熔丝位恢复芯片的办法。
这几天随着被锁定的芯片越来越多,手头已经没有可以用的芯片了,实在没办法就又把以前购买的炜煌 500A 并行编程器拿出来研究因为以前一直没有发现该编程器有改 AVR 配置熔丝的选项(如下图),所以原本不太抱希望的 在 500A 烧片程序中选择了 M16 芯片之后,弹出来了这样一个对话框,以前我都是看 AVR-2 适配器如何接线的,重来没有关注过下图红框框住的这几个字眼 经过仔细研读,忽然想起 SLISP 中的配置熔丝界面也有高低字节位,于是赶紧打开来看看,果然如此,且高低位和扩展位分别对应不同功能的熔丝,如下图: 终于理解了所谓的熔丝原来就是 3 个字节的存储器,不同的数值代表了不同的功能设置,所以炜煌系列编程器只要在数据缓冲区把熔丝地址(不同芯片的熔丝地址会不同)的数据手工修改,然后写入即可,如下图: 附录一:小资料:晶体、晶振和有源晶振晶体(crystal)就是以特定方式(AT 或 BT 等)切割的水晶(天然或人造石英),利用水晶具有的压电效应来做频率基准加上振荡电路(如克莱拍,考皮兹等)完成一个完整的电路功能,封装好,我们称之为有源晶震(Oscillator) 相对而言,没有电路的晶体,我们叫无源晶体或无源晶振。
附录二:Mega8 芯片使用 SL_ISP 1.3 下的熔丝位参考图8M 内部 RC 振荡1M 内部 RC 振荡 中间的一个也没有选,然后是选下面的最后一个你有可能改过下面的 ISP 处的频率,如果你改成 921.6Khz 的话,在内部 1M 晶振时是不能下载的当然如果已经是改为外部晶振了则没有关系当你程序完全确定之后,出厂前,你需要对程序进行加密,如下界面AVR 单片机熔丝位设置详解AVR 单片机熔丝位设置详解1、BOD(Brown-out Detection) 掉电检测电路BODLEVEL(BOD 电平选择): 1: 2.7V 电平; 0:4.0V 电平这需要根据芯片的工作电压来选择BODEN(BOD 功能控制): 1:BOD 功能禁止;0:BOD 功能允许 使用方法:如果 BODEN 使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL 决定一旦 VCC 下降到触发电平(2.7v 或 4.0v)以下,MCU 复位;当VCC 电平大于触发电平后,经过 tTOUT 延时周后重新开始工作2、复位启动时间选择SUT 1/0: 当选择不同晶振时,SUT 有所不同如果没有特殊要求,推荐 SUT 1/0 设置复位启动时间稍长,使电源缓慢上升(即 SUT1:0;SUT0:1)。
3、CKSEL3/2/10: 时钟源选择芯片出厂的默认情况下,CKSEL3—0 和SUT1、SYT0 分别设置为“0001”和“10”,这样将使用芯片 8mHz 的内部晶振和使用最长的启动延时配置方法:4、M103:设置 ATmega103 兼容方式工作出厂时的默认设置为 0,即以ATmega103 兼容模式下运行5、JTAGEN:如果不使用 JTAG 接口,应该将 JTAGEN 的状态设置为 1,即禁止JTAG 功能,JTAG 引脚用于 I/O 接口6、SPIEN:SPI 方式下载数据和程序允许,默认状态为允许 0,一般保留其状态7、WDTON:看门狗定时器始终开启默认情况下为“1”,即禁止看门狗定时器始终开启选择为“0”表示看门狗定时器始终开启,建议设置为 0,防止程序跑飞8、EESAVE:EESAVE 设置为“1”表示对芯片进行擦除操作时,flash 和 EEPROM中的数据一同擦除,设置为“0”表示擦除操作只对 flash 中的数据有效而对EEPROM 无效芯片出厂的默认设置为“1”在实际应用中需要根据实际需要进行设置9、BOOTRST:决定上电启动时,第一条指令的地址默认状态为“1”,表示启动从 0x0000 开始执行;如果 BOOTRST 设置为“0”,启动时从 BOOTLOADER 的起始位置开始启动(BOOTLOADER 的首地址由 BOOTSZ1 和 BOOTSZ0 决定)。
BOOTSZ1 和 BOOTSZ0:这两位决定了 BOOTLOADER 的大小和起始地址默认状态为“00”表示 4096 字节,起始位置为 0xF000BOOLOADER 区大小配置:注:在做熔丝位设置时要先确定“√”表示的是 1 还是 0。












