AVR单片机熔丝位设置方法和设置步骤 大全
AVR第10讲复位熔丝位设置
通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程熔丝位1.选择时钟源CKSEL0-3和启动时间SUT0, SUT12.掉电检测BODLEVEL,BODEN3.选择BOOT区大小BOOTRST,BOOTSZ0, BOOTSZ14.SPIEN=0,串行下载使能;JTAGEN=1,边界扫描功能禁用;OCDEN=1片上调试禁用5.EESAVE=1芯片擦出时EEPROM内容不保留6.CKOPT=1振荡器由CKSEL0-3决定如果不需要Boot Loader 功能,则整个Flash 都可以为应用代码所用。
Boot Loader 具有两套可以独立设置的Boot 锁定位。
用户可以灵活地选择不同的代码保护方式。
用户可以选择:• 保护整个Flash 区,不让MCU 进行软件升级• 不允许MCU 升级 Boot Loader Flash 区• 不允许MCU 升级应用Flash 区• 允许MCU 升级整个Flash 区ATmega16 有两个熔丝位字节。
Notes: 1. 在SPI 串行编程模式下SPIEN 熔丝位不可访问。
2. CKOPT 熔丝位功能由CKSEL 位设置决定,详见P23 “ 时钟源” 。
3. BOOTSZ1..0 默认值为最大Boot 大小,详见 P244Table 100。
4. 不论锁位与JTAGEN熔丝位设置为什么,产品出厂时不对OCDEN编程。
对OCDEN 熔丝位编程后会使能系统时钟的某些部分在所有的休眠模式下运行。
这会增加功耗。
5. 如果没有连接JTAG 接口,应尽可能取消JTAGEN 熔丝位的编程状态,以消除存在于JTAG 接口之TDO 引脚的静态电流。
熔丝位的状态不受芯片擦除命令的影响。
如果锁定位1(LB1) 被编程则熔丝位被锁定。
在编程锁定位前先编程熔丝位。
ATmega16 提供了6 个锁定位,根据其被编程(“0”) 还是没有被编程(“1”) 的情况可以获得Table 104 列出的附加性能。
AVR单片机熔丝位设置教程
0表示已编程,1表示未编程,未选中熔丝低位BODLEVEL设置BOD电平1(2.7V),0(4V)因为M16L可以工作在2.7v-5.5v所以触BODEN BOD功能(电源检测)1(禁止),0(允许)SUT1复位启动时间选择SUT0CKSEL3时钟源选择CKSEL2时钟源选择CKSEL1时钟源选择CKSEL0时钟源选择熔丝高位OCDEN OCD功能允许1:OCD功能禁止;0:OCD功JTAGEN JTAG允许1:JTAG禁止; 0:JTAG允许NACKOPT选择这两种放大器模式 CKOPT=0:高幅度振荡输出;CKOPT=1:低幅度振荡输出EESAVE烧录时EEPROM数据保留 1:不保留;0:保留BOOTSZ1引导区程序大小及入口 00: 1024Word/0xc00;BOOTSZ001: 512Word/0xe00;10: 256Word/0xf00;11: 128Word/0xf80BOOTRST 复位入口选择 1:程序从0x0000地址开始 0:复位后从BOOT区执行(参考BOOTSZ0/1)BOD功能:作为一个正式的系统或产品,当系统基本功能调试完成后,一旦进行现场测试阶段,请注意马上改写熔丝位的配置,启用AVR的对于5V系统,设置BOD电平为4.0V;对于3V系统,设置BOD电平为2.7V。
然后允许BOD检测。
这样,一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。
而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。
SPIEN: SPI下载允许 1:SPI下载禁止;0:SPI下载使能当CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。
这种模式适合于噪声环境,以及需要通过XTAL2 驱动第英文中文On-Chip Debug Enabled 片内调试使能JTAG Interface Enabled JTAG 接口使能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 外部晶体/陶瓷振荡器高频时钟总表时钟源 启动延时 熔丝外部时钟 6 CK + 0 ms CKSEL=0000 SUT=00外部时钟 6 CK + 4.1 ms CKSEL=0000 SUT=01外部时钟 6 CK + 65 ms CKSEL=0000 SUT=10内部RC振荡1MHZ 6 CK + 0 ms CKSEL=0001 SUT=00内部RC振荡1MHZ 6 CK + 4.1 ms CKSEL=0001 SUT=01内部RC振荡1MHZ1 6 CK + 65 ms CKSEL=0001 SUT=10内部RC振荡2MHZ 6 CK + 0 ms CKSEL=0010 SUT=00内部RC振荡2MHZ 6 CK + 4.1 ms CKSEL=0010 SUT=01内部RC振荡2MHZ 6 CK + 65 ms CKSEL=0010 SUT=10内部RC振荡4MHZ 6 CK + 0 ms CKSEL=0011 SUT=00内部RC振荡4MHZ 6 CK + 4.1 ms CKSEL=0011 SUT=01内部RC振荡4MHZ 6 CK + 65 ms CKSEL=0011 SUT=10内部RC振荡8MHZ 6 CK + 0 ms CKSEL=0100 SUT=00内部RC振荡8MHZ 6 CK + 4.1 ms CKSEL=0100 SUT=01内部RC振荡8MHZ 6 CK + 65 ms CKSEL=0100 SUT=10外部RC振荡≤0.9MHZ 18 CK + 0 ms CKSEL=0101 SUT=00外部RC振荡≤0.9MHZ 18 CK + 4.1 ms CKSEL=0101 SUT=01外部RC振荡≤0.9MHZ 18 CK + 65 ms CKSEL=0101 SUT=10外部RC振荡≤0.9MHZ 6 CK + 4.1 ms CKSEL=0101 SUT=11外部RC振荡0.9-3.0MHZ 18 CK + 0 ms CKSEL=0110 SUT=00外部RC振荡0.9-3.0MHZ 18 CK + 4.1 ms CKSEL=0110 SUT=01外部RC振荡0.9-3.0MHZ 18 CK + 65 ms CKSEL=0110 SUT=10外部RC振荡0.9-3.0MHZ 6 CK + 4.1 ms CKSEL=0110 SUT=11外部RC振荡3.0-8.0MHZ 18 CK + 0 ms CKSEL=0111 SUT=00外部RC振荡3.0-8.0MHZ 18 CK + 4.1 ms CKSEL=0111 SUT=01外部RC振荡3.0-8.0MHZ 18 CK + 65 ms CKSEL=0111 SUT=10外部RC振荡3.0-8.0MHZ 6 CK + 4.1 ms CKSEL=0111 SUT=11外部RC振荡8.0-12.0MHZ 18 CK + 0 ms CKSEL=1000 SUT=00外部RC振荡8.0-12.0MHZ 18 CK + 4.1 ms CKSEL=1000 SUT=01外部RC振荡8.0-12.0MHZ 18 CK + 65 ms CKSEL=1000 SUT=10外部RC振荡8.0-12.0MHZ 6 CK + 4.1 ms CKSEL=1000 SUT=11低频晶振(32.768KHZ) 1K CK + 4.1 ms CKSEL=1001 SUT=00低频晶振(32.768KHZ) 1K CK + 65 ms CKSEL=1001 SUT=01低频晶振(32.768KHZ) 32K CK + 65 ms CKSEL=1001 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 4.1 ms CKSEL=1010 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 65 ms CKSEL=1010 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 0 ms CKSEL=1010 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 4.1 ms CKSEL=1010 SUT=11 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 65 ms CKSEL=1011 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 0 ms CKSEL=1011 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 4.1ms CKSEL=1011 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 65ms CKSEL=1011 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 4.1 ms CKSEL=1100 SUT=00 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 65 ms CKSEL=1100 SUT=01 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 0 ms CKSEL=1100 SUT=10中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 4.1 ms CKSEL=1100 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 65 ms CKSEL=1101 SUT=00 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 0 ms CKSEL=1101 SUT=01 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 4.1ms CKSEL=1101 SUT=10 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 65ms CKSEL=1101 SUT=11 高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 4.1 ms CKSEL=1110 SUT=00 高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 65 ms CKSEL=1110 SUT=01 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 0 ms CKSEL=1110 SUT=10高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 4.1 ms CKSEL=1110 SUT=11 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1111 SUT=10 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 65ms CKSEL=1111 SUT=11 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1111 SUT=10 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 65ms CKSEL=1111 SUT=11在2.7v-5.5v所以触发电平可选2.7v或4.0v。
AVR单片机熔丝位设置方法和设置步骤 大全
什么是熔丝位?熔丝是一个保护知识产权的设计。
简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。
一般成品出售时都这样做。
专用的写片机支持这个功能。
自己也可以根据芯片的官方文档来操作。
熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。
0表示已熔断,1表示未熔断。
熔丝位介绍AVR Studio中STK500处理熔丝位有巨大的优势:它是以功能组合让用户配置。
这种方式与小马(PonyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):有效避免因不熟悉熔丝位让芯片锁死(这是初学者的恶梦),笔者曾经锁死过三片Atmega16。
不需要靠记忆与查文档,就能配置熔丝位(这也是初学者的恶梦)动手之前:请你一定弄清楚了,你这样改会有什么后果,除非你有很多钱不在乎多锁死几个芯片。
AVR单片机熔丝位设置熔丝配置错,单片机被锁,非常抑闷,这篇文章具有一定价值,留作下次配置时参考之用。
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。
下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。
有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。
因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。
(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。
(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。
AVR单片机常用熔丝位说明
BOD,掉电检测功能。比如4.3V,当检测到电源低于4.3V时,单 片机复位。 AVR是宽电压工作的芯片,当电压跌至2.5V,系统程序还能工作 。这时有2个可怕的现象可能出现: 1.外围芯片工作已经混乱,AVR读到的东西不正确,造成程序的 执行发生逻辑错误(不是AVR本身的原因)。 2.当电源低到临界点,如2.4V时,并且在此忽上忽下,AVR本身 的程序执行也不正常,取指令、读数据都可能发生错误,或程 序乱飞、不稳定(AVR本身的原因,实际任何的单片机都是这样 的),非常容易造成EEPROM、FALSH的破坏。
0010:校准的内部RC振荡器
精度不高,一般不使用
0000:外部时钟
一般不用
0:PC6为普通引脚
慎点,PC6默认是复位引脚C6为复位引脚
GPIO用,同时,无法再ISP烧写程序,因为无法复位。
0:使能片上调试系统
1:部使能片上调试系统
片上调试,即后面的BOOTLoader功能。
用于设置复位后从哪一段程序存储区内启动,主要用于boot功 能。Boot区存储一块引导程序,开启boot功能,可以通过串口 在线给单片机更新程序,而不用依赖ISP
Boot Loader锁死功能 ,针对Boot Loader区域
Boot Loader锁死功能 ,针对应用区域
锁死以后不能再使用ISP等方式进行程序烧写或读取,但可以通 过专用烧写器接触锁定,主要用于加密防抄
AVR单片机常用熔丝位说明(以Atmega88为例)
配置说明
备注
0:时钟8分频
设置系统时钟的分频书,比如,电路晶振为8M,使能分频后,
1:时钟不分频
系统晶振就是1M
0:系统时钟输出(PB0)
1:不输出,PB0是普通IO
AVR单片机熔丝位设置详解
A VR单片机熔丝位设置详解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:决定上电启动时,第一条指令的地址。
AVR单片机熔丝位设置详细知识文档
AVR单片机熔丝位设置详细知识文档
本说明以AVR单片机中ATmega16的熔丝位为例,说明熔丝位如何正确设置。
1.编程与状态说明
(1)在AVR的器件手册中,使用已编程(Programmed)和未编程(U nprogrammed)定义熔丝位的状态。
未编程表示熔丝位状态为“1”(禁止);已编程表示熔丝位状态为“0”(允许)。
(2)AVR的熔丝位可以多次编程,不是一次性的OPT熔丝。
(3)熔丝位的配置可以通过并行方式、ISP串行方式和JTAG串行方式实现。
(4)AVR芯片加密锁定后(LB2/LB1=1/0,0/0)不能通过任何方式读取芯片内部的FLASH和EEPROM数据,但是熔丝位的状态仍然可以读取,只是不能修改配置。
(5)芯片擦除命令是将FLASH和EEPROM中的数据清除,并同时将两位锁定位状态配置成无锁定的状态(LB2/LB1=1/1),但芯片擦除命令不改变其熔丝位的配置。
(6)下载编程的正确操作程序是:对芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。
(7)如果芯片被加密锁定后,发现熔丝位配置不对,则必须使用擦除命令,清楚芯片的数据,解除加密锁定,然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。
2.芯片加密锁定熔丝位
3.功能熔丝位
4.Bootloader的熔丝位(1)上电启动地址选择
5.有关系统时钟源的选择熔丝位
(1)系统时钟选择
注释(2):当CKOPT=0时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输出振幅较小,可以降低功耗,对外电磁辐射也较小;
注释(3):CKOPT默认状态为“1”。
AVR熔丝位配置
AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝位和锁定位进行配置。
如果配置不当,则可能造成单片机不能正常工作,严重时可能导致单片机死锁。
因此,对单片机熔丝位和锁定位的正确配置显得尤为重要。
熔丝位是对单片机具体功能和工作模式的限定,其正确配置与否直接影响到单片机能否正常工作;锁定位是对单片机的程序和数据进行加密,以防止单片机中的程序和数据被读出或写入。
在进行配置时,一般先配置熔丝位,再配置锁定位。
锁定位又分为引导程序区锁定位和程序及数据存储器锁定位两类。
对引导程序区锁定位进行编程可以实现两套保护模式,即应用区保护模式和Boot Loader 区保护模式;不同的编程配置可以实现不同的加密级别。
对程序及数据存储器锁定位进行编程可以禁止对并行和SPI/JTAG串行编程模式中Flash和EEPROM进一步编程,从而对程序和存储器中的数据进行保护。
由于引导程序锁定位和程序及数据存储器锁定位的配置具有可逆性,因此可根据不同的需要多次编程,灵活改变。
但是,在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的。
在采用单一编程下载情况下(例如只采用JTAG下载或者只采用AVRISP并行下载),一旦配置后将不可改变。
鉴于熔丝位配置的重要性,本文以AVR系列的ATmega128单片机为例,详细介绍熔丝位的配置以及在配置过程中常出现的一些问题,并给出相应的解决办法,成功地解决了因熔丝位配置不当而引起的单片机不能正常工作和死锁等一系列问题。
1 熔丝位的配置ATmega128的熔丝位共有3个字节:熔丝位扩展字节、熔丝位高字节和熔丝位低字节。
表1、表2和表3分别描述了所有熔丝位的功能、默认值以及它们是如何映射到熔丝位字节的。
如果熔丝位被编程,则返回值为0。
表中0代表编程,1代表未编程。
表1 熔丝位扩展字节表2 熔丝位高字节表3 熔丝位低字节2 熔丝位配置常见问题(1) ATmega128部分引脚功能不可用这是一个典型的ATmega103兼容模式熔丝位没有正确配置的问题。
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说明:将单片机的时钟源设置为外部时钟信号,外部时钟信号的频率必须在单片机规格书中规定的范围内。
AVR熔丝位详细设置
AVR熔丝位的详细设置
AVR具有熔丝位设置功能,可灵活应用,但增加了其应用难度。
熔丝位设置不对,将会锁死AVR,故烧写之前要详细阅读相关文档。
各种型号AVR芯片的熔丝位设置不完全相同,一定要阅读芯片手册。
若没必要设置熔丝位,可默认出厂设置。
ATMega162出厂晶振频率设置为8MHz,若CKDIV8=1(不选择,即为8分频),则为1MHz。
其中,强调的是:选择为0,表编程;不选择为1,表不编程。
千万记住别搞反了。
这里以ATMega162芯片为例,介绍双龙的“SLISP”AVRISP下载软件。
其软件界面的设置操作如下:
先设配置熔丝,再烧写。
其步骤为->->
->。
这里不介绍加密等其他设置。
外接16MHz晶振,ATMega162的熔丝位设置为:CKDIV8=1,CKOUT=1,
SUT1:0=11,CKSEL3:0=1111。
如下图所示设置,可点击“设置导航”按钮,进入下一个框,这里不介绍。
熔丝位设置的分析为:
(1)CKDIV8=1,不进行8分频;
(2)CKSEL3:0用来选择时钟及其频率范围,如下表。
若为外接石英晶振,则在1111~1000范围。
而频率范围要参考下个表,若大于8MHz,则CKSEL3:1=111。
(3)用CKSEL0及SUT1:0来设置启动时间,如下表。
补充:(时钟源介绍)。
使用AVRStudio设置AVR熔丝位
在左边,选择“ 在左边,选择“JTAG ICE”,在右边,选择 ,在右边, “Auto”(或具体的 (或具体的COM 口),点击“Connect” ),点击“ 点击 进行联机。 进行联机。
程序编程面板: 程序编程面板:
为了帮助保护您的隐私, PowerPoint 禁止自动下载此外部图片。若要下载并显示此图片,请单击消息栏中的 “选项 ”,然后单击 “启用外部内容 ”。
为了帮助保护您的隐私, PowerPoint 禁止自动下载此外部图片。若要下载并显示此图片,请单击消息栏中的 “选项 ”,然后单击“ 启用外部内容” 。
熔丝位设置面板: 熔丝位设置面板:
熔丝位设置面板: 熔丝位设置面板:
为了帮助保护您的隐私, PowerPoint 禁止自动下载此外部图片。若要下载并显示此图片,请单击消息栏中的 “选项 ”,然后单击“ 启用外部内容 ”。
配置熔丝位有一定的危险性, ● 配置熔丝位有一定的危险性, 可能锁死芯片, 可能锁死芯片,在不知道具体在做 什么操作之前,请不要急于动手。 什么操作之前,请不要急于动手。 熔丝位状态显示框, ● 熔丝位状态显示框,显示芯片 的各个熔丝位的详细状况, 的各个熔丝位的详细状况,AVR的 的 熔丝位打勾表示0,表示启用该选项; 熔丝位打勾表示 ,表示启用该选项; 取消表示1,表示不启用该选项, 取消表示 ,表示不启用该选项,需 要注意。 要注意。 选项选中时, ● Auto Verity 选项选中时,程序 会自己进行校验,建议选中。 会自己进行校验,建议选中。 Smart Warning选项选中时,在对 选项选中时, 选项选中时 一些特殊的具有一定危险性的熔丝 位进行编程时会弹出警告信息, 位进行编程时会弹出警告信息,建 议选中。 议选中。 ● Program、Verify和Read分别 、 和 分别 对应编程、校验和读取, 对应编程、校验和读取,正确的配 置熔丝的方法是先读取, 置熔丝的方法是先读取,先后修改 需要修改的地方,再编程写回。 需要修改的地方,再编程写回。在 Auto Verity选项选中时无需再点 选项选中时无需再点 Verify按钮进行校验。 按钮进行校验。 按钮进行校验
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)模式。
AVR单片机熔丝位详解
注意:对于所有的熔丝位, “1” 表示未编程, “0” 代表已编程。
壱、CKSEL3..0、CKOPT、SUT1.0:用于设置系统时钟✓CKSEL3..0 --- 时钟源模式选择。
✓SUT1.0 --- 复位启动时间选择。
1、如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
2、对应时钟源模式的不同,SUT的设置也不同,详情看下文说明。
✓CKOPT --- 选择放大器模式。
0对应高幅度振荡输出;1对应低幅度振荡输出。
当CKOPT 被编程时,振荡器在输出引脚产生满幅度的振荡,这种模式适合于噪声环境,以及需要通过XTAL2驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽;当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。
其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。
对于谐振器,CKOPT 未编程时的最大频率为8 MHz,CKOPT 编程时为16 MHz。
1、当用外部晶体/ 陶瓷振荡器(1)CKOPT和CKSEL3..1设置晶体振荡器工作模式大器的输入和输出,如左图所示,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。
C1和C2 的数值要一样,不管使用的是晶体还是谐振器。
最佳的数值与使用的晶体或谐振器有关,还与杂散电容和环境的电磁噪声有关。
表1-1给出了不同模式对应的频率范围及针对晶体选择电容的一些指南。
对于陶瓷谐振器,应该使用厂商提供的数值。
表1-1:振荡器工作模式(1)SUT1.0和CKSEL0设置选择启动时间表1-2:晶体振荡器时钟选项对应的启动时间表2、当用外部低频振荡器为了使用32.768 kHz 钟表晶体作为器件的时钟源,必须将熔丝位CKSEL 设置“1001”以选择低频晶体振荡器。
晶体的连接方式和用上面外部晶振的一样。
通过对熔丝位CKOPT 的编程,可以使能XTAL1 和XTAL2 的内部电容,从而去除外部电容。
内部电容的标称数值为36 pF。
关于AVR的熔丝的使用和设置
芯 片 擦 除 命 令 并 不 改 变其 它 熔 丝 位 的 状 态 。 6 正 确 的 操 作 程 序 是 : 芯 片 无 锁 定 状 态 下 , 栽 运 行 代 、 在 下
码 和 数 据 , 置 相 关 的 熔 丝 位 , 后 配 置 芯 片 的 锁 定 位 。芯 片 被 配 最
不 会 使 用和 误 操 作 , 地 给 出 参 考 。 对 特
同 时 。 正 版 智 能 卡 中 。“ 丝 ”也 作 为 一 种 保 证 单 片 机 ・ 在 熔 安 全 性 。 止 程 序 被 非 法 读 出 而 导 致 芯 片 被 破 解 的 手 段 存 在 一 防
着 。因此 。 解 芯 片 的熔 丝加 密 位 也就 成 为 7黑 客攻 击 智能 破
易 掌 握 。 下 面 给 出对 A R 熔 丝 位 的 配 置 操 作 时 的 一 些要 点 和 V 需要 注 意 的 相 关 事 项 。
1 在 A R 的 器 件 手 册 中 . 对 熔 丝 住 使 用 已 编 程 、 V
( rg a P o r mme ) 未 编 程 ( n rg a d 和 U p o r mme 定 义 熔 丝 住 的 状 d)
’
・ ・
一
- ● ’
1 -
.
.
-
-
t
-
・
’
,
,
●
-
●
-
,
,
t
-
,
,
-
.
t
-
.
・ .
’
-
’
’
-
.
关 于 AV 的 熔 丝 的 使 用 和 设 置 R
看 到 这 么 多 的 人 对 AVR 的 熔 丝 位
AVR熔丝位配置详解
AVR熔丝位配置详解引言AVR是一款常见的微控制器系列,广泛应用于嵌入式系统开发。
AVR熔丝位(Fuse Bits)是用来配置微控制器的专用寄存器,可以控制微控制器的一些重要功能和特性。
本文将详细介绍AVR熔丝位的配置方法和各个熔丝位的含义。
熔丝位概述熔丝位通常由一系列位组成,每个位都代表一种功能或特性。
通过配置熔丝位,我们可以选择开启或关闭特定的功能或特性。
配置熔丝位是在编译和上传代码之前进行的,因此它们对于硬件设置至关重要。
熔丝位配置方法熔丝位配置方法因不同型号的AVR微控制器而异,通常有以下几种方式:1. 使用烧录器软件一些烧录器软件提供了图形界面以便用户配置熔丝位。
用户只需选择相应的选项,然后点击配置按钮即可自动将配置写入到微控制器中。
这种方法简单易用,适合初学者或不熟悉寄存器操作的用户。
2. 使用命令行工具对于高级用户或需要批量配置多个微控制器的情况,可以使用命令行工具进行熔丝位配置。
用户需要编写一条命令,指定相关的参数和选项,然后通过命令行工具执行该命令。
这种方法比较灵活,可以自动化配置过程。
3. 使用编程器接口在一些特殊情况下,用户可能需要直接通过编程器接口来配置熔丝位。
这种方法比较复杂,需要用户熟悉编程器接口的相关操作和命令。
一般建议初学者不要使用这种方法,以免不必要的麻烦。
常见熔丝位配置AVR微控制器的不同型号和系列有不同的熔丝位配置选项。
下面是一些常见的熔丝位配置及其含义:1. 高位熔丝位 - CKSEL[3:0]这些位用于配置系统时钟源和分频器。
通过这些位的配置,可以选择使用内部RC振荡器、外部晶体振荡器还是其他外部时钟源作为系统时钟,并选择分频器的分频比。
2. 高位熔丝位 - BODLEVEL[2:0]这些位用于配置低压复位(Brown-out Reset)的阈值电压。
通过这些位的配置,可以设置复位器的阈值电压,以便在系统电压低于设定值时触发复位。
3. 高位熔丝位 - BOOTSZ[1:0]这些位用于配置引导区(Bootloader)的大小。
AVR单片机熔丝位详解
AVR单片机熔丝位详解AVR的功能很多,其体现在可以选择片内、片外多种时钟源、自带看门狗电路、自带程序加密等功能上。
而这些功能的选择和设定是通过片内叫做“熔丝位”的状态标志来设置的。
如果把AVR单片机里你编写的程序比作电脑运行的操作系统和应用软件的话,熔丝位就相当于电脑主板的BIOS设置了。
在一些AVR用的ISP编程软件里,你可以访问到熔丝位。
avr 单片机 CKSEL[3:0]正是熔丝位设置中的一部分,从字面上就能看出,大致是clock select(时钟源选择)的意思,共有(Bit3~Bit0)四位,通过设置这四位的状态,可以决定单片机将使用何种振荡源作为时钟。
以Mega8单片机为例,CKSEL位的设置通常会伴随CKOPT位一起进行。
下面是在网上搜索到的注释,供你参考:CKSEL3/0=0000:外部时钟,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容----------------CKSEL3/0=0001-0100:采用内部RC振荡作为时钟源,其具体震荡频率是:0001:1.0M0010:2.0M0011:4.0M0100:8.0M这里CKOPT只能设置为1----------------CKSEL3/0=0101-1000:采用外部RC振荡作为时钟源,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容根据震荡频率范围,设置相应的熔丝位 0101:<0.9M 0110:0.9-3.0M 0111:3.0-8.0M 1000:8.0-12.0M----------------CKSEL3/0=1001:采用外部时钟信号作为时钟源,CKOPT=0:允许芯片内部XTAL1/XTAL2管脚对GND各接一个36PF电容;CKOPT=1:禁止该电容----------------CKSEL3/0=1010-1111:采用外部晶振,陶瓷振荡子作为时钟源,CKOPT=0:高幅度振荡输出(XTAL1引脚将输出一个大幅度的震荡信号,用于某些情况下供给其他处理器当做时钟源,以达到时钟同步);CKOPT=1:低幅度振荡输出(XTAL1引脚输出低幅度的震荡信号,用以省电、减少干扰);并依据晶体的震荡频率范围,设置相应的熔丝位101X:0.4-0.9M110X:0.9-3.0M111X:3.0-8.0M。
AVR单片机的熔丝位说明.
注意:对于所有的熔丝位, “1” 表示未编程, “0” 代表已编程。
一、 CKSEL3..0、CKOPT 、SUT1.0:用于设置系统时钟✓ CKSEL3..0 --- 时钟源模式选择。
✓ SUT1.0 --- 复位启动时间选择。
1、如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
2、对应时钟源模式的不同,SUT 的设置也不同,详情看下文说明。
✓ CKOPT --- 选择放大器模式。
0对应高幅度振荡输出;1对应低幅度振荡输出。
当CKOPT 被编程时,振荡器在输出引脚产生满幅度的振荡,这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽;当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。
其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。
对于谐振器,CKOPT 未编程时的最大频率为8 MHz ,CKOPT 编程时为16 MHz 。
1、当用外部晶体/ 陶瓷振荡器(1CKOPT 和CKSEL3..1设置晶体振荡器工作模式XTAL1 与XTAL2 分别为用作片内振荡器的反向放大器的输入和输出,如左图所示,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。
C1和C2 的数值要一样,不管使用的是晶体还是谐振器。
最佳的数值与使用的晶体或谐振器有关,还与杂散电容和环境的电磁噪声有关。
表1-1给出了不同模式对应的频率范围及针对晶体选择电容的一些指南。
对于陶瓷谐振器,应该使用厂商提供的数值。
表1-1:振荡器工作模式(1 SUT1.0和CKSEL0设置选择启动时间表1-2:晶体振荡器时钟选项对应的启动时间表2、当用外部低频振荡器为了使用32.768 kHz 钟表晶体作为器件的时钟源,必须将熔丝位CKSEL 设置“1001”以选择低频晶体振荡器。
晶体的连接方式和用上面外部晶振的一样。
通过对熔丝位CKOPT 的编程,可以使能XTAL1 和XTAL2 的内部电容,从而去除外部电容。
AVR单片机熔丝位设置方法
AVR单片机熔丝位设置方法以下将介绍AVR单片机熔丝位的设置方法,包括基本概念、设置步骤、常用设置等方面内容。
一、基本概念:1. 熔丝位(Fuse):熔丝位是单片机内部的用来设置特殊功能的寄存器位。
通过设置熔丝位,可以配置单片机的时钟源、保护位、功能设置等。
2.熔丝位的编程:熔丝位的编程是指通过编程器将特定的数值写入单片机的熔丝位,从而实现对单片机功能的配置。
二、设置步骤:下面以ATmega16A单片机为例,介绍AVR单片机熔丝位的设置步骤:1.确定目标设置:在进行熔丝位设置之前,首先要确定目标设置。
查阅单片机的数据手册以获取关于熔丝位的详细信息,在进行设置之前要明确需要配置的功能。
2.选择编程器:选择一种适用于目标单片机的编程器,如使用AVRISP编程器等。
3.连接硬件:将编程器与目标单片机进行连接,通常需要使用编程器提供的相应接口线将编程器和目标单片机的编程接口相连。
4. 打开烧录软件:打开编程软件,如AVR Studio等。
5.选择目标单片机:在软件中选择正确的目标单片机型号。
6.设置熔丝位:在软件中找到熔丝位设置选项,具体位置可能因编程软件的不同而有所差异。
根据需要进行相应的选择和设置,如时钟源选择、SPIEN位等。
7.编程:设置好熔丝位后,通过编程器将目标设置烧录到单片机的熔丝位。
8.验证:进行熔丝位设置后,需要验证设置是否成功。
可以使用相应的工具或软件读取并显示单片机的熔丝位设置,对比验证。
三、常用设置:以下列举了一些常用的熔丝位设置:1.时钟源选择:通过熔丝位可以选择单片机的时钟源,如晶体振荡器、外部时钟源、内部RC振荡器等。
2.分频系数设置:可以通过熔丝位设置单片机的时钟分频系数,控制单片机的运行速度。
3.禁用复位功能:可以将熔丝位设置为禁用复位功能,这样在特定条件下复位功能将无效。
4.锁定熔丝位:通过设置熔丝位可以对单片机的熔丝位进行锁定,一旦锁定则无法再对其进行修改。
四、熔丝位设置的注意事项:1.要仔细阅读单片机的数据手册,了解熔丝位的具体含义和设置范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是熔丝位?熔丝是一个保护知识产权的设计。
简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。
一般成品出售时都这样做。
专用的写片机支持这个功能。
自己也可以根据芯片的官方文档来操作。
熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。
0表示已熔断,1表示未熔断。
熔丝位介绍AVR Studio中STK500处理熔丝位有巨大的优势:它是以功能组合让用户配置。
这种方式与小马(PonyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):有效避免因不熟悉熔丝位让芯片锁死(这是初学者的恶梦),笔者曾经锁死过三片Atmega16。
不需要靠记忆与查文档,就能配置熔丝位(这也是初学者的恶梦)动手之前:请你一定弄清楚了,你这样改会有什么后果,除非你有很多钱不在乎多锁死几个芯片。
AVR单片机熔丝位设置熔丝配置错,单片机被锁,非常抑闷,这篇文章具有一定价值,留作下次配置时参考之用。
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。
下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。
有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。
(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的应用请参考本章相关内容。
二、mega8熔丝位:1:未编程(不选中)0:编程(选中)***************************************熔丝位说明缺省设置***************************************RSTDISBL:复位或I/O功能选择11:复位功能;0:I/O功能(PC6)WDTON:看门狗开关11:看门狗打开(通过WDTCR允许);0:看门狗禁止SPIEN:SPI下载允许01:SPI下载禁止;0:SPI下载允许(注:当使用SPI编程时,该项不可用)EEAVE:烧录时EEPROM数据保留11:不保留;0:保留BODEN:BOD功能控制11:BOD功能禁止;0:BOD功能允许BODLEVEL:BOD电平选择11:2.7V电平;0:4.0V电平BOOTRST:复位入口选择11:程序从0x0000地址开始执行;0:程序从引导区确定的入口地址开始执行***************************************BOOTSZ1/0:引导程序大小及入口0000:1024Word/0xc00;01:512Word/0xe00;10:256Word/0xf00;11:128Word/0xf80***************************************BLB02/01:程序区指令位选择1111:SPM和LPM指令都允许执行10:SPM指令禁止写程序区01:引导区LPM指令禁止读取程序区内容;如果中断向量定义在引导区,则禁止该中断在程序区执行。
00:SPM指令禁止写程序区;引导区LPM指令禁止读取程序区内容;如果中断向量定义在引导区,则禁止该中断在程序区执行。
***************************************BLB12/11:引导区指令位选择1111:SPM和LPM指令都允许执行10:SPM指令禁止写引导区01:程序区LPM指令禁止读取引导区内容;如果中断向量定义在程序区,则禁止该中断在引导区执行。
00:SPM指令禁止写引导区;程序区LPM指令禁止读取引导区内容;如果中断向量定义在程序区,则禁止该中断在引导区执行。
***************************************LB2/1:程序区加密位选择1111:未加密10:程序和EEPROM编程功能禁止,熔丝位锁定00:程序和EEPROM编程及校验功能禁止,熔丝位锁定(注:先编程其他熔丝位,再编程加密位)***************************************CKSEL3/0:时钟源选择0001CKOPT:晶振选择1SUT1/0:复位启动时间选择10***************************************CKSEL3/0=0000:外部时钟,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF 电容;CKOPT=1:禁止该电容----------------CKSEL3/0=0001-0100:已经校准的内部RC振荡,CKOPT总为10001:1.0M0010:2.0M0011:4.0M0100:8.0M----------------CKSEL3/0=0101-1000:外部RC振荡,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容0101:<0.9M0110:0.9-3.0M0111:3.0-8.0M1000:8.0-12.0M----------------CKSEL3/0=1001:外部低频晶振,CKOPT=0:允许芯片内部XTAL1/XTAL2管脚对GND 各接一个36PF电容;CKOPT=1:禁止该电容----------------CKSEL3/0=1010-1111:外部晶振,陶瓷振荡子,CKOPT=0:高幅度振荡输出;CKOPT =1:低幅度振荡输出101X:0.4-0.9M110X:0.9-3.0M111X:3.0-8.0M***************************************SUT1/0:复位启动时间选择当选择不同晶振时,SUT有所不同。
三、时钟选择一览表时钟源启动延时熔丝外部时钟6CK+0ms CKSEL="0000"SUT="00"外部时钟6CK+ 4.1ms CKSEL="0000"SUT="01"外部时钟6CK+65ms CKSEL="0000"SUT="10"内部RC振荡1MHZ6CK+0ms CKSEL="0001"SUT="00"内部RC振荡1MHZ6CK+ 4.1ms CKSEL="0001"SUT="01"内部RC振荡1MHZ6CK+65ms CKSEL="0001"SUT="10"内部RC振荡2MHZ6CK+0ms CKSEL="0010"SUT="00"内部RC振荡2MHZ6CK+ 4.1ms CKSEL="0010"SUT="01"内部RC振荡2MHZ6CK+65ms CKSEL="0010"SUT="10"内部RC振荡4MHZ6CK+0ms CKSEL="0011"SUT="00"内部RC振荡4MHZ6CK+ 4.1ms CKSEL="0011"SUT="01"内部RC振荡4MHZ6CK+65ms CKSEL="0011"SUT="10"内部RC振荡8MHZ6CK+0ms CKSEL="0100"SUT="00"内部RC振荡8MHZ6CK+ 4.1ms CKSEL="0100"SUT="01"内部RC振荡8MHZ6CK+65ms CKSEL="0100"SUT="10"外部RC振荡≤0.9MHZ18CK+0ms CKSEL="0101"SUT="00"外部RC振荡≤0.9MHZ18CK+ 4.1ms CKSEL="0101"SUT="01"外部RC振荡≤0.9MHZ18CK+65ms CKSEL="0101"SUT="10"外部RC振荡≤0.9MHZ6CK+4.1ms CKSEL="0101"SUT="11"外部RC振荡0.9-3.0MHZ18CK+0ms CKSEL="0110"SUT="00"外部RC振荡0.9-3.0MHZ18CK+4.1ms CKSEL="0110"SUT="01"外部RC振荡0.9-3.0MHZ18CK+65ms CKSEL="0110"SUT="10"外部RC振荡0.9-3.0MHZ6CK+4.1ms CKSEL="0110"SUT="11"外部RC振荡3.0-8.0MHZ18CK+0ms CKSEL="0111"SUT="00"外部RC振荡3.0-8.0MHZ18CK+4.1ms CKSEL="0111"SUT="01"外部RC振荡3.0-8.0MHZ18CK+65ms CKSEL="0111"SUT="10"外部RC振荡3.0-8.0MHZ6CK+4.1ms CKSEL="0111"SUT="11"外部RC振荡8.0-12.0MHZ18CK+0ms CKSEL="1000"SUT="00"外部RC振荡8.0-12.0MHZ18CK+ 4.1ms CKSEL="1000"SUT="01"外部RC振荡8.0-12.0MHZ18CK+65ms CKSEL="1000"SUT="10"外部RC振荡8.0-12.0MHZ6CK+4.1ms CKSEL="1000"SUT="11"低频晶振(32.768KHZ)1K CK+ 4.1ms CKSEL="1001"SUT="00"低频晶振(32.768KHZ)1K CK+65ms CKSEL="1001"SUT="01"低频晶振(32.768KHZ)32K CK+65ms CKSEL="1001"SUT="10"低频石英/陶瓷振荡器(0.4-0.9M)258CK+4.1ms CKSEL="1010"SUT="00"低石英/陶瓷振荡器(0.4-0.9M)258CK+65ms CKSEL="1010"SUT="01"低石英/陶瓷振荡器(0.4-0.9M)1K CK+0ms CKSEL="1010"SUT="10"低石英/陶瓷振荡器(0.4-0.9M)1K CK+ 4.1ms CKSEL="1010"SUT="11"低石英/陶瓷振荡器(0.4-0.9M)1K CK+65ms CKSEL="1011"SUT="00"低石英/陶瓷振荡器(0.4-0.9M)16K CK+0ms CKSEL="1011"SUT="01"低石英/陶瓷振荡器(0.4-0.9M)16K CK+ 4.1ms CKSEL="1011"SUT="10"低石英/陶瓷振荡器(0.4-0.9M)16K CK+65ms CKSEL="1011"SUT="11"中石英/陶瓷振荡器(0.9-3.0M)258CK+ 4.1ms CKSEL="1100"SUT="00"中石英/陶瓷振荡器(0.9-3.0M)258CK+65ms CKSEL="1100"SUT="01"中石英/陶瓷振荡器(0.9-3.0M)1K CK+0ms CKSEL="1100"SUT="10"中石英/陶瓷振荡器(0.9-3.0M)1K CK+ 4.1ms CKSEL="1100"SUT="11"中石英/陶瓷振荡器(0.9-3.0M)1K CK+65ms CKSEL="1101"SUT="00"中石英/陶瓷振荡器(0.9-3.0M)16K CK+0ms CKSEL="1101"SUT="01"中石英/陶瓷振荡器(0.9-3.0M)16K CK+ 4.1ms CKSEL="1101"SUT="10"中石英/陶瓷振荡器(0.9-3.0M)16K CK+65ms CKSEL="1101"SUT="11"高石英/陶瓷振荡器(3.0-8.0M)258CK+ 4.1ms CKSEL="1110"SUT="00"高石英/陶瓷振荡器(3.0-8.0M)258CK+65ms CKSEL="1110"SUT="01"高石英/陶瓷振荡器(3.0-8.0M)1K CK+0ms CKSEL="1110"SUT="10"高石英/陶瓷振荡器(3.0-8.0M)1K CK+ 4.1ms CKSEL="1110"SUT="11"高石英/陶瓷振荡器(3.0-8.0M)1K CK+65ms CKSEL="1111"SUT="00"高石英/陶瓷振荡器(3.0-8.0M)16K CK+0ms CKSEL="1111"SUT="01"高石英/陶瓷振荡器(3.0-8.0M)16K CK+ 4.1ms CKSEL="1111"SUT="10"高石英/陶瓷振荡器(3.0-8.0M)16K CK+65ms CKSEL="1111"SUT="11"注:1、出厂默认设置注意:CKOPT=1(未编程)时,最大工作频率为8MHZ内部RC振荡1MHZ6CK+ 4.1ms CKSEL="0001"SUT="01"AVR单片机烧录和熔丝位的操作初步AVR单片机由于接口丰富,功能齐全,性价比好,运用越来越广。