大家好我是小火,想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。在单片机百花齐放的年代,玩pic单片机的朋友也是非常多的。在使用pic单片机的过程中,会发现各种各样的问题,这些问题虽然在单片机中都是不可避免的,但是谁都不想遇到这些都疼的问题。下面我分享一下我遇到的问题,希望可以帮助到大家。
我们用PIC单片机去进行项目开发时,最不想遇到的问题就是PIC单片机经常是遇到扰后硬件就会进入到死锁状态,很多人觉得是因为“CMOS的可控硅效应” 的原因才导致了死锁现象,常规操作都是认为“死锁后硬件复位都是无效的,只有断电”。如果家里使用的电器经常收到干扰, CPU 受干扰因而‘硬件死锁’,死机在那儿,需要你去拔掉电源插头,隔几秒再插回去,你一天时间光光招呼家里那些电器就消耗完了。我想你会把这些家电都扔掉,谁都忍受不了这种垃圾家电。
我们要去解决这个问题就要了解为什么会硬件死锁,通常的情况下PIC单片机在受到某些干扰后就会出现硬件死锁,那么PIC中‘看门狗’有何用,有没有人深入去探讨其原因,在各单片机论坛的观点也是各有不同,但是大部分人还是觉得“CMOS的可控硅效应”而产生死锁现象, 我个人的猜想观点,有可能与 “CMOS的可控硅效应”无关,但太多的专业人士认为是“CMOS的可控硅效应”所引起的,带着我的猜想去探寻PIC ‘死锁现象’的经过提供大家参考。
很多年前PIC16C5x刚出产一两年,(PICxxxx 原先只有165x,属于NMOS结构,大量用于通用-GI的选台器、有线电视解锁器,后来改为CMOS结构,更名为16C5x),当时只有 16C54、55、56、57 四个型号,仿真器只有顶尖公司制造的 16C5x DOS版仿真器(第一代),它也是 Microchip 第一个OEM仿真器厂。16C5x 当年为最省电的OTP、QTP 单片机,价格又比其它的单片机便宜,但是因为它受到干扰容易死机,导致很多公司对他敬而远之。
我记得以前我们公司设计汽车防盗系统,当时市面上大多数的汽车防盗器都还用CD40xx的逻辑电路去实现的,每个时控需要配置一组RC电路,电路板上十几个芯片,最少都有7~8个VR,调整时非常复杂,当时我就以一个16C55+一个ULN2003+一个解码IC (当时技术未成熟,还没用PIC程序解码,后期的已将解码IC省略),一共三个IC就解决,至于电路方面有些部分是参考书上的的电路移植过来,样品出来后,当时合作方就提出了很多疑问,电路居然如此简单,同时间内有4、5个‘计时器’在计时,又要做那么多的I/O侦测工作,时控、 性能、稳定性全都打上了问号。总而言之, CPU所设计的电路,对于功能-绝对是比逻辑电路所设计的好太多了,时控的准确性-我为它保证所有的时控误差在1%之内, 至于稳定性—-当时的样品时常当机、死机,CPU 发烫,那就有些抠脚了。
我当时也是非常想解决死锁这个问题,可以说是找遍能找资料,但是还是没有什么收获,在PIC的书上都没有看到类似讯息,只好自己多去实验看看能不能总结一下,我花了几天的时间,模拟了各种状况,做了各式各样的实验,制造各种干扰,用示波器测量各点所发生的异常波形。
其中一个简单的实验,(/MCLR 的接脚上,接一个提升电阻至 V+,接一个 0.1uf至地,接一个按键开关至地),让我得到一个我所需要的答案,实验时我多次的按按键开关,应该只是重置而已,但很容易进入所谓的‘硬件死锁’,连续测试,都会重覆发生,机率非常高,最后得到一个答案,PIC晶片的MCLR硬件设计有问题,与其他I/O脚无关联,不是 I/O 脚受干扰, 而是/MCLR 在重置或受干扰时,/MCLR 脚会产生一个振荡信号,当/MCLR 脚的外部接有电容时,它就永在发振,而PIC晶片内部某种硬件原因,导致于VDD与VSS之间产生很大的电流,所以VDD与VSS像短路一样,CPU因而发烫,当把电容移开后, CPU就重新工作,耗电流也就恢复正常了。
本期先分享到这里,想要学习单片机编程的同学可以持续关注小火,回复“小火”,与我们一起成长,喜欢的可以点个赞关注我们!
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com