单片机系统的故障重现设计及实现
串口SIO效应
串口SIO效应实验主要是看串口通讯是否出错。要观察到这种故障现象,就必须让单片机运行串口通讯程序。由于51型单片机只有一个串口,而要使其进行通讯,最少需要两个串口,这就至少需要有两套单片机系统,这将使设备和实验复杂化。在认真研究串口工作原理后,终于找到了只用一个单片机模拟串口通讯的方案:把CPU的TXD和RXD短接,将TXD端发出的数据直接送入RXD进行接收,使单片机工作于自发自收状态,通过检查接收与发送的数据是否相等判断通讯是否正常。当然,仍需采用循环等待技术,使通讯循环进行,当运行正常时,在P1.1口产生脉冲信号,使红色LED亮。如果通汛出现异常,数码管将显示出错信息,并将LED熄灭。
定时器CTC效应
为使CTC工作失误故障重现,可在主程序中加入允许CTC中断的指令,使程序运行时,CTC一直在工作,等待电磁脉冲来干扰。 定时器采用CPU内部定时器0,工作方式为方式1。编写CTC0的中断子程序,与软件计数器R0配合,在P1.1口产生一个方波信号,驱动LED闪亮。主程序等待K按下指令,等待期间进行干扰实验。如果LED闪亮异常,表明CTC工作不正常。以下为定时器0的中断子程序:
实验结果
在设计该单片机系统以前,曾用一单片机最小应用系统做效应实验,结果只能观察到死机现象。而将该系统用于效应实验后,观察到了硬件损坏、A/D转换误差增大、内存数据改变、程序跳转、死机、CTC工作失误、串口通讯出错和程序存储器E2PROM内容被改写等多种故障现象。通过大量、反复地实验,测出了各种故障出现的阈值,分析了故障出现的原因。
图4是示波器记录下的串口RXD引脚上的正常信号和通讯出错时的干扰波形。图4表明,RXD上有很强的干扰信号,而且低电平被展宽了3~4倍。根据实验数据及串口工作原理,得出申行通讯出错的原因有两个:1.干扰使SIO电路工作失误,如串口控制寄存器SCON内容改变,发送或接收SBUF内容改变等,这些都可能引起接收数据和发送数据不符,从而使通讯出错;2.RXD线上的干扰信号使串行数据发生混乱,从而使接收数据出错。