kirbyklein 发表于 2018-4-20 14:31:06

【普及帖】认识ATMEGA 48 88 168 328熔丝位

本帖最后由 kirbyklein 于 2018-5-3 17:21 编辑

之前因为把atmega644pa芯片的熔丝位配错了boot区大小导致bootloader损坏而无法上传程序,后来才知道把boot大小只配了512word。

48 88 168 328属同一类芯片,但各芯片的熔丝位可能有细微不同,所以还是要以datasheet为准,本帖以328为例。


现汇总一下AVR单片机(atmega 48 88 168 328)的熔丝位配置:(注:熔丝位 “0” = 已编程; “1” = 未编程正好相反)

熔丝低位(low fuse):

1.CKDIV8

CKDIV8位是配置mcu时钟的8分频,出厂默认是0,如果你是用16MHz(arduino uno 和 nano默认时钟)的话需要将这位改成1。

2.CKOUT

CKOUT位允许系统时钟从PORTB0输出,一般默认1就行,不用去配。



3.SUT1/0复位启动时间选择

SUT 1/0:当选择不同晶振时,SUT有所不同。如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。默认“01”

3.CKSEL3/0: 时钟源选择(默认“0100”)

Low Power Crystal Oscillator                     1111 – 1000

Full Swing Crystal Oscillator                     0111 – 0110

Low Frequency Crystal Oscillator            0101 – 0100

Internal 128kHz RC Oscillator                  0011

Calibrated Internal RC Oscillator               0010

External Clock 0000 Reserved                  0001

atmega328p (UNO和NANO都是这个芯片) 出厂默认是8MHz再8分频,最终为1MHz的时钟。

而UNO和NANO默认是用16MHz外部晶振所以 CKSEL3/0 = “1111”   SUT 1/0 = “11”

熔丝高位(high fuse):

1.RSTDISBL: 复位或I/O功能选择

为硬复位功能使能端,如果置0,可以将reset端做数字IO使用,但在arduino上可能经常用到复位按键,所以这里置1。(此位如果配成0,芯片变板砖……)

2.DWEN: 调试线使能

DWEN用来激活DW调试,默认未编程。

3.SPIEN: 使能串行程序和数据下载

SPIEN位用来使能SPI下载,如果配成”1″那就无法用编程器上传程序和修改熔丝,默认”0″。

4.WDTON: 是否一直启用看门狗

置0后将打开看门狗,如不进行喂狗操作,将无限复位。一般我们的非工业制作都不使用看门狗功能,所以这里置1即可。

5.EESAVE: 执行芯片擦除时EEPROM 的内容保留

此位默认为”未编程”,即芯片重新烧录时EEPROM内容不保留。

6.BOOTSZ 1/0: boot区大小

00:2048Word
01:1024Word
10:512Word
11:256Word

7.BOOTRST: 复位向量选择

1:程序从0x0000地址开始执行;0:程序从引导区确定的入口地址开始执行

如果你的芯片里面烧写了bootloader并想要复位后从引导区开始,就需要配置此位0。

熔丝扩展位(extended fuse):

6.BODLEVEL 2/0:BOD触发电平

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

BODLEVEL 2/0 熔丝位            BOD VOLT

111                                          禁用BOD

110                                          1.8V

101                                          2.7V

100                                          4.3V

另:扩展熔丝位只有BODLEVEL这3位。

最后你可以到boards.txt里看一下各开发板的熔丝配置。



下面是UNO和NANO的默认熔丝:

UNO = FFDEFD(LOW-HIGH-EXT)

NANO = FFDAFD(LOW-HIGH-EXT)

这些都是我参照DATASHEET进行的归类,如有错误的地方还请指正。

epigone 发表于 2018-4-21 15:43:26

努力学习!!
页: [1]
查看完整版本: 【普及帖】认识ATMEGA 48 88 168 328熔丝位