-
一、正确配置
AVR
的熔丝位
< br>
对
AVR
< br>熔丝位的配置是比较细致的工作,
用户往往忽视其重要性,
或感到不易掌握。
下面给出对
AVR
熔丝位的配置操作时的一些要点和需要注意的相关事项。
(<
/p>
1
)在
AVR
的
器件手册中,对熔丝位使用已编程(
Programmed
)和
未编程(
Unprogrammed
)定
义熔丝位的状态,
“Unprogrammed”
表示熔丝状
态为
“1”
(
禁止)
< br>;
“Programmed”
表示熔丝状态为
“0”
(
允许)
。
因此,配置熔丝位的过程实际上是
“
配置熔丝
位成为未编程状态
“1”
或成为已编程状态
“0””
。
< br>(
2
)
在使用通过选择打钩
p>
“√”
方式确定熔丝位状态值的编程工具软件时,
< br>请首先仔细阅读软件的使用
说明,弄清楚
“√”
表示设置熔丝位状态为
“0”
还是为
“1”
。
(
3
)使用
CVAVR<
/p>
中的编程下载程序时应特别注意,由于
CVAVR
编程下载界面初始打开时,大部
分熔丝位的初始状态定义为
“1”
,
因此不要使用其编程菜单选项中的
“all”
选项。
此时的
“a
ll”
选项会以熔丝位的
初始状态定义来配置芯片的熔丝位,而
实际上其往往并不是用户所需要的配置结果。如果要使用
“all”
选项,
应先使用
“read
-
p>
>fuse
bits”
读取芯片中熔丝位实际状态后,再使用
“all”
选项。
(
4
)新的
AVR
芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的
配置
,并将各个熔丝位的状态记录备案。
(
5
)
AVR
芯片加密以后仅仅是不能读取芯片内部
Flash
和
E2PROM
中的数据,熔丝位的状态仍然
可以
读取但不能修改配置。芯片擦除命令是将
Flash
和
E2PROM
中的数据清除,并同时将两位锁定位状
态配置成
“11”
,处于无锁定状态。但芯片擦除命令并不
改变其它熔丝位的状态。
(
6
)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,
配置相关的熔丝位,最后配
置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,
必须使用芯片擦除命令,清除芯片中的数据,
并解除锁定。然后重新下载运行代码和数据
,修改配置相关的熔丝位,最后再次配置芯片的锁定位。
<
/p>
(
7
)
使用
p>
ISP
串行方式下载编程时,
应配置
SPIEN
熔丝位为
“0”
< br>。
芯片出厂时
SPIEN
位的状
态默认
为
“0”
,表示允许
ISP
串行方式下载数据。只有该位处于编程状态
“0”
,才可以通过
AVR
的
SPI
口进行
ISP
下
载,
如果该位被配置为未编程
“1”
后
,
ISP
串行方式下载数据立即被禁止,
此时只能通过并行方式或
JTAG
编程方式才能将
SPIEN
的状态重新设置为
“0”
,开放
ISP
。通常情况下,应保持
SPIEN
的状态为
“0”
,
允许
ISP
编程不会影响其引脚的
I/
O
功能,只要在硬件电路设计时,注意
ISP
< br>接口与其并接的器件进行必要的
隔离,如使用串接电阻或断路跳线等。
(
8
)当你的系统中,不使用
JTAG
接口下载编程或实时
在线仿真调试,且
JTAG
接口的引脚需要作
< br>为
I/O
口使用时,必须设置熔丝位
JTAGEN
的状态为
“1”
。芯
片出厂时
JTAGEN
的状态默认为
“
0”
,表示允
许
JTAG
接口,
JTAG
的外部引脚不能作为
I/O
口使用。当
JTAGEN
的状态设置为
“1”
后,
JTAG<
/p>
接口立即
被禁止,此时只能通过并行方式或
ISP
编程方式才能将
JTAG
重新
设置为
“0”
,开放
JTAG
。
(
9
)
一般情况下不要设置熔丝位把
< br>RESET
引脚定义成
I/O
使
用
(如设置
ATmega8
熔丝位
p>
RSTDISBL
的状态为
“0”
),这样会造成
ISP
的下载编程无法进行,因
为在进入
ISP
方式编程时前,需要将
RESET
引
脚拉低,使芯片先进入复位状态。
(
10
< br>)使用内部有
RC
振荡器的
AV
R
芯片时,要特别注意熔丝位
CKSEL
的配置。一般情况下,芯
片出厂时
CKSEL
位的状态默认为使用内部
1MHz
的
< br>RC
振荡器作为系统的时钟源。如果你使用了外部振
荡器
作为系统的时钟源时,不要忘记首先正确配置
CKSEL
熔丝位
,否则你整个系统的定时都会出现问题。
而当在你的设计中没有使用外部振荡器(或某钟
特定的振荡源)作为系统的时钟源时,千万不要误操作或
错误的把
CKSEL
熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况
产生,使用
ISP
编程方式则无法对芯片操作了(因为
ISP
方式需要芯片的系统时钟工作并产生定时控制信号),芯片
看上去
“
坏了
”
p>
。此时只有使用取下芯片使用并行编程方式,或使用
JTAG
方式(如果
JTAG
为允许时且目
标板上留有
JTAG
接口)来解救了。另一种解救
的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不
同类型的振荡时钟信号,一旦<
/p>
ISP
可以对芯片操作,立即将
CKSE
L
配置成使用内部
1MHz
的
RC
振荡器
作为系统的时钟源,然后再根据实际
情况重新正确配置
CKSEL
。
(
11
)使
用支持
IAP
的
AVR
芯片时,如果你不使用
BOOTLOADER
功能,注
意不要把熔丝位
BOOTRST
设置为
“0”
状态,它会使芯片在上电时不是从
Flash
的
0x0000
处开始执行程序。芯片出厂时
p>
BOOTRST
位的状态默认为
“1”
p>
。关于
BOOTRST
的配置以及
BOOTLOADER
程序的设计与
IAP
p>
的应用请
参考本章相关内容。
二、
AVRmega16
单片机中重要熔丝位的配置
(
< br>1
)
CLKSEL[3:0]
:
用于选择系统的时钟源。
(
2
)
SPIEN
:
SP
I
下载使能位。默认状态为允许
“0”
。
(
3
)<
/p>
WDTON
:
WDT
定时器始终开启设置位。默认为
“1”
,表示禁止
WDT
始终开启。
(
4
)
EESAVE
:执行擦除命令时是否保留
EEPROM
中的内容,默认状
态为
“1”
,表示执行片内擦除
命令时
,
EERPOM
中的内容和
Flash
中的内容一同被擦除。
(
5
)
BOOTRST
:决
定芯片上电时,第一条执行指令的所在地址。默认状态为
“1”
,表示启动时从
0x0000
开始执行。如果
< br>BOOTRST
设置为
“0”
,
则启动时从
Bootloader
区的(
6
)起始地址处开始执行程
序。
<
/p>
(
7
)
BOOT
SZ1
和
BOOTSZ0
:确定
Bootloader
区的大小及其起始的首地址。默认状态为
“00”
,表
示
Bo
otloader
区为
1024
个字的
大小,起始首地址为
0x1C00
。
三、
JTAG
口的使用与配置
AVRmega
16
上,
JTAG
的
< br>4
个端口与
PC
口中的
4
位使用相同的引脚(
TDI/PC5
、
TDO/PC4
、
T
MS/PC3
和
TCK/PC2
),如
果使用
JTAG
口的功能,一旦设置
J
TAG
接口处于使能状态,那么
PC[5:2]
就不能作为通常的
I/O
口使用了,这就意味着减少了
可用的
I/O
口线。
在
AVRmega16
中,
使
用两个熔丝位
(
JTAGEN
和
OCDEN
)
和
MC
UCSR
寄存器中的
JTD
位对
JTAG
进行控制。其中
JTD
位可以由程序指令进行改变。下表给出
3
个控制位对
JTAG
的控制
JTAGEN
1
0
0
0
0
OCDEN
X
1
1
0
0
JTD
X
0
1
0
1
LB2/LB1
X/X
X/X
X/X
1/1
X/X
PC[5:2]
功能
I/O
JTAG
(仅允许下载编程)
I/O
JTAG
(允许下载和在片调试)
I/O
注:
JTD
< br>控制位上电复位的初值是
“0”
,同时为了防止意外开启
或关闭
JTAG
口,需要使用特定的指
令操作时序对
JTD
进行设置:必须在
4
个时钟周期内对
JTD
位重复
2
次写入,才能将
JTD
标志设置成所
希望的值。
四、提高系统可靠性的熔丝位配置
-
-
-
-
-
-
-
-
-
上一篇:英文诗句
下一篇:2017英语统考试卷