数码之家

 找回密码
 立即注册
搜索
查看: 6198|回复: 12

[AVR] 再做一个AVR并行熔丝恢复器

[复制链接]
发表于 2021-4-3 18:21:23 | 显示全部楼层 |阅读模式
本帖最后由 jf201006 于 2021-4-3 18:38 编辑

本层先以文字唠叨下,二楼有彩蛋,乘电梯可直达。
一、背景
    本贴源于去年朋友的一个项目,使用了几千个ATmega168,配置使用内部8M的RC振荡器,低位FUSE为E2,重新编译了bootloader,与程序一起写入单片机。后来有十几二十个产品返回来,当初板子上预留了IPS焊盘,使用progisp1.72不能进入编程模式。更换了168就好了,这些坏的不知是什么问题。
    想用以前做的并行编程重写熔丝位,但写FUSE低位为FF(NANO的值)还是62(出厂默认),还是重写E2(开发时的值)?因为每次写入不同的熔丝值都要整改NANO程序中的FUSE值,重新下载到NANO板上,太麻烦了。还有一个就是很想知道不能进入ISP编程模式是不是熔丝位出了问题。今年春节过后,比较空,手就痒痒,总想单片机涨价了,这几片全部都坏了吗?
二、目标
    想着能不能每次烧写熔丝值可以随意改变,同时也能读出芯片原来的熔丝值,编个上位机程序来控制NANO?不,我是小白,不会。就会用串口打印个“Hello,world!”,对呀,就用串口来个人机对话吧:显示芯片的熔丝值、输入要写入的熔丝值。
三、硬件
    使用烂大街的NANO板,这个之前做过高压并行写熔丝的,源程序有的,打算再做个读取芯片熔丝位的模块和串口读取的模块,集成到一起就可以了。上次是用面包板试验的,想想都烦,反正春节后也不忙,就打个板吧。当时想着ATmega系列的芯片都可以用,就多设计了一点,利用空闲时间画个板子、编个程序。
四、过程
    先看看画的图和打的板子,不许笑哦
    想想简单,做起来就是一个不断的挖坑、填坑过程,三天打鱼两天晒网的断断续续弄了一个多月。有些照片也没有拍,只能靠描述。主要的难点有两个:
    一个是打板出了问题。想用并行编程读取一下坏的168的熔丝位,主要是好奇,想知道这个168为什么在产品上不能工作。按手册PDF的要求设置各引脚后,读回的总是不对,写入默认熔丝值,读回已不是写入的值了,progisp还是不能进入编程模式。什么问题呢?怀疑程序、怀疑手册、直至怀疑人生!分析下:写入程序是以前写的,实战过的,没有问题,那就应该是硬件问题了。经过检查,原来是并行数据DATA[7:0]画反了。只好飞线解决。
    原因:由于用立创EDA做的图,知道NANO的模型的A4和A5有问题,自动布线进不会连接的,又懒得修正模型,就随手用线连接,不使用网络标号了。但正是这蛋疼的手工连线,使得对目标芯片的D7-D0线序在转接板的接口上反了,成了D0-D7。
    二一个错误是元件参数设置有问题。写入默认熔丝值(0x62 0xDF),progisp能进入编程模式了,读出是默认值(62 DF),但并行编程读出的是63DF。WHAT?又用progisp写入产品中使用的熔丝值:E2DD,但并行编程读出的是E3DD。能读写,说明硬件没有问题了。这又是哪里有错呢?在此又怀疑人生三分钟!
    分析了一下,
   
    错在数据D0上,D0始终为“1”。
    原因:由于使用物理串口,就是NANO的D0和D1,这和读写芯片时(用NANO的D7-D0)要复用这两个脚,而NANO的D7-D3是直接连接到接口上的,D0、D1是同时接了USB转TTL(CH340)的,有上拉电阻和LED指示灯。所以D0、D1若通过1K电阻连接到目标芯片上,对目标芯片的读写数据会因上接面而误成“1”,解决的方法是适当减小这个串联电阻(实验用470-560都可以),但,直连也是不行的,为啥?聪明的你,想想就明白了!
    程序方面就是一个一个模块调试,通过后拼接起来。因为有板子的错误、元件参数的错误,所以为了找出问题,只好一个模块一个功能完成。严格地按手册说明写程序也会带来灾难,上次编写写熔丝程序时,发现手册中给出的波形有错,这次鬼才信的我用了一本“假”手册:
    英文原版
    BS1置“1”是读取标定字节
    为此翻看了好几个芯片的手册,唯有我看的那个中文版的是错的!我是不是应该去买彩票啊:titter:
    这期间还打了第二块板,搬板。。。各种填坑
    这里可见对两种不同宽度转接板都可支持。
