ATmega16解锁
刚刚把以前锁死的两块Mega16给解开锁,之前自己也解了很多次就是没
解开。在网上看了一些解锁的方法,都是说在ISP下载功能被禁止时,可以用JTAG下载来改变熔丝位ISPEN=0,让Mega16恢复ISP下载功能。如果两种下载方式都被锁死的情况下,就只能用高压并行的方式来修改熔丝位。还有一种很简单的方法就是在Mega16的XTAL1和XTAL2引脚接上一个振荡信号,使单片机能处在工作状态,改变其熔丝位。
Mega16的熔丝位配置错和对单片机的某些误操作很容易使单片机不能正常工作。一种情况是在配置熔丝位时误将ISPEN或JTAGEN置为1(或没有在复选框中打钩),单片机的ISP和JTAG下载功能没有使能,使得单片机被锁死。还有一种情况是配置的时钟源熔丝位CKSEL3/0与单片机本身工作的时钟源
不相符,这也是单片机被锁死的原因。
我的两块Mega16都是由于时钟源选择错误导致被锁死,我也是今天刚注意到这个问题的。我将一块正常运行的51的XTAL2与Mega16的XTAL1连接,将51的XTAL1与Mega16的XTAL2连接,这样被锁死的Mega16就可以正常运行了。然后,先要在读取其熔丝位的配置,然后我把时钟源CKSEL3/0的
熔丝位改成内部RC振荡8MHZ(改成自己单片机适合的熔丝位即可),将改后的配置写入单片机。最后将与51连接的线断开,重新将下载器与电脑接上,就可以给M16下载程序了。
1.编程与状态说明
(1)在avr的器件手册中,使用已编程(programmed)和未编程
(unprogrammed)定义熔丝位的状态。未编程表示熔丝位状态为“1”(禁止);已编程表示熔丝位状态为“0”(允许)。
(2)avr的熔丝位可以多次编程,不是一次性的opt熔丝。
(3)熔丝位的配置可以通过并行方式、isp串行方式和jtag串行方式实现。
(4)avr芯片加密锁定后(lb2/lb1=1/0,0/0)不能通过任何方式读取芯片内部的flash和eeprom数据,但是熔丝位的状态仍然可以读取,只是不能修改配置。
(5)芯片擦除命令是将flash和eeprom中的数据清除,并同时将两位锁定位状态配置成无锁定的状态(lb2/lb1=1/1),但芯片擦除命令不改变其熔丝位的配置。
(6)下载编程的正确操作程序是:对芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。 (7)如果芯片被加密锁定后,发现熔丝位配置不对,则必须使用擦除命令,清楚芯片的数据,解除加密锁定,然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。
2.芯片加密锁定熔丝位
加密锁定位 加密锁定方式 1(出厂设置) 2 3 lb2 1 1 0 lb1 1 0 0 保护类型(用于芯片加密) 无任何编程加密锁定保护 禁止串/并行方式的再编程 禁止串/并行方式的再编程和校验 3.功能熔丝位
熔丝位名称 说明 出厂设置 wdton spien jtagen eesave boden bodlevel ocden 看门狗有软件控制 禁止isp串行编程 禁止jtag口 芯片擦除时同时擦除eeprom数据 禁止低电压检测功能 低电压检测门限电平为2.7v 禁止jtag口的在线调试功能 看门狗始终工作,软件只能调节溢出时间 允许isp串行编程 允许jtag口 芯片擦除时不擦除eeprom数据 允许低电压检测功能 低电压检测门限电平为4.0v 允许jtag口的在线调试功能 1 0 0 1 1 1 1 4.bootloader的熔丝位(1)上电启动地址选择
熔丝位名称 bootrst 芯片上电后从地址0x0000开始执行 说明 上电后从boot区开始执行 出厂设置 1 (2)bootloader区大小设置
bootsz1 0 0 1 1 bootsz0 0 1 0 1 boot区大小/字 1024 512 256 128 起始地址 0x1c00 0x1e00 0x1f00 0x1f80 出厂设置 00 5.有关系统时钟源的选择熔丝位(1)系统时钟选择
系统时钟源 外接石英/陶瓷晶体 外接低频晶体(32.768khz) 外接rc振荡器 使用可校准的内部rc振荡器 外部时钟 cksel[3:0] 1111~1010 1001 1000~0101 0100~0001(出厂设置0001,1mhz) 0 (2)使用外部晶体时的工作模式配置
熔丝位 ckopt cksel[3:0] 1 101 1 110 1 111 0 101~111 工作频率范围/mhz c1、c2容量/pf 0.4~0.9 注释(1) 0.9~3.0 12~22 3.0~8.0 12~22 >=1.0 12~22 适用晶体 陶瓷晶体 石英晶体 注释(1):对陶瓷晶体振荡所配的电容,请按照厂家说明使用; 注释(2):当ckopt=0时,振荡器的输出振幅较大,适用于干扰大的场合;反之,振荡器的输出振幅较小,可以降低功耗,对外电磁辐射也较小;
注释(3):ckopt默认状态为“1”。
熔丝位的解锁:avr单片机熔丝位如果操作失误,可能导致单片机假死,比如设定的晶振频率与实际晶振不匹配,一般来讲,由于晶振设置的错误可以通过更改实际的晶振或者使用有源晶振进行解锁,有源晶振按照工作电路接好以后,接入到单片机的外部时钟引脚,然后使用单片机isp设备打开熔丝位,更改单片机的时钟为内部1m或者其他内部时钟频率,就可以达到解锁的目的。
相关推荐: