简单全能的AVR单片机高压解锁器

发布者:pingbashou最新更新时间:2017-11-21 来源: eefocus关键字:AVR单片机  高压解锁器 手机看文章 扫描二维码
随时随地手机看文章

简单全能的AVR单片机高压解锁器(制作方法,以MEGA16为例,附电路与C源程序,注:不是高压编程器)AVR高压解锁
概述:
    利用常用的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

电路图:
简单全能的AVR单片机高压解锁器


注:出于某些考虑,线路直接以连线连接,未使用任何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 DATA             PORTA         //锁死芯片的PORTB
#define RDY_BSY       PINC.4         //锁死芯片的PD1
#define _OE                PORTC.3      //锁死芯片的PD2始终为1
#define _WR               PORTC.2      //锁死芯片的PD3
#define BS1                PORTC.1      //锁死芯片的PD4
#define XA0               PORTC.0      //锁死芯片的PD5
#define XA1               PORTD.7      //锁死芯片的PD6
#define PAGEL           PORTD.6     //锁死芯片的PD7
#define BS2                PORTB.0      //锁死芯片的PA0
#define RST               PORTD.2      //9014的B极电阻
#define XTAL1           PORTC.6      //XTAL1
#define LED               PORTB.1      //LED
#define DDR_LED      DDRB.1        //
#define VCC_ON        ADMUX=0x40    //锁死芯片的VCC
#define VCC_OFF      ADMUX=0x00

//进入编程状态
#define PROG_ENABLE   BS1=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的价格已经相差不多。
平时一般不用这个东西,可以放到一边去,当芯片被锁时才拿出来使用,百试百灵。

关键字:AVR单片机  高压解锁器 引用地址:简单全能的AVR单片机高压解锁器

上一篇:AVR单片机(学习ing)—(九)、ATMEGA16的模数转换器—01
下一篇:AVR-GCC:关于ISR()不能更新变量

推荐阅读最新更新时间:2024-03-16 15:46

