为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机休眠-复位运行方式提高抗干扰能力

2011-07-28 7页 pdf 91KB 16阅读

用户头像

is_012527

暂无简介

举报
单片机休眠-复位运行方式提高抗干扰能力 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 单片机休眠-复位运行方式提高抗干扰能力 摘要:介绍一种用休眠-复位运行方式提高单片机抗干扰能力的方法;分析其适用范围,给出具体应用电路;结合实例,分析这 种运行方式下硬件和软件设计的特点。 关键词:单片机 复位/休眠抗干扰 引 言 ??随着微电子技术的飞速发展,单片机的性能迅速提高,在运算、逻辑控制、智能化方面显...
单片机休眠-复位运行方式提高抗干扰能力
Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 单片机休眠-复位运行方式提高抗干扰能力 摘要:介绍一种用休眠-复位运行方式提高单片机抗干扰能力的方法;分析其适用范围,给出具体应用电路;结合实例,分析这 种运行方式下硬件和软件的特点。 关键词:单片机 复位/休眠抗干扰 引 言 ??随着微电子技术的飞速发展,单片机的性能迅速提高,在运算、逻辑控制、智能化方面显示出非凡的优势,在很大程度上 取代了原来由数字逻辑电路、运算放大电路组成的检测、控制电路,应用非常广泛。但由于它存在着死机、程序跑飞等致命缺 陷,使它在许多重要场合的应用受到限制。在抗干扰方面的许多技术,比如设软件陷阱、加硬件看门狗电路等,可使这一问题 有较好的解决,但仍然存在问题:① 看门狗动作时,意味着已经出现了错误,且运行了一段时间,这在有些场合是不允许的; ② 有时程序出现死循环错误,但是刚好把看门狗控制环节包含进去,对于这样的错误采用看门狗无法识别;③ 在检测控制周 期比较长的系统中,单片机花大量时间等待外设,执行等待命令时同样会受到干扰。针对这些情况,我们在实践中尝试了主动 复位的办法,采用等间隔的脉冲或根据外部条件对单片机进行复位唤醒。每次复位后,单片机执行相应的程序,执行完任务后 及时进入休眠,等待下次复位。用此方法较好地解决了上述问题,并在农用变压器综合保护器实验中得到了较好的效果。下面 以 51系列单片机为例探讨具体原理与实现方法,复位信号为高电平。 1 原理与实现方法 1.1 无条件定时复位法 ??用定时器、专用时钟芯片或其它脉冲产生器,按照设定的间隔定时产生复位信号。这种方法特别适合监测仪。在实际运 行中,往往是用 A/D 转换器采样输入的模拟量,然后进行存储显示。这一过程很快,但为了读数稳定,每秒数据更新不过 1~2 次,CPU 的大量时间用于等待。如果让 CPU 执行完任务后直接进入休眠,然后由外界复位唤醒它去执行下一次操作,这就是 定时复位法。这样会使抗干扰能力大大增强,主要有 2点: ① 休眠时,程序停止运行,不会出现 PC指针紊乱引起的程序跑飞。 如果工作与休眠的时间比例为 1:9,也就是说,1s内有 0.1s的时间用来检测、送显示,有 0.9s的时间休眠,程序受干扰的概率 是全速运行时的 1/10,整体抗干扰能力提高了 10倍。 ② 由于每 1s无条件复位 1次,一旦某次工作期间出现死机,在下次复位 时肯定得以恢复。对于只是显示的仪表,某 1s偶然出现的读数错误对下一次测量并没有记忆,是可以承受的,属“一过性”错误。 这种定时复位相对于看门狗电路的优点,一是把等待时间改为休眠状态 ,缩短可能受干扰的时间;二是避免了恰好包含看门狗 控制环节的死循环。 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 1.2 外部条件复位法 ??有些输出或测量的启动是由外部控制的。如暖气热表,靠热水水轮旋转产生的脉冲计算热量,没有热水流动,就没有热量 输出,CPU只要保持原来数值即可,不需要计数。可以想象,停暖时热水水轮不转,CPU在春夏秋三季则无事可做;如果让其 休眠,而不是时刻检测有无水轮脉冲,抗干扰能力会大大增强。因此,只要把水轮脉冲与 CPU的复位联系起来,水轮每旋转 1 周,CPU复位 1次,热表就可以正常工作了,这就是外部条件复位法。类似的应用还有半电子式电度表,当机械度盘旋转 1周 时才进行 1个计数,用户不用电,CPU会一直休眠。这种方法的复位间隔不是固定的,而是根据外部条件确定的。在有些场合, 休眠的时间会很长,对提高抗干扰能力非常有效。 2 硬件实现要点 2.1 无条件定时复位 ??一般有 2种方法。 ① 使用定时器或专用时钟芯片复位。图 1为使用 555电路组成的定时电路;也可以使用 X1126之类的 时钟芯片,设置报警时间后用报警信号唤醒 CPU。这种方法适用于长间隔定时,还可以根据本次运算的结果,临时决定下一次 的报警唤醒时间,非常灵活方便。 ② 使用系统固有的信号作为定时复位脉冲。例如使用 50Hz工频电源整形后作复位,既省略 了定时器,同时又为检测电流信号的相位采集了相应的信号,如图 2所示。 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 2.2 外部条件复位 ??把外部条件脉冲整形后送到复位端子。对于上述水轮或电表度盘产生的脉冲,可以使用施密特触发器整形;对于记录最大 或最小值的仪器,可使用窗口比较器。为了实现调节的电子化,可以使用电子电位器,用单片机指令设定上下限。 2.3 复位周期与复位高电平时间 ??图 3中,复位信号在高电平 Tr期间,单片机处在复位状态,程序不运行,抗干扰能力最强;高电平过后,单片机开始执行 程序。也就是说,复位信号的低电平Td期间是可供程序执行的时间,这个时间要大于每次程序的执行周期。合理选择复位周期 和复位信号的高电平占空比非常重要。对于单纯显示仪表,复位周期决定数据刷新周期,低电平时间要大于检测、送显示的全 部时间;否则,会出现永远不能完整执行程序的错误。单片机在 Ts和Tr期间都能有效地抗干扰,但是最好还是把多余时间安 排在 Tr内。当程序执行时间较长,要求尽量缩短Tr时,可加入微分电路,如图 1中的 C30、R26、D9。 2.4 输出端子的处理 ??(1)复位期间的正脉冲 ??复位期间单片机的全部 I/O 口变成高电平。也就是说,正常输出为低的引脚,会按照复位周期出现宽度为Tr的正脉冲。这 个正脉冲会影响正常的输出,有 2个办法处理: ① 在端子上并联电容加以抑制,容量根据复位的 Tr时间确定。减小 Tr可以减 小并联电容。 ② 把外围电路设计成高电平无效。 ??(2)容 错 ??适当选取输出端并联电容的容量,可以实现容错控制。在某个复位周期,因干扰输出了错误电平。由于电容的保持作用, 在本周期内尚不能使输出变化到有效的电平;在下个周期,错误被纠正。因此,只要不是连续 2个周期出错,输出是可容错的。 当然,这种方法会使正常的输出变化滞后一个周期,才真正反映到输出端子。 2.5 上电检测与手动复位 ??有些系统在初上电时要做一些初始化操作。采用复位方式运行时,每次复位已经成为正常运行的开始条件,无法辨别是否 初上电。在某引脚对地接一个 1µF 的电容,复位后检测该引脚,如果是低电平就是初上电。如果给系统设立一个复位按钮,也 就是常见的手动复位,这个按钮不是连接在复位端,而是并联在上述引脚对地的电容两端。 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 摘要:介绍一种用休眠-复位运行方式提高单片机抗干扰能力的方法;分析其适用范围,给出具体应用电路;结合实例,分析这 种运行方式下硬件和软件设计的特点。 关键词:单片机 复位/休眠抗干扰 引 言 ??随着微电子技术的飞速发展,单片机的性能迅速提高,在运算、逻辑控制、智能化方面显示出非凡的优势,在很大程度上 取代了原来由数字逻辑电路、运算放大电路组成的检测、控制电路,应用非常广泛。但由于它存在着死机、程序跑飞等致命缺 陷,使它在许多重要场合的应用受到限制。在抗干扰方面的许多技术,比如设软件陷阱、加硬件看门狗电路等,可使这一问题 有较好的解决,但仍然存在问题:① 看门狗动作时,意味着已经出现了错误,且运行了一段时间,这在有些场合是不允许的; ② 有时程序出现死循环错误,但是刚好把看门狗控制环节包含进去,对于这样的错误采用看门狗无法识别;③ 在检测控制周 期比较长的系统中,单片机花大量时间等待外设,执行等待命令时同样会受到干扰。针对这些情况,我们在实践中尝试了主动 复位的办法,采用等间隔的脉冲或根据外部条件对单片机进行复位唤醒。每次复位后,单片机执行相应的程序,执行完任务后 及时进入休眠,等待下次复位。用此方法较好地解决了上述问题,并在农用变压器综合保护器实验中得到了较好的效果。下面 以 51系列单片机为例探讨具体原理与实现方法,复位信号为高电平。 1 原理与实现方法 1.1 无条件定时复位法 ??用定时器、专用时钟芯片或其它脉冲产生器,按照设定的间隔定时产生复位信号。这种方法特别适合监测仪表。在实际运 行中,往往是用 A/D 转换器采样输入的模拟量,然后进行存储显示。这一过程很快,但为了读数稳定,每秒数据更新不过 1~2 次,CPU的大量时间用于等待。如果让 CPU执行完任务后直接进入休眠,然后由外界复位唤醒它去执行下一次操作,这就是 定时复位法。这样会使抗干扰能力大大增强,主要有 2点: ① 休眠时,程序停止运行,不会出现 PC指针紊乱引起的程序跑飞。 如果工作与休眠的时间比例为 1:9,也就是说,1s内有 0.1s的时间用来检测、送显示,有 0.9s的时间休眠,程序受干扰的概率 是全速运行时的 1/10,整体抗干扰能力提高了 10倍。 ② 由于每 1s无条件复位 1次,一旦某次工作期间出现死机,在下次复位 时肯定得以恢复。对于只是显示的仪表,某 1s偶然出现的读数错误对下一次测量并没有记忆,是可以承受的,属“一过性”错误。 这种定时复位相对于看门狗电路的优点,一是把等待时间改为休眠状态 ,缩短可能受干扰的时间;二是避免了恰好包含看门狗 控制环节的死循环。 1.2 外部条件复位法 ??有些输出或测量的启动是由外部控制的。如暖气热表,靠热水水轮旋转产生的脉冲计算热量,没有热水流动,就没有热量 输出,CPU只要保持原来数值即可,不需要计数。可以想象,停暖时热水水轮不转,CPU在春夏秋三季则无事可做;如果让其 休眠,而不是时刻检测有无水轮脉冲,抗干扰能力会大大增强。因此,只要把水轮脉冲与 CPU的复位联系起来,水轮每旋转 1 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 周,CPU复位 1次,热表就可以正常工作了,这就是外部条件复位法。类似的应用还有半电子式电度表,当机械度盘旋转 1周 时才进行 1个计数,用户不用电,CPU会一直休眠。这种方法的复位间隔不是固定的,而是根据外部条件确定的。在有些场合, 休眠的时间会很长,对提高抗干扰能力非常有效。 2 硬件实现要点 2.1 无条件定时复位 ??一般有 2种方法。 ① 使用定时器或专用时钟芯片复位。图 1为使用 555电路组成的定时电路;也可以使用 X1126之类的 时钟芯片,设置报警时间后用报警信号唤醒 CPU。这种方法适用于长间隔定时,还可以根据本次运算的结果,临时决定下一次 的报警唤醒时间,非常灵活方便。 ② 使用系统固有的信号作为定时复位脉冲。例如使用 50Hz工频电源整形后作复位,既省略 了定时器,同时又为检测电流信号的相位采集了相应的信号,如图 2所示。 2.2 外部条件复位 ??把外部条件脉冲整形后送到复位端子。对于上述水轮或电表度盘产生的脉冲,可以使用施密特触发器整形;对于记录最大 或最小值的仪器,可使用窗口比较器。为了实现调节的电子化,可以使用电子电位器,用单片机指令设定上下限。 2.3 复位周期与复位高电平时间 ??图 3中,复位信号在高电平 Tr期间,单片机处在复位状态,程序不运行,抗干扰能力最强;高电平过后,单片机开始执行 程序。也就是说,复位信号的低电平Td期间是可供程序执行的时间,这个时间要大于每次程序的执行周期。合理选择复位周期 和复位信号的高电平占空比非常重要。对于单纯显示仪表,复位周期决定数据刷新周期,低电平时间要大于检测、送显示的全 部时间;否则,会出现永远不能完整执行程序的错误。单片机在 Ts和Tr期间都能有效地抗干扰,但是最好还是把多余时间安 排在 Tr内。当程序执行时间较长,要求尽量缩短Tr时,可加入微分电路,如图 1中的 C30、R26、D9。 2.4 输出端子的处理 ??(1)复位期间的正脉冲 ??复位期间单片机的全部 I/O 口变成高电平。也就是说,正常输出为低的引脚,会按照复位周期出现宽度为Tr的正脉冲。这 个正脉冲会影响正常的输出,有 2个办法处理: ① 在端子上并联电容加以抑制,容量根据复位的 Tr时间确定。减小 Tr可以减 小并联电容。 ② 把外围电路设计成高电平无效。 ??(2)容 错 ??适当选取输出端并联电容的容量,可以实现容错控制。在某个复位周期,因干扰输出了错误电平。由于电容的保持作用, 在本周期内尚不能使输出变化到有效的电平;在下个周期,错误被纠正。因此,只要不是连续 2个周期出错,输出是可容错的。 当然,这种方法会使正常的输出变化滞后一个周期,才真正反映到输出端子。 2.5 上电检测与手动复位 ??有些系统在初上电时要做一些初始化操作。采用复位方式运行时,每次复位已经成为正常运行的开始条件,无法辨别是否 初上电。在某引脚对地接一个 1µF 的电容,复位后检测该引脚,如果是低电平就是初上电。如果给系统设立一个复位按钮,也 就是常见的手动复位,这个按钮不是连接在复位端,而是并联在上述引脚对地的电容两端。 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 3 软件实现要点 3.1 输出恢复与不清零 RAM ??定时复位后全部引脚变成高电平,使得本应为低的引脚发生了不应有的变化,因此,复位后要立即恢复所有引脚的状态。 有 2种方法: ① 本次复位后立即进行分析判断,根据需要给出引脚状态;② 根据 RAM 中上一次留存下来的状态,这些 RAM 在定时复位时是不能清零的;而在初上电或手动复位按下时应清零,在软件编制时要体现出来。如果计算时间允许,尽量采取 方法 1。因为连续 2次复位周期都计算出错的概率很小,按照 2.4叙述的输出端子并联电容的处理方法,可以达到很好的抗干扰 效果。 3.2 实现跨越定时复位间隔的时序控制 ??现在用复位方式工作,每次从头开始反复执行同一程序。可分为 2种情况: ① 对于单纯显示仪表,每次复位后进行测量、 送显示,两次复位之间没有因果关系,只需把原来的等待改为休眠即可。要注意的是,测量、送显示用的总时间要小于复位低 电平时间,否则会出现永远不能完整执行程序的错误。② 对于有时序控制的应用,每次复位后,先要查看上个周期留下的标志, 以决定本周期做什么。也就是说,凡是跨过复位周期的操作,都是靠标志传递的,这些标志存放在内部 RAM 中,只有初上电 时才清零。例如,前面提到的变压器综合保护器,按照 20ms 的间隔定时复位。它在上电后,经过一定的动作顺序达到正常工 作状态,如图 4;根据这个动作编写软件的一部分,如图 5。 ??在图 4中,当保护器初上电时,首先试送电 0.5s,提示马上就要送电;等待 30s后正式送电。送电后的 1s内为启动时间, 不进行过电流检测。启动完成后,如果一切正常,则把“正常标志”置位,保护器在下一个复位周期进入正常运行。试送电的 0.5s 延时是对复位进行 25次计数实现的,因为每次复位时间是 20ms。初上电时,对内部 RAM 做全部清零,令试送电计时Ts=25 后休眠。下一次被复位后,再检测上电引脚已不是初上电,于是进行到试送电计时 Ts的检测。如果 Ts?0,说明在送电延时期 间,把 Ts减 1后进入休眠。当Ts-1=0时,应该进入停电等待 30s的过程了。就在Ts递减到 0的时候,令停电等待标志Td=1500。 当程序再次由复位开始时,检测到 Ts=0但是Td?0,表明已经越过了试送电,现在正处于停电等待 30s的过程中。这样,整个 进程由 Tr、Td、Ts等这些参数相互传递着,一步步进行下去。 Generated by Unregistered Batch DOC TO PDF Converter 2010.2.301.1358, please register! 图 5 变压器保护器部分程序流程 结 语 ??抗干扰是电子设计中的重要问题,在单片机中尤其重要。这是因为单片机有程序跑飞的特殊性,它受到干扰的后果可能是 死机,也可能在死机前发出各种错误或非法动作,使整个系统产生致命性错误。因此,仅仅保证单片机不死机还不够,还要研 究如何减少受干扰的风险,以及出错后如何能够容错。本文力图从这两方面作些探索,希望这些粗浅见解能够起些抛砖引玉的 作用,对大家有所帮助;也希望各位同仁一起探索,共同提高我们的设计水平。
/
本文档为【单片机休眠-复位运行方式提高抗干扰能力】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索