历史上的今天
返回首页

历史上的今天

今天是:2024年12月12日(星期四)

正在发生

2019年12月12日 | 如何解决PIC单片机硬件死锁的问题

2019-12-12 来源:elecfans

1、频繁插拔电时,PIC单片机容易死机。用一个10K电阻并在LM7805的5V输出端到地。


2、单片机的复位端的电容不能太大。


使用PIC单片机去设计工控电路,最头痛的问题,就是 PIC 单片机在受干扰后经常硬件死锁,大部份人归咎于“CMOS的可控硅效应” 因而产生死锁现象,一般都认为“死锁后硬件复位都是无效的,只有断电”。但是一个成熟的商品,那须要你去断电呢? 就好像一台电冰箱,压缩机一启动,产生干扰, CPU 受干扰因而‘硬件死锁’,死机在那儿,假如发现了,可以马上拔掉电源插头,隔几秒再插回,如此的动作可以接受吗? 假如死机时没发现,死机几十天,你猜它会如何呢? 应该是供给CPU电源的稳压IC烧毁了。

如何解决PIC单片机硬件死锁的问题

PIC单片机为什么会硬件死锁,PIC单片机在受干扰后经常硬件死锁,那么PIC要‘看门狗’有何用,有没有人深入去探讨其原因,在各 PIC 单片机论坛也提得很多,各有各的观点,总具体的原因不外是“CMOS的可控硅效应”而产生死锁现象, 依我各人的观点,应与 “CMOS的可控硅效应”无关,但很多大虾皆认为是“CMOS的可控硅效应”所引起的,所以一直以来我也不方便提出,说不定是我的观点错误,提出来反而误了大家,但至今,针对PIC 单片机产生死锁现象,都还没有详细的原因说明及对应之道,在别的PIC 单片机论坛也还在提此问题,我就将本人找寻PIC ‘死锁现象’的经过提供大家参考。


许久年前,PIC16C5x刚出产一两年,(PICxxxx 原先只有165x,属于NMOS结构,大量用于通用-GI的选台器、有线电视解锁器,后来改为CMOS结构,更名为16C5x),当时只有 16C54、55、56、57 四个型号,仿真器只有顶尖公司制造的 16C5x DOS版仿真器(第一代),它也是 Microchip 第一个OEM仿真器厂。16C5x 当年为最省电的OTP、QTP 单片机,价格又比其它的单片机便宜,只是它很容易受干扰死机,很多大厂不敢使用它。有一天,有位朋友要我兼差帮他们公司设计汽车防盗器,当时市场上的汽车防盗器都还用CD40xx的逻辑电路去设计,各个时控都须一组RC电路,电路板上十几个IC(加上遥控解码IC),至少有7~8个VR,调整时非常复杂,当时我就以一个16C55+一个ULN2003+一个解码IC (当时技术未成熟,还没用PIC程序解码,后期的已将解码IC省略),总计三个IC就解决,电路方面有某些是依书本上的电路移植过来(重置电路也由一本 PIC 应用的书本移植过来),样品出来后,当时对方存着很多疑问,电路怎么这样简单,同时间内有4、5个‘计时器’在计时,又要做那么多的I/O侦测工作,时控能准确吗? 性能如何呢? 稳定性? 。..。..。 总体而言, CPU所设计的电路, 对于功能-绝对是比逻辑电路所设计的好太多了,时控的准确性-我为它保证所有的时控误差在1%之内, 至于稳定性----当时的样品时常当机、死机,CPU 发烫,也就是大家所谈的PIC的硬件死锁。


为了此问题(大家最怕的问题),找遍所有的资料,都毫无所获,在PIC的书上都没有看到类似讯息,只好自己单打独斗的去奋斗、去找原因。我花了几天的时间,模拟了各种状况,做了各式各样的实验,制造各种干扰,用示波器测量各点所发生的异常波形。


其中一个简单的实验,(/MCLR 的接脚上,接一个提升电阻至 V+,接一个 0.1uf至地,接一个按键开关至地),让我得到一个我所需要的答案,实验时我多次的按按键开关,应该只是重置而已,但很容易进入所谓的‘硬件死锁’,连续测试,都会重覆发生,机率非常高,最后得到一个答案,PIC晶片的MCLR硬件设计有问题,与其他I/O脚无关联,不是 I/O 脚受干扰, 而是/MCLR 在重置或受干扰时,/MCLR 脚会产生一个振荡信号,当/MCLR 脚的外部接有电容时,它就永在发振,而PIC晶片内部某种硬件原因,导致于VDD与VSS之间产生很大的电流,所以VDD与VSS像短路一样,CPU因而发烫,当把电容移开后, CPU就重新工作,耗电流也就恢复正常了,所以我就认为PIC它不是硬件死锁 ,它没CMOS的可控硅效应,可能是大家还没找出原因,而怀疑是PIC内部CMOS的可控硅效应。而此问题解决方式,我当时也反应给Microchip公司反应,之后Microchip晶片内部有无修改就不得而知。

推荐阅读

史海拾趣

Feller US公司的发展小趣事

在电动汽车领域,技术创新是企业生存和发展的关键。菲斯克一直致力于研发更加先进、更加环保的电动汽车技术。经过多年的努力,公司终于在某项关键技术上取得了重大突破。这一突破不仅提升了电动汽车的性能和续航里程,还为公司赢得了市场的广泛认可。菲斯克凭借这一技术优势,成功推出了一系列备受好评的电动汽车产品,进一步巩固了其在市场中的地位。

