ATmega128.64熔丝锁定位详解

ATmega128.64熔丝锁定位详解
ATmega128.64熔丝锁定位详解

A ATmega128熔丝位汇总

编程与状态说明:

在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”

表示熔丝状态为“0”(允许)

1:未编程(检查框不打钩)

0:编程 (检查框打钩)

AVR的熔丝位可多次编程的,不是OPT熔丝。

熔丝位的配置(编程)可以通过并行方式、ISP串行方式、JTAG串行方式实现。

AVR芯片加密锁定后(LB2/LB1 = 1/0,0/0)不能通过任何方式读取芯片内部Flash 和E2PROM中的数据,但熔丝位的状态仍然可以读取,但不能修改配置。

芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 = 1/1)。但芯片擦除命令并不改变其它熔丝位的状态。

下载编程的正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。

芯片被加密锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,解除加密锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。

1. 芯片加密锁定熔丝

加密锁定位

加密锁定方式 LB2 LB1

保护类型(用于芯片加密) 1(默认) 1 1 无任何编程加密锁定保护

2 1 0 禁止串/并行方式对Flash和E2PROM的再编程 禁止串/并行方式对熔丝位的编程

3 0 0 禁止串/并行方式对Flash和E2PROM的再编程和校验 禁止串/并行方式对熔丝位的编程

注:加密锁定熔丝只能使用芯片擦除命令还原为默认的无任何加密锁定保护状态

2.功能熔丝

说 明

熔丝名称

1 0

默认 M103C ATmega128工作模式 ATmega103 兼容模式 0 WDTON 看门狗由软件控制 看门狗始终工作,软件只可以调节溢出时间 1 SPIEN 禁止ISP串行编程 允许ISP串行编程 0 JTAGEN 禁止JTAG口 使能JTAG口 0 EESAVE 芯片擦除时不保留E2PROM数据 芯片擦除时保留E2PROM数据 1 BODEN 禁止低电压检测功能 允许低电压检测功能 1 BODLEVEL 低电压检测门槛电平2.7V 低电压检测门槛电平4.0V 1 OCDEN 禁止JTAG口的在线调试功能 禁止JTAG口的在线调试功能 1

ATmega128

3. 有关Bootloader的熔丝

上电启动地址的设定:

说 明

熔丝名称

1 0

默认 BOOTRST 芯片上电后从0x0000地址执行 上电后从BOOT区执行(参考BOOTSZ0/1) 1 Bootloader区大小设置:

BOOTSZ1 BOOTSZ0 BOOT区大小 BOOT区地址 默认

0 0 4096 Word 0xF000 00

0 1 2048 Word 0xF800

1 0 1024 Word 0xFC00

1 1 51

2 Word 0xFE00

对应用程序区的保护模式设置:

BLB0模式 BLB02 BLB01 对应用程序区的保护

Mode1 1 1 不限制SPM和LPM指令对应用程序区的操作

Mode2 1 0 禁止SPM指令对应用程序区的写操作

Mode3 0 0 禁止SPM指令对应用程序区的写操作

在执行驻留于引导加载区的引导加载程序过程中,禁止其中LPM指令对应用程序区的读操作

如果中断向量驻留在引导加载区,则在MCU执行驻留于应用程序区的程序过程中,禁止中断响应

Mode4 0 1 在执行驻留于引导加载区的引导加载程序过程中,禁止其中LPM指令对应用程序区的读操作

如果中断向量驻留在引导加载区,则在MCU执行驻留于应用程序区的程序过程中,禁止中断响应

对Bootloader区的保护模式设置:

BLB1模式 BLB12 BLB11 对引导加载区的保护

Mode1 1 1 不限制SPM和LPM指令对引导加载区的操作 Mode2 1 0 禁止SPM指令对引导加载区的写操作

Mode3 0 0 禁止SPM指令对引导加载区的写操作

在执行驻留于应用程序区的应用程序过程中,禁止其中LPM指令对引导加载区的读操作

如果中断向量驻留在应用程序区,则在MCU执行驻留于引导加载区的加载程序过程中,禁止中断响应

Mode4 0 1 在执行驻留于应用程序区的应用程序过程中,禁止其中LPM指令对引导加载区的读操作

如果中断向量驻留在应用程序区,则在MCU执行驻留于引导加载区的加载程序过程中,禁止中断响应

4. 有关系统时钟源的选择和上电启动延时时间的设置熔丝

系统时钟选择:

系统时钟源 CKSEL3..0

外接石英/陶瓷振荡器 1111-1010

外接低频晶振(32.768KHZ) 1001(RTC)

外接RC振荡 1000-0101

