AVR单片机熔丝位设置,以及搞错熔丝位,导致芯片死锁的恢复办.
AVR单片机解锁器的制作以及熔丝配置

A VR单片机解锁器的制作以及熔丝配置随着A VR单片机日益普及,很多单片机爱好者都试用了这种类型的快速8位单片机。
由于单片机试用ISP下载线下载代码到单片机中,而A VR单片机内部又具有可编程振荡模式选择熔丝位,初学A VR 单片机,对熔丝位的配置有时很不了解,很容易误写熔丝位,结果是单片机锁死无法再次使用。
本人也是刚学A VR单片机也遇到了这种情况,根据自己的经验写下此文希望对初学者用帮助。
首先说说怎么样设置熔丝位。
本人使用串口ISP下载自己制作的串口下载器,试用的是SLISP下载软件(天龙)。
SLISP安装后,确保下载器连接正确,单片机放置正确,点击配置熔丝弹出熔丝配置设置,将最后一个[ ]Int(……………………)勾选上,再将JTAG Interface Enable勾掉,然后点击写入,确定,是,最后点击确定完成熔丝的配置,而界面上的配置熔丝可选可不选。
下面说说A VR单片机锁死后的解锁。
按照下面的电路图正确连接制作时需要注意本电路试用正负电压。
7805和7905的管脚连接方式不一样,正对自己,7805左边输入,中间地,右边输出,7905左边地,中间输入,右边输出。
电阻R为1MΩ,电阻R1为2~6.5KΩ,晶振最好为2~16Mhz,输出为一定频率的方波。
使用方法:电路制作好后,正确和电源连接,将输出A VR解锁器的输出脚和单片机的XTAL1相连再次下载,写入正确的熔丝配置既可解锁,本人经过测试可以解决大部分A VR单片机锁死的情况,同时,有了它可以节约资源避免浪费。
经验之谈:熔丝配置时,点去JTAG后,最好不要勾选选择EXT 选项。
本人在自己的电脑上每次勾选单片机总是锁死。
由于本人也是初学,所以一切只能作为参考!!A VR单片机解锁器的制作以及熔丝配置作者:张仁友2010年2月1日。
AVR单片机解锁方法

AVR单片机的熔丝位控制着其时钟、JTAG使能、FLASH操作、工作模式等等。
一旦配置错误,会导致不可预见的结果,导致单片机下不进去程序。
最常见的就是时钟配置错误,尤其初学者比较容易犯这一类错误。
AVR单片机如果是系统时钟相关熔丝位配置错了,那可以使用有源晶振、信号发生器等强时钟源给“振开”,其实最简单的方法是利用51单片机的ALE脚进行“急救”。
以前没试过,今天我故意将时钟配置错误(在AVR STUDIO中将熔丝位设置成外部高速晶振,快启动,然后故意把外部晶振给拿掉),重启后果然出事儿了。
再想下程序下不进去了(嘿嘿,这正合我意),为了解救这个ATMEGA16,我找来了一个AT89S52。
注意不能用STC的哦,有的STC51单片机把ALE脚给禁止了。
接下来就是最紧张的时刻了,我将两块板子共地,然后将AT89S52的ALE脚(第30脚)接到ATMEGA16的XTAL1脚(第13脚)。
上电,用示波器看到A LE脚有时钟信号输出。
果断再次下载ATMEGA16的程序。
果然好使了!!!!!如果大家以后遇到此类现象,不妨使用这个方法试试。
如果是系统时钟相关熔丝位配置错误,那么这个招绝对管用。
别的熔丝位设错了倒是没尝试过。
不过大家尽量配置正确就是啦~~~~~做设计时不小心锁了一块芯片ATMEGA16,真的很抑闷,网上查了一下资料,真的五花八门,今天自己用有源晶振在自己的作品上动手术,几分钟就把自己的芯片解锁了,收获很多,以后终于随心所欲地编写熔丝了,反正我能解锁!实践才是检验真理的硬道理!实际中我没有断开我原来的外部晶振!解锁图:解锁步骤:一:按上面电路接好线,为了避免焊接后又脱焊的麻烦,所以建议用杜邦线接好。
二:用ISP下载线设置好正确的熔丝位,即可烧写熔丝,呵呵,大功告成,芯片又可以恢复使用了。
后话:AVR单片机被锁,不能写入程序,是因为错误地烧写时钟方式熔丝位造成的,选择的时钟方式与实际不同,造成单片机没有时钟信号输入,即不工作了,这样烧写程序当然error啦!。
AVR单片机熔丝位设置方法

A VR单片机熔丝位设置方法A VR Studio中STK500处理熔丝位有巨大的优势:它是以功能组合让用户配置。
这种方式与小马(PnoyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):1. 有效避免因不熟悉熔丝位让芯片锁死(这是初学者的恶梦)2. 不需要靠记忆与查文档,就能配置熔丝位(这也是初学者的恶梦)这是我们网站为何推荐使用STK500下载器的又一原因。
操作界面如下:(注意:下图中,打勾的表示选中,代表0。
没有打勾的表示1)。
上图的资料整理如下(该表下面有中文翻译与说明):On-Chip Debug Enabled; [OCDEN=0]JTAG Interface Enabled; [JTAGEN=0]Serial program downloading (SPI) enabled; [SPIEN=0]Preserve EEPROM memory through the Chip Erase cycle; [EESA VE=0]Boot Flash section size=128 words Boot start address=$1F80; [BOOTSZ=11]Boot Flash section size=256 words Boot start address=$1F00; [BOOTSZ=10]Boot Flash section size=512 words Boot start address=$1E00; [BOOTSZ=01]Boot Flash section size=1024 words Boot start address=$1C00; [BOOTSZ=00] ; default valueBoot Reset vector Enabled (default address=$0000); [BOOTRST=0]CKOPT fuse (operation dependent of CKSEL fuses); [CKOPT=0]Brown-out detection level at VCC=4.0 V; [BODLEVEL=0]Brown-out detection level at VCC=2.7 V; [BODLEVEL=1]Brown-out detection enabled; [BODEN=0]Ext. Clock; Start-up time: 6 CK + 0 ms; [CKSEL=0000 SUT=00]Ext. Clock; Start-up time: 6 CK + 4 ms; [CKSEL=0000 SUT=01]Ext. Clock; Start-up time: 6 CK + 64 ms; [CKSEL=0000 SUT=10]Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0001 SUT=00]Int. RC Osc. 1 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0001 SUT=01]Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0001 SUT=10]; default value Int. RC Osc. 2 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0010 SUT=00]Int. RC Osc. 2 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0010 SUT=01]Int. RC Osc. 2 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0010 SUT=10]Int. RC Osc. 4 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0011 SUT=00]Int. RC Osc. 4 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0011 SUT=01]Int. RC Osc. 4 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0011 SUT=10]Int. RC Osc. 8 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0100 SUT=00]Int. RC Osc. 8 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0100 SUT=01]Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0100 SUT=10]Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 0 ms; [CKSEL=0101 SUT=00]Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 4 ms; [CKSEL=0101 SUT=01]Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 64 ms; [CKSEL=0101 SUT=10]Ext. RC Osc. - 0.9 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0101 SUT=11]Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 0 ms; [CKSEL=0110 SUT=00] Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 4 ms; [CKSEL=0110 SUT=01] Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 64 ms; [CKSEL=0110 SUT=10] Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0110 SUT=11] Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 0 ms; [CKSEL=0111 SUT=00]Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 4 ms; [CKSEL=0111 SUT=01] Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 64 ms; [CKSEL=0111 SUT=10] Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=0111 SUT=11]Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 0 ms; [CKSEL=1000 SUT=00] Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 4 ms; [CKSEL=1000 SUT=01] Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 64 ms; [CKSEL=1000 SUT=10] Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 6 CK + 4 ms; [CKSEL=1000 SUT=11] Ext. Low-Freq. Crystal; Start-up time: 1K CK + 4 ms; [CKSEL=1001 SUT=00]Ext. Low-Freq. Crystal; Start-up time: 1K CK + 64 ms; [CKSEL=1001 SUT=01]Ext. Low-Freq. Crystal; Start-up time: 32K CK + 64 ms; [CKSEL=1001 SUT=10]Ext. Crystal/Resonator Low Freq.; Start-up time: 258 CK + 4 ms; [CKSEL=1010 SUT=00] Ext. Crystal/Resonator Low Freq.; Start-up time: 258 CK + 64 ms; [CKSEL=1010 SUT=01] Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 0 ms; [CKSEL=1010 SUT=10] Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 4 ms; [CKSEL=1010 SUT=11] Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 64 ms; [CKSEL=1011 SUT=00] Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 0 ms; [CKSEL=1011 SUT=01] Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 4 ms; [CKSEL=1011 SUT=10] Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 64 ms; [CKSEL=1011 SUT=11] Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 4 ms; [CKSEL=1100 SUT=00] Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 64 ms; [CKSEL=1100 SUT=01] Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 0 ms; [CKSEL=1100 SUT=10] Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 4 ms; [CKSEL=1100 SUT=11]Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 64 ms; [CKSEL=1101 SUT=00] Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 0 ms; [CKSEL=1101 SUT=01] Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 4 ms; [CKSEL=1101 SUT=10] Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 64 ms; [CKSEL=1101 SUT=11] Ext. Crystal/Resonator High Freq.; Start-up time: 258 CK + 4 ms; [CKSEL=1110 SUT=00] Ext. Crystal/Resonator High Freq.; Start-up time: 258 CK + 64 ms; [CKSEL=1110 SUT=01] Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 0 ms; [CKSEL=1110 SUT=10] Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 4 ms; [CKSEL=1110 SUT=11] Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 64 ms; [CKSEL=1111 SUT=00] Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms; [CKSEL=1111 SUT=01] Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 4 ms; [CKSEL=1111 SUT=10] Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms; [CKSEL=1111 SUT=11]上表的英文翻译说明如下:英文中文On-Chip Debug Enabled片内调试使能JTAG Interface EnabledJTAG 接口使能Serial program downloading (SPI) enabled串行编程下载(SPI) 使能(ISP下载时该位不能修改)Preserve EEPROM memory through the Chip Erase cycle;芯片擦除时EEPROM的内容保留Boot Flash section size=xxxx words引导(Boot)区大小为xxx个词Boot start address=$yyyy;引导(Boot)区开始地址为$yyyyBoot Reset vector Enabled引导(Boot)、复位向量使能Brown-out detection level at VCC=xxxx V;掉电检测的电平为VCC=xxxx 伏Brown-out detection enabled;掉电检测使能Start-up time: xxx CK + yy ms启动时间xxx 个时钟周期+ yy 毫秒Ext. Clock;外部时钟Int. RC Osc.内部RC(阻容) 振荡器Ext. RC Osc.外部RC(阻容) 振荡器Ext. Low-Freq. Crystal;外部低频晶体Ext. Crystal/Resonator Low Freq外部晶体/陶瓷振荡器低频Ext. Crystal/Resonator Medium Freq外部晶体/陶瓷振荡器中频Ext. Crystal/Resonator High Freq外部晶体/陶瓷振荡器高频注:以上中文是对照A Tmega16的中、英文版本数据手册而翻译。
AVR单片机熔丝位设置方法和设置步骤大全

