51单片机烧写芯片无法工作的故障分析

控制/MCU

1799人已加入

描述

故障现象:

做了一个单片机温度监测系统,仿真机上一切正常,烧写芯片无法工作。

相关电路框图:

仿真机

用51做处理器,外围电路如图,一片双积分转换芯片ICL7135做AD,它的时钟需要125K,用51的ALE经过一片CD4024分频得到。1403提供基准源。另外,一片7660提供7135工作所需要的负压。

为了省电,把所有模拟电路部分电源用一个晶体管管理起来,由P1.0来控制。(上图为示意图,省去了电阻没画)P1.0为地的时候,模拟系统才上电

现在怪现象如下:

仿真机正常运行,烧写芯片后无反应。

仿真正常,说明外围芯片完全正常,电路也没有错误。

经过检查,晶体正常,复位可靠,EA高,程序堆栈都没有溢出,并排除其它一切低级错误的可能。

再编写一程序,

main()

{

while(1) {P1.1=0;}

}

P1.1和VCC间接有一发光管,开机无反应。

后来,发现更奇怪的现象:

拔除CD4024,MC1403,ICL7135,ICL7660中的任何一个,系统就可以正常运行!

百思不得其解,茶饭不思,郁闷了N久

更换全部芯片,如故。

更换ATMEL/PHILIPS/WINBOND的N款单片机,如故。

检查,排除电路故障的可能,

后来又发现,只要上电之前把P1.0对地短路,(也就是模拟部分强加电源),上电,系统正常运行。

但是,如果开机前P1.0不对地短路,上电一定不能运行,此后即使再把P1.0对地接,也不行。

顺这个思路,应该是和模拟部分有关……

又是郁闷N久,之后,无意间翻看CD4024内部图,茅塞顿开……

CD4024等TTL/CMOS逻辑芯片,为了防止静电或错误的IO电平,内部都有保护电路

仿真机

如图2,每个IO口都有如图的2个二极管,集成在芯片内部。保证IO口电压在-0.6~5.6V之间

复位的过程中,全部IO为高,P1.0和ALE当然也是高。这样模拟部分不上电。

那么,ALE的输出角就等效于通过一个二极管向这四块模拟芯片供电!!!(如图)

ALE的输出能力不强,自然,ALE就被拉低了。

在查看51的手册,ALE和/PROG脚是复用的!!

在复位过程中,ALE如果为低,芯片进入编程状态!!!

也就是说,我的系统在上电复位的过程中就进入了PROG编程模式,难怪一条语句都不能执行

那么,也很好解释为什么四个芯片中拔掉一个就能正常工作了,因为负载轻了,ALE可能还没有被拉到2.5V以下,所以正常复位进入程序。

解决的办法:ALE接2K的上拉,再通过47K电阻接到Cd4024上,上电,一切正常!

结论:单片机编程模式/ISP模式是通过用户很不容易出现的一个时序来启动的,在一些特殊应用时要小心避开这些非用户代码模式。

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

全部0条评论

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

×
20
完善资料,
赚取积分