|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2008-4-20 00:01:16
|
显示全部楼层
AVR芯片锁死的解救是有条件的:
1.首先芯片本身没有坏(多余了)
2.如果RESET引脚被禁止作为I/O用了(如M48,M8等),那么通过通常的串行编程方式是不能解救的(这类芯片通常没有JTAG口).
3.如果SPI和JTAG都被禁止了,那么通过通常的串行编程方式是不能解救的.
4.2、3情况只能通过高压串行或高压并行方式解救,当然,通常就要把芯片从板上取下了。
我所讲的“解救”,主要是由于时钟熔丝配置错误造成的锁死,但SPI或JTAG是允许的。这种情况通常发生在系统设计使用内部RC振荡源的情况下,这时X1、X2为空脚,或作为I/O使用。但下载程序时出现问题,或熔丝配置错误,选择了非内部RC振荡源。由于此时AVR无系统时钟源,表现为锁死。
错误的出现可能为:
1。配置错误,这是人为的。
2。下载程序过程中,突然断电;下载接头接触不良;下载器本身不稳定。
3。错误的使用下载功能,如CVAVR中下载功能中的ALL(当熔丝位没有正确选择)。有些下载软件的功能不是非常完善,如使用CVAVR中下载功能的ALL项,不先读一次熔丝位就使用肯定出问题(通常会将SPI也禁止了)因为初始化的熔丝配置都不打勾。另外还有使用SPI下载,但还能让用户配置SPIEN等,也是不完善的。
如果仅仅是系统熔丝配置错误,那么可以通过尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号进行解救。如将一个5v/1M的脉冲波加在X1上(地当然要连通了),或用2个电容和一个晶体临时搭个外部电路加在X1、X2上。如果板上AVR的X1、X2没有使用还是比较方便的,如果X1、X2已经作为I/O使用连接了其它外部器件的话,就可能也行不通。因为外部连接的器件可能会影响叠加上的时钟信号的。
另外,叠加上的时钟信号频率不要太高,1M左右比较合适,因为通常叠加时引线比较长,频率高的话,振荡信号不稳定了。还必须注意将ISP下载的频率降低,因为AVR规定,ISP下载频率必须是系统时钟的1/2以下。因此,叠加1M的话,ISP的频率不能大于500K。 |
|