ATmega16 熔丝位设定
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 列出的附加性能。
冰檐教程系列之ATMEGA16入门篇 (2)
片内经过标定的 RC 振荡器 片内/片外中断源 6 种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的 Standby 模 式 u I/O 和封装 32 个可编程的 I/O 口 40 引脚 PDIP 封装, 44 引脚 TQFP 封装, 与 44 引脚 MLF 封装 大家有可能对上面特性和外设的某些概念不理解,不用着急,大家会在后面慢慢理解的,我会在后面详细介绍, 那现在正式踏入 ATMEGA16 的学习之旅!
然后我们按照需求和设计设置好熔丝表,将<只读>的勾去掉,点<写入>,此时熔丝就设置好了,为了防止以后 误操作,将<只读>打上勾。这样就可以烧录程序了。下面介绍熔丝的具体设置规则: BODLEVEL: BOD 电平选择 1:2.7V 电平; 0:4.0V 电平---------本开发板设置为 1 (未打勾) BODEN: BOD 功能控制 1:BOD 功能禁止;0:BOD 功能允许---------本开发板设置为 1 注:BOD(Brown-out Detection) 掉电检测电路,如果 BODEN 使能(打勾)启动掉电检测,检测电平由 BODLEVEL 决定,一旦 VCC 下降到触发电平(2.7v 或 4.0v)以下,MUC 复位。 JTAGEN: 1:JTAG 禁止; 0:JTAG 允许 ---------本开发板设置为 1 OCDEN: 1:OCD 功能禁止;0:OCD 允许---------本开发板设置为 1 注:OCDEN(On-chip Debug)片上调试使能位 JTAGEN:使能 JTAG 测试访问端口。 SPIEN: 1:SPI 下载禁止;0:SPI 下载使能---------本开发板设置为 0 CKOPT: CKOPT=0:高幅度振荡输出;CKOPT=1:低幅度振荡输出 ---------本开发板设置为 0 EEAVE: 烧录时 EEPROM 数据保留 1:不保留;0:保留---------本开发板设置为 0 BOOTRST: 复位入口选择 1:程序从 0x0000 地址开始 0:复位后从 BOOT 区执行(设置为 1) BOOTSZ1/0: 引导区程序大小及入口 00: 1024Word/0xc00; 01: 512Word/0xe00; 10: 256Word/0xf00; 11: 128Word/0xf80 本开发板设置为 00 SUT1/0: 和复位启动的一个延时有关,本开发板设置为 11 CKSEL3/0: 时钟源选择,本开发板使用的是外接 11.0592M 的晶体,所以设置为 1111 最后是锁定位,LB0 和 LB1,本开发板设置为 1,即未锁定,设置这两位需谨慎。 下面是时钟配置表:
Atmega16熔丝位定义
Atmega16熔丝位定义一、熔丝位概述ATmega16有高、低两个熔丝位字节,通过熔丝的设定,可以对系统时钟、启动时间、BOOT 区设定、保密位设定以及某些特定功能的使能。
各熔丝位的具体定义以及出厂默认值如表1所示。
其中,1表示该位未被编程,0表示该位已经被编程。
表1ATmega16熔丝位位号定义描述默认值熔丝位高字节7OCDEN OCD 使能位1(未编程,OCD 禁用)6JTAGEN JTAG 测试使能0(编程,JTAG 使能)5SPIEN 使能串行程序和数据下载0(被编程,SPI 编程使能)4CKOPT 振荡器选项1(未编程)3EESAVE 执行芯片擦除时EEPROM 的内容保留1(未被编程),EEPROM 内容不保留2BOOTSZ 1选择Boot 区大小0(被编程)1BOOTSZ0选择Boot 区大小0(被编程)0BOOTRST 选择复位向量1(未被编程)熔丝位低字节7BODLEVEL BOD 触发电平1(未被编程)6BODEN BOD 使能1(未被编程,BOD 禁用)5SUT1选择启动时间1(未被编程)4SUT0选择启动时间0(被编程)3CKSEL3选择时钟源0(被编程)2CKSEL2选择时钟源0(被编程)1CKSEL1选择时钟源0(被编程)0CKSEL0选择时钟源1(未被编程)图1AVR_fighter 熔丝位默认值二、熔丝位详解1、JTAG 和OCD 使能位表2JTAG 和OCD 使能OCDEN 为OCD 片上调试系统使能位,默认为1,必须对JTAGEN 熔丝位进行编程才能使能JTAG 测试访问端口。
此外还必须保持所有的锁定位处于非锁定状态,才能真正使片上调试系统工作。
作为片上调试系统的安全特性,在设置了LB1或LB2任一个锁定位时片上调试系统被禁止。
否则,片上调试系统就会给安全器件留下后门。
在JTAG 调试时,使能OCDEN、JTAGEN 两位,并保持所有的锁定位处于非锁定状态;在定义描述10OCDEN 片上调试使能位OCD 禁止OCD 允许JTAGENJTAG 测试使能位JTAG 禁止JTAG 允许实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少2-3mA的电流。
用ATmega16做8轴游戏控制器
MMJoy用ATmega16做8轴游戏控制器开源的MJoy、MJoy8、MJoy16系列USB摇杆以及固件配置软件https:///p/mmjoy/ATmega16是ATmel公司的AVR单片机。
之所以用ATmega16,而没有用传统的89S51或89S52,其原因在于用AVR单片机的V-USB技术(虚拟USB口),对windows而言,是虚拟了一个HID的人体工学设备,因此不必再单独开发上位机程序和驱动。
Mjoy16用的是USB1.0协议,MJ16轴精度是3个10位加5个8位,整个电路总电流要低于500mA,电位器用1K的到470K。
mega16型号:工作))ATmega16L,工作电压2.7~5.5V,频率速度为0~8MHz(可超频到12Mhz工作ATmega16,工作电压4.5~5.5V,频率速度为0~16MHz速率))。
推荐((USB接口必须用12MHz速率最新的型号是ATmega16A,工作电压2.7~5.5V,频率速度为0~16MHz,推荐Mjoy16成品:1、按照电路图焊接硬件,可以先用面包板测试(注意V-USB的上拉电阻和降压二极管型号IN4728);2、购买或制作USBASP下载线;3、下载progisp172烧录软件,下载固件程序Mjoy16.Hex文件(或者bootload程序);4、MJoy16用isp下载线连接计算机(MJoy16只需外接12M晶振和6根下载线);5、运行progisp172烧录软件,将Hex文件烧录到Mega16(注意——小心编辑熔丝);6、在电脑上设置Mjoy16,设置轴和按键等。
一、硬件部分:购物清单:名称--------------------型号-------------数量(pic)--------------注释ATmega16A -------- 16A PI/PU ---------- 1 ----------------(直插或贴片)40Pin直插ic座 ----- 40pin -------------- 1 --------------- (不重复回收可不用IC座)12M 晶振 ----------- 12MHz ------------ 1 --------------- (使用外接12M晶振)USB公座 ----- ---------------------------- 1 ----------------(可以直接用USB延长线)瓷片电容104 -------- 0.1uf --------------- 3 --------------- (电源滤波用)瓷片电容 ------------ 15pf ---------------- 2 ----------------(接晶振2端,然后接地)直插电感 ----------- 10uH ---------------- 1 --------------- (抗干扰滤波用)电解电容 --------- 10uf/16V -------------- 1 ----------------(电源滤波用,耐压25V也可以)电阻4.7k--------------------------------- --1------------------(下拉电阻4.7k,接D-)电阻2.2k------------------------------- ----1------------------(上拉电阻2.2k,接D-)电阻82欧 ---------------------------------2 -----------------(82欧接单片机输入端)8x10k排阻(9脚) ----- 8x10k ---------- 1 -----------------(公共端接电源AVCC,其他接输出PC0~7上拉) 3.3v稳压二极管 ------- IN4728 ---------- 2 ---------------- (USB必须要3.3V电源稳压)开关二极管 ------------ IN4148 --------- 100 ---------------(开关滤波)10K电位器(或50K)---------------------8------------------(推荐霍尔线性电位器+强磁,无接触无磨损)洞洞板5X7cm ----- 24孔(H)x18孔(w) ----- 1 --------(也可以先用面包板测试)1x40单排针 ------------------------------4 ----------------- (再买些杜邦线)跳线帽 ----------------------------------- 15 -----------------(不用的轴用短路帽接地)其他工具:40W烙铁 ---------------------(尖头和刀头都准备一个)焊锡丝 ------------------------(0.8mm低熔点)镊子 ----- ---------------------(不是必须,贴片元件必须)杜邦线--------------------------(一个轴需3位杜邦插头)有绝缘外皮的细导线----- ------(飞线走线)1~4MHZ有源晶振------------(修复熔丝)万用表 -------------------------(测量电子零件)V-USB电路:● USB的D-D+信号线必须要3.3V电压,使用两个IN4728稳压二极管降压。
熔丝位解释
一、正确配置AVR的熔丝位对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。
下面给出对AVR 熔丝位的配置操作时的一些要点和需要注意的相关事项。
(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)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。
芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。
ATmega16熔丝位设定.docx
ATmega16熔丝位设定特别注意,要使用外部晶体,必须设置熔丝,否则芯片会使用默认的内部晶体。
1、M16的出厂设置内部RC 振荡1MHz 6 CK + 65 ms CKSEL=0001 SUT=10 JTAGEN=1默认状况下JTAG已编程(即PC2-PC5为高电平不可以被拉低),如果PC2->PC5要用作普通10 口,需要取消JTAG编程,或者在程序开始时执行以下命令:MCUCSR |= 1 << JTD;MCUCSR |= 1 << JTD; /注意要连续操作两次。
恢复Fu^e&Lock2.1低位(时钟及启动时间设置)2.1.1、BOD(Brown-out Detection)掉电检测电路BODLEVEL(BOD电平选择):1 (2.7V 电平)0(4.0V 电平)BODEN(BOD功能控制):1 (BOD功能禁止)0(BOD功能允许)一旦VCC下降到触发电平(2.7v或4.0v)以下,MUC复位;当VCC电平大于触发电平后,经过tTOUT延时周后重新开始工作。
2.1.2、复位启动时间选择SUT 1/0:当选择不同晶振时,SUT有所不同。
如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
2.1.3、CKSEL3/0:时钟源选择时钟源外部时钟外部时钟外部时钟内部RC振荡1MHZ 内部RC振荡1MHZ 内部RC振荡1MHZ1 启动延时熔丝6 CK + 0 ms CKSEL=0000 SUT=006 CK + 4.1 ms CKSEL=0000 SUT=016 CK + 65 ms CKSEL=0000 SUT=106 CK + 0 ms CKSEL=0001 SUT=006 CK + 4.1 ms CKSEL=0001 SUT=016 CK + 65 ms CKSEL=0001 SUT=10JTAG功能也要连续两次操作。
熔丝低位0NCNCNCMCE l NC1MG'NC Q] NC 加密位1.0 MHz2.0 MH24.0 MHz3.0 MHz读岀低位值El 旨立值阳扩展f立值0读出訪A 写入加瓷値FF 读出写入BODLEVEL BCOEN5UT1 SUTOCK5ELJ CK5ELZ CKStLl CISELO O 匚DENTT嶠EN5PIEHCKOPT020DQTS?1BOOTSZBL012BLB1LBL0OLLB2BLEOSLBtZ :D7^S~位酉战方式向导方武2、熔丝位配置说明10=丄ns L0H=n3S>19 sill o +>19 >191 00=丄ns 10 L L=n3S>19 sill 99 + >19 >11 H=丄ns00l4=ims>10 sill + >i9>iL 0 匸丄ns 00 L L=n3S>19 sill o + >19 >11 10=丄nSOOHCSMO sill 99 + >19 892 00=丄ns00l4=ims>10 sill + >19 892 H=丄ns H0L=n3S>19 SW9901=丄ns l40L=imS>10 sill L t+ >10 >19 L10=丄ns H0L=n3S>19 sill o +>19 >191 00=丄ns L LO sill99+ >19 >11H=丄nSOLOL=imS>10 sill + >i9>iL 0 匸丄ns 010 L=n3S>19 sill o + >19 >11 10=丄nSOLOL=imS>10 sill 99 + >1989200=丄nSOLOL=imS>10 sill + >19 892 (ZHIAIO C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAIO C-6 0)兽鑒艸聂圖/篦耳解出(ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI0 C-6 0)兽鑒艸聂圖/篦耳解出 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲 (ZHIAI6 0-k0)兽鑒艸聂圖/篦耳解劲0 L=』nS LOO L=n3S>19 sin 99 + >19>12£ 10=丄ns 100 匸imSMO sill 99 + >o 川 00=丄ns LOOL=ims>io sin Lt + >K )>uH=丄nSOOOL=imS>iO sill Lt + MO 9 ZHIAIO SkO'8 鑒艸03 混场 0 匸丄ns 000 L=n3S>19 sill 99 + >19 81 ZHI/\IOSkO'8 鑒艸810=丄ns 000L=n3S>19 sill L> + >19 8L ZHI/\IOSkO'8 鑒艸8 腮 00=丄 ns oooL=n3S>i9 SHI 0+>19 81 ZHI/\IOSkO'8 鑒艸8 腮 I4=_ms Ll40=ims>0 SHI "ZHIAIO'8-Oe 鑒艸8 腮 oi=丄 ns 14 心 ims>o SHI 99 + >19 81ZHIAIO'8-Oe 鑒艸8 腮 10=丄nssill + >1981 ZHIAIO'8-Oe 鑒艸8 腮 oo=ins L L 心imSMOSHI 0 +>19 81 ZHIAIO'8-Oe 鑒艸8 腮 H =丄 nsoi40=ims>osin " + >09ZHI/\IOe-6O 鑒艸8 腮 oi=丄 nsoi40=ims>o sin 99 + >19 81ZHI/\IOe-6O 鑒艸8 腮 10=丄ns0!40=ims>10 sill + >1981 ZHI/\IOe-6O 鑒艸8 腮 00=丄 nsoi40=ims>osin 0 +>19 81 ZHI/\IOe-6O 鑒艸8 腮 H =丄ns LO 心ims>osin "ZHI/\I6O> 鑒艸8 腮 oi=丄ns m 心ims>o sin 99 + >19 81 ZHI/\I6O> 鑒艸8 腮 io=丄ns m 心ims'o sin+ >1981 ZHI/\I6O> 鑒艸8 腮 oo=_ms LO 心ims>o sin 0+>19 81 ZHI/\I6O> 鑒艸8 腮oi=丄 ns oo 心 ims>o sm 99 + >19 9 ZHIAI8 鑒艸8 滙M io=丄 ns oo 心 ims>o sin "ZHIAI8 鑒艸8 滙Moo=丄 ns oo 心 ims>osm 0 + >19 9ZHIAI8 鑒艸8 滙M 01=丄ns H00=13S>19 sm 99 + >19 9 ZHIAI17 鑒艸8 滙M 10=丄ns H00=13S>19 sm " ZHIAI17 鑒艸8 滙M oo=ins H00=13S>19 sm 0 + >19 9 ZHIAI17 鑒艸8 滙Moi=丄 ns (Hooms'osm 99 + >19 9ZHIAIS 鑒艸8 滙M(ZH>189Z Se)艸曾解劲 (ZH>189Z Se)艸曾解劲 (ZH>189Z Se)艸曾解劲io=丄ns (Hooms'o sm " ZHIAIS 鑒艸8滙M oo=insoLOO=n3S>i9 sm 0 + >19 9 ZHIAIS 鑒艸8滙M中频石英/ 陶瓷振荡器(0.9-3.0MHZ) 中频石英/ 陶瓷振荡器(0.9-3.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1101 SUT=10 16K CK + 65ms CKSEL=1101 SUT=11 258 CK + 4.1 ms CKSEL=1110 SUT=00 258 CK + 65 ms CKSEL=1110 SUT=01 1K CK + 0 ms CKSEL=1110 SUT=10 1K CK + 4.1 ms CKSEL=1110 SUT=11高频石英/ 陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00高频石英/ 陶瓷振荡器(3.0- MHZ) 高频石英/ 陶瓷振荡器(3.0- MHZ) 高频石英/ 陶瓷振荡器(3.0- MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01 16K CK + 4.1ms CKSEL=1111 SUT=10 16K CK + 65ms CKSEL=1111 SUT=11高于8M 选8M 的。
ATMEGA16A中文资料
ATMEGA16A中文资料高性能,低功耗AVR 8-bit微控制器•高级RISC建筑– 131条指令–绝大多数为单时钟周期执行– 32 x 8通用工作寄存器–全静态工作–高达16吞吐量在MIPS 16 MHz–片2—cycle乘数高耐久性非易失性内存段– 16K字节的程序存储器,在系统内可编程Flash– 512字节的EEPROM– 1K字节内部SRAM–写/擦除周期:10,000闪光/ 100,000的EEPROM–数据保存:在20年85°C/100年在25°C(1)–可选引导具有独立锁定Bits代码段•在系统编程的片上引导程序•真Read-While-Write操作–锁编程软件安全JTAG (IEEE std。
1149.1兼容)接口–边界扫描功能根据JTAG标准–广泛的片上调试支持–编程闪存,EEPROM,熔丝位和锁定Bits通过JTAG接口外设特点–两个8—bit定时器/计数器具有独立预分频器和比较模式–一个16-bit定时器/计数器具有独立预分频器,比较功能和捕捉模式–实时计数器具有独立振荡器–四PWM频道– 8-channel, 10-bit ADC• 8单端通道• 7在TQFP 包装差分通道只有• 2在1x, 10x,差分通道具有可编程增益或200x–面向字节的两线串行接口可编程串行USART的––主/从串行接口SPI–可编程看门狗定时器具有独立片内振荡器–片内模拟比较器单片机的特殊功能–上电复位和可编程的掉电检测–内部振荡器校准RC–外部和内部中断源– 6种睡眠模式:空闲,ADC降噪,省电,省电,待机和扩展待机I / O和封装– 32可编程I / O线– 40—pin PDIP, 44—lead TQFP,和44—pad QFN/MLF 工作电压– 2。
7为- 5。
5V ATmega16A速度等级– 0 —为16 MHz ATmega16A功耗@ 1 MHz, 3V,和25°C为ATmega16A–活动:0。
ATMEL MCU熔丝位设置快速入门
ATMEL MCU熔丝位(Fuse)快速入门操作界面如下:(注意:下图中,打勾的表示选中,代表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; [EESAVE=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 value Boot 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 Enabled JTAG 接口使能Serial program downloading (SPI) enabled 串行编程下载(SPI) 使能 (ISP下载时该位不能修改)Preserve EEPROM memory through theChip Erase cycle;芯片擦除时EEPROM的内容保留Boot Flash section size=xxxx words 引导(Boot)区大小为xxx个词Boot start address=$yyyy; 引导(Boot)区开始地址为 $yyyy Boot 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 外部晶体/陶瓷振荡器高频注:以上中文是对照 ATmega16的中、英文版本数据手册而翻译。
AVR熔丝位拯救方法详细攻略
AVR熔丝位拯救方法详细攻略1.1.3 AVR芯片的ISP全攻略当然你在配置熔丝位时要小心从事,防止芯片锁死。
有不少网友屡屡遭此不幸。
其实你在熔丝位配置时,只要方法正确,一般是不会出错的。
如果当你改动了AVR 的熔丝位配置,重新加电后,想再用ISP 下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种外部主频而无法正常工作 (仅限于使用内部RC振荡的情况)。
不过,不用太担心,其实拯救的办法还是有很多的,操作起来也是很容易的,具体解决方法为:1。
进入JTAG模式修改SPIEN熔丝位需要使用JTAGICE调试器,不过一般情况下调试模式也进不去,JTAGEN(值为1)锁死了。
2。
并行编程器恢复需要你有USB或COM1口制作的并行HVPROG编程器,STK200/STK3003。
通过外加有源晶振需要你有外部有源振荡晶体(石英或晶振1-4M)这个方法最简单,速度最快(强烈推荐)4。
使用通用编程器将芯片恢复到出厂状态这个方法,需要你有市场上的通用编程器,可以修改三个熔丝位寄存器数据。
5。
寄回给芯片服务商,让他们帮忙将芯片恢复这是最省事,但是最费时间,最无可奈何的方法。
先介绍一下基本恢复理论 ISP(In System Programmability) 在系统编程,简称为串行下载 IAP(In Application Programing) 在应用编程,BootLoader也是类似的意思1. ISP虽然利用了SPI接口(例外:M64/M128为UASRT0接口,Tiny13等没有SPI 接口)的引脚,但只在复位时起作用,而且下载完成后合格的下载器会自动断开端口的连接,对正常工作时没有影响的(在产品应用中,下载器一定是不会一直粘在上面的)。
2. 虽然高压并行下载能修复任何熔丝位,但对于贴片封装来说是很不现实的,所以添加ISP10标准插座接口后就是最常用的ISP下载方式了3. 虽然IAP是一种新的升级方法,但IAP程序本身也是要先用高压并行下载或ISP来烧进芯片里面才行4. Tiny13等少管脚AVR芯片因为管脚实在太少了,有ISP,但没有[高压并行编程]而特制了[高压串行编程] 所以,产品上一般都留有ISP10标准接口插座,或更省位置的ISP6标准插座----留6个焊盘就行了ISP的工作前提 1. 芯片没有物理损坏2. 芯片的SPIEN熔丝位=0 使能ISP功能3. 芯片的RSTDISBL熔丝位=1 RESET引脚有效 (假如芯片有这个熔丝位)4. 线路正常--接错线?短路?5. ISP下载器正常-------特别要考虑连线的接触不良问题6. 电源正常 (一) 并行编程器恢复,最早的编程方法,功能最强大,通常需要12V~24V的高压,以示区别,下面称为高压并行编程。
ATmega16最小系统
目录第一章概述第二章单片机最小系统及编译、下载软件的使用2.1.1单片机最小系统2.1.2编译软件2.2.1下载软件Progisp的使用第三章熟悉ATmega16的片上资源3.1.1会看芯片数据手册的重要性3.1.2中断3.1.3定时器/计数器的基本结构及工作原理3.1.4 PWM3.2外部中断3.3 USART3.4.1 A/D转换模块3.5 EEPROM第四章ATmega16实际应用4.1 外接按键4.2 驱动数码管4.3 液晶显示屏12864的使用4.4 基于DS18B20的温度测量4.5基于PWM的直流电机调速4.6步进电机的使用4.7舵机的使用4.8超声波测距及其应用倒车雷达4.9基于JZ863的无线串口通信4.10单片机与计算机间的通信第五章第二章单片机最小系统及编译、下载软件的使用2.1.1单片机最小系统能让单片机工作的有最基本元器件构成的系统称为单片机最小系统。
单片机最小系统通常包括:电源(+5V)复位电路:启动后让单片机从初始状态执行程序振荡电路:单片机是一种时序电路,必须施加脉冲信号才能工作。
Mega16内部有RC 震荡电路但相比外部的晶体震荡电路还是不够准确,另外它也可以使用外部晶振工作,两者之间的切换通过熔丝位(以后会讲)来选择在其内部有一个时钟产生电路只要接上两个电容和一个晶振即可正常工作。
ATmega16 单片机最小系统的硬件电路图如下:如图所示为ATmega16最小系统电路图,图中标有相同代号的引脚表示连接在一起。
图中ISP 和JTAG为ATmega16的两种下载方式各自的引脚接口,ISP用于在线下载程序比较方便快捷,所用下载软件为progisp;JTAG是在线仿真接口通过仿真器连接单片机进行程序的下载和仿真,所用软件为AVR Studio ;通常我门使用ISP下载就已经足够了,并且方便快捷很稳定好用,下载器也便宜;JTAG在需要仿真的时候用,它可以看见单片机各个引脚的输出值和输入值等,但JTAG实际定使用中不稳定有时候很容易出错电脑不识别下不进去程序等问题,个人偏好使用ISP.说明:此最小系统电路图中只画出了最简单的应用电路——流水灯,和最基本的能让单片机正常工作的外围电路及下载程序所必须的ISP和JTAG接口,如果你想焊一个电路板出来自己使用,其他的外围电路可以在日后使用当中自己再往上焊。
AVR ATmega16中文说明书
ALU- 算术逻辑单元AVR ALU 与32 个通用工作寄存器(R0-R31)直接相连。
寄存器与寄存器之间、寄存器与立即数之间的ALU 运算只需要一个时钟周期。
ALU 操作分为3 类:算术、逻辑和位操作。
此外还提供了支持无/ 有符号数和分数乘法的乘法器。
具体请参见指令集。
状态寄存器状态寄存器包含了最近执行的算术指令的结果信息。
这些信息可以用来改变程序流程以实现条件操作。
如指令集所述,所有ALU 运算都将影响状态寄存器的内容。
这样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。
在进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢复。
这些工作需要软件来处理。
AVR 中断寄存器SREG 定义如下:•Bit 7 –I: 全局中断使能I 置位时使能全局中断。
单独的中断使能由其他独立的控制寄存器控制。
如果I 清零,则不论单独中断标志置位与否,都不会产生中断。
任意一个中断发生后I 清零,而执行RETI指令后I 恢复置位以使能中断。
I 也可以通过SEI 和CLI 指令来置位和清零。
•Bit 6 –T: 位拷贝存储位拷贝指令BLD 和BST 利用T 作为目的或源地址。
BST 把寄存器的某一位拷贝到T,而BLD 把T 拷贝到寄存器的某一位。
•Bit 5 –H: 半进位标志半进位标志H 表示算术操作发生了半进位。
此标志对于BCD 运算非常有用。
详见指令集的说明。
•Bit 4 –S: 符号位, S = N ⊕VS 为负数标志N 与2 的补码溢出标志V 的异或。
详见指令集的说明。
•Bit 3 –V: 2 的补码溢出标志支持2 的补码运算。
详见指令集的说明。
•Bit 2 –N: 负数标志表明算术或逻辑操作结果为负。
详见指令集的说明。
• Bit 1 – Z: 零标志表明算术或逻辑操作结果为零。
详见指令集的说明。
• Bit 0 – C: 进位标志表明算术或逻辑操作发生了进位。
详见指令集的说明使用CLI 指令来禁止中断时,中断禁止立即生效。
ATmega16中文手册
产品特性•高性能、低功耗的 8位AVR®微处理器•先进的RISC结构–131 条指令 – 大多数指令执行时间为单个时钟周期–32个8位通用工作寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性程序和数据存储器–16K 字节的系统内可编程Flash擦写寿命: 10,000次–具有独立锁定位的可选Boot代码区通过片上Boot程序实现系统内编程真正的同时读写操作–512字节的EEPROM擦写寿命: 100,000次–1K字节的片内SRAM微控制器–可以对锁定位进行编程以实现用户程序的加密•JTAG 接口(与IEEE 1149.1标准兼容)–符合JTAG标准的边界扫描功能–支持扩展的片内调试功能–通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程•外设特点–两个具有独立预分频器和比较器功能的8位定时器/计数器–一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立振荡器的实时计数器RTC–四通道PWM–8路10位ADC8 个单端通道TQFP封装的7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式•I/O和封装–32 个可编程的I/O口–40引脚PDIP封装, 44引脚TQFP封装,与44引脚MLF封装•工作电压:–ATmega16L:2.7 - 5.5V–ATmega16:4.5 - 5.5V•速度等级–0 - 8 MHz ATmega16L–0 - 16 MHz ATmega16•ATmega16L在1 MHz, 3V, 25°C时的功耗–正常模式: 1.1 mA–空闲模式: 0.35 mA–掉电模式: < 1 µA2ATmega16(L)2466G–AVR–10/03引脚配置Figure 1. ATmega16的引脚声明本数据手册的典型值来源于对器件的仿真,以及其他基于相同产生工艺的 AVR 微控制器的标定特性。
atmega16中文资料.0004
29
PC6.Pullup_Enable
28
PC7.Data
27
PC7.Control
26
PC7.Pullup_Enable
25
TOSC
32 kHz 定时振荡器
24
TOSCON
23
PA7.Data
端口 A
22
PA7.Control
21
PA7.Pullup_Enable
20
PA6.Data
19
PA6.Control
RWW 区
如果 Boot Loader 软件是对 RWW 区内的某一页进行编程,则可以从 Flash 中读取代码, 但只限于 NRWW 区内的代码。在 Flash 编程期间,用户软件必须保证没有对 RWW 区的 读访问。如果用户软件在编程过程中试图读取位于 RWW 区的代码 ( 如通过 call/jmp/lpm 指令或中断 ),软件可能会终止于一个未知状态。为了避免这种情况的发生,需要禁止中 断或将其转移到 Boot Loader 区。 Boot Loader 总是位于 NRWW 存储区。只要 RWW 区 处于不能读访问的状态,存储程序存储器控制和状态寄存器 (SPMCSR) 的 RWW 区忙标 志位 RWWSB 置位。编程结束后,要在读取 位于 RWW 区的代码之前通过软件清除 RWWSB。具体如何清除RWWSB请参见P238 “保存程序存储器控制寄存器 – SPMCR” 。
No Read-While-Write (NRWW) Section
Z-pointer Addresses NRWW Section
CPU is Halted during the Operation
234 ATmega16(L)
浅谈AVR单片机熔丝位设置
浅谈AVR单片机熔丝位设置对于初学者来说,AVR的熔丝位真是“高深莫测”,稍不注意,单片机就锁死了,本人也是这样经历过来的,号称AVR杀手,哈哈,这是玩笑啦。
不过只要搞懂了每个熔丝位选项的具体含义就不怕你去折腾了,下面我就结合我的使用心得,做一下总结,如有不当之处请多多包涵,及时加以指正。
打开progispz这个软件,熔丝位的设置界面如下所示。
下面来逐一介绍每个选项的含义。
需要注明一点,在这个软件里,1表示禁止,0表示允许,也有说1代表未编程,0代表编程。
和我们的常规思维有点不同,需多加注意。
BODLEVEL(BOD电平选择):1:2.7V电平;0:4.0V电平:BODEN(BOD功能控制):1:BOD功能禁止;0:BOD功能允许使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL 决定。
一旦VCC下降到触发电平(2.7v或4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。
因为M16L可以工作在2.7v~5.5v,所以触发电平可选2.7v(BODLEVEL=1)或4.0v(BODLEVEL=0);而M16工作在4.5~5.5V,所以只能选BODLEVEL=0。
SUT1和SUT0:复位启动时间选择。
当选择不同晶振时,SUT有所不同。
如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
CKSEL3、CKSEL2、CKSEL1、CKSEL0这三个选项控制时钟源选择。
具体设置如下所示。
时钟源启动延时熔丝外部时钟 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振荡1MHZ 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 + 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 + 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="111"1 SUT="10"高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 65ms CKSEL="1111" SUT="11"OCDEN(片上调试使能位):1:OCD功能禁止;0:OCD功能允许JTAGEN(JTAG允许):1:JTAG禁止;0:JTAG允许使用方法:在JTAG调试时,使能OCDEN JTAGEN两位(复选框打勾),并保持所有的锁定位处于非锁定状态;在实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少2-3mA的电流。
AVR教程系列一(12):ATmega16 简介(六)
A VR教程系列一(12):ATmega16 简介(六) ATmega16 操纵与状态寄存器MCUCSRAVR 操纵与状态寄存器提供了有关引起AVR复位的复位源的信息。
Bit 4 – JTRF: JTAG 复位标志通过JTAG 指令AVR_RESET 能够使JTAG 复位寄存器置位,并引发MCU 复位,并使JTRF 置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 3 – WDRF: 看门狗复位标志看门狗复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 2 – BORF: 掉电检测复位标志掉电检测复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 1 – EXTRF: 外部复位标志外部复位发生时置位。
上电复位将使其清零,也能够通过写”0” 来清除。
Bit 0 – PORF: 上电复位标志上电复位发生时置位。
只能通过写”0” 来清除。
为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复位。
假如在其他复位发生之前将此寄存器复位,则后续复位源能够通过检查复位标志来熟悉。
ATmega16 基准电压使能信号与启动时间ATmega16 具有片内能隙基准源,用于掉电检测,或者者是作为模拟比较器或者ADC的输入。
ADC 的2.56V 基准电压由此片内能隙基准源产生。
电压基准的启动时间可能影响其工作方式。
启动时间列于Table 16。
为了降低功耗,能够操纵基准源仅在如下情况打开:1. BOD 使能 ( 熔丝位BODEN 被编程)2. 能隙基准源连接到模拟比较器(ACSR 寄存器的ACBG 置位)3. ADC 使能因此,当BOD 被禁止时,置位ACBG 或者使能ADC 后要启动基准源。
为了降低掉电模式的功耗,用户能够禁止上述三种条件,并在进入掉电模式之前关闭基准源。
ATmega16 看门狗定时器看门狗定时器由独立的1 Mhz 片内振荡器驱动。
ATmega16寄存器
ATmega16寄存器状态寄存器——SREGI:全局中断触发禁⽌位,为中断总控制开关。
T:通⽤标志位,⽤户⾃定义。
H:半进位标志位。
S:符号标志位。
V:溢出标志位。
N:负数标志位。
Z:零标志位。
C:进/借位标志位。
通⽤中断控制寄存器——GICRINT1:外部中断1使能。
INT0:外部中断0使能。
INT2:外部中断2使能。
IVSEL:中断向量表选择。
当IVSEL=0时,中断向量区的位置定义在FLASH的开始处;当IVSEL=1时,定义在引导程序载⼊区的起始处。
IVCE:中断向量表转移允许位。
必须在IVCE位被写⼊1后的4个时钟周期内,修改IVSEL。
4个时钟周期后,或IVSEL位写⼊后,IVCE位由硬件⾃动清零。
OCIE2:T/C2输出⽐较匹配中断使能位。
TOIE2:T/C2溢出中断使能位。
TICIE1:T/C1输⼊捕获中断使能位。
OCIE1A:T/C1输出⽐较A中断使能位。
OCIE1B:T/C1输出⽐较B匹配中断使能位;TOIE1:T/C1溢出中断使能位。
OCIE0:T/C0输出⽐较中断使能位。
TOIE0:T/C0溢出中断使能位。
TIFR寄存器中的各个中断标志是与TIMSK中的使能位⼀⼀对应。
当SPMIE位被置位,若状态寄存器中的I位也被置位时,SPM完成中断即被使能。
只要SPMCSR寄存器中的SPMEN位被清零(程序存储器操作完成),SPM中断服务将被执⾏(避免轮询占⽤较多机时)。
RWWSB:RWW区忙标志当开始对RWW区进⾏⾃编程(页擦除或页写⼊)操作时,RWWSB位将被硬件置位,RWWSB ⼀旦被置位,对RWW区的读操作将被禁⽌。
在⾃编程操作完成后,向RWWSRE位写⼊1,会将RWWSB位清除。
此外,如果开始⼀个页读取操作,也会将RWWSB位清零。
RWWSRE:读RWW区允许当启动对RWW区⾃我编程(页擦除或页写⼊)操作时,RWWSB位被硬件置1,禁⽌对RWW区的读操作。
在⾃我编程操作完成后(SPMEN=0),同时将RWWSRE位和SPMEN 位置为1,在其后的4个时钟周期内的SPM指令将使RWW区重新开放。
atmega16中文资料.0003
154
ATmega16(L)
2466G–AVR–10/03
ATmega16(L)
USART 波特率寄存器- UBRRL 和 UBRRH
UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。 对该寄存器的访问, 请参见P151“访 问 UBRRH/ UCSRC 寄存器 ” 。 • Bit 15 – URSEL: 寄存器选择 通过该位选择访问 UCSRC 寄存器或 UBRRH 寄存器。当读 UBRRH 时,该位为 0 ;当 写 UBRRH 时, URSEL 为 0。 • Bit 14:12 – 保留位 这些位是为以后的使用而保留的。为了与以后的器件兼容,写 UBRRH 时将这些位清零。 • Bit 11:0 – UBRR11:0: USART 波特率寄存器 这个 12 位的寄存器包含了 USART 的波特率信息。其中 UBRRH 包含了 USART 波特率 高 4 位, UBRRL 包含了低 8 位。波特率的改变将造成正在进行的数据传输受到破坏。写 UBRRL 将立即更新波特率分频器。
ATmega16(L) A-PDF Split DEMO : Purchase from to remove the watermark
下面代码给出如何读 UCSRC 寄存器内容 汇编代码例程 (1)
USART_ReadUCSRC: ; 读 UCSRC in in ret r16,UBRRH r16,UCSRC
Bit 读/写 初始值
7 RXCIE R/W 0
6 TXCIE R/W 0
5 UDRIE R/W 0
AVR教程系列一(10):ATmega16 简介(9)
ATmega16 简介〔四〕ATmega16 时钟系统及其分布时钟系统及其分布Figure 11为AVR的主要时钟系统及其分布。
这些时钟并不需要同时工作。
为了降低功耗,可以通过使用不同的睡眠模式来禁止无需工作的模块的时钟。
时钟系统详见Figure 11。
CPU 时钟- clkCPUCPU时钟与操作AVR内核的子系统相连,如通用存放器文件、状态存放器及保留仓库指针的数据存储器。
终止CPU 时钟将使内核遏制工作和计算。
I/O 时钟- clkI/OI/O时钟用于主要的I/O 模块,如按时器/ 计数器、SPI 和USART。
I/O 时钟还用于外部中断模块。
要注意的是有些外部中断由异步逻辑检测,因此即使I/O 时钟遏制了这些中断仍然可以得到监控。
此外, USI 模块的起始条件检测在没有clkI/O 的情况下也是异步实现的,使得这个功能在任何睡眠模式下都可以正常工作。
Flash 时钟- clkFLASHFlash 时钟控制Flash 接口的操作。
此时钟通常与CPU 时钟同时挂起或激活。
异步按时器时钟- clkASY异步按时器时钟允许异步按时器/ 计数器与LCD 控制器直接由外部32 kHz 时钟晶体驱动。
使得此按时器/ 计数器即使在睡眠模式下仍然可以为系统提供一个实不时钟。
ADC 时钟- clkADCADC具有专门的时钟。
这样可以在ADC工作的时候遏制CPU和I/O时钟以降低数字电路产生的噪声,从而提高ADC 转换精度。
ATmega16 时钟源ATmega16芯片有如下几种通过Flash熔丝位进行选择的时钟源。
时钟输入到AVR时钟发生器,再分配到相应的模块。
不同的时钟选项将在后续局部进行介绍。
当CPU 自掉电模式或省电模式唤醒之后,被选择的时钟源用来为启动过程按时,包管振荡器在开始执行指令之前进入不变状态。
当CPU从复位开始工作时,还有额外的延迟时间以包管在MCU 开始正常工作之前电源达到不变电平。
这个启动时间的按时由看门狗振荡器完成。
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”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ATmega16 熔丝位设定特别注意,要使用外部晶体,必须设置熔丝,否则芯片会使用默认的内部晶体。
1、M16的出厂设置内部RC 振荡1MHz 6 CK + 65 ms CKSEL=0001 SUT=10 JTAGEN=1默认状况下JTAG已编程(即PC2-PC5 为高电平不可以被拉低) ,如果PC2->PC5要用作普通IO 口,需要取消JTAG编程,或者在程序开始时执行以下命令:MCUCSR |= 1 << JTD;MCUCSR |= 1 << JTD; //注意要连续操作两次。
恢复JTAG功能也要连续两次操作。
2、熔丝位配置说明2.1低位(时钟及启动时间设置)2.1.1、BOD(Brown-out Detection) 掉电检测电路BODLEVEL(BOD 电平选择): 1 (2.7V电平) 0(4.0V电平)BODEN(BOD 功能控制): 1 (BOD 功能禁止) 0(BOD功能允许)一旦VCC 下降到触发电平(2.7v 或4.0v)以下,MUC复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。
2.1.2、复位启动时间选择SUT 1/0: 当选择不同晶振时,SUT有所不同。
如果没有特殊要求推荐SUT 1/0 设置复位启动时间稍长,使电源缓慢上升。
2.1.3、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=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- MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01高频石英/陶瓷振荡器(3.0- MHZ) 16K CK + 4.1ms CKSEL=1111 SUT=10高频石英/陶瓷振荡器(3.0- MHZ) 16K CK + 65ms CKSEL=1111 SUT=11高于8M选8M 的。
2.2、高位(BOOT区设置)2.2.1、调试相关位JTAGEN(JTAG使能): 1:JTAG禁止 0:JTAG允许OCDEN(片上调试使能): 1:OCD功能禁止 0:OCD功能允许OCDEN:(使能OCD 片上调试系统;默认为1)必须对JTAGEN 熔丝位进行编程才能使能JTAG 测试访问端口。
此外还必须保持所有的锁定位处于非锁定状态,才能真正使片上调试系统工作。
作为片上调试系统的安全特性,在设置了LB1 或LB2 任一个锁定位时片上调试系统被禁止。
否则,片上调试系统就会给安全器件留下后门。
JTAGEN:(使能JTAG;默认为0)使用方法:在JTAG调试时,使能OCDEN JTAGEN 两位并保持所有的锁定位处于非锁定状态;在实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少2-3mA 的电流。
2.2.2、在线下载SPIEN(SPI 下载允许): 1:SPI下载禁止;0:SPI下载使能注:在双龙的软件里,SPIEN是不能编辑的,默认为0。
但是PROGISP中可以,默认为0。
2.2.3、选择放大器CKOPT(选择放大器模式):CKOPT=0 :高幅度振荡输出;CKOPT=1:低幅度振荡输出当CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。
这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽。
当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。
其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。
对于谐振器,当CKOPT 未编程时的最大频率为8 MHz,CKOPT编程时为16 MHz。
内部RC 振荡器工作时不对CKOPT 编程。
2.2.4、烧录时EEPROM已有数据如何处理EEAVE(烧录时EEPROM数据保留): 1:不保留;0:保留2.2.5、复位后程序的入口选择BOOTRST(复位入口选择): 1:程序从0x0000地址开始 0:复位后从BOOT 区执行(参考BOOTSZ0/1)2.2.6、引导区程序大小及入口地址设置BOOTSZ 引导区程序大小入口00: 1024Word 0xc0001: 512Word 0xe0010: 256Word 0xf0011: 128Word 0xf803、熔丝位设定示例使用外部16MHz晶体,禁止JTAG功能,其它默认。