×
嵌入式 > 嵌入式开发 > 详情

AVR笔记8:mega16再次锁死

发布时间:2020-08-31 发布时间:
|
今天尝试使用11.0592MHz外部晶振来设置USART的波特率,没想到理解错误,把熔丝位设置为外部RC振荡CKSEL=1000,下载完成后就知道出问题了,有了上次芯片锁死的经历,这次就也不慌了,知道问题出在哪儿,借来函数信号发射器,给13引脚的XTAL1加入1MHz的脉冲,成功的解锁了。然后再次上网查这方面的资料,发现因这样出错的还不少,使用外部晶振,得将熔丝位设置为CKSEL=1111,这样才是正确的。

虽然,在尝试的过程中出现了一些不大不小的错误,但是通过尝试进步了,学到东西了,还是比较兴奋地。不能因为害怕出现问题或者是犯错,而不敢去尝试,人总是在不断的尝试中成长起来的。

【转载】马潮老师

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。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC18FXX8单片机通用同步异步收发器的接口电路和C源代码