PIC单片机硬件死锁问题

发布者:psi33最新更新时间:2013-03-07 来源: 21ic 关键字:PIC单片机  硬件死锁  工控电路 手机看文章 扫描二维码
随时随地手机看文章

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

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 仿真器厂,Microchip 当时还隶属于 通用电子厂的子公司 -- 高雄电子厂,我当时也买一部仿真器,约人民币壹万五千元,16C5x 当年为最省电的OTP、QTP 单片机,价格又比其它的单片机便宜,只是它很容易受干扰死机,很多大厂不敢使用它,pic 我学了几个月后,有一天,有位朋友要我 兼差 帮他们公司设计汽车防盗器,当时市场上的汽车防盗器都还用 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 晶片内部有无修改 就 不得而知。

问题找出之后,赶紧通知 '汽车防盗器制造公司',修改了硬件电路,顺利的将 PIC 控制的 '微电脑汽车防盗器'上市,这也就是 台湾 第一部由 CPU 控制的 汽车防盗器 (这是我朋友所说的),之后,其他公司也深受压力,赶紧跟于后面,使出各种方法 陆续的推出 '微电脑汽车防盗器',而我以后所做的 PIC 控制电路,也就不曾有过 ‘硬件死锁’。

结尾 给大家一个建议,一般书本上的电路图及程序,有很多错误,只让你去参考,不能太过于信任,要多参考几样,不要原版照抄,否则出问题 也无法解决。

关键字:PIC单片机  硬件死锁  工控电路 引用地址:PIC单片机硬件死锁问题

上一篇:基于PIC单片机的教室照明系统节能控制器设计
下一篇:如何实现对PIC芯片ROM中的程序地址的精确定位?

推荐阅读最新更新时间:2024-03-16 13:19

Pic单片机控制8路MG995舵机(servo motor)的实现方法
一个PIC16F877A单片机有1个16位定时器TIMER1,我们用来控制8个舵机(即顺序脉冲输出),这样一个单片机就可以控制8个舵机。用8个IO口来控制舵机,舵机控制的信号周期为20mS,而正脉冲最大只有2.5mS,这样有17.5mS是空的。可以采用这种方法:在RD0口输出一个0.5~2.5mS的脉冲,控制一号舵机。完成后,用端口RD1口输出另外一个脉冲,控制2号舵机,就这样下去.....在一号舵机需要第二个脉冲之前,可以输出 20/2.5=8个脉冲,可以用来控制8个舵机,当然,需要用8个IO口。但是一般来说不可能正好有8个2.5mS的脉冲来填满20mS,这样就需要对输出脉冲的总宽度进行累加补偿,然后再用低电平填满20mS中剩下
[单片机]
用<font color='red'>Pic单片机</font>控制8路MG995舵机(servo motor)的实现方法
PIC单片机驱动LCD模块的设计
偏置电压是通过使用外部梯形电阻网络(电路见下图)而产生。因为梯形电阻网络连接在VDD和Vss之间,所以会有电流通过梯形电阻网络,电流大小与电阻成反比。也就是说,电阻越大,通过梯形电阻网络的电流就越小。如果使用10kΩ电阻,且VDD=5V,则梯形电阻网络将不断消耗166μA的电流。这对于一些使用电池供电的应用来说是很大的电流。 如何最大程度增大电阻,而又不会对显示质量产生负面影响?一些基本的电路分析可以帮助确定梯形网络中电阻增大的程度。 LCD模块实际上就是一个模拟多路开关,它交替地将LCD电压连接到各个段和公共引脚(段电极和公共电极交叉于每一个LCD像素点)。LCD像素可用电容进行模拟。梯形电阻网络中的每个分接点可以用戴维
[单片机]
<font color='red'>PIC单片机</font>驱动LCD模块的设计
PIC单片机硬件死锁问题
使用 PIC 单片机 去设计工控电路,最头痛的问题,就是 PIC 单片机在受干扰后经常硬件死锁,大部份人归咎于 “CMOS的可控硅效应” 因而产生死锁现象,一般都认为 ‘死锁后硬件复位都是无效的.只有断电。’ 但是一个成熟的商品,那须要你去断电呢? 就好像一台电冰箱,压缩机一启动,产生干扰, CPU 受干扰 因而 ‘硬件死锁’,死机在那儿,假如发现了,可以马上拔掉电源插头,隔几秒再插回,如此的动作 可以接受吗? 假如死机时没发现,死机几十天,你猜它会如何呢? -- 应该是 供给 CPU 电源的稳压 IC 烧毁了。 PIC 单片机为什么会硬件死锁,PIC 单片机在受干扰后经常硬件死锁,那么 PIC 要‘看门狗’ 有何用,有没有人深
[单片机]
PIC单片机编程 (点灯程序)
IO口控制 方向寄存器 TRISA~TRISAE 比如 TRISB=0x00; // 1为输入,0为输出,这样就把portB端口全部设为输出 数据寄存器 PORTA~PORTE 比如 PORTB=0x01; // 1为置高,0为置低,这样就把portB1口置高,其它portB口置低 例:点灯程序 #include pic.h __CONFIG (0x3B31);// pic单片机需要进行寄存器配置,详见手册 void main() { TRISD=0xfe; // 把RD1端口设为输出 PORTD=0x01; // 把RD1端口置高 //RD1=1;
[单片机]
PIC单片机中的bank和PC问题
简介:PIC单片机的bank和PC的问题往往在我们进行查表时和BANK设置时很容易出错。下面小编就大家来着重来介绍下面这俩点。希望能对大家有所帮助。 1、 BANK设置错误: 先来看一段程序: include PORTDB EQU 20H …… START movlw b‘11110000’ movwf PORTDB clrf TRISD MAIN bcf STATUS,C rlf PORTDB,1 btfsc STATUS,C bsf PORTDB,0 movf PORTDB,W movwf PORTD call DELAY goto MAIN …… 上面的是一个将D口的发光二极管循环点亮的小程序,实际运行发现并不能达到点亮
[单片机]
PIC单片机在ICD1上做LED灯的循环闪烁程序
;************************************************* ;* FLASH.ASM * ;************************************************* ;************************************************* ;* 本程序是一个LED灯的循环闪烁程序,用INT键来切换* ;* 闪烁模式 * ;************************************************* include p16f877.inc ;*---- MODESEL equ 20h MODESELB equ 21h
[单片机]
PIC单片机的多路AD切换程序设计
pic单片机是最重要的单片机种类之一,对于pic单片机,小编曾带来诸多介绍,如pic单片机的优势、pic单片机选型等。而在本文中,小编将为大家介绍两种pic单片机程序:一是pic单片机多路ad切换程序,二是pic单片机循环程序。 一、pic单片机简介 pic单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型
[单片机]
<font color='red'>PIC单片机</font>的多路AD切换程序设计
PIC单片机的配置位
一.配置字 PIC单片机的配置字可以用__CONFIG命令来定义: # include __CONFIG(x) 其中x是配置字,头文件中定义了相应的配置说明符,如: __CONFIG(WDTDIS & XT & UNPROTECT); 这将关闭看门狗,设置XT振方式,程序不加密。注意:不同的配置符间用'&'相联,未定义的部分保留未编程状态。详细的情况请参考头文件及PIC数据手册 二.ID 位置 有些PIC单片机在程序空间外还有ID空间,可用下面的方法来定义: # include __IDLOC(x) 其中x是ID标示,如: __IDLOC(15F0); 将ID的四个单元定义为:1, 5, 15, 0. ID
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved