您的位置:控制工程论坛网论坛 » 嵌入式系统 » 微控制器的内嵌抗干扰软件

wilton_gao

wilton_gao   |   当前状态:离线

总积分:123  2024年可用积分:0

注册时间: 2008-01-16

最后登录时间: 2009-09-29

空间 发短消息加为好友

微控制器的内嵌抗干扰软件

wilton_gao  发表于 2008/12/6 16:49:32      743 查看 0 回复  [上一主题]  [下一主题]

手机阅读

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

1.刷新端口引脚(Refreshing port pins):抗干扰软件最简单的一个例子就是可以不断地更新I/O端口和一些重要的寄存器。在大多数微控制器的应用中,软件将会执行一个有规律的主循环。由于微控制器的I/O端口通常靠近连接焊点(bond pads),而这些焊点通常是位于芯片的边沿。当一个确定振幅的噪声施加到微控制器时,噪声将会从芯片的边沿向内传入硅晶体中。这意味着芯片边沿的逻辑电路最容易被外部噪声源破坏,输入/输出电路就属于这种类型。因此有规律的更新数据寄存器和数据说明寄存器,就可以把这种故障的威胁降低。

2.检测输入脚(Polling inputs):另一个方法就是采用多次读输入脚数据,且取平均值作为该脚的正确数据方式。其典型的应用就是用软件每隔10ms读一次键盘,以保证真实的键入发生。这种表决式做法被称作反弹跳保护。作为一种高频率检测某个端脚的Motorola 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也可用其它函数来替代,以填充那些未用的区域。

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

1楼 0 0 回复