微控制器的抗干扰软件编程方法

发布者:fuehrd努力的最新更新时间:2012-02-23 来源: 电子产品世界 关键字:微控制器  抗干扰  软件编程 手机看文章 扫描二维码
随时随地手机看文章

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

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

    但是,在控制器应用中,却可采用软件的方式来抑制外来干扰。本文给出了一些常用设计技巧和应用。

一、内嵌抗干扰软件

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

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

    2.检测输入脚(Polling inputs):另一个方法就是采用多次读输入脚数据,且取平均值作为该脚的正确数据方式。其典型的应用就是用软件每隔10ms读一次键盘,以保证真实的键入发生。这种表决式做法被称作反弹跳保护。作为一种高频率检测某个端脚的Motorola HC05代码的实例如图1所示。

[page]

    图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所示。

[page]

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

二、看门狗电路

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

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

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

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

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

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

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

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

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

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

关键字:微控制器  抗干扰  软件编程 引用地址:微控制器的抗干扰软件编程方法

上一篇:基于AT88RF256的RF射频研究
下一篇:驱动永磁无刷直流电机的嵌入式微控制器

推荐阅读最新更新时间:2024-03-16 12:53

PIC单片机与MCS-51系列单片机有哪些区别?
PIC单片机与MCS-51系列单片机的区别 应该说有三个主要特点: (1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。 (2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行
[单片机]
STM32单片机LCD240128搬货物Proteus仿真程序
单片机源程序如下: #include reg52.h #include SS.h //关卡的界面 #include SB.h //在此文件中定义了汉字编码,用点阵液晶字模提取软件 #define uchar unsigned char #define uint unsigned int sbit cd = P2^0; //=0,数据通道;=1,命令通道 sbit rd = P2^1; //=0,读选通有效 sbit wr = P2^2; //=0,写选通有效 sbit ce = P2^3; sbit md = P2^4; sbit rst= P2^5; uchar renh=6
[单片机]
STM32<font color='red'>单片机</font>LCD240128搬货物Proteus仿真程序
学51单片机-搞定矩阵键盘
矩阵按键貌似是学51单片机里面必备的一课,现在基本所有的51开发板都带这部分电路。因为它用8个IO口实现了16个按键的扫描检测,实现了IO口更充分的利用。 扫描矩阵按键的程序说简单也简单,说复杂也复杂。说它简单,是因为现在网络太发达了,随便搜索一下,都能找到可以直接用的源码。说它复杂,是因为如果不借助网络,全凭自己去摸索,确实要花一部分时间。 我当时是性子比较倔,只在网上看了矩阵按键的原理,没有看参考代码,完全凭借自己的理解,写了一段矩阵按键的扫描程序,花了三天时间才调试通。那三天,真的是折腾的死去活来,但是当程序调好的时候,真的感觉自己还是很拉风的。 这里,不是让大家学我那样去闭门造车,因为太
[单片机]
学51<font color='red'>单片机</font>-搞定矩阵键盘
51单片机实现嵌入式实时操作系统的温控器设计
目前,8位单片机在测控领域和智能化电子产品应用中仍占有重要地位.而应用嵌入式实时操作系统(ERTOS)会对8位单片机的软件开发带来极大方便。在此简要介绍嵌入式实时操作系统及其在程序设计中的优越性,重点介绍了适合于小RAM单片机的嵌入式实时操作系统Small RTOS51,以及基于8位单片机的硬件和软件的设计方法和过程。 1 嵌入式实时操作系统Small RTOS51简介 嵌入式系统已成为当今的热门话题之一,从消费类电子产品到各种工业设备,嵌入式系统已渗透到日常生活的各个角落。对于嵌人式系统,一个重要的特征是实时性,即在确定的时间内完成规定的功能,并能对外部异步事件做出正确响应。确保系统的实时性,需要软硬件配合来完成,
[单片机]
51<font color='red'>单片机</font>实现嵌入式实时操作系统的温控器设计
单片机为控制核心的便携式数字存储示波器的设计
随着电子通信以及教学事业的发展,示波器的应用越来越广泛,它在教学中所起到的作用越来越重要,示波器可以测量信号的幅度,频率以及波形等等,但是高精度的示波器非常昂贵,对于非盈利事业的教学组织来说无疑不合适,所以提出了一种以单片机为控制核心的简易示波器设计方案。它由前向控制部分,数据采集和存储部分,51单片机控制部分以及按键和MS12864R显示部分组成。 1 简易数字示波器的工作原理以及总体框架 本设计硬件电路部分由单片机控制系统电路,前向输入调理电路,模数转换和存储电路,以及按键显示电路组成。其工作的基本思路就是以单片机为控制核心,让AD芯片完成数据的离散化,采集数据经过缓冲暂存于存储器里面,当波形显示时,单片机从存储器的读使能
[测试测量]
以<font color='red'>单片机</font>为控制核心的便携式数字存储示波器的设计
对话 TI Sitara™︎ MCU总经理 Mike Pienovi:使实时处理变得简单且实惠的产品
随着对电子系统边缘实时控制、智能和通信需求的不断增长,高性能 现在提供了一种简单且经济高效的解决方案。 从智能工厂到智能城市,我们日益自动化的世界要求产品具有更高的速度、智能和精度。例如,与人类协同工作的自动化移动机器人需要精确的来安全地在物体周围导航,并且需要更快的处理速度以进行纳秒级决策 – 这些协同工作的实现都需要相互之间的通信。 为电子系统添加高级边缘分析和高实时性响应即将变得更容易、更实惠。 Sitara™ MCU 总经理 ke enovi向我们介绍了智能联网系统需求下,影响微控制器发展的主要因素。 问:在您看来,哪些趋势对微控制器提出了新的要求? 基于我们与工程师和行业专家的探讨,无论在制造业、数
[机器人]
35-基于51单片机的脉搏测量仪(心率计)
具体实现功能 本系统由STC89C51/52单片机+LCD1602显示模块+5mm红外接收管+LM358运放电路+按键模块等构成。 具体功能: (1)手指放到红外对管中,2秒内读出心率; (2)LCD1602液晶显示当前的心率(心率/分钟); (3)按键可以设置报警的上下限心率,当测得的心率值超过报警值时发出报警。 设计背景 随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国内外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉、耳脉等测量仪各有其优缺点。指脉测量比较方便、简单,但因为手指上的
[单片机]
35-基于51<font color='red'>单片机</font>的脉搏测量仪(心率计)
51单片机开发板的主要功能 51单片机开发板能做什么
51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机开发板的主要功能以及能够实现的各种应用。 一、基本功能: 通用输入输出:51单片机开发板具有多个通用输入输出引脚,可以连接各种外部设备和传感器,实现数据的输入和输出。 时钟管理:开发板通常会集成时钟电路,包括晶振、时钟发生器等,可以提供稳定的时钟信号给单片机使用。 存储器管理:开发板通常会搭载闪存、EEPROM、SRAM等各种类型的存储器,用于存储程序代码和数据。 电源管理:开发板通常会提供多种电源供电方式,可以选择外部电源或者USB供电。 通信接口:如串口、SPI、I2C等,可以连接各种外部设备进行数据通信
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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