如何设计一个以AVR单片机为控制芯片的电子镇流器?
引言 电子镇流器是新型节能产品,不仅能带动一些照明灯具,还可以和一些紫外灯结合在一起,对于空气净化和水源净化都有着非常大的作用。当前,全世界都在大力提倡环境保护,电子镇流器间接地为环保提供了原动力。 AVR单片机是一款性价比较高的单片机,用这种单片机来对电子镇流器进行调光和时间采样非常合适,首先是AVR单片机本身较稳定,抗干扰能力比较强,其次是其本身的Harvard结构使得运行速度比较快,数据回读时间较快,可以实现实时在线控制。 1 AVR单片机介绍 1.1 AVR单片机的特点 与以往的8位单片机相比,AVR单片机采用Harvard结构,也就是程序总线和数据总线分开,并采用两级流水线,具备1MIPS/MHz的高速运行处理能
[单片机]
如何设计一个以<font color='red'>AVR单片机</font>为控制芯片的电子镇流器?
AVR单片机熔丝位锁死解密方法
1.AVR单片机熔丝位锁死简单快捷的解密方法: 在很多AVR单片机的初学者在使用AVR单片机中,很容易把熔丝位弄错而造成单片机锁死,比如说JTAGEN置为1后,单片机的JTAG就不能再下载程序进去了,因此给我们带来很多麻烦。 常见的恢复方法是使用并口编程器来恢复,对于初学者来说,很多设备是很欠缺的,所以很难解决。 现为我们初学者介绍一个简单实用可行的方法——有源晶振恢复法。将被锁死的AVR单片机接入最小系统或者开发板中,将系统中的晶振拆下来,在XAIL1接上有源晶振的第三脚(按下图接即可)。 然后通电,使用ISP下载线进行熔丝位编辑,本人使用智
[单片机]
<font color='red'>AVR单片机</font>熔丝位锁死解密方法
大神提供的AVR单片机的相关总结
1、AVR文档里要求最好不要中断嵌套,只能执行完这个中断再执行下一个中断; 2、ADC采样的时候,外部存在上拉51K的情况下,断路,测量的电压值是5V(工作电压是5V),说明mega88的输入阻抗是相当大的哈哈; 3、SREG状态寄存器中, SEI、CLI就是开全局中断、关全局中断(还以为没有来着),_NOP 、 _WDR; 4、VolaTIle (不稳定的)AVR全局变量的时候用 (可以避免编辑器对其的优化); 5、不用的IO口如果悬空的话,1是耗电量大处于判断状态;2是 受外界一点点干扰就可能成为反复振荡的输入信号(干扰问题); 6、推挽结构,输出不能直接接地(大电流烧掉管子); 7、明确 PC (Program counte
[单片机]
大神提供的<font color='red'>AVR单片机</font>的相关总结
基于AVR单片机的嵌入式“瘦服务”系统设计思想
1 引 言 21世纪,计算机的发展进入了一个充满机遇的阶段——后PC时代。继PC机之后, 形式多样的数字化产品已经开始成为信息处理的一大主要工具,并且正在逐步形成一个充满商机的巨大产业。后PC时代的到来,使得人们开始越来越多地接触到一个新的概念——嵌入式产品。像手机、PDA(如商务通)等均属于手持的嵌入式产品,VCD机、机顶盒等也属于嵌入式产品,而像车载GPS系统、数控机床、网络冰箱等同样都采用嵌入式系统。形式多样的数字化设备正努力把Internet连接到人们生活的各个角落,这意味着,中国数字化设备的潜在消费者数量将以亿为单位。嵌入式瘦服务器是嵌入式Internet时代的关键和核心技术之一,如果说PC机的发展带动了整个桌面系统
[单片机]
基于<font color='red'>AVR单片机</font>的嵌入式“瘦服务<font color='red'>器</font>”系统设计思想
基于AVR单片机的PWM功能设计
一、定时/计数器PWM设计要点 根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。 3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定P
[单片机]
基于<font color='red'>AVR单片机</font>的PWM功能设计
基于AVR单片机的ISP1362OTG设计
0 引言   本文采用的设计方案是基于Philips公司的ISP1362 OTG控制芯片,参照最新的USB OTG技术规范,设计了一种遵循USB协议的主/从机系统。   1 ISP1362芯片的内部结构   Philips公司的ISP1362是一款符合USB 2.0总线协议的接口芯片,内部有3个USB控制器一主机控制器、设备控制器和OTG控制器。其中,主机控制器具备高度优化的USB主机功能;设备控制器则具有多达14个可编程端点,又可以被配置成双缓冲端点进一步提高吞吐量:而OTG控制器主要提供包括监控和转换功能在内的所有OTG控制。ISP1362内部构造如图1所示。      2 USB OTG主/从机系统设计   
[模拟电子]
基于<font color='red'>AVR单片机</font>的ISP1362OTG设计
基于AVR单片机设计的加热控制系统
1 引言 温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。文中介绍的文化测量及加热控制系统以 ATmega8型AVR系列单片机为核心部件,通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。实验证明该温控系统具有很高的可靠性和稳定性。 2 系统结构及控制算法 2.1系统总体结构 温度测量及加热系统控制的总体结构如图1所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、与上位机串行通信和系统核心ATmega8型单片机等。 温度采集电路以模拟电压形式将现场温度传至单片机。
[单片机]
基于<font color='red'>AVR单片机</font>设计的加热控制系统
PIC单片机的抗干扰能力强还是AVR单片机的强
简介:单片机的抗干扰性能历来为大家所重视,现在市面上的单片机就我所接触过的,就有十家左右了,韩国的三星和现代;日本的三菱,日立,东芝,富士通,NEC;台湾的EMC,松汉,麦肯特,合泰;美国的摩托罗拉,国半的cop8系列,microchip系列,TI的msp430系列,AVR系列,51系列,欧洲意法半导体的ST系列。。。。。。 这些单片机的抗干扰性能大多数鄙人亲自测试过,所用机器是上海三基出的两种高频脉冲干扰仪,一种是欧洲采用的标准,一种是日本采用的标准;日本的标准歉咂德龀辶⒊觯龀蹇矶却?0ns到250ns可调,欧洲采用的标准是脉冲间歇(间歇时间和发出时间可调)发出,脉宽也是从50ns到250ns可调;我们国家采用的是欧洲
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved