PIC的硬件死锁

发布者:qiuxubiao最新更新时间:2020-02-14 来源: eefocus关键字: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的硬件死锁

上一篇:使用带A/D的PIC芯片时,怎样才能提高A/D转换的精度?
下一篇:基于RF技术的机械数码一体化防盗锁设计

推荐阅读最新更新时间:2024-11-12 16:30

PIC16F877A单片机 I2C模块 24CXXX存储器实现路径记忆
利用24CXXX系列E2PRAM存储器实现机器人的路径记忆。 首先,利用PIC16F877A单片机将机器人的路径采集转换成数据,单片机进行处理。但是,由于单片机RAM太小不能够存储大量的数据。因此,这里用24CXXX系列的存储器存储大量的数据,单片机实现的是对数据的采集和处理。 此过程用的是PIC16F877A单片机的I2C协议。 具体I2C使用如下: 1.写过程 (1)上电后等待一个延时(1ms)。 (2)器件寻址,给一个起始信号(SCL为高电平时SDA给一个下降沿)。发送从器件地址,高5位为10110,然后根据A
[单片机]
PIC16F877A-UART
#include pic16f877.h #define unchar unsigned char #define uint unsigned intunchar RC_label;//标志位起始位为1结束位为0 unchar caiji_label;//采集帧格式标志位正确为1错误为0 unchar data RC ;//存储接收到的数据 unchar data TX1 ;//存储自身参数 unchar data TX2 ;//存储出错指示ERROR int RC_buff;// int i=0,j=0,k=0;// //*****串口初始化********** void initRS232() { //设置TXSTA
[单片机]
pic单片机计数
1 #include pic.h //用的是PICC编译器 2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); 3 //PIC单片机都需要配置该位,HS是外部晶振模式 4 // 使能PROTECT保护程序存储器 5 //BOREN使能掉电保护 6 7 //WDTDIS关闭看门狗 8 void display(int pulse_amount); 9 void
[单片机]
如何利用频谱分析仪测量电磁干扰
  电磁干扰是人们早就发现的电磁现象,它几乎和电磁效应的现象同时被发现,可以说电磁干扰一直 电子 产品设计中的难题之一。要想解决电磁干扰就需要从根本上了解电磁干扰幅度和发生源。本文要介绍如何利用频谱分析仪测量电磁干扰。   谈到测量电信号,电气工程师首先想到可能就是示波器。示波器是一种将电压幅度随时间变化规律显示出来仪器,它相当于电气工程师眼睛,使你能够看到线路中电流和电压变化规律,从而掌握电路工作状态。但是示波器并不是电磁干扰测量与诊断理想工具。这是因为:   A.所有电磁兼容标准中电磁干扰极限值都是在频域中定义,而示波器显示出时域波形。因此测试得到结果无法直接与标准比较。为了将测试结果与标准相比较,必须将时域波形变换为频域频谱
[测试测量]
如何利用频谱分析仪测量电磁<font color='red'>干扰</font>
PIC32MX795F512L BootLoader的linker script文档移植过程
本人参照官方资料,做的学习笔记,有理解不对的地方请大神指出。 IDE:MPLAB X IDE v5.35 编译器 MPLAB C32 v2.02 参考材料:PIC32 Bootloader (AN1388)与MPLAB Assembler, Linker and Utilities for PIC32 MCUs User’s Guide(51833A) 链接如下: PIC32 Bootloader (AN1388) MPLAB Assembler, Linker and Utilities for PIC32 MCUs User’s Guide(51833A) 1.在工程目录下,新建.txt文本,然后改后缀为* .ld添加到工
[单片机]
<font color='red'>PIC</font>32MX795F512L BootLoader的linker script文档移植过程
PIC单片机的浮点数及其与十进制数之间的相互转换
在我们设计的仪表中采用PIC系列单片机,碰到了浮点数的运算问题,查阅其有关资料发现,其浮点数的格式及其与十进制数之间的转换,与我们常用的MCS-51单片机所提供的三字节、四字节浮点数完全不同,本文将说明其浮点数的格式及其与十进制数之间的转换和程序设计步骤。 1 浮点数的格式 Microchip公司单片机所采用的浮点数格式是IEEE-754标准的变异型。32位浮点数格式为: 其中:×表示一位二进制数0或1;eb 为指数的偏差;S为浮点数的符号位,S=0为正数,S=1为负数;小数点“·”在符号位S的右边;BY0 BY1 BY2为尾数的小数部分。 应特别注意: ⑴ 浮点数隐含其整数部分为1。 ⑵ 十进制数0 的浮点数
[单片机]
PIC单片机程序设计方法和的基本格式
为了快速掌握P IC 单片机 源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84?INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。   TITLE“This is……”;程序标题   ;程序说明   LIST P=16F84,F=1NHX8M   ;   include   -config_RC_Qsc &_WDT_0FF…   ;资源定义和变量定义   STATUS EQU 03   FSR
[单片机]
PIC里printf的使用
#include stdio.h void SerialInit(void) { TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1 RCSTA=0x80; SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25 } //printf函数重定向 void putch(u8 c) { TXREG = c; while(TRMT==0); } void main() { SerialInit(); printf( \n***** Hello,world1! *****\n\n ); while(1) { } } 这个pri
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved