数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2369|回复: 60

[AVR] 对ATMEGA16L进行高压并行熔丝位恢复(附源代码)

    [复制链接]
发表于 2019-11-4 18:29:00 | 显示全部楼层 |阅读模式

马上注册,认识更多玩家好友,查阅更多资源,享有更多功能

您需要 登录 才可以下载或查看,没有帐号?立即注册 微信登录

x
很多使用AVR单片机的童鞋最怕的就是烧错熔丝位,很不幸的我,锁死了好几片。原因是和坛友一起折腾时,不断的乱试。。。。后来干脆用一块UNO对锁死的片子高压并行编程对熔丝复位,效果超好。这是一块入门级芯片,拿它来做小百鼠吧
001 一块16L.jpg

先看手册,有中文的,关心的有以下几点引脚
002 目标DIP.jpg

并行编程用到的引脚及功能
003 并行编程引脚图.jpg


004 并行编程引脚功能.jpg

这部分定义
  1. <font size="3">#define  RDY      12   //来自目标芯片的RDY/!BSY信号 对应目标PD1
  2. #define  OE       11      // 对应目标PD2
  3. #define  WR       10      // 对应目标PD3
  4. #define  BS1      9       // 对应目标PD4
  5. #define  XA0      13      // 对应目标PD5
  6. #define  XA1      18      // 对应目标PD6
  7. #define  PAGEL    19      // 对应目标PD7
  8. #define  BS2      16      // 对应目标PA0
  9. #define  DATA     PORTD  // D端口
  10. #define  DATAD  DDRD   // D端口方向寄存器</font>
复制代码


进入编程必须的条件
005 进入编程引脚数据.jpg

会用到的
006 XA0A1编码.jpg

007 命令字节编码.jpg


如何进入并行编程模式
008 进入编程方式.jpg

  1. <font size="3">  digitalWrite(VCC, HIGH);  //目标芯片加电+5V
  2.   digitalWrite(WR, HIGH);
  3.   digitalWrite(OE, HIGH);
  4.   delay(1);                //目标加电、!RESET为"0"、XATAL1六个脉冲
  5.     for (int x=0; x<7; x++) {
  6.       digitalWrite(XTAL1, HIGH);
  7.       delayMicroseconds(300);
  8.       digitalWrite(XTAL1, LOW);
  9.      delayMicroseconds(300);
  10.     }
  11.   //delay(1);
  12.   digitalWrite(RST, LOW);   // 输出为低,+12V供电
  13. </font>
复制代码


写熔丝高低位
009 高位编程.jpg

  1. <font size="3">  digitalWrite(XA1, HIGH);  // XA1、XA2值为10
  2.   digitalWrite(XA0, LOW);
  3.   delayMicroseconds(100);  //
  4.   digitalWrite(BS1, LOW);
  5.   DATA = B01000000;  // 此为写熔丝命令 0x40
  6.   digitalWrite(XTAL1, HIGH);  //向目标芯片发送命令
  7.   delay(10);
  8.   digitalWrite(XTAL1, LOW);

  9.   DATA = fuse;  // 传送熔丝值
  10.   digitalWrite(XTAL1, HIGH);
  11.   delay(10);
  12.   digitalWrite(XTAL1, LOW);
  13.   digitalWrite(BS1, HIGH);  
  14.   digitalWrite(WR, LOW);     // 写入对应的熔丝值
  15.   delay(1);
  16.   digitalWrite(WR, HIGH);
  17. </font>
复制代码



010 低位编程.jpg
与高位比,就是BS1不一样。

手册上的时序有点错误
012 熔丝位编辑波形(手册错).jpg

这时实践后的时序
011 熔丝位编辑波形.jpg

其实就看传送命令、传送熔丝值、写熔丝值三个关键点就可以了。
011 熔丝位编辑波形.png
命令:XA1高
数据:XA0高
写入:WR低


熔丝值定义
013 FUSE_H.jpg

014 FUSE_L.jpg

ATMEGA16L的默认值为:低位为E1,高位为99,使用内部RC振荡。
023 ATMEGA16默认FUSE.png
  1. <font size="3">#define  HFUSE  0x99    // ATmega16的默认值,使用内部振荡
  2. #define  LFUSE  0xE1</font>
复制代码




明白的原理,开始做电路。
这个图是芯片对芯片的,实际使用UNO或NANO都可以。
015 Schematic_328P FUSE_Sheet_16L_20190629213551.png

我是用的自己DIY的UNO
016 硬件电路1.jpg

先把小白薯放好,简单标一下
017 硬件电路2.jpg

连线
018 .jpg

连线
019 硬件电路4.jpg

连线
020 硬件电路5.jpg

连线
021 硬件电路6.jpg

没有上按键,用根线代替,短路到地,LED灭下,好了
022 硬件电路7.jpg

又试下禁用SPI
024 M16禁用ISP提示.jpg

一样可以恢复
下面是恢复ATMEGA328的电路路
025 328P-FUSE_20190629095917.png

