>
首页 » 业界动态 » 数据接收时检测时间是否溢出的方法

数据接收时检测时间是否溢出的方法

作者:  时间:2008-12-17 11:12  来源:

大家经常使用到用MCU来接收外部发送的波形,如接收方波、计算波形频率、红外接收等,如果数据出现长期的高电平或低电平,我们将作如何处理?现总结几种个人常用的方法,很可能此举是班门弄斧,各位见笑了。

  1)利用看门狗,在合适的程序处喂狗,一旦数据长期高或低则系统复位;此举简单易用,但很多产品要求当出现无数据时必须给出提示,也可能系统复位时要求显示一个“欢迎XX”之类的提示符,那么此时用WDT来做似乎就不是那么的好了。

  2)建立一个子函数来检测数据是否溢出,此举相对来说比较麻烦,因为接收一段数据其数据位可能是N位,也就是说我们得在这N个地方分别调用这个子函数来检测数据是否发生了时间溢出,不太实用。

  其一可用一个“循环超时”来做:

  其二可在定时中断里定义一个time_counter值,每次中断其值加1,当加到一定值时置TIME_OVER_FLAG标志为1,在主接收程序中检测TIME_OVER_FLAG是否为1,另外接收程序中一检测到有效数据时必须清time_counter的值;

  3)利用定时中断,溢出将出错处理函数段的pc压入堆栈,覆盖原有堆栈,定时中断函数一检测到时间溢出时,则将溢出将出错处理函数段的pc覆盖原有堆栈中的pc值.以下为本人在应用在Sonix上的一例:

  同样,此程序必须在主程序中一检测到有效数据则清TIME_COUNTER的值,此方法简单实用,经本人测试暂没发现问题,但可能其适用范围有限。因为进入中断时不知压了几层堆栈,也不知主程序跑到哪了?我用此法的场合是:主程序接收数据+中断数码管显示+蜂鸣器报警。

相关推荐

单片机应用系统的抗干扰技术

单片机  抗干扰  看门狗  2010-07-08

On Semi AMIS-30542微步进马达驱动方案

可配置电源监视器为多轨系统集成了可调看门狗和复位定时器

Linear LTC2978八路PMBus接口电源监视方案

ST L9952GXP 汽车电源管理方案

DSP TMS320F206复位问题研究

TMS320F206  看门狗  实时性  2009-02-14
在线研讨会
焦点