五、说明
    1、板子,使用NANO对目标芯片ATmega168进行并行编程,168是AU封装的,使用转接板。另外增加20PIN的接口中,引出并行编程的各信号,可以扩展对别的芯片用。
    2、我用的板子说明
    因为是断断续续的调试,单位家里带着,还要用个12V的编程电源,感觉不方便,就X宝搞了个DCDC电源,将5V转为12V用了。
    原本接12V的两个焊孔也接了一个红LED,观察DCDC电源有没有工作。绿色LED是运行指示灯,进行入并行编程时会熄灭。板子增加了PAGEL和BS1、XA1和BS2两个短路跳线,是想用作对比较特别的芯片ATtiny2313支持的。因为有坛友问到过,当时是在程序里将其定义为并联复用,这里预留物理连接,不知可行否,也请坛友验证。
    3、一点资料,通过测试没有问题,PDF中的错误,这里给出正确的时序图:
    读取熔丝位和标识位的时序图:
    常用ATmega系列芯片的基本参数对比:
    4、关于这套装置的使用就不多说了,另外有使用说明。

谢谢观赏!!
对了,好不好的临走前点个赞呗:tongue:

本帖子中包含更多资源

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

x

打赏

参与人数 13家元 +340 收起 理由
hfsp + 20 謝謝分享
chenquan1234 + 20
aacyxjz + 20
kkdkj + 20 謝謝分享
miqi328 + 20 謝謝分享
有点不烧 + 20 謝謝分享
超级女生 + 20 謝謝分享
农村小伙 + 20 謝謝分享
qrut + 20
ljlun + 20 优秀文章

查看全部打赏

 楼主| 发表于 2021-4-3 18:21:59 | 显示全部楼层
本帖最后由 jf201006 于 2021-4-3 18:39 编辑

二楼的彩蛋是全套装置的原资料,拿走不谢哈!    先来硬的
原理图:
PBC图:
GERBER文件:
    再来软的
使用说明:
下载及串口调试软件:
HEX程序的压缩文件:


OVER!




本帖子中包含更多资源

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

x

打赏

参与人数 1家元 +20 收起 理由
玛德陛下 + 20 謝謝分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-4-3 18:51:56 | 显示全部楼层
多占一层,贴下使用说明: 很是奇怪,第一行的回车为什么编辑的时候有的,保存后就没有了?










对ATMEGA16L进行高压并行熔丝位恢复(附源代码)
https://www.mydigit.cn/forum.php?mod=viewthread&tid=92417
AVR芯片价格飙升,做了个单片机高压熔丝恢复器
http://bbs.mydigit.cn/read.php?tid=202724
bootloader不再神秘 AVR单片机折腾 教小白如何在ArduinoIDE制作适合自己的开发板
https://www.mydigit.cn/forum.php?mod=viewthread&tid=250009

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2021-4-4 10:53:54 来自手机浏览器 | 显示全部楼层
这看的头疼,bug才是这世界的王者啊,去之不净。

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-4 17:45:18 来自手机浏览器 | 显示全部楼层
是呀,遇到问题的时候就是满世界怀疑,一个个排除真是很费精力

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 我很贊同

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-4 18:42:54 | 显示全部楼层
早期OTP的芯片要用真熔丝,熔断就不能恢复了
帖子里的应该还是电子数据位

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 我很贊同

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-8 01:48:12 来自手机浏览器 | 显示全部楼层
淘宝上那个usbasp不能用吗?

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 歡迎探討 没有加密是可以的

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-17 13:34:05 | 显示全部楼层
我用STC的做过这个熔丝恢复器,很简单的,没有楼主这个方案那么复杂,40脚对40脚,就一个按钮,按一下就把相关的时序发过去了,拿下来测试就恢复了熔丝

不过AVR的这款产品对比STC,还是不如STC的直接串口TTL下载方便省事,连电源才四根线,第一次下载刷入免断电自动ISP复位功能,以后每次调试程序下载很爽的!

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-20 13:18:00 来自手机浏览器 | 显示全部楼层
weitongguo1 发表于 2021-4-17 13:34
我用STC的做过这个熔丝恢复器,很简单的,没有楼主这个方案那么复杂,40脚对40脚,就一个按钮,按一下就把相关的 ...

我做这个熔丝恢复的目的 要看原来烧成什么熔丝了 。另外AVR也可以TTL串口下载呀
回复 支持 反对

使用道具 举报

发表于 2021-5-1 16:34:08 | 显示全部楼层
犹记得每一次PCB打板时,都有或多或少莫明的设计错误:lol::lol::lol:
貌似这已经成了是行业标准

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2022-6-21 13:27:59 | 显示全部楼层
不知道这个能不能恢复AT90S1200?
回复 支持 反对

使用道具 举报

发表于 2022-9-9 22:27:08 | 显示全部楼层
可以直接打板,还有原理图,已经很不错了!!
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-25 06:26 , Processed in 0.358801 second(s), 19 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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