【普及帖】认识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进行的归类,如有错误的地方还请指正。 努力学习!!
页:
[1]