微控制器的抗干扰软件编程方法
字体放大 字体缩小 字体恢复 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色)
 

 

-------------------------------------------------------------------------

---- 微控制器越来越多地用于各种电子应用之中,例如自动化、工业控制和用户产
品市场中。随着金属氧化物半导体的硅晶体管几何尺寸的不断下降,系统设计中的
电磁兼容性(EMC)问题,成为采用小尺寸器件进行应用设计时必须考虑的主要问题。

---- 在嵌入式微控制器内部,对于内部产生的电磁发射,采用软件措施的效果并不
明显。因为发射主要是由于CPU中的内部时钟和噪声所引起,而且高速开关电流是由
微控制器中的多种不同的门所形成。如果芯片版面设计没有考虑电磁兼容性,那么
外部的PCB(印制电路板)将会大大的增强那些不必要的噪声信号。所以在很多设计
中,采用软件很难消除这种固有的电子发射影响。但是,在控制器应用中,抑制外
来干扰的效果却可采用软件的方式来加强。本文给出了探讨一些常用设计技巧和应
用的探讨。

---- 一、内嵌抗干扰软件

---- 在很多的应用中,用简单的抗干扰设计,就可以将一个微控制器的干扰抑制效
果大大提高。这种抗干扰设计的魅力就在于实现该设计的费用较低,还可以节省PCB
板上硬件成本。

---- 抗干扰设计的常用技巧如下:

---- 1.刷新端口引脚(Refreshing port pins):抗干扰软件最简单的一个例子就
是可以不断地更新I/O端口和一些重要的寄存器。在大多数微控制器的应用中,软件
将会执行一个有规律的主循环。由于微控制器的I/O端口通常位于靠近连接焊点
(bond pads),而这些焊点通常是位于芯片的边沿。当一个确定振幅的噪声施加到
微控制器时,噪声将会从芯片的边沿向内传入硅晶体中。这意味着芯片边沿的逻辑
电路最容易被外部噪声源所破坏,输入/输出电路就属于这种类型。因此有规律的
更新数据寄存器和数据说明寄存器,就可以把这种故障的威胁降低。 2.检测输入
脚(Polling inputs):另一个方法就是采用多次读输入脚数据,且取平均值作为
该脚的正确数据方式。其典型应用就是用软件每隔10ms读一次键盘,以保证真实的
键入发生。这种表决式做法被称作反弹跳保护。作为一种高频率检测某个端脚的
HC05代码的实例如图1所示。

---- 图1的程序可以很迅速的连续读出该端口,如果有3次读出结果相同,那么CPU
将以进位标志的状态作为读结果返回(这是HC05 CPU的BRSET和BRCLR的一个固有特
征)。这个程序的问题在于当输入引脚是处于很嘈杂的环境时,CPU将会按这个程序
持续很长时间,这在那些对时间要求较苛刻的应用中是不实际的。更好的一个程序
就是多次读出输入引脚,并使寄存器递增,如果结果小于某个数,那么就将它当作0;
如果大于某个数,就作为1。这个程序通常会在有限时间内退出,以保证不会妨碍到
该应用中所有其他的运行。

---- 3.标记通过(Token Passing):在一些重要的处理中,标记通过以确认任务
已进入受控方式而未失去控制。标记通过可以利用RAM里未用到的空间来完成。在
应用的一段特定时间间隔里,该软件将通过许多未用的RAM空间循环一个1。在任何
一个重要任务被执行之前,这种循环检查将会得出结果。如果检测通过,该任务将
会被执行。如果没通过,则说明微控制器是从未指定的跳转进入该任务,那么就跳
转去执行一个初始化程序。见图2。

---- 4.未使用的内存(Unused Memory):在大多数的应用中,程序的存储器总有一
些区域未使用。如果在一些事件中,程序计数器(Program Counter)被破坏且跳转
进入未用的存储空间,那么有些应该执行的控制就会作用。例如,在16K字节的程序
空间里存在未使用的500Byte的子块。如果我们用“SWI”指令填满这些未用空间,
那么任何指向未用地区的无效激励将会导致微控制器去读取SWI矢量,而该向量是被
编程跳转到程序中的已知的的起始位置。同样,在微控制器的应用中,SWI也可用其
它函数来替代,以填充那些未用的区域,其实例如图3所示。

---- 请注意:记录这些未用区域已被9D指令填满且由一个有条件的跳变(Jump)到
已知区域known_place。当这个微控制器运行至该已知区域时,它将会被强制跳转去
执行初始化程序。

---- 二、看门狗电路

