马潮老师关于正确配置AVR熔丝位的建议

合集下载

AVR第10讲复位熔丝位设置

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

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应用经验

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)配置说明

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系列单片机在仿真调试之前,首先必须对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单片机熔丝位设置方法

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单片机熔丝位设置方法和设置步骤大全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单片机系统设计与开发工具

第4章 AVR单片机系统设计与开发工具在学习和掌握如何应用单片机来设计和开发嵌入式系统时,除了要对所使用的单片机有全面和深入的了解外,配备和使用一套好的开发环境和开发平台也是必不可缺的。

在嵌入式系统的设计开发中,选用了好的开发工具和开发平台,往往能加速嵌入式应用系统的研制开发、调试、生产和维修,起到事半功倍的效果。

国内外许多公司根据不同单片机的性能和特点,研制推出了各种类型的用于开发单片嵌入式系统的单片机开发装置和软件开发平台。

不同类型的单片机使用的开发系统是不同的。

对同一类型的单片机来讲,也有多种类型和功能的开发装置和开发平台。

价格便宜、性能适中的系统在几百元,高性能的开发系统则要数千元到上万元,甚至仅仅一套软件开发平台就要上万元。

虽然设计开发一个嵌入式系统,可以选用多家公司、多种类型的单片机,但在决定学习和使用哪种单片机时,应对单片机的性能价格,开发装置和开发平台的性能价格,以及是否方便使用等,几方面做一个综合的评估。

由于AVR单片机的程序存储器采用的是可多次下载的Flash存储器,具有可在线下载(ISP)等的优良特性,给学习和使用都带来极大的方便。

本章将在介绍单片机嵌入式系统设计开发基础知识之后,重点介绍和讲述本书推荐和使用的一套采用ATMEL公司的AVR Studio配合C高级语言的软件开发平台—-CodeVisionAVR (简称CVAVR)所构成的开发软件环境,以及一套简易、开放的,集下载编程、实验和开发一体的多功能AVR-51实验板。

4.1 单片机嵌入式应用系统设计4.1.1单片机嵌入式系统开发所需的基础知识和技能在IT行业,应用系统设计可以分成两大类,一类用于科学计算、数据处理、企业管理、Internet网站建立等;另一类用于工业过程检测控制、智能仪表仪器和自动化设备、小型电子系统、通信设备、家用电器等。

对于前一类的应用系统设计,通常都是基于通用计算机系统和网络的系统开发,硬件设备也是通用的,可以从市场购买,而其主要的工作是软件开发,使用的开发平台以C++、VB、数据库系统、网站建立开发平台等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
相关文档
最新文档