使用可校准的内部RC振荡 0100-0001(默认0001,1MHz)

外部时钟源 0000

使用外部振荡器时的工作模式配置:

熔丝位 CKOPT2CKSEL3..1 工作频率范围

(MHz)

C1、C2容量(pF)

(仅适用石英晶振)

1 101 0.4-0.9 仅适合陶瓷振荡器1

1 110 0.9-3.0 12-22

1 111 3.0-8.0 12-22

0 101,110,111 ≥1.0 12-22

注: 1、对陶瓷振荡器所配的电容,按生产厂家说明配用。

2、当CKOPT=0(编程)时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输

出振幅较小,可以减少功耗,对外电磁幅射也较小。

3、CKOPT默认状态为“1”。

使用外部振荡器时的启动时间选择:

熔丝位 CKSEL0 SUT 1..0

从掉电模式

开始的启动时间

从复位开始的附加

延时(Vcc=5.0V)

推荐使用场合

0 00 258 CK 4.1ms 陶瓷振荡器、快速上升电源

0 01 258 CK 65ms 陶瓷振荡器、慢速上升电源

0 10 1K CK - 陶瓷振荡器BOD方式

0 11 1K CK 4.1ms 陶瓷振荡器、快速上升电源

1 00 1K CK 65ms 陶瓷振荡器、慢速上升电源

1 01 16K CK - 石英振荡器BOD方式

1 10 16K CK 4.1ms 石英振荡器、快速上升电源

1 11 16K CK 65ms 石英振荡器、慢速上升电源 使用外部低频晶振时的启动时间选择:

熔丝位

CKSEL 3..0 SUT 1..0

从掉电模式

开始的启动时间

从复位开始的附加

延时(Vcc=5.0V)

推荐使用场合

1001 00 1K CK 4.1ms 快速上升电源或BOD方式1 1001 01 1K CK 65ms 慢速上升电源

1001 10 32K CK 65ms 要求振荡频率稳定的场合 1001 11 保留

注: 1、这个选项只能用于启动时晶振频率稳定、不是很重要的应用场合。

2、使用32.768K手表晶振作为MCU的时钟源。此时CKSEL应当编程为1001;

3、CKOPT=0时,选择使用内部和XTAL1/XTAL2相连的电容,没有必要再外接电容;内部电容为

36pF。

使用外部RC振荡器时的模式配置

熔丝位 (CKSEL3..0) 工作频率范围

(MHz)

0101 ≤0.9

0110 0.9-3.0

0111 3.0-8.0

1000 8.0-12.0

注意: 1、频率的估算公式是:f=1/(3RC)

2、电容C至少为22pF。

3、当CKOPT=0(编程)时,可以使用片内XTAL1和GND之间的36pF电容,此时不需要外

接电容C。

使用外部RC振荡器时的启动时间选择

熔丝位 (SUT 1..0)

从掉电模式

开始的启动时间

从复位开始的附加延

时(Vcc=5.0V)

推荐使用场合

00 18 CK - BOD方式

01 18 CK 4.1ms 快速上升电源

10 18 CK 65ms 慢速上升电源

11 6 CK 4.1ms 快速上升电源或BOD方式

使用内部RC振荡器的不同工作模式

熔丝位 (CKSEL3..1) 工作频率范围 (MHz)

00011 1.0

0010 2.0

0011 4.0

0100 8.0

注:1、芯片出厂设置状态

被校准的内部RC振荡器提供固定的1/2/4/8MHZ的时钟,这些工作频率是在5V,25℃下校准的。CKSEL熔丝按下表编程可以选择内部RC时钟,此时将不需要外部元件,而使用这些时钟选项时,CKOPT应当是未编程的,即CKOPT=1。

当MCU完成复位后,硬件将自动地装载校准值到OSCCAL寄存器中,从而完成对内部RC 振荡器的频率校准。

使用内部RC振荡器时的启动时间选择

熔丝位 (SUT 1..0)

从掉电模式

开始的启动时间

从复位开始的附加延时(Vcc=5.0V)推荐使用场合

00 6 CK - BOD方式

01 6 CK 4.1ms 快速上升电源 101 6 CK 65ms 慢速上升电源

11 保留

注:1、芯片出厂设置

外部时钟源:当CKSEL编程为0000时,使用外部时钟源作为系统时钟,外部时钟信号从XTAL1输入。如果CKOPT=0(编程),则XTAL1和GND之间的片内36pF电容被使用。

使用外部时钟源时的启动时间选择

熔丝位 (SUT 1..0)

从掉电模式

开始的启动时间

从复位开始的附加

延时(Vcc=5.0V)

