AVR单片机高压解锁器的制作设计

控制/MCU

1883人已加入

描述

概述:

利用常用的AVR单片机ATmega16制作的高压解锁器,可以解开所有芯片锁死的情况(除非芯片损坏、烧毁)。制作作品经实验验证,解开了山东大学物理学院AVR单片机实验室所有近40片锁死的单片机以及许多同学锁死的单片机。制作方法简单,保证你一小时之内做完。

所需元件极少(如威廉希尔官方网站 图所示):仅一只三极管、一片7805,三支电阻、一只LED、三个小电容,一片可用的单片机,一个12V电源。

程序与威廉希尔官方网站 连接可方便的移植到其它型号单片机上(凡支持高压编程的,都可以)。

希望能对初学单片机的同学有所帮助,特别是我们学校暑假参加电子设计比赛的同学。

制作背景(常见芯片锁死情况与高压解锁介绍):

AVR单片机是我们学校同学经常使用的单片机,尤其是中高档单片机ATMEGA16。

单片机在使用的时候,经常出现由于配置熔丝位的失误或威廉希尔官方网站 的失误而造成单片机锁死的情况,锁死之后,便无法再对单片机进行编程。

常见的锁死的情况以及常用的解决办法:

1,时钟选择错误(可通过有源晶振配合ISP或JTAG下载器、高压编程器进行解锁)

2,ISP被禁(可通过JTAG下载器、高压编程器进行解锁)

3,JTAG被禁(可通过ISP下载器、高压编程器进行解锁)

4,锁定位加密(可通过单片机设定允许的方式进行单片机擦除)

5,以上情况的组合:

1+2(可通过有源晶振配合JTAG、高压编程器进行解锁)

1+3(可通过有源晶振配合ISP、高压编程器进行解锁)

1+4(可通过有源晶振配合单片机设定允许的方式进行单片机擦除)

2+3(只能通过高压编程器进行解锁)

2+4(可通过JTAG下载器、高压编程器进行单片机擦除)

3+4(可通过ISP下载器、高压编程器进行单片机擦除)

1+2+3(只能通过高压编程器进行解锁)

1+2+4(可通过有源晶振配合JTAG下载器、高压编程器进行单片机擦除)

1+3+4(可通过有源晶振配合ISP下载器、高压编程器进行单片机擦除)

2+3+4(只能通过高压编程器进行单片机擦除)

1+2+3+4(只能通过高压编程器进行单片机擦除)

6,其他锁死情况(可通过某些方法或高压编程器进行解锁)

可以看出,高压编程器是解锁功能最强的、不需要有源晶振配合的解锁工具。但是,与目前常用的编程下载器相比,高压编程器有许多缺点:

A,编程速度慢

并行编程脉冲宽度需要大于250ns,如果是高压并行编程器,则烧写速度不会超过4Mbit/s,如果是高压串行编程器,则速度更慢。

B, 占用引脚多。

无论高压并行编程器还是高压串行编程器,需要占用的目标单片机的引脚数都在16以上。

C, 需要12V的DC电压,而且电压范围窄(RESET:11.5~12.5V,VCC:4.5~5.5V)

因此,现在很少有人用高压编程器对单片机进行编程,多数都用ISP或JTAG编程方式。因而专门的高压编程器价格也不低,简易的高压编程器价格在100以内,但是只能适用于某一种或两种单片机型号,而且需要专门的程序下载软件及驱动。

但是因为它在对单片机进行解锁方面的功能,使的高压编程器并未完全被淘汰。

因而使用高压编程器时便会感觉很矛盾:

1,编程器的主要功能是给单片机编程,但是现在ISP或JTAG方式编程速度高、占用引脚少,而且相应的软件也非常完善,单就对单片机编程而言,完全不会使用高压编程的方式来对单片机编程。

2,不使用高压编程器,很多时候单片机锁死后很难解开。但是仅为给单片机解锁而专门买个高压编程器,而且还要配合专门的软件使用,既不值又麻烦。

通过查阅数据手册中高压编程的内容,利用常用的ATMEGA16单片机,可以设计制作一个不需要PC端软件、不附带编程功能、专门对单片机解锁的AVR高压解锁器。

制作方法:

下面以对锁死的MEGA16单片机进行解锁为例,与大家分享制作方法与源程序。对于其它型号的单片机,只要具有高压编程接口,只需要查阅数据手册,将对应引脚接好即可。

这些引脚都是用于高压编程的:DATA;RDY_BSY;_OE;_WR;BS1;XA0;XA1;PAGEL;BS2;RST;XTAL1;VCC

威廉希尔官方网站 图:

解锁器

注:出于某些考虑,线路直接以连线连接,未使用任何NetLabel。图中的电容也可省略,一般没问题。

源程序:

//主单片机AVCC接VCC,利用AREF引脚控制锁死的单片机的VCC(5V电源电压能达到4.9V);

//主单片机的I/0寄存器ADMUX 控制AREF与AVCC的开关;

//三级管(9014)B极电阻100K,C极电阻1K,E极接GND(12.2V电源电压,能达到11.9V)

//锁死的单片机的RESET与VCC必须几乎同时加电压,不能有明显时间差;

//主单片机的熔丝位:禁用JTAG(因使用PORTC);1M内部时钟;

//Chip: ATmega16

//char is unsigned: Yes

//CodeVision AVR

#include

#include

//引脚定义

#define DATAPORTA//锁死芯片的PORTB

#define RDY_BSYPINC.4//锁死芯片的PD1

#define _OEPORTC.3//锁死芯片的PD2始终为1

#define _WRPORTC.2//锁死芯片的PD3

#define BS1PORTC.1//锁死芯片的PD4

#define XA0PORTC.0//锁死芯片的PD5

#define XA1PORTD.7//锁死芯片的PD6

#define PAGELPORTD.6//锁死芯片的PD7

#define BS2PORTB.0//锁死芯片的PA0

#define RSTPORTD.2//9014的B极电阻

#define XTAL1PORTC.6//XTAL1

#define LEDPORTB.1//LED

#define DDR_LEDDDRB.1//

#define VCC_ONADMUX=0x40//锁死芯片的VCC

#define VCC_OFFADMUX=0x00

//进入编程状态

#define PROG_ENABLEBS1=0;XA0=0;XA1=0;PAGEL=0;

//初始化

void initial(void)

{

DDRB=0xFF;

DDRC=0xFF;DDRC.4=0;PORTC.4=1;

DDRD=0xFF;

DDRA=0xFF;

_OE=1;

_WR=1;

XA0=1;

XA1=1;

PAGEL=0;

BS2=0;

BS1=0;

RST=1;

XTAL1=0;

LED=0;

VCC_OFF;

DATA=0x00;

}

//芯片擦除

void chip_erase(void)

{

XA1=1;XA0=0;

BS1=0;

DATA=0x80;

XTAL1=1;XTAL1=0;

_WR=0;_WR=1;

while(RDY_BSY==0);

}

//重写熔丝位

void write_fuse(char LB,char HB)

{

XA1=1;XA0=0;

BS1=0;

DATA=0x40;

XTAL1=1;XTAL1=0;

XA1=0;XA0=1;

DATA=LB;//熔丝低位

XTAL1=1;XTAL1=0;

BS1=0;BS2=0;

_WR=0;_WR=1;

while(RDY_BSY==0);

XA1=1;XA0=0;

BS1=0;

DATA=0x40;

XTAL1=1;XTAL1=0;

XA1=0;XA0=1;

DATA=HB;//熔丝高位

XTAL1=1;XTAL1=0;

BS1=1;BS2=0;

_WR=0;_WR=1;

while(RDY_BSY==0);

}

//高压恢复

void recover_fuse(void)

{

PROG_ENABLE;

RST=0,VCC_ON;//最关键的时序问题

chip_erase(); //擦除

write_fuse(0xE1,0x19); //恢复熔丝为默认(也可自己设定为其他值)

}

//结束状态

void finish(void)

{

DDRB=0x00;PORTB=0x00;

DDRC=0x00;PORTC=0x00;

DDRD=0x00;PORTD=0x00;

DDRA=0x00;PORTA=0x00;

DDR_LED=1;LED=1;

VCC_OFF;

}

void main(void)

{

initial();

delay_ms(200);

recover_fuse();

finish();

}

功能与使用方法:

功能:

将单片机锁定位与存储器擦除,并且将所有熔丝们都恢复为出厂默认(也可以改为自己想要的值)。

使用方法:

按下按键1秒钟以上时间,若看到LED指示灯亮,说明解锁成功。若尝试数次仍不见LED指示灯亮,说明芯片非锁死,而是损坏了。

特点:

1,不需要PC端软件,完全脱离电脑工作

2,专门用来恢复熔丝,解锁单片机,不附加累赘功能

3,使用方便,整个过程不到1秒时间

4,可通过预留插针,将高压编程所需引脚引出,对其它型号单片机只要把对应引脚相连,即可解锁;

5,制作简单,成本低廉。

PS:尽管市面上的高压编程器是用比ATMEGA16低档的ATMEGA8作为主单片机,但是我们根本不需要专门的单片机作为主单片机,只要保留程序和威廉希尔官方网站 板,就可以用任一块未锁的单片机来解锁别的单片机。并且现在ATMEGA8的价格与ATMEGA16的价格已经相差不多。

平时一般不用这个东西,可以放到一边去,当芯片被锁时才拿出来使用,百试百灵。
来源;21ic

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分