AVR单片机熔丝位设置方法和设置步骤大全AVR单片机是一种常用的嵌入式系统开发平台之一、在单片机的开发中,熔丝位(Fuse)是决定单片机工作模式的重要设置之一、设置正确的熔丝位可以保证单片机的正常运行。
本文将介绍AVR单片机熔丝位的设置方法和设置步骤。
一、什么是熔丝位?熔丝位是用来定义单片机的一些基本特性的设置值,每个熔丝位可以设置为“0”或“1”,对应不同的功能。
通过设置熔丝位,可以选择以下几个方面的属性:1.时钟源(Clock Source):选择单片机的系统时钟源。
2.启动时间延迟(Start-up Time Delay):为了让单片机的晶振系统正常工作,需要在上电复位后等待一段时间。
3.JTAG接口:选择是否启用JTAG接口。
4.保护:保护单片机的外部程序和数据,防止非授权访问。
二、如何设置熔丝位?1.选择适当的单片机型号:在烧写工具的软件中,选择正确的单片机型号。
2.熔丝位设置:在烧写工具的软件中找到“Fuses”或“熔丝位”选项。
3.设置单片机的时钟源:根据实际需要,选择合适的时钟源。
常见的时钟源有外部晶振、外部时钟信号、内部RC振荡器等。
4.设置启动时间延迟:选择合适的启动时间延迟。
启动时间延迟是为了让外部晶振系统正常工作所需的等待时间。
5.选择是否启用JTAG接口:如果需要使用JTAG接口进行调试或编程,选择启用;否则选择禁用。
6.设置保护位:根据实际需求,选择是否启用保护位。
启用保护位可以防止未授权的访问。
7.写入熔丝位:在设置完所有的熔丝位后,点击“写入”或“烧写”按钮,将设置写入单片机的熔丝位中。
三、常见的一些熔丝位设置示例:1.外部晶振作为时钟源:熔丝位:CLKSEL[3:0]=1111说明:将单片机的时钟源设置为外部晶振,晶振频率可以根据实际需求选择。
2.外部时钟信号作为时钟源:熔丝位:CLKSEL[3:0]=0111说明:将单片机的时钟源设置为外部时钟信号,外部时钟信号的频率必须在单片机规格书中规定的范围内。
使用AVRStudio设置AVR熔丝位及烧写程序