程序中默认熔丝值要修改
  1. <font size="3">define  HFUSE  0xD9    // ATmega328的默认值,使用内部振荡
  2. define  LFUSE  0x62</font>
复制代码


next

打赏

参与人数 24M币 +956 收起 理由
mydigit + 500 原创文章热度奖励
ynqjzzh + 20 謝謝分享
农村小伙 + 20 謝謝分享
newnet1234 + 20 原創內容
ch104517745 + 20
10655188 + 16 謝謝分享
巴闭 + 20
zzy_85569381 + 20 謝謝分享
hongo + 20 優秀文章
aacyxjz + 20 優秀文章,牙膏

查看全部打赏

 楼主| 发表于 2019-11-4 18:29:58 | 显示全部楼层
本层开源

ATMEGA16L手册:
ATmega16_cn.PDF (2.78 MB, 下载次数: 5, 售价: 3 M币)

打赏

参与人数 11M币 +214 收起 理由
花生仔 + 20 優秀文章
zzy_85569381 + 20 謝謝分享
goodanytime + 20 優秀文章
10655188 + 20 謝謝分享
ljlun + 18 恭喜精华!看来不是最早那种真熔丝了.
mxlkf + 20
jsycwnw + 20 優秀文章
wska + 20
qrut + 20 優秀文章
锰子 + 20 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-4 19:04:31 | 显示全部楼层
大婶玩的这样高端,我只能在旁边默默的看热闹。。。。

点评

看看就会了  详情 回复 发表于 2019-11-5 19:11

打赏

参与人数 2M币 +12 收起 理由
锰子 + 10 歡迎探討
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-4 20:27:14 | 显示全部楼层
厉害了word哥,面包板插满了~

点评

还没有满,要是芯片对芯片就会满  详情 回复 发表于 2019-11-5 19:12

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-4 21:53:49 | 显示全部楼层
哈哈,正好我也想学这个,多指点啊

点评

一起折腾吧  详情 回复 发表于 2019-11-5 19:13

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-5 17:26:02 | 显示全部楼层
一脸懵逼的进来,一脸懵逼的离开

点评

这个。。。。。。  详情 回复 发表于 2019-11-5 19:13

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-5 17:28:54 | 显示全部楼层
以前用周立功的商用烧录器,随便烧随便恢复熔丝

点评

商用的用不起 穷人只能用穷办法  详情 回复 发表于 2019-11-5 19:15

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 19:11:48 | 显示全部楼层
温力口 发表于 2019-11-4 19:04
大婶玩的这样高端,我只能在旁边默默的看热闹。。。。

看看就会了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 19:12:35 | 显示全部楼层
qrut 发表于 2019-11-4 20:27
厉害了word哥,面包板插满了~

还没有满,要是芯片对芯片就会满

打赏

参与人数 1M币 +10 收起 理由
锰子 + 10 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 19:13:05 | 显示全部楼层
人艰不拆了 发表于 2019-11-4 21:53
哈哈,正好我也想学这个,多指点啊

一起折腾吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 19:13:26 | 显示全部楼层
solarshen666 发表于 2019-11-5 17:26
一脸懵逼的进来,一脸懵逼的离开

这个。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 19:15:13 | 显示全部楼层
qd0426 发表于 2019-11-5 17:28
以前用周立功的商用烧录器,随便烧随便恢复熔丝

商用的用不起
穷人只能用穷办法

点评

蹭公司的  详情 回复 发表于 2019-11-5 21:17
回复 支持 反对

使用道具 举报

发表于 2019-11-5 21:17:48 | 显示全部楼层
jf201006 发表于 2019-11-5 19:15
商用的用不起
穷人只能用穷办法

蹭公司的
回复 支持 反对

使用道具 举报

发表于 2019-11-6 07:25:06 | 显示全部楼层
恭喜精华!看来不是最早那种真熔丝了

点评

这个实际上是一个标志位  详情 回复 发表于 2019-11-7 12:46

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 07:53:13 | 显示全部楼层
曾经用过一段时间这类芯片的帮顶了!

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 08:32:56 | 显示全部楼层
这个配置位也是flash的吧

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 歡迎探討 也可以这么理解。

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 09:38:07 | 显示全部楼层
谢谢分享,标记一下,说不定哪天就用上了!

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 10:19:30 | 显示全部楼层
直接搞个有源晶振,简单多了。

点评

在一次解328是,外时钟没有搞定,用了并行编程。  详情 回复 发表于 2019-11-7 12:47

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 歡迎探討 可以的。

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 15:49:11 | 显示全部楼层
一脸懵逼的进来,一脸懵逼的离开

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-11-6 15:59:29 | 显示全部楼层
牛掰了,前来围观,哈哈,收藏先,等牙膏

打赏

参与人数 1M币 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

Archiver|手机版|小黑屋|关于我们|联系我们|网站条款|数码之家 ( 闽ICP备05031405号 )

GMT+8, 2019-11-18 22:59 , Processed in 0.239902 second(s), 16 queries , MemCache On.

Powered by Discuz!

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表