推荐使用场合

00 6 CK - BOD方式

01 6 CK 4.1ms 快速上升电源

10 6 CK 65ms 慢速上升电源

11 保留

注意:为保证MCU稳定工作,不能突然改变外部时钟的频率,当频率突然变化超过2%时,将导致MCU 工作异常。建议在MCU处于复位状态时,改变外部时钟的频率。

5. 系统时钟选择与启动延时配置一览表

系 统 时 钟 源 启 动 延 时 熔 丝 状 态 配 置

外部时钟 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 + 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 注:在选择不同系统时钟源时,熔丝位CKOPT的状态有不同的意义,请查看每一种时钟源配置时,对CKOPTD的定义。

AVR单片机熔丝位设置方法和设置步骤 大全

什么是熔丝位? 熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。 熔丝位介绍 AVR Studio中STK500处理熔丝位有巨大的优势:它是以功能组合让用户配置。这种方式与小马(PonyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):有效避免因不熟悉熔丝位让芯片锁死(这是初学者的恶梦),笔者曾经锁死过三片Atmega16。不需要靠记忆与查文档,就能配置熔丝位(这也是初学者的恶梦)动手之前:请你一定弄清楚了,你这样改会有什么后果,除非你有很多钱不在乎多锁死几个芯片。 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”选项。

AVR单片机熔丝位设置,以及搞错熔丝位,导致芯片死锁的恢复办.