Etron公司的发展小趣事

1991年,台湾的电子行业正蓬勃发展,钰创科技(Etron)在这一时期应运而生,创始人凭借对市场敏锐的洞察力,决定专注于利基型缓冲记忆体产品与系统晶片的设计与生产。初创时期,公司面临着技术、资金和市场等多重挑战。然而,钰创科技凭借其团队的技术实力和创新精神,成功开发出了一系列具有竞争力的产品,逐渐在市场上崭露头角。

创世(CS)公司的发展小趣事

作为一家有社会责任感的企业,创世公司始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,创世公司还积极参与社会公益活动,为社会和环境贡献自己的力量。这种对社会责任的关注和担当使得创世公司在电子行业中树立了良好的形象。

Gaomi Xinghe Electronics公司的发展小趣事

背景:随着中国经济的快速发展和消费者对电子产品需求的不断增加,Galaxy公司敏锐地捕捉到这一市场机遇。

行动:在2003年初,Galaxy以缜密的市场调研为基础,全力部署进入大陆市场。同年6月,公司推出了以“影驰”命名的Geforce家族系列产品,迅速吸引了众多游戏发烧友和电子产品爱好者的关注。随后,公司又在多个城市设立了销售和服务网点,为消费者提供更加便捷的产品体验和服务。

成果:经过多年的深耕细作,Galaxy在大陆市场取得了显著成绩,品牌影响力不断增强,市场份额稳步提升。

申风(everanalog)公司的发展小趣事

在申风(everanalog)公司的发展过程中,技术突破和产品创新一直是其核心竞争力。公司不断投入研发资源,致力于开发出具有自主知识产权的集成电路产品。其中,多通道整合型电源管理芯片的成功研发,不仅填补了国内市场的空白,也赢得了客户的广泛认可。这些技术突破和产品创新为公司的快速发展奠定了坚实的基础。

Excelsys公司的发展小趣事

品质是Excelsys公司的生命线。公司始终坚持严格的品质控制标准,从原材料采购到生产制造的每一个环节,都经过严格的质量检测。这种对品质的执着追求,让Excelsys的产品在市场上赢得了良好的口碑。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持,进一步提升了品牌的信誉度。

问答坊 | AI 解惑

DSP和FPGA在汽车电子中的广泛应用

1 引言   20世纪末,全球范围内兴起的信息革命浪潮,为汽车工业的突破性发展提供了千载难逢的机遇,信息技术的广泛应用是解决汽车带来的诸如交通拥挤、交通安全、环境污染、能源枯竭等问题的最佳途径。同时,随着汽车电子技术的发展,电子组件 ...…

查看全部问答>

毕业设计之97电子设计大赛直流稳压电源设计

本帖最后由 paulhyde 于 2014-9-15 03:54 编辑 请各位好心的师兄师姐们帮帮小妹了 在此表示不甚感激 谢谢  …

查看全部问答>

呵呵,那位坛友手中有多余一套LM3S8962开发板,或者闲着不用的,砸个过来

坛友们,您们谁有多余的或者不用的,有偿转让一下呵呵,本人近期有时间想认真学习一下,谢谢啦嘿嘿 本人的QQ是282574314,嘿嘿或者想学STM32的互换一下。…

查看全部问答>

vxworks6.6

有谁使用过了vxworks6.6及其开发workbench的,一起来分享啊。 我先自己说下自己的使用后的感受吧,vxworks6.6的系统启动代码和5.5区别还是很大,而对与新的平台的使用我用的也不是很爽,之中遇到了很多的问题。 哎~ 又要开始一个新的痛苦的学习过 ...…

查看全部问答>

【再次求助】2440 睡眠唤醒后串口输出乱码、usb不能用

如题。搞了好久也没解决。感觉是唤醒后要重新初始化下。串口跟USB的有好多源码。不知道从哪儿下手。望高手们指点一下!!!…

查看全部问答>

51开发时,关于AD转换芯片7135的转换结果的问题

用51板做东西的时候,AD转换芯片用的是ICL7135(双积分AD转换芯片)。我看见一些资料上面写着 用计数器对积分阶段进行计数,最后得到的计数减去1001就是AD的转换结果。     我有一点不明白:计数器的结果-1001就直接是AD 转换的数字结果 ...…

查看全部问答>

谈谈你的MSP430是如何入门的

咱们版块上经常有新人进来,常常会有想接触MSP430或者刚开始学习MSP430的朋友们问到如何学习MSP430.很多坛友们也会问,学习MSP430需要用哪一本书或者哪一本教材,该了解哪些知识,该做哪些实验....在我们自己刚起步学习MSP430的时候何尝不是有过相 ...…

查看全部问答>

关于组合反馈

复制代码reg [1:0] stat_action; always@(*) begin case({is_luma, blk_type}) {1\'b1, `DC_ONLY}: if(scan_done) stat_action = `FIFO_COMMIT; else stat_action = `FI ...…

查看全部问答>

ccs中使用sprintf编译总是出错是怎么回事

ccs中使用sprintf编译总是出错是怎么回事?…

查看全部问答>