原创 ATmega16的熔丝设置详解

2007-6-15 09:35 5750 3 4 分类: MCU/ 嵌入式

初学者对熔丝经常不解,AVR芯片使用熔丝来设定时钟、启动时间、一些功能的使能、BOOT区设定、当然还有最让初学者头疼的保密位,设不好锁了芯片很麻烦。要想使MCU功耗最小也要了解一些位的设定<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


在此写下自己对熔丝的理解,参照了一些MEGA16PDF文档,双龙的文档,以及大家的帖子。力求易懂、全面。


下面以双龙的在系统编程软件SLISP为例具体说明我对熔丝的理解。


a intro


b 低位(时钟及启动时间设置):


c 时钟总表


d 位(BOOT区设置)


e 常用熔丝设置


 打开运行SLISP.exe,首先记住:


1:未编程(配置熔丝检查框未打钩


0:编程 (配置熔丝检查框打钩


建议在配置熔丝之前先“读取配置”读出原来的设定,再自己编辑。


先了解一下M16的出厂设置。


默认设置为:内部RC振荡8MHz 6 CK + 65 ms CKSEL="0100" SUT="10"低位(时钟及启动时间设置):


1.BOD(Brown-out Detection) 掉电检测电路


BODLEVEL(BOD电平选择): 1: 2.7V电平; 04.0V电平


BODEN(BOD功能控制): 1BOD功能禁止;0BOD功能允许


使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。


注:1.复选框选中代表00电平有效。            


   2.因为M<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />16L可以工作在2.7v5.5v,所以触发电平可选2.7v(BODLEVEL=0)4.0v(BODLEVEL=1);M16工作在4.55.5V,所以只能选BODLEVEL=0BODLEVEL=1不适用于ATmega16


2.复位启动时间选择


SUT 1/0:  当选择不同晶振时,SUT有所不同。


如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。


CKSEL3/0: 时钟源选择(时钟总表


 


时钟总表 


  时钟源               启动延时         熔丝


  外部时钟             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="111"0 SUT="00"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    258 CK + 65 ms    CKSEL="111"0 SUT="01"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    1K CK + 0 ms      CKSEL="111"0 SUT="10"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    1K CK + 4.1 ms    CKSEL="111"0 SUT="11"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    1K CK + 65 ms     CKSEL=1111 SUT="00"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    16K CK + 0 ms     CKSEL="111"1 SUT="01"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    16K CK + 4.1ms    CKSEL="111"1 SUT="10"


高频石英/陶瓷振荡器(3.0-8.0MHZ)    16K CK + 65ms     CKSEL="111"1 SUT="11"


 


高位(BOOT区设置)


1. JTAGEN(JTAG允许):  1JTAG禁止; 0JTAG允许


   OCDEN(OCD功能允许)  1OCD功能禁止;0OCD功能允许


   OCDEN(On-chip Debug):片上调试使能位


   JTAGEN(JTAG使能): JTAG测试访问端口


使用方法:在JTAG调试时,使能OCDEN JTAGEN两位(复选框打勾),并保持所有的锁定位处于非锁定状态;在实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少23mA的电流。


2. SPIEN(SPI下载允许):  1SPI下载禁止;0SPI下载使能


注:在双龙的软件里,SPIEN是不能编辑的,默认为0


3. CKOPT(选择放大器模式) CKOPT0:高幅度振荡输出;CKOPT1:低幅度振荡输出


   CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽。当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。


   其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。(据我测量功耗差别在1mA左右)


   对于谐振器,当CKOPT未编程时的最大频率为8 MHzCKOPT编程时为16 MHz。内部RC振荡器工作时不对CKOPT编程。


4.EEAVE(烧录时EEPROM数据保留):  1:不保留;0:保留


  在一次使用EEProm时没注意EEAVE位的编程,调试程序每次烧flash时,EEProm都没了,后来才知道,EEAVE打了勾(1:不保留)//*chenran疑问:打了勾是0,怎么是不保留呢)//


5.BOOTRST(复位入口选择):  1:程序从0x0000地址开始 0:复位后从BOOT区执行(参考BOOTSZ0/1


6.BOOTSZ 1/0(引导区程序大小及入口): 


001024Word/0xc00


01 512Word/0xe00


10 256Word/0xf00


11 128Word/0xf80

文章评论1条评论)

登录后参与讨论

用户1133718 2009-7-27 21:56

比较全面,看了很受益,谢谢。不过可能有点错误,如下:

“2.因为M16L可以工作在2.7v5.5v,所以触发电平可选2.7v(BODLEVEL=0)4.0v(BODLEVEL=1);M16工作在4.55.5V,所以只能选BODLEVEL=0BODLEVEL=1不适用于ATmega16。”

这里BODLEVEL=0时是4.0V,BODLEVEL=1时是2.7V。

用户1053025 2007-1-5 17:14

呵呵,是我们编辑的水平不够,惭愧惭愧!
相关推荐阅读
用户42783 2007-10-15 13:14
一个好的网站
http://www.abab123.com/bbs/down.asp?html=703419...
用户42783 2007-10-13 16:23
售S51单片机开发板(学习板)
       现有S51开发板2套,做工精细,性能稳定。    主要资源:USB取电插头,Max232,在线编程接口,I/O口外扩插针,8位独立按键,液晶插座,蜂鸣器,DS1302时钟插座,93C64...
用户42783 2007-07-14 16:25
中科院电工所考博试题
本人有中国科学院电工所2001年到2004年电工和电力电子试题10套,售价10元每份,电子版或者邮件都可。还有中科院英语复习资料两套。据说把这些题弄明白就可能通过英语考试。(这本来是为我考博准备的,但...
用户42783 2007-06-19 11:13
AD/DA的分类与指标
1. AD转换器的分类    下面简要介绍常用的几种类型的基本原理及特点:积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。    1)积分型(如TLC7135)...
用户42783 2007-06-19 10:18
avr利用pwm控制led光暗及峰鳴器音量大小
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> //ICC-AVR applica...
用户42783 2007-06-19 09:10
AVR的PWM波(转)
(1)一个实例:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />这个程序是用ICC的...
EE直播间
更多
我要评论
1
3
关闭 站长推荐上一条 /3 下一条