马潮老师关于正确配置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应用经验
AVR 应用经验作者:马潮老师 /整理:armok / 2005-01-17/ AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。
但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。
功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。
就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。
AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。
“外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。
开发环境与工具:PC+下载线+实际的系统板PC上的开发软件:AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。
其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。
AVR ISP下载线:STK200 and STK200+ and STK300 ISP programmer。
通过PC的打印机口,采用ISP技术将系统运行代码(HEX、BIN)和数据写入AVR芯片的Flash和EEProm中,编程AVR的配置熔丝位和加密位。
支持决大多数的AVR芯片、以及ATMEL的51兼容芯片89S8252、89S52等。
在ICC、CVAVR、BASCOM-AVR、BASCOM-8051中都内含对该下载线的支持程序。
免费专用的下载程序:SLISP、PonyProg2000等。
尽量不使用仿真器的建议:在开发和调试系统程序时,有许多人完全依赖于仿真器,一旦离开了仿真器时就感觉无从下手。
AVR单片机熔丝位(Fuse)配置说明
AVR单片机熔丝位(Fuse)配置说明(2008-07-15 14:15:05)英文中文 On-Chip Debug Enabled片内调试使能JTAG Interface Enabled JTAG 接口使能Serial program downloading (SPI) enabled 串行编程下载(SPI) 使能 (ISP下载时该位不能修改)Preserve EEPROM memory throughthe 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=xxxxV;掉电检测的电平为 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外部晶体/陶瓷振荡器高频注:以上中文是对照 AVR的中、英文版本数据手册而翻译。
尽量按照了官方的中文术语。
应用举例:比如我们想使用片内的RC振荡(即不需要接晶振),可以选择选择下面三者之一: 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]。
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的中、英文版本数据手册而翻译。
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说明:将单片机的时钟源设置为外部时钟信号,外部时钟信号的频率必须在单片机规格书中规定的范围内。
马潮老师编著--第4章 AVR单片机系统设计与开发工具
第4章 AVR单片机系统设计与开发工具在学习和掌握如何应用单片机来设计和开发嵌入式系统时,除了要对所使用的单片机有全面和深入的了解外,配备和使用一套好的开发环境和开发平台也是必不可缺的。
在嵌入式系统的设计开发中,选用了好的开发工具和开发平台,往往能加速嵌入式应用系统的研制开发、调试、生产和维修,起到事半功倍的效果。
国内外许多公司根据不同单片机的性能和特点,研制推出了各种类型的用于开发单片嵌入式系统的单片机开发装置和软件开发平台。
不同类型的单片机使用的开发系统是不同的。
对同一类型的单片机来讲,也有多种类型和功能的开发装置和开发平台。
价格便宜、性能适中的系统在几百元,高性能的开发系统则要数千元到上万元,甚至仅仅一套软件开发平台就要上万元。
虽然设计开发一个嵌入式系统,可以选用多家公司、多种类型的单片机,但在决定学习和使用哪种单片机时,应对单片机的性能价格,开发装置和开发平台的性能价格,以及是否方便使用等,几方面做一个综合的评估。
由于AVR单片机的程序存储器采用的是可多次下载的Flash存储器,具有可在线下载(ISP)等的优良特性,给学习和使用都带来极大的方便。
本章将在介绍单片机嵌入式系统设计开发基础知识之后,重点介绍和讲述本书推荐和使用的一套采用ATMEL公司的AVR Studio配合C高级语言的软件开发平台—-CodeVisionAVR (简称CVAVR)所构成的开发软件环境,以及一套简易、开放的,集下载编程、实验和开发一体的多功能AVR-51实验板。
4.1 单片机嵌入式应用系统设计4.1.1单片机嵌入式系统开发所需的基础知识和技能在IT行业,应用系统设计可以分成两大类,一类用于科学计算、数据处理、企业管理、Internet网站建立等;另一类用于工业过程检测控制、智能仪表仪器和自动化设备、小型电子系统、通信设备、家用电器等。
对于前一类的应用系统设计,通常都是基于通用计算机系统和网络的系统开发,硬件设备也是通用的,可以从市场购买,而其主要的工作是软件开发,使用的开发平台以C++、VB、数据库系统、网站建立开发平台等。
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来设置启动时间,如下表。
补充:(时钟源介绍)。
AVR的bootloader的设置步骤教程及注意事项
AVR 的bootloader 的设置步骤教程及注意事项一些注意事项:
1.熔丝位的烧写:BOOTRST 要进行编程,这样单片机在复位后自动跳转
到bootloader 区执行bootloader 的代码,然后要根据自己bootloader 的大小设置boot 区的的熔丝位:具体设置如下图,这里我选择的是1024 大小(注意
1 代表为编程,0 代表已编程):
2.设置引导区锁定位:为了保护bootloader 不被应用程序修改或者擦除,
所以要对其进行保护,Atmega 提供了熔丝位的保护方式,具体设置如下图(我设置的为BLB0 为11,BLB1 为00):
3.Flash 页的设定:因flash 的擦除和写入是按照页来操作的,看手册上说是1 页有128 个字节,但实际调试时候发现需要一次写入256 个字节才有效的,如果按照128 来写入,会将第二个128 的内容覆盖掉第一个128 字节的
内容,那就按照实际为准了。
4.Xmodem 协议的注意事项:具体的xmodem 不在本文叙述了,只说一下要注意的地方,校验和是可以选择的,我使用的是checksum(就是单纯的累加),也可以选择16 为的CRC,这个是根据单片机第一次返回的响应字节来。
ATMEGA32熔丝位设置终于成功
AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。
高档ATmega系列AVR单片机: 主要有ATmega8/16/32/64/128( 存储容量为8/16/32/64/128 KB)以及ATmega8515/8535等。
AVR器件引脚从8脚到64脚, 还有各种不同封装供选择。详细的选型信息可以参考本网站的AVR单片机全系列性能参数表。
主要特性部分由马潮老师编写,前言及后面选型由armok 增加 / 2004-12-08 /
AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。
AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。
AVR 熔丝位配置说明
AVR Studio是ATMEL指定用于开发AVR MCU的官方软件,其编程功能最为强大。
下面介绍使用AVRStudio烧写程序及熔丝快速入门。
● 使用AVRISP方式烧写程序及配置熔丝位对软硬件进行初始配置,并正确设备连接,就可使用AVRISP进行联机了。
打开AVRStudio,点击主窗口中的图标前面标有Con的那个图标。
出现如下图画面:(点击图片放大)在左边,选择“STK500 or AVRISP”,在右边,选择“Auto”(或具体的COM口),点击“Connect”进行联机。
正常联机后,将弹出如下窗口:(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读命令,此命令可以读出未加密芯片内的程序,自动弹出一个对话框提示保存。
●EEPROM下载区,和Flash 下载区类似,格式为.hex、.e90和.eep,此功能用于下载比较多的需要存在EEPROM中的内容时使用。
Program、Verify、Read于Flash下载区有对应EEPROM的同样的功能,不在赘述。
●状态指示区,这里显示目前的操作状态。
(2)熔丝位设置面板:(点击图片放大)●配置熔丝位有一定的危险性,可能锁死芯片,在不知道具体在做什么操作之前,请不要急于动手。
AVR笔记8:mega16再次锁死
AVR笔记8:mega16再次锁死今天尝试使用11.0592MHz外部晶振来设置USART的波特率,没想到理解错误,把熔丝位设置为外部RC振荡CKSEL=1000,下载完成后就知道出问题了,有了上次芯片锁死的经历,这次就也不慌了,知道问题出在哪儿,借来函数信号发射器,给13引脚的XTAL1加入1MHz的脉冲,成功的解锁了。
然后再次上网查这方面的资料,发现因这样出错的还不少,使用外部晶振,得将熔丝位设置为CKSEL=1111,这样才是正确的。
虽然,在尝试的过程中出现了一些不大不小的错误,但是通过尝试进步了,学到东西了,还是比较兴奋地。
不能因为害怕出现问题或者是犯错,而不敢去尝试,人总是在不断的尝试中成长起来的。
【转载】马潮老师AVR芯片锁死的解救是有条件的:1.首先芯片本身没有坏(多余了)2.如果RESET引脚被禁止作为I/O用了(如M48,M8等),那么通过通常的串行编程方式是不能解救的(这类芯片通常没有JTAG口).3.如果SPI和JTAG都被禁止了,那么通过通常的串行编程方式是不能解救的.4.2、3情况只能通过高压串行或高压并行方式解救,当然,通常就要把芯片从板上取下了。
我所讲的解救,主要是由于时钟熔丝配置错误造成的锁死,但SPI或JTAG是允许的。
这种情况通常发生在系统设计使用内部RC振荡源的情况下,这时X1、X2为空脚,或作为I/O使用。
但下载程序时出现问题,或熔丝配置错误,选择了非内部RC振荡源。
由于此时AVR无系统时钟源,表现为锁死。
错误的出现可能为:1。
配置错误,这是人为的。
2。
下载程序过程中,突然断电;下载接头接触不良;下载器本身不稳定。
3。
错误的使用下载功能,如CVAVR中下载功能中的ALL(当熔。
马潮老师关于正确配置AVR熔丝位的建议—JTAGICE,JTAG,AVR,AVR单片机,熔丝位设置,熔丝位,下载器,编程器,STK5
0011:4.0M
0100:8.0M
----------------
CKSEL3/0=0101-1000:外部RC振荡,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容
(11)使用支持IAP的AVR芯片时,如果你不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不是从Flash的0x0000处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。关于BOOTRST的配置以及BOOTLOADER程序的设计与IAP的应用请参考本章相关内容。
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:禁止该电容
***************************************
BLB12/11: 引导区指令位选择 11
11:SPM和LPM指令都允许执行
10:SPM指令禁止写引导区
01:程序区LPM指令禁止读取引导区内容;如果中断向量定义在程序区,则禁止该中断在引导区执行。
二、mega8熔丝位:1:未编程(不选中)0:编程(选中)
***************************************
熔丝位 说明 缺省设置
***************************************
AVR马老师讲义
第一章绪论单片机嵌入式系统的硬件基本构成可分成两大部分,单片微控制器芯片和外围的接口电路。
其中单片微控制器是构成单片机嵌入式系统的核心。
单片微控制器(Microcontroller)又称为单片微型计算机(Single-Chip Microcomputre 或One-Chip Microcomputre),我国普遍采用的名字为单片机(许多年以来,国内一直采用单片机的叫法,为了符合我国的实际情况,本书仍采用单片机的名称)。
它的外表通常只是一块大规模集成电路芯片,但在芯片中却集成了中央处理器(CPU)、存储器(种类有RAM、ROM、EPROM、E2PROM和FlashROM 等)、和各种输入/输出接口(定时器/计数器、并行I/O、串行I/O 以及A/D转换接口等)。
因此,一片芯片构成了一个基本的微型计算机系统。
由于单片机芯片的微小体积,极低的成本和面向控制的设计,使的它作为智能控制的核心器件被广泛地应用于嵌入到工业控制、智能仪器仪表、家用电器、电子通信产品等各个领域中的电子设备和电子产品中。
可以说,由单片机为核心构成的单片机嵌入式系统已成为现代电子系统中最重要的组成部分。
第一节单片机嵌入式系统基础知识1.1.1 嵌入式计算机系统计算机的出现首先是应用于数值计算。
随着计算机技术的不断发展,计算机的处理速度越来越快,存储容量越来越大,外围设备的性能越来越好,满足了高速数值计算和海量数据处理的需要,形成了高性能的通用计算机系统。
以往我们按照计算机的体系结构、运算速度、结构规模、适用领域,将其分为大型计算机、中型机、小型机和微型计算机,并以此来组织学科和产业分工,这种分类沿袭了约40年。
近20年来,随着计算机技术的迅速发展,以及计算机技术和产品对其它行业的广泛渗透,使得以应用为中心的分类方法变得更为切合实际。
具体的说,就是按计算机的嵌入式应用和非嵌入式应用将其分为嵌入式计算机系统和通用计算机系统。
通用计算机具有计算机的标准形态,通过装配不同的应用软件,以类同面目出现并应用在社会的各个方面,现在广泛普及应用的PC机就是其最典型的代表。
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单片机的熔丝位说明.
注意:对于所有的熔丝位, “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单片机熔丝位设置详解1 、BOD(Brow n-out Detectio n 掉电检测电路BODLEVEL(BOD|平选择:1: 2.7V 电平;0 : 4.0V电平。
这需要根据芯片的工作电压来选择。
BODEN(BO功能控制: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:时钟源选择。
芯片出厂的默认情况下,CKSEL—0和SUT1 SYT0分别设置为“0001配置方法: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中的数据有效而对EEPRO无效。
芯片出厂的默认设置为“ 1”。
在实际应用中需要根据实际需要进行设置。
9、BOOTRST决定上电启动时,第一条指令的地址。
默认状态为“1”,表示启动从0x0000开始执行;如果BOOTRS设置为“ 0”,启动时从BOOTLOADE的起始位置开始启动(BOOTLOADER 的首地址由BOOTSZ和BOOTSZ决定)。
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)上电启动地址选择
(2)Bootloader区大小设置
(1)系统时钟选择
注释(2):当CKOPT=0时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输出振幅较小,可以降低功耗,对外电磁辐射也较小;
注释(3):CKOPT默认状态为“1”。
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:SPI 下载允许(注:当使用 SPI 编程时,该项不可用) EEAVE: 保留 BODEN: BOD 功能控制 1 1:BOD 功能禁止; 烧录时 EEPROM 数据保留 1 1:不保留;0:
0:BOD 功能允许 BODLEVEL: BOD 电平选择 1 1:2.7V 电平;0:
4.0V 电平 BOOTRST: 复位入口选择 1 1:程序从 0x0000
6 CK + 4.1 ms
CKSEL=0010
6 CK + 65 ms
CKSEL=0010
6 CK + 0 ms
CKSEL=01
内部 RC 振荡 4MHZ SUT=10 内部 RC 振荡 8MHZ SUT=00 内部 RC 振荡 8MHZ SUT=01 内部 RC 振荡 8MHZ SUT=10 外部 RC 振荡≤0.9MHZ SUT=00 外部 RC 振荡≤0.9MHZ SUT=01 外部 RC 振荡≤0.9MHZ SUT=10 外部 RC 振荡≤0.9MHZ SUT=11 外部 RC 振荡 0.9-3.0MHZ SUT=00 外部 RC 振荡 0.9-3.0MHZ SUT=01 外部 RC 振荡 0.9-3.0MHZ SUT=10
11:SPM 和 LPM 指令都允许执行 10:SPM 指令禁止写引导区 01: 程序区 LPM 指令禁止读取引导区内容; 如果中断向量定义在程序
区,则禁止该中断在引导区执行。 00:SPM 指令禁止写引导区;程序区 LPM 指令禁止读取引导区内容; 如果中断向量定义在程序区,则禁止该中断在引导区执行。 *************************************** LB2/1: 11:未加密 10:程序和 EEPROM 编程功能禁止,熔丝位锁定 00:程序和 EEPROM 编程及校验功能禁止,熔丝位锁定 (注:先编程其他熔丝位,再编程加密位) *************************************** CKSEL3/0: CKOPT: SUT1/0: 时钟源选择 晶振选择 复位启动时间选择 0001 1 10 程序区加密位选择 11
当选择不同晶振时,SUT 有所不同。 三、时钟选择一览表 时钟源 启动延时 熔丝
外部时钟 SUT=00 外部时钟 SUT=01 外部时钟 SUT=10 内部 RC 振荡 1MHZ SUT=00 内部 RC 振荡 1MHZ SUT=01 内部 RC 振荡 1MHZ SUT=10 内部 RC 振荡 2MHZ SUT=00 内部 RC 振荡 2MHZ SUT=01 内部 RC 振荡 2MHZ SUT=10 内部 RC 振荡 4MHZ SUT=00 内部 RC 振荡 4MHZ SUT=01
地址开始执行;0:程序从引导区确定的入口地址开始执行 *************************************** BOOTSZ1/0: 引导程序大小及入口 00:1024Word/0xc00; 01:512Word/0xe00; 10:256Word/0xf00; 11:128Word/0xf80 *************************************** BLB02/01: 程序区指令位选择 11 00
*************************************** RSTDISBL: 复位或 I/O 功能选择 1 1:复位功能;0:
I/O 功能(PC6) WDTON: 看门狗开关 1 1: 看门狗打开 (通
过 WDTCR 允许) ;0:看门狗禁止 SPIEN: SPI 下载允许 0 1:SPI 下载禁止;
马潮老师关于正确配置 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 芯片在使用前,应首先查看它熔丝位的配置情况,
调试,且 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 可以对芯片操作,立即将
11:SPM 和 LPM 指令都允许执行 10:SPM 指令禁止写程序区 01: 引导区 LPM 指令禁止读取程序区内容; 如果中断向量定义在引导 区,则禁止该中断在程序区执行。 00:SPM 指令禁止写程序区;引导区 LPM 指令禁止读取程序区内容; 如果中断向量定义在引导区,则禁止该中断在程序区执行。 *************************************** BLB12/11: 引导区指令位选择 11
CKSEL 配置成使用内部 1MHz 的 RC 振荡器作为系统的时钟源, 然后再 根据实际情况重新正确配置 CKSEL。 (11)使用支持 IAP 的 AVR 芯片时,如果你不使用 BOOTLOADER 功能,注意不要把熔丝位 BOOTRST 设置为“0”状态,它会使芯片在 上电时不是从 Flash 的 0x0000 处开始执行程序。 芯片出厂时 BOOTRST 位的状态默认为“1” 。关于 BOOTRST 的配置以及 BOOTLOADER 程序的 设计与 IAP 的应用请参考本章相关内容。 二、mega8 熔丝位:1:未编程(不选中)0:编程(选中) *************************************** 熔丝位 说明 缺省设置
再根据实际需要, 进行熔丝位的配置, 并将各个熔丝位的状态记录备 案。 (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 接口下载编程或实时在线仿真
6 CK + 0 ms
CKSEL=0000
6 CK + 4.1 ms
CKSEL=0000