使用AVRStudio设置AVR熔丝位及烧写程序AVR Studio是ATMEL指定用于开发AVR MCU的官方软件,其编程功能最为强大。
为了能让大家一起来学习AVR Studio的配置,下面我将介绍使用AVRStudio烧写程序及熔丝快速入门。
1、●打开 AVR Studio 软件,按下图操作。
对软硬件进行初始配置,并正确设备连接,就可使用AVRISP进行联机了。
2、● 使用AVRISP方式烧写程序及配置熔丝位点击主窗口中的图标前面标有Con的那个图标。
出现如下图画面:在左边,选择“STK500 or AVRISP”,在右边,选择“Auto”(或具体的COM口),点击“Connect”进行联机。
3、●下面窗口提示所用AVR ISP下载线固件版本与当前所用软件不同,提示要求升级AVR ISP下载线固件,如版本相同就不会出现下面的提示。
如你所用的AVR ISP下载线不支持在线升级功能的话,不要点确定要不AVR ISP下载线会死在那里不动了,直接点击取消跳过此步既可。
正常联机后,将弹出如下窗口:(1)程序编程面板:●Device里面选择好对应的芯片类型,后面的Erase Device可以擦除芯片。
●Programming mode编程模式:注意这里必须是ISP mod,表示用的ISP编程模式;Erase Device Before 选项:编程前先擦除芯片,建议选上,如果不选芯片内部残留的程序可能会对新的程序造成干扰。
Verity Device After Program:下载完毕后校验程序内容,建议选上。
●Flash 下载区:Input HEX File,找到要写的hex文件格式为*.hex、*.e90。
Program,编程点此按钮,将会把Input HEX File对应文件下载到芯片中去,如果路径有错误或者文件格式不正确会有提示报警。
Verify 校验命令,用于检测芯片内程序是否和文件中的一致。
Read读命令,此命令可以读出未加密芯片内的程序,自动弹出一个对话框提示保存。
解决AVR熔丝锁死的最有效办法

解决AVR熔丝锁死的最有效办法
对于很多人来讲都很少备有有源晶振,那么对于解决AVR单机锁死的就没有其他的方法了么,其实并不然,现在我们要做的就是,首先要准备一个C51最小系统开发板,使用晶振为11.0592M,或者是12M(没有亲自试过)。
如图所示:
我们先从C51 的ALE引脚(输出震荡器的六分之一频)引出一根线,然后将输出的时钟信号与AVR单片机的XTAL1脚相连,你现在要保证AVR单片机,C51单片机开发板都是通电的状态,如图所示:
这个时候我们打开AVR flight程序烧写软件,如图所示。
通过外部提供时钟3M信号,我们现在就可以通过ISP下载方式,读取芯片的相关信息,如果现在你还是不能读出AVR单片机相关信息的话,你最好检查一下电路,看看,时钟信号连接的对不对。
现在我们开始设置熔丝位:把熔丝位设置成低位:EF,高位CF,扩展位:FF,然后写入AVR 单片机内就可以了,本人亲自试过,并把自己两个锁住的单片机拯救了过来。
熔丝位
熔丝位写入完成后,AVR单片机就被拯救回来了。
重新上电,下载程序了。
AVR单片机熔丝位解锁

一周报告阅读的文献关于单片机的熔丝位设置错误的解救方法AVR单片机解锁器的制作以及熔丝配置AVR单片机熔丝位汇总研究日志关于AVR单片机在使用的时候,初始使用ISP下载时,需要对AVR单片机的熔丝位进行配置,配置的时候会经常出现错误,这样会造成单片机无法起振,单片机无法工作,就是通常所说的锁死。
当然单片机的内部结构都是好的,如果仅仅是因为单片机的熔丝位锁死就废弃单片机这样会造成极大的浪费,本身每一块的AVR单片机成本比较贵,解锁成为每一个电子工程师必备的基本技能之一。
因此参照网络上面的各种文献,以及图书馆的书,采用一种行之有效并且较为简单的方法来给上锁的单片机解锁。
我现在在实验室采用的是有源晶振解锁的方法!大多数的单片机锁死,是因为在给下图所示的熔丝位配置时出错,最常见的是晶振位出错(位置在熔丝低位),CKSEL0,CKSEL1,CKSEL2,CKSEL3,这几位是设置初始时候使用内部RC震荡还是外部晶振来提供时钟脉冲的。
解决方法如下:再市场上面买一个大于2M的有源晶振,四个引脚。
如下图所示:各个引脚及对应的封装都可以秦楚看见。
下面介绍解锁使用的电路,引脚8输出,1引脚无连接,14引脚为+5DC电源,7接地(引脚的标号及时跟前面的两幅图中一样)。
这样将输出的引脚8和单片机的XTAL1相连接,ATmega16为13引脚(单片机封装上面的13引脚);ATmega128为24引脚(同样为封装上面的引脚号)。
连接好电路之后,就是使用ISP下载软件读取熔丝位,然后修改。
下面给出错误的熔丝位设置(错误的熔丝位设置)。
下面的图为修改后真确的熔丝位设置:徐伟2012年6月22日。
AVR单片机熔丝位的设置和详细拯救方法

AVR单片机熔丝位的设置和详细拯救方法AVR单片机的熔丝位是用来设置单片机的一些特殊功能和属性的,比如时钟源的选择、外部晶振的频率、启动时间延迟等。
正确设置熔丝位可以确保单片机的正常工作和满足特定的应用需求。
然而,如果设置熔丝位错误或者单片机进入了保护模式,就需要采取相应的拯救方法。
本文将详细介绍AVR单片机熔丝位的设置和拯救方法。
一、AVR单片机熔丝位的设置1.熔丝位的组成熔丝位是由多个位(bit)组成的,不同单片机具有不同的熔丝位组成,每个位(bit)用于设置不同的功能或属性。
通常情况下,单片机的熔丝位分为高位字节和低位字节,每个字节的不同位(bit)设置的功能也不同。
2.熔丝位设置的方式单片机的熔丝位可以通过编程器进行设置,通常在进行单片机的编译和烧录时设置熔丝位。
通过编程器软件提供的界面,用户可以选择不同的设置,然后将设置好的熔丝位值烧录到单片机中。
二、常见的熔丝位设置和拯救方法1.时钟源的选择单片机工作时需要时钟源来提供节拍信号,可以选择内部RC振荡器、晶体振荡器或外部时钟源作为时钟源。
熔丝位中通常有相应的位(bit)用于选择时钟源。
如果选择错误,单片机可能无法正常启动。
拯救方法:通过修改熔丝位设置为正确的时钟源。
2.外部晶振的频率如果选择了外部晶振作为时钟源,还需要设置晶振的频率。
熔丝位中通常有不同的位(bit)用于选择晶振频率,常见的频率有8MHz、16MHz等。
如果设置的频率与实际晶振的频率不匹配,单片机可能无法正常工作。
拯救方法:通过修改熔丝位设置为正确的晶振频率。
3.启动时间延迟当电源刚刚接通时,单片机需要一定的时间来启动,此时需要设置启动时间延迟。
熔丝位中通常有相应的位(bit)用于设置延迟时间。
如果延迟时间设置得太短,单片机可能无法正常启动。
拯救方法:通过修改熔丝位设置为正确的启动时间延迟。
4.编程模式熔丝位中的一些位(bit)可能用于选择编程模式,比如ISP(In-System Programming)模式或JTAG(Joint Test Action Group)模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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字节,起始位置为0xF000。
BOOLOADER区大小配置:
注:在做熔丝位设置时要先确定“√”表示的是1还是0
搞错熔丝位,导致芯片死锁的恢复办法
说明:本贴仅具一般的参考性。
请有这方面的高手指正及投稿,让这个专题更加完整与专业。
当你改动了AVR的熔丝位配置,重新加电后,想再用ISP下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种主频而无法正常工作(仅限于内部RC振荡的情况。
解决方法为:
1。
寄回给芯片服务商,让他们帮忙将芯片恢复
这是最省事,但是最费时间,最无可奈何的方法。
2。
使用编程器将芯片恢复到出厂状态
这个方法,需要你有编程器。
3。
通过外加有源晶振的办法,让其恢复。
这个方法最可行。
它可以恢复大部分熔丝位搞错的芯片。
接法如下:
恢复方法:
接上上图的有源晶振,重新通电,就能用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晶振时是不能下载的。
当然如果已经是改为外部晶振了则没有关系。
当你程序完全确定之后,出厂前,你需要对程序进行加密,如下界面。