打印
[Atmel]

自制arduino——avr熔丝位配置(转)

[复制链接]
2201|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
所有avr芯片要使用bootloader实现IAP下载功能都必须得先配置熔丝位。不仅对新手,甚至是avr使用者,熔丝位配置出错的情况也时有发生。后果往往是悲剧的~~~所以写了此篇~
废话不多说,直接正题:
本篇主要针对mega8系列的arduino。其他系列熔丝位配置有所不同。
大多数人烧bootloader都是用的usbasp(淘宝售价应该是20元左右),个人推荐用progisp这款软件(下载地址自己百度)。
进入软件,插好usbasp下载器。

左上角选择芯片型号,不管你是mega8a、48、88、168、328都选mega8A(理论上选mega8也行,都是一个系列)。
点击右下角的“...”,这个就是熔丝位配置。

然后如图设置,点击“写入”即可。(千万不要手贱,急急忙忙、没看清楚就点了“写入”
其中bootsz两项为熔丝位大小配置,根据你的bootloader大小配置。
11   128B
10   256B
01   512B
00   1K
据说UNO的bootloader只有512字节不到,那把BOOTSZ置01即可。

如果出现无法编程的情况,也许是两种可能:芯片已经被锁(新的不会);硬件焊接有问题(DIY经常出现的问题)。

PS:没打算学avr单片机的人,就别去深究每个熔丝位的作用了,arduino本来就是为了省去这些麻烦的过程,跑去深究就本末倒置了。


想弄得更清楚的孩子,那注意了,在此我重点说几个熔丝位:
CKSEL这几个熔丝位为晶振配置,很多人遇到芯片被锁的情况都是因为这个熔丝位配置出错;一般arduino都使用16M晶振,所以全部置1即可。(如何解锁?下次有时间我再写~~~)
CKOPT置0为开启全幅震荡,当你晶振大于8M时,就要开启。
SPIEN,spi使能,这是唯一一个千万不能置1的熔丝位,如果关了,那USBASP就无法使用了,这时只能通过并行编程或者JTAG来修改熔丝位了(mega8没JTAG...)
BOOTSZ,是对BOOT区大小进行配置的熔丝,根据相应bootloader大小配置。
BOOTRST,是对复位向量的配置,置0时复位向量指向BOOT起始位置,置1时指向APP区起始位置。很多人烧了bootloader后,不能下载或者只能下载一次,大多是因为BOOTRST没有置0。(想搞懂什么是BOOT区?APP区?这些个XX区怎么分配?那去图书管找本AVR的书认真学习吧,数据手册上面也有,但非专业人士还是很难看懂)
RSTDISBL,为硬复位功能使能端,如果置0,可以将reset端做数字IO使用,但在arduino上可能经常用到复位按键,所以这里置1。
WTDON为看门狗设置,置0后将打开看门狗,如不进行喂狗操作,将无限复位。一般我们的非工业制作都不使用看门狗功能,所以这里置1即可。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6950

帖子

67

粉丝