AVR单片机熔丝位设置详解 1、BOD(Brown-out Detection 掉电检测电路 BODLEVEL(BOD电平选择: 1: 2.7V电平; 0:4.0V电平。这需要根据芯片的工作电压来选择。 BODEN(BOD功能控制: 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: 时钟源选择。芯片出厂的默认情况下,CKSEL3—0和SUT1、SYT0分别设置为“0001”和“10”,这样将使用芯片8mHz的内部晶振和使用最长的启动延时。 配置方法: 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中的数据有效而对EEPROM无效。芯片出厂的默认设置为“1”。在实际应用中需要根据实际需要进行设置。

ICCAVR-AVR_BootLoader

ICCAVR-AVR_BootLoader-AVR BootLoader详解 ATmega128具备引导加载支持的用户程序自编程功能(In-System Programming by On-chipBoot Program),它提供了一个真正的由MCU 本身自动下载和更新(采用读/写同时"Read-While-Write"进行的方式)程序代码的系统程序自编程更新的机制。利用AVR的这个功能,可以实现在应用编程(IAP)以及实现系统程序的远程自动更新的应用。 IAP的本质就是,MCU可以灵活地运行一个常驻Flash的引导加载程序(Boot Loader Program),实现对用户应用程序的在线自编程更新。引导加载程序的设计可以使用任何的可用的数据接口和相关的协议读取代码,或者从程序存储器中读取代码,然后将代码写入(编程)到Flash存储器中。 引导加载程序有能力读写整个Flash存储器,包括引导加载程序所在的引导加载区本身。引导加载程序还可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。引导加载程序区的大小可以由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该段程序区的不同级别的保护。 本节将给出一个实际的的Boot Loader程序,它可以配合Windows中的超级终端程序,采用Xmodem传输协议,通过RS232接口下载更新用户的应用程序。 5.2.1 基本设计思想 1.Boot Loader程序的设计要点 Boot Loader程序的设计是实现IAP的关键,它必须能过通过一个通信接口,采用某种协议正确的接收数据,再将完整的数据写入到用户程序区中。本例Boot Loader程序的设计要点有: (1)采用ATmega128的USART口实现与PC之间的简易RS232三线通信; (2)采用Xmodem通信协议完成与PC机之间的数据交换; (3)用户程序更新完成后自动转入用户程序执行; (4)Boot Loader程序采用C语言内嵌AVR汇编方式编写,阅读理解方便,可移植性强,代码小于1K字。 2.Xmodem通信协议 Xmodem协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个认可字节。为了便于读者阅读程序,下面简要说明该协议的主要特点,有关Xmoden的完整的协议请参考其它相关的资料。 (1)Xmodem的控制字符:01H、04H、06H、15H、18H、1AH。 (2)Xmodem传输数据块格式:" 个字节的数据块...> "。其中为起始字节; 为数据块编号字节,每次加一;是前一字节的反码;接下来是长度为128字节的数据块;最后的是128字节数据的CRC校验码,长度为2个字节。 (3)接收端收到一个数据块并校验正确时,回送;接收错误回送;而回送表示要发送端停止发送。 (4)发送端收到后,可继续发送下一个数据块(packNO+1);而收到则可再次重发上一个数据块。 (5)发送端发送表示全部数据发送完成。如果最后需要发送的数据不足128个字节,用填满一个数据块。 (6)控制字符"C"有特殊的作用,当发送端收到"C"控制字符时,它回重新开始以CRC校验方式发送数据块(packNO = 1)。 (7)每发送一个新的数据块 加1,加到OxFF后下一个数据块的 为零。 (8)校验方式采用16位CRC校验(X^16 + X^12 + X^5 + 1)。 5.2.2 源程序代码 下面给出的源程序是在ICCAVR中实现的。 /***************************************************** 采用串行接口实现Boot_load应用的实例 华东师大电子系马潮2004.07 Compiler: ICC-AVR 6.31

AVR单片机熔丝位设置详解

A VR单片机熔丝位设置详解 1、BOD(Brown-out Detection) 掉电检测电路 BODLEVEL(BOD电平选择):1: 2.7V电平; 0:4.0V电平。这需要根据芯片的工作电压来选择。 BODEN(BOD功能控制): 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:时钟源选择。芯片出厂的默认情况下,CKSEL3—0和SUT1、SYT0分别设置为“0001”和“10”,这样将使用芯片8mHz的内部晶振和使用最长的启动延时。 配置方法: 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中的数据有效而对EEPROM无效。芯片出厂的默认设置为“1”。在实际应用中需要根据实际需要进行设置。 9、BOOTRST:决定上电启动时,第一条指令的地址。默认状态为“1”,表示启动从0x0000开始执行;如果BOOTRST设置为“0”,启动时从BOOTLOADER的起始位置开始启动(BOOTLOADER的首地址由BOOTSZ1和BOOTSZ0决定)。 BOOTSZ1和BOOTSZ0:这两位决定了BOOTLOADER的大小和起始地址。默认状态为“00”表示4096字节,起始位置为0xF000。 BOOLOADER区大小配置: 注:在做熔丝位设置时要先确定“√”表示的是1还是0

Mega128熔丝位汇总

附录A ATmega128熔丝位汇总 编程与状态说明: 在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed” 表示熔丝状态为“0”(允许) 1:未编程(检查框不打钩) 0:编程 (检查框打钩) AVR的熔丝位可多次编程的,不是OPT熔丝。 熔丝位的配置(编程)可以通过并行方式、ISP串行方式、JTAG串行方式实现。 AVR芯片加密锁定后(LB2/LB1 = 1/0,0/0)不能通过任何方式读取芯片内部Flash 和E2PROM中的数据,但熔丝位的状态仍然可以读取,但不能修改配置。 芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 = 1/1)。但芯片擦除命令并不改变其它熔丝位的状态。 下载编程的正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。 芯片被加密锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,解除加密锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。 1. 芯片加密锁定熔丝 加密锁定位 加密锁定方式 LB2 LB1 保护类型(用于芯片加密) 1(默认) 1 1 无任何编程加密锁定保护 2 1 0 禁止串/并行方式对Flash和E2PROM的再编程 禁止串/并行方式对熔丝位的编程 3 0 0 禁止串/并行方式对Flash和E2PROM的再编程和校验 禁止串/并行方式对熔丝位的编程 注:加密锁定熔丝只能使用芯片擦除命令还原为默认的无任何加密锁定保护状态 2.功能熔丝 说 明 熔丝名称 1 0 默认 M103C ATmega128工作模式 ATmega103 兼容模式 0 WDTON 看门狗由软件控制 看门狗始终工作,软件只可以调节溢出时间 1 SPIEN 禁止ISP串行编程 允许ISP串行编程 0 JTAGEN 禁止JTAG口 使能JTAG口 0 EESAVE 芯片擦除时不保留E2PROM数据 芯片擦除时保留E2PROM数据 1 BODEN 禁止低电压检测功能 允许低电压检测功能 1 BODLEVEL 低电压检测门槛电平2.7V 低电压检测门槛电平4.0V 1 OCDEN 禁止JTAG口的在线调试功能 禁止JTAG口的在线调试功能 1

ATmega16熔丝位详解

ATmega16熔丝位详解 初学者对熔丝经常不解,AVR芯片使用熔丝来设定时钟、启动时间、一些功能的使能、BOOT区设定、当然还有最让初学者头疼的保密位,设不好锁了芯片很麻烦。要想使MCU功耗最小也要了解一些位的设定 在此写下自己对熔丝的理解,参照了一些MEGA16的PDF文档,双龙的文档,以及大家的帖子。力求易懂、全面。 下面以双龙的在系统编程软件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电平; 0:4.0V电平 BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允许 使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v或4.0v) 以下,MUC复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。 注:1.复选框选中代表0,0电平有效。 2.因为M16L可以工作在2.7v~5.5v,所以触发电平可选2.7v(BODLEVEL=0)或4.0v(BODLEVEL=1);而M16工作在4.5~5.5V,所以只能选BODLEVEL=0,BODLEVEL=1不适用于ATmega16。

atmel Studio 6.1环境下的bootloader

网上有关AVR的bootloader配置大部分都是关于ICCAVR的,我用Atmel Studio 6.1弄了好久才出来,这里给大家讲下(我用的AT90CAN32) 首先程序和马老师的几乎一样,只是稍微有改进,因为Atmel Studio 6.1本身有boot.h文件,包含该文件之后可以省去一些汇编的语言。程序会在最后附上。下面主要说下配置问题。 1、熔丝位配置:如图1 图1 JTAGEN 或SPIEN一定要打勾使能,要不然如果bootloader烧写不成功以后就不能用JTAG或SPI了,那么单片机就锁死了,我就锁死了一个单片机,哭晕。。。 BOOTSZ;选择1k或2k或3k或4k BOOTRST:打勾,这样的话程序会从bootloader定义的地址开始烧写,比如我的程序会从0X3800开始写入 2、如图2点击project——>文件名porperties——>toolchain出现如图3所示,点击memory settings,在FLASH segment 中输入.text=0x3800(注意0x3800是和熔丝位设置的bootloader 区的大小一样的) 图2

图3 点击Misellaneous,输入-WI,--section-start=.text=0x7000(其中0x7000是0x3800的二倍,如果你设置的不是0x3800,那么也只需要按照你设置的乘以2就行) 图4 到这里就配置完成了。 如果配置完成了,那么正常情况下就可以把程序烧写进入单片机了,这时候用串口就可以从单片机向上位机发送指令了,如果三秒钟之内给单片机回复d的话,单片机回复C之后,就可以向单片机发送命令了,这里用的是超级终端,WIN7本身没有超级终端,需要下载,我下载的是如图5所示的超级终端。打开超级终端时候注意配置波特率和结束位等,还有就是发送文件时注意选择XMODEM协议。剩下的就可以按照ICCAVR的方法进行发送和接收了,这里主要说的是配置方法和ICCAVR的不同 图5 #include #include

ATMEGA128熔丝位配置详解

ATMEGA128熔丝位配置详解 熔丝位配置 2009-07-29 11:51 在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的 2009年04月17日星期五 11:28 引言 AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝 位和锁定位进行配置。如果配置不当,则可能造成单片机不能 正常工作,严重时可能导致单片机死锁。因此,对单片机熔丝 位和锁定位的正确配置显得尤为重要。 熔丝位是对单片机具体功能和工作模式的限定,其正确配 置与否直接影响到单片机能否正常工作;锁定位是对单片机的 程序和数据进行加密,以防止单片机中的程序和数据被读出或 写入。在进行配置时,一般先配置熔丝位,再配置锁定位。锁 定位又分为引导程序区锁定位和程序及数据存储器锁定位两 类。对引导程序区锁定位进行编程可以实现两套保护模式,即 应用区保护模式和Boot Loader区保护模式;不同的编程配置 可以实现不同的加密级别。对程序及数据存储器锁定位进行编 程可以禁止对并行和SPI/JTAG串行编程模式中Flash和 EEPROM进一步编程,从而对程序和存储器中的数据进行保护。 由于引导程序锁定位和程序及数据存储器锁定位的配置具 有可逆性,因此可根据不同的需要多次编程,灵活改变。但是, 在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN 和SPIEN等)的配置是不可逆的。在采用单一编程下载情况下 (例如只采用JTAG下载或者只采用AVRISP并行下载),一旦 配置后将不可改变。鉴于熔丝位配置的重要性,本文以AVR系 列的ATmega128单片机为例,详细介绍熔丝位的配置以及在配 置过程中常出现的一些问题,并给出相应的解决办法,成功地 解决了因熔丝位配置不当而引起的单片机不能正常工作和死锁 等一系列问题。 1 熔丝位的配置 ATmega128的熔丝位共有3个字节:熔丝位扩展字节、熔 丝位高字节和熔丝位低字节。表1、表2和表3分别描述了所 有熔丝位的功能、默认值以及它们是如何映射到熔丝位字节的。 如果熔丝位被编程,则返回值为0。表中0代表编程,1代表未 编程。

AVR单片机解锁方法

AVR单片机的熔丝位控制着其时钟、JTAG使能、FLASH操作、工作模式等等。。一旦配置错误, 会导致不可预见的结果,导致单片机下不进去 程序。。。最常见的就是时钟配置错误,尤其 初学者比较容易犯这一类错误。。。 AVR单片机如果是系统时钟相关熔丝位配置错了,那可以使用有源晶振、信号发生器等强时钟源给“振开”,其实最简单的方法是利用51单片机的ALE脚进行“急救”。。。。 以前没试过,今天我故意将时钟配置错误(在AVR STUDIO中将熔丝位设置成外部高速晶振,快启动,然后故意把外部晶振给拿掉),重启后果然出事儿了。。。再想下程序下不进去了(嘿嘿,这正合我意),为了解救这个ATMEGA16,我找来了一个AT89S52。。。注意不能用STC的哦,有的STC51单片机把ALE脚给禁止了。。。。 接下来就是最紧张的时刻了,我将两块板子共地,然后将AT89S52的ALE脚(第30脚)接到ATMEGA16的XTAL1脚(第13脚)。。。上电,用示波器看到A LE脚有时钟信号输出。。果断再次下载ATMEGA16的程序。。果然好使了!!!!!

如果大家以后遇到此类现象,不妨使用这个方法试试。。。如果是系统时钟相关熔丝位配置错误,那么这个招绝对管用。。。别的熔丝位设错了倒是没尝试过。。。不过大家尽量配置正确就是啦~~~~~

做设计时不小心锁了一块芯片ATMEGA16,真的很抑闷,网上查了一下资料,真的五花八门,今天自己用有源晶振在自己的作品上动手术,几分钟就把自己的芯片解锁了,收获很多,以后终于随心所欲地编写熔丝了,反正我能解锁! 实践才是检验真理的硬道理! 实际中我没有断开我原来的外部晶振! 解锁图: 解锁步骤: 一:按上面电路接好线,为了避免焊接后又脱焊的麻烦,所以建议用杜邦线接好。 二:用ISP下载线设置好正确的熔丝位,即可烧写熔丝,呵呵,大功告成,芯片又可以恢复使用了。 后话:AVR单片机被锁,不能写入程序,是因为错误地烧写时钟方式熔丝位造成的,选择的时钟方式与实际不同,造成单片机没有时钟信号输入,即不工作了,这样烧写程序当然error啦!

ATmega16 熔丝位设定

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

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 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]

ATMEGA8的熔丝位说明

ATMEGA8的熔丝位说明.txt婚姻是键盘,太多秩序和规则;爱情是鼠标,一点就通。男人自比主机,内存最重要;女人好似显示器,一切都看得出来。ATMEGA8的熔丝位说明 1、功能熔丝 熔丝说明默认 1 0 RSTDISBL PIN1用作复位引脚PIN1用作IO口,复位为内部复位 1 WDTON 看门狗完全由软件控制看门狗始终工作,软件只可以调节溢出时间 1 SPIEN 禁止串行编程允许串行编程0 EESAVE 擦除时不保留EEPROM数据擦除时保留EEPROM数据 1 BODEN BOD功能禁止BOD功能允许1 BODLEVEL BOD门槛电平2.7V BOD门槛电平4.0V 1 BOOTRST 复位后从0地址执行复位后从BOOT区执行(参考BOOTSZ0/1) 1 2、BOOT区配置熔丝 BOOTSZ1 BOOTSZ0 BOOT区大小BOOT区地址默认 0 0 1024WORD 0x0C00 默认 0 1 512WORD 0x0E00 1 0 256WORD 0x0F00 1 1 128WORD 0x0F80 3、时钟源选择 系统时钟源CKSEL3..0 外部石英/陶瓷振荡器 1111-1010 外部低频晶振(32.768KHZ) 1001 外部RC振荡 1000-0101 可校准的内部RC振荡 0100-0001 外部时钟0000 4、外部振荡器 外部振荡器的不同工作模式 熔丝位工作频率范围(MHz) C1、C2容量(pF)(仅适用石英晶振) CKOPT2 CKSEL3..1 1 101 0.4-0.9 仅适合陶瓷振荡器1 1 110 0.9-3.0 12-22 1 111 3.0-8.0 12-22 0 101,110,111 ≥1.0 12-22 注:1、对陶瓷振荡器所配的电容,按陶振厂家说明。 2、当CKOPT=0(编程)时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输出振幅较小,可以减少功耗,对外电磁幅射也较小。 使用外部振荡器时的启动时间选择 熔丝位从掉电模式开始的启动时间从复位开始的附加延时(Vcc=5.0V) 推荐使用场合CKSEL0 SUT 1..0

AVR单片机熔丝位详解

AVR单片机熔丝位详解 AVR的功能很多,其体现在可以选择片内、片外多种时钟源、自带看门狗电路、自带程序加密等功能上。而这些功能的选择和设定是通过片内叫做“熔丝位”的状态标志来设置的。 如果把AVR单片机里你编写的程序比作电脑运行的操作系统和应用软件的话,熔丝位就相当于电脑主板的BIOS设置了。在一些AVR用的ISP编程软件里,你可以访问到熔丝位。 avr 单片机CKSEL[3:0]正是熔丝位设置中的一部分,从字面上就能看出,大致是clock select(时钟源选择)的意思,共有(Bit3~Bit0)四位,通过设置这四位的状态,可以决定单片机将使用何种振荡源作为时钟。 以Mega8单片机为例,CKSEL位的设置通常会伴随CKOPT位一起进行。下面是在网上搜索到的注释,供你参考: CKSEL3/0=0000:外部时钟, CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容; CKOPT=1:禁止该电容 ---------------- CKSEL3/0=0001-0100: 采用内部RC振荡作为时钟源,其具体震荡频率是: 0001:1.0M 0010:2.0M 0011:4.0M 0100:8.0M 这里CKOPT只能设置为1 ---------------- CKSEL3/0=0101-1000:采用外部RC振荡作为时钟源, CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容; CKOPT=1:禁止该电容根据震荡频率范围,设置相应的熔丝位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:禁止该电容 ---------------- CKSEL3/0=1010-1111: 采用外部晶振,陶瓷振荡子作为时钟源, CKOPT=0:高幅度振荡输出(XTAL1引脚将输出一个大幅度的震荡信号,用于某些情况下供给其他处理器当做时钟源,以达到时钟同步); CKOPT=1:低幅度振荡输出(XTAL1引脚输出低幅度的震荡信号,用以省电、减少干扰);并依据晶体的震荡频率范围,设置相应的熔丝位 101X:0.4-0.9M 110X:0.9-3.0M 111X:3.0-8.0M

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]

AVR熔丝位拯救方法详细攻略

AVR熔丝位拯救方法详细攻略 1.1.3 AVR芯片的ISP全攻略当然你在配置熔丝位时要小心从事,防止芯片锁死。有不少网友屡屡遭此不幸。其实你在熔丝位配置时,只要方法正确,一般是不会出错的。如果当你改动了AVR 的熔丝位配置,重新加电后,想再用ISP 下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种外部主频而无法正常工作 (仅限于使用内部RC振荡的情况)。不过,不用太担心,其实拯救的办法还是有很多的,操作起来也是很容易的,具体解决方法为: 1。进入JTAG模式修改SPIEN熔丝位需要使用JTAGICE调试器,不过一般情况下调试模式也进不去,JTAGEN(值为1)锁死了。 2。并行编程器恢复需要你有USB或COM1口制作的并行HVPROG编程器, STK200/STK300 3。通过外加有源晶振需要你有外部有源振荡晶体(石英或晶振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功能

AVR单片机熔丝位设置详细知识文档

本说明以AVR单片机中ATmega16的熔丝位为例,说明熔丝位如何正确设置。 1.编程与状态说明 (1)在AVR的器件手册中,使用已编程(Programmed)和未编程(U nprogrammed)定义熔丝位的状态。未编程表示熔丝位状态为“1”(禁止);已编程表示熔丝位状态为“0”(允许)。 (2)AVR的熔丝位可以多次编程,不是一次性的OPT熔丝。 (3)熔丝位的配置可以通过并行方式、ISP串行方式和JTAG串行方式实现。 (4)AVR芯片加密锁定后(LB2/LB1=1/0,0/0)不能通过任何方式读取芯片内部的FLASH和EEPROM数据,但是熔丝位的状态仍然可以读取,只是不能修改配置。 (5)芯片擦除命令是将FLASH和EEPROM中的数据清除,并同时将两位锁定位状态配置成无锁定的状态(LB2/LB1=1/1),但芯片擦除命令不改变其熔丝位的配置。 (6)下载编程的正确操作程序是:对芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。 (7)如果芯片被加密锁定后,发现熔丝位配置不对,则必须使用擦除命令,清楚芯片的数据,解除加密锁定,然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。 2.芯片加密锁定熔丝位

3.功能熔丝位 4.Bootloader的熔丝位(1)上电启动地址选择

5.有关系统时钟源的选择熔丝位 (1)系统时钟选择 注释(2):当CKOPT=0时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输出振幅较小,可以降低功耗,对外电磁辐射也较小; 注释(3):CKOPT默认状态为“1”。

Atmega128熔丝位设置

Atmega128熔丝位设置ZHJ 初学A VR单片机时最复杂最不容易懂的是熔丝位的设置,一旦设置错了很麻烦。(如果已设置错了,处理见《A VR熔丝位恢复方式ZHJ》) 有了本文,告别设置的不知所措吧! 本文是Atmega128单片机的设置界面,下载用的是A VR Studio 4.13,下载器用的是深圳研学电子公司的ISP下载器(不是打广告,个人觉得好用) 闲话少话,逐条解释吧! 1.Atmega103 Compatibility Mode 不勾选。Atmega103兼容模式。如果你用Atmega128代替Atmega103才勾选。 2.Watchdog Timer always 不勾选。看门狗始终开启。此位勾选后软件不能关闭看门狗(除非你不想让软件可暂停看门狗工作) 3.On-Chip Debug Enabled 不勾选。片上调试使能。一般用不上 4.JTAG Interface Enaled 一般勾选 此条小心设置!!JTAG接口使能。如果你用的是ISP下载,且现在将来不会用JTAG下载,且想用PF4~PF7四个引脚作普通IO口使用,才不勾选。 5.Serial program downloading (SPI) enabled 一般勾选

此条小心设置!! SPI下载使能。在ISP下载模式下不能更改。在JTAG模式下可以更改为不勾选,不勾选后不能使用ISP下载。 6.Preserve EEPROM memory through the Chi Erase cycle 勾选。保护EEPROM中的数据,下载FLASH时不会被破坏。 7.Boot Flash section size=512 words Boot start address=$fe0 8.Boot Flash section size=1024 words Boot start address=$fe0 9.Boot Flash section size=2048 words Boot start address=$fe0 10.Boot Flash section size=4096 words Boot start address=$fe0 四选一。 设置FLASH引导区的大小。一般勾选Boot Flash section size=4096 words Boot start address=$fe0项(除非你的程序太大,快把FLASH用完了) 需11项勾选方有效 11.Boot Reset vector Enabled (default address=$00000) 不勾选。 程序复位入口选择。不选择程序从地址0000开始执行,勾选后从FLASH引导区执行。 12.CKOPT fuse (operation dependent of CKSEL fuses) 一般不选择 放大器选择模式,不勾选为低幅度振荡输出,勾选为高幅度振荡输出 Ext. Clock; Start-up time 6CK + 0ms;

搞错熔丝位,导致芯片死锁的恢复办法

搞错熔丝位,导致芯片死锁的恢复办法 说明:本贴仅具一般的参考性。请有这方面的高手指正及投稿,让这个专题更加完整与专业。 当你改动了AVR的熔丝位配置,重新加电后,想再用ISP下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种主频而无法正常工作(仅限于内部RC振荡的情况)。 解决方法为: 1。寄回给芯片服务商,让他们帮忙将芯片恢复 这是最省事,但是最费时间,最无可奈何的方法。 2。使用编程器将芯片恢复到出厂状态 这个方法,需要你有编程器。编程器的具体制作资料,可参考本网站 技术论坛红日的帖子:用89S51制作简易并行编程器ATmega16(救活 ATmega16) 。 补充:2004-10-27 本网站会员彩虹数码提供了在炜煌系列编程器改熔 丝位恢复芯片的办法。详情请到本文最后的后记与补充。 3。通过外加有源晶振的办法,让其恢复。 这个方法最可行。它可以恢复大部分熔丝位搞错的芯片。接法如下: 恢复方法: 接上上图的有源晶振,重新通电,就能用ISP下载线修改错误的熔丝 位了。修改完成后,断电,将有源晶振拆走,看看是否已经恢复正常。 还有一个办法,如果没有有源晶振的话可以用其他工作正常的单片机 的时钟作为外部晶振,只要将工作正常的单片机的XTAL2脚连接熔丝 设置错误的单片机的XTAL1引脚即可。像我使用AVR910下载线的可直

接把AT90S2313的时钟输出连到被设置错的芯片就可恢复了,很方便。(此方法由彩虹数码提供)。 后记与补充 (2004-10-27) :本网站会员彩虹数码提供了在炜煌系列 编程器改熔丝位恢复芯片的办法。 这几天随着被锁定的芯片越来越多,手头已经没有可以用的芯片了,实在没办法就又把以前购买的炜煌500A并行编程器拿出来研究。因为以前一直没有发现该编程器有改AVR配置熔丝的选项(如下图),所以原本不太抱希望的。 在500A烧片程序中选择了M16芯片之后,弹出来了这样一个对话框,以前我都是看AVR-2适配器如何接线的,重来没有关注过下图红框框住的这几个字眼。

相关文档
最新文档