---- 一个看门狗电路通常被描述成一块在有规律的时间间隔中进行更新的硬件,该
更新必须由微控制器或是使微控制器重新启动的电路来完成。一个外部的看门狗电
路是最好的,因为它不依赖微控制器,如果微控制器发生故障需要看门狗更新,则
该电路将给出reset信号使微控制器重新启动。一个看门狗通常由一个硬件定时器构
成,如果没有来自微控制器的更新或是报告信息,该定时器将会溢出。一个简单的
看门狗电路如图4。

---- 在加电的POR时延内,微控制器将保持在复位状态。时钟可以来自一个外部源
或是来自用于微控制器的晶振的一个脉冲。当该微控制器处于复位状态时,输入/输
出管脚(I/O pin)就成为输入而此时计数器也开始运作。如果Q是0,那么C1就会被
充电,而微控制器将会跳离复位状态。

---- 微控制器的首要任务是给出一个小脉冲来重启计数器到一个已知的时间溢出值,
微控制器上的I/O端口形成交流耦合,目的在于保证只有边沿触发才能重新触发计数
器。这样就保证了一个恒定的直流电平将不会有效作用于微控制器或看门狗。该微
控制器必须在Q跳为1之前发送一个小的脉冲,以保证微控制器不被复位(正常情况
下该操作至少需要两个微控制器的软件指令)。还有一个可供选择的方法就是微控
制器在晶片上具有内嵌看门狗电路。例如Motorola的MC68HC705C8就有它自身的看门
狗,由一个可编程计数器组成,该计数器大约在每32768时钟周期就要被刷新一次,
或是它将在内部产生一个的清零指令。

---- CM1,0位通常用来选择一个暂停周期(也就是CPU的时钟被215,217 ,219,
221所划分)。COPE位是“只写一次”的,而且一旦看门狗有效,就不会停止,只
有重启才能停止看门狗的运作。COPF位是通知用户的标志,它通知用户前一次的重
启是由于看门狗的时溢或是其它原因所引起。刷新看门狗的时序是在COP重启寄存器
(COPRR)上的两个写操作。即该序列是一个对COPRR进行$55写操作后紧跟$AA的写
操作。

---- 不是所有的微控制器都有看门狗电路的,但是在一些设计中,设计者能够用未
使用的中断来执行它自己的看门狗功能。举例来说,一个MC68HC05P1没有看门狗,
但是有一个16bit可自由运行的计时器。有3种可能的方式,使该计时器能够产生一
个中断。这3种方式是:

---- 1) 一个从FFFF向0000溢出的定时器。

---- 2) 一个输出比较,16bit寄存器和定时器的值的比较。

---- 3) 对TCAP 端口的上升或下降边沿的一个输入捕捉。

---- 如果此输出比较(Output Compare)中断不能被执行,则其将被当做假的看门
狗。在这种情况下,定时器将与“输出比较(output compare)”寄存器作个比较,
以检验系统是否都正常。如果系统运行正确,那么将执行一个中断返回。如果有不
正常情况,那么堆栈指针的复位和一个往初始化程序的跳转将会执行。该系统检验
可以是前述的“标志通过”程序。

---- 在一个程序里,“看门狗更新(watchdog updates)”最优选位置的选择不是
一个简单的事情,一般说来,是结束程序时的最后进程。通常用户需要测试软件流
程和所有的中断程序和子程序的时序,关键的和非关键的应用。在所有的程序中进
行看门狗刷新是最好的,但是由于微控制器有很长的程序和很多的芯片功能,因此
这样是很难做到的。如果可能的话,看门狗刷新程序不应该被放在中断或是子程序
中。原则上应该直接放入主程序中。要注意的是刷新速率不要太大,否则将使失控
状态恢复的几率下降。

日期:2005年06月15日   来源: 
相关文章:
·用超低功耗MSP430单片机设计数据采集系统 2005-06-27
·Atmega16在开关磁阻电机调速系统中的应用 2005-06-28
·火灾探测器受干扰的原因及改进方法 2005-07-02
·特殊构件的焊接技术 2005-10-18
·触摸屏的工作原理及典型应用 2005-11-25
·高质量C++/C编程指南---类的构造函数,析构函数,赋值 2005-12-13
·基于ATmega8的新型电动自行车调速控制系统设计 2005-12-20
·电子产品高温老化的原理以及一间智能温控老化室的应用 2006-01-05
·新近成功开发无霍尔传感器无刷电机控制器 2006-01-20
·归纳一下最近比较流行的电动自行车技术 2006-01-23
·电子工作台 --- workbench 电子仿真软件 2006-05-23
·液晶字模工具 ------ HZDotReader V3 2006-05-23
·51系列单片机仿真软件----伟福e6000w  2006-05-23
·无传感器无刷电机驱动控制器系统的优点 2006-06-10
·PIC单片机C语言编译器 --PICC 8.05 完整破解版 2006-07-09