AVRmega单片机熔丝位的设置详解及应用举例
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。
AVRmega单片机熔丝位的设置详解及应用举例

比如我们想使用片内的RC振荡(Fra bibliotek不需要接晶振),可以选择下面三者之一:
[CKSEL=0100 SUT=10] Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms;
[CKSEL=0100 SUT=00] Int. RC Osc. 1 MHz; Start-up time: 6 CK + 4 ms;
引导(Boot)区大小为xxx个词
Boot start address=$yyyy;
引导(Boot)区开始地址为$yyyy
Boot Reset vector Enabled
引导(Boot)、复位向量使能
Brown-out detection level at VCC=xxxx V;
掉电检测的电平为VCC=xxxx伏
五、AVR Studio熔丝位配置应用举例
通过下图的方法打开连接:
使用操作界面如下:((注意:下图中,打勾的表示选中,代表0。没有打勾的表示1)
上图的资料有很多相关项,你需要认识以下的代码,以理解意思。英文翻译说明如下
英文
中文
On-Chip Debug Enabled
片内调试使能
JTAG Interface Enabled
二、AVRmega16单片机中重要熔丝位的配置
(1)CLKSEL[3:0]:用于选择系统的时钟源。
(2)SPIEN:SPI下载使能位。默认状态为允许“0”。
(3)WDTON:WDT定时器始终开启设置位。默认为“1”,表示禁止WDT始终开启。
(4)EESAVE:执行擦除命令时是否保留EEPROM中的内容,默认状态为“1”,表示执行片内擦除命令时,EERPOM中的内容和Flash中的内容一同被擦除。
ATmega128.64熔丝锁定位详解.docx

ATmegal28熔丝位汇总编程与状态说明:•在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。
"Unprogrammed"表示熔丝状态为"1"(禁止);u Programmed表示熔丝状态为“0”(允许)1:未编程(检查框不打钩)0:编程(检査框打钩)•AVR的熔丝位可多次编程的,不是OPT熔丝。
•熔丝位的配置(编程)可以通过并行方式、ISP串行方式、JTAG串行方式实现。
•AVR芯片加密锁定后(LB2/LB1 = 1/0, 0/0)不能通过任何方式读取芯片内部Flash 和E'PROM中的数据,但熔丝位的状态仍然可以读取,但不能修改配置。
•芯片擦除命令是将Flash和E'PROM屮的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 = 1/1)。
但芯片擦除命令并不改变其它熔丝位的状态。
•I、•载编程的正确的操作程序是:在芯片无锁定状态卜,I、•载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。
•芯片彼加密锁定后,如果发现熔丝位配置不対,必须使用芯片擦除命令,清除芯片屮的数据,解除加密锁定。
然后重新卜谶运行代码和数据,修改配置和关的熔丝位, 最后再次配置芯片的加密锁定位。
3.有关Bootloader的熔丝上电启动地址的设定:对应用程序区的保护模式设置:对Bootloader区的保护模式设置:4・有关系统时钟源的选择和上电启动延时时间的设置熔丝系统时钟选择:使用外部振荡器时的工作模式配置:12、当C K O P T=O(编程)时,振荡器的输出振幅较大,适用丁•干扰大的场合;反之,振荡器的输出振幅较小,可以减少功耗,对外电磁幅射也较小。
3、CKOPT默认状态为“1”。
使用外部振荡器时的启动时间选择:使用外部低频晶振时的启动时间选择:12、使用32. 768K手表晶振作为MCU的时钟源.此时CKSEL应当编程为1001:3、CKOPT=0时,选择使用内部和XTAL1/XTAL2 +11连的电容,没有必要再外接电容:内部电容为 36pF 。
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单片机熔丝位设置详细知识文档

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单片机熔丝位设置方法

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的中、英文版本数据手册而翻译。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(10)使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦ISP可以对芯片操作,立即将CKSEL配置成使用内部1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。
默认情况下M103模式是选中的,应该将其去掉;晶振是内部1M晶振,如果你使用外部晶振,应该进行修改。M128可以开启硬件的看门狗,选中此项,看门狗不需要程序初始化,只需要程序里面喂狗就可以了。
默认熔丝第一部分
M103兼容模式,使能JTAG,使能SPI,Bootloader区大小4096,未使能BOOT。
AVRmega单片机熔丝位的设置详解及应用举例
一、正确配置AVR的熔丝位
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。
(3)CKOPT熔丝位的使用:在引脚XTAL1和XTAL2上外接由石英晶体并配合片内的OSC振荡电路构成的振荡源时,CKOPT的作用是控制片内OSC振荡电路的振荡幅度;CKOPT="1"时,振荡电路为半幅振荡;CKOPT=MHz)或要求抗干扰能力强时,应该设置CKOPT为“0”。当系统时钟频率较低(<2MHz)时,可以考虑将CKOPT设置为“1”(出厂默认值),这样可以减少电流的消耗。
[CKSEL=1111 SUT=01]Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms;
[CKSEL=1111 SUT=10]Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 4 ms;
五、AVR Studio熔丝位配置应用举例
通过下图的方法打开连接:
使用操作界面如下:((注意:下图中,打勾的表示选中,代表0。没有打勾的表示1)
上图的资料有很多相关项,你需要认识以下的代码,以理解意思。英文翻译说明如下
英文
中文
On-Chip Debug Enabled
片内调试使能
JTAG Interface Enabled
应用举例:
比如我们想使用片内的RC振荡(即不需要接晶振),可以选择下面三者之一:
[CKSEL=0100 SUT=10] Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms;
[CKSEL=0100 SUT=00] Int. RC Osc. 1 MHz; Start-up time: 6 CK + 4 ms;
JTAG接口使能
Serial program downloading (SPI) enabled
串行编程下载(SPI)使能(ISP下载时该位不能修改)
Preserve EEPROM memory through the Chip Erase cycle;
芯片擦除时EEPROM的内容保留
Boot Flash section size=xxxx words
(4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。
(5)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。
[CKSEL=0100 SUT=01] Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms;
如图:内部1M晶振,默认情况典型设置。(两个图分别为上下两部分,没有显示的部分均为不选中状态。)
下图显示的是选择内部晶振,1 Mhz RC
比如我们想使用外部7.3728M晶振,可以选择下面三者之一:
(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。
(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read->fuse bits”读取芯片中熔丝位实际状态后,再使用“all”选项。
(8)当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。
[CKSEL=1111 SUT=11]Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms;
如下两图:7.3728M晶振典型融丝位(及本站的开发板使用时候的典型设置)
Mega128的熔丝位
ATmega128是avr系列中一款高性能的芯片,设计的时候兼容M103模式,但是这个M103模式经常害人。基于此,说说ATmega128的熔丝位,顺便说说其他的功能。
三、JTAG口的使用与配置
AVRmega16上,JTAG的4个端口与PC口中的4位使用相同的引脚(TDI/PC5、TDO/PC4、TMS/PC3和TCK/PC2),如果使用JTAG口的功能,一旦设置JTAG接口处于使能状态,那么PC[5:2]就不能作为通常的I/O口使用了,这就意味着减少了可用的I/O口线。
(1)BOD功能:对系统电压进行检测的功能,一旦系统电压低于设定的门限电压后,AVR将自动停止正常运行,进入复位状态。
对于5V系统,设置BOD电平为4.0V,然后允许BOD检测。
对于3V系统,设置BOD电平为2.7V,然后允许BOD检测。
(2)延时启动时间:通过AVR熔丝位配置,最长延时启动时间达到65ms。
在AVRmega16中,使用两个熔丝位(JTAGEN和OCDEN)和MCUCSR寄存器中的JTD位对JTAG进行控制。其中JTD位可以由程序指令进行改变。下表给出3个控制位对JTAG的控制
JTAGEN
OCDEN
JTD
LB2/LB1
PC[5:2]功能
1
X
X
X/X
I/O
0
1
0
X/X
JTAG(仅允许下载编程)
引导(Boot)区大小为xxx个词
Boot start address=$yyyy;
引导(Boot)区开始地址为$yyyy
Boot Reset vector Enabled
引导(Boot)、复位向量使能
Brown-out detection level at VCC=xxxx V;
掉电检测的电平为VCC=xxxx伏
二、AVRmega16单片机中重要熔丝位的配置
(1)CLKSEL[3:0]:用于选择系统的时钟源。
(2)SPIEN:SPI下载使能位。默认状态为允许“0”。
(3)WDTON:WDT定时器始终开启设置位。默认为“1”,表示禁止WDT始终开启。
(4)EESAVE:执行擦除命令时是否保留EEPROM中的内容,默认状态为“1”,表示执行片内擦除命令时,EERPOM中的内容和Flash中的内容一同被擦除。
外部低频晶体
Ext. Crystal/Resonator Low Freq
外部晶体/陶瓷振荡器低频
Ext. Crystal/Resonator Medium Freq
外部晶体/陶瓷振荡器中频
Ext. Crystal/Resonator High Freq
外部晶体/陶瓷振荡器高频
注:以上中文是对照ATmega16的中、英文版本数据手册而翻译。尽量按照了官方的中文术语。
Brown-out detection enabled;
掉电检测使能
Start-up time: xxx CK + yy ms