摘要: 在恶劣环境中使用高速微控制器应用程序的设计者将使用看门狗计时器来防止软件失控。DS80C320高速微处理器集成了看门狗定时器,消除了外部系统控制监督器的需要。本应用笔记概述了DS80C320看门狗定时器的使用。软件示例说明使用看门狗定时器作为系统监视器,利用适当的复位间隔和长间隔定时器。
今天,微控制器被用于电气噪声和电磁干扰(EMI)丰富的恶劣环境中。在这样的环境中,如果系统包含有助于确保正常操作的资源,那将是有益的。在许多系统中,验证正确操作的常用技术是合并看门狗定时器。
看门狗定时器基本上是一种时间测量装置,它与微处理器一起使用,或者作为微处理器的一部分,并且能够使微处理器复位。在一个设计合理的系统中,当微处理器不正常工作时,看门狗会引起复位,从而消除故障情况。在一个典型的应用程序中,看门狗定时器被配置为在预定的时间间隔后重置处理器。如果处理器运行正常,它将在间隔结束前重新启动看门狗。重新启动后,看门狗将开始计时另一个预定的间隔。如果看门狗没有在间隔结束前被处理器重新启动,看门狗超时发生。这将导致处理器被重置。如果系统软件设计正确,并且没有硬件故障,则复位将使系统重新正常运行。当然,复位条件必须是安全状态。例如,让磁盘驱动器控制器的重置状态启用写头是不明智的。
许多系统已经设计使用外部看门狗定时器。然而,DS80C320消除了对这种额外外部组件的需求。DS80C320包含自己的,非常强大的内部看门狗定时器。这个看门狗定时器的特点和使用是这个应用笔记的主题。
看门狗定时器的主要应用是作为系统监视器(在下面的部分中详细讨论)。有了看门狗定时器,系统就能很好地检测和纠正失控的微处理器。使用看门狗定时器的系统特别适合于检测位错误。瞬时位错误可能由软存储器故障和电磁放电进入存储器设备及其接口等原因引起。这可能会导致数据的临时位极性翻转进出处理器。当在获取程序信息时发生这种情况时,微处理器将开始执行错误代码。处理器可能开始执行操作数而不是操作码。当处理器开始执行这个错误代码时,它将不能正确地执行重新启动看门狗的代码。在超时时间之后,看门狗将导致处理器复位。在设计合理的系统中,复位将纠正错误。
不管看门狗定时器的功能有多强大,它都不能解决所有的可靠性问题。有一些故障不能通过重置来纠正。例如,看门狗定时器不能防止数据损坏。在其基本形式中,看门狗重启依赖于正确的程序执行,通常不依赖于数据内存中的值。除非数据损坏影响程序流程或采取了一些额外的措施,否则数据损坏不会导致看门狗超时。当然,可以这样编写自诊断软件,使重新启动看门狗取决于数据内存的验证。虽然这种方法非常有效,而且非常普遍,但详细讨论它超出了本文档的范围。
还要注意看门狗定时器不能立即检测到故障。根据定义,看门狗定时器必须在复位处理器之前达到预定时间间隔的结束。这个事实解释了为什么应该选择最小可能的超时间隔。通过这种方式,在失控情况得到纠正之前的最小时间过期。
高速微的看门狗定时器最常见的用途是作为系统主管。虽然它可以以许多不同的方式使用,其中一些将在本文中讨论,但系统监视器是最常见的应用程序。在系统管理器模式下,如上所述,计时器由处理器周期性地重新启动。如果处理器失控,看门狗不会重新启动;它将超时,随后将导致处理器被重置。
在高速微处理器中,看门狗定时器由提供给一系列分压器的主系统时钟驱动。分压器输出是可选的,并确定超时之间的间隔。当达到超时时,将设置中断标志,如果启用,将在512个时钟后进行复位。如果设置了中断标志的单个使能位,并且设置了全局中断使能位,则中断标志将导致中断发生。复位和中断是完全独立的功能,它们可以一起或单独用于各种应用程序。
当使用看门狗定时器作为系统监视器时,应该使用看门狗的复位功能。如果中断函数被使用,看门狗的目的将被打败。为了解释这一点,假设系统在看门狗中断之前正在执行错误代码。中断将通过引导CPU到中断服务例程暂时迫使系统重新进入控制状态。重新启动看门狗并通过RETI或RET退出将使处理器返回到中断之前丢失的位置。通过使用看门狗复位功能,处理器从程序开始重新启动,从而进入已知状态。
这并不是说DS80C320看门狗的中断功能对系统监控应用没有用处。由于复位发生在中断之后的512个时钟,因此可以使用一个短的中断服务例程在复位发生之前存储关键变量。这可能使系统在更接近于故障前的状态下恢复正常运行。当然,如果数据是错误的来源,存储它而不进行纠正将没有任何好处。对于任何特定的系统,所采取的方法取决于系统和所需的可靠性水平。
如上所述,DS80C320中的看门狗定时器由主系统时钟驱动,主系统时钟通过一系列分频器。分频器输出可由用户选择,允许2(17)、2(20)、2(23)或2(26)个时钟的超时。如果启用,处理器将在512个时钟后复位。表1显示了与不同晶体频率相关的复位时间间隔。
时钟 | @1.832兆赫 | @11.059兆赫 | @12兆赫 | @25兆赫 |
2(17) + 512 | 71.83毫秒 | 11.90毫秒 | 10.97毫秒 | 5.26毫秒 |
2(20) + 512 | 572.6毫秒 | 94.86毫秒 | 87.42毫秒 | 41.96毫秒 |
2(23) + 512 | 4.58秒 | 758.6毫秒 | 699.1毫秒 | 335.6毫秒 |
2 (26) + 512 | 36.63秒 | 6.07秒 | 5.59秒 | 2.68秒 |
可以看到,存在一系列可用的超时间隔。选择的间隔应该基于几个问题。第一个目标是选择一个表示允许处理器失控运行的最长时间的间隔。例如,理想情况下,每500毫秒向机械臂发出一次位置命令的系统不会使用大于此的超时间隔。保持较短的超时间隔可确保最多只向手臂发出一个错误命令。
设置看门狗超时间隔的另一个主要问题是在系统软件中定位重新启动命令的能力。这可能是一个非常复杂的问题,取决于系统软件的性质。最理想的方法是在重启看门狗定时器的系统软件的单个主循环中有一个单独的位置。通过主程序循环所需的时间将决定所需的超时间隔。
上述方法假设系统软件流是线性的,足以允许这样做。有些程序太复杂,它们的流程太非线性,不允许使用这种方法。有了这样的程序结构,很难找到看门狗重启的正确点。这个问题的一个可能的解决方案是使用DS80C320的看门狗定时器本身来帮助确定适当的重启位置。这种方法使用看门狗的中断能力,并在下面的一节中详细描述。
在一些系统中,软件太复杂或程序流程太多变,无法进行完整彻底的分析。可能不可能确定所有程序路径都被看门狗重新启动所覆盖。在这种情况下,可以使用不同的方法。在这种情况下,可以开发诊断软件来测试系统。这个诊断软件将在定期间隔被调用,也许使用看门狗定时器的中断特性。如果诊断通过,则重启看门狗。否则,看门狗超时,处理器复位。当然,在这种情况下,测试必须足够彻底才能有效。在给定系统中使用的确切方法可以是上述方法中的任何一种,也可以是每种方法的某种组合,视应用程序的需要而定。
下面是一个简短的程序,说明了大多数基本的看门狗定时器功能。这个程序说明了如何初始化看门狗定时器,以便当它超时时,它将导致复位。
该程序演示了DS80C320看门狗定时器的独特功能之一。改变看门狗的操作的软件必须执行定时访问操作。定时访问操作是必须按顺序一起执行的一系列步骤;否则访问失败。示例程序显示了用于重新启动看门狗并使其复位的定时访问。可以看到,值0ah首先被写入定时访问寄存器(TA)。接下来,将值055h写入TA寄存器。最后,对保护位进行修改。这些指令必须按照所示的顺序执行,不得中断,以获得对受保护位的访问。关于定时访问操作的更多细节可以在高速微用户指南中找到。受定时访问过程保护的看门狗定时器位是使能看门狗定时器复位(EWT = WDCON.1)位、看门狗中断标志(WDIF = WDCON.3)位和重启看门狗定时器(RWT = WDCON.0)位。
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;WD_RST。ASM程序;;这个程序演示了看门狗定时器的使用;DS80C320。它使用定时器的重置功能。当;运行时,程序将端口1的引脚设置为低电平表示;处理器空闲,等待看门狗超时。当;看门狗超时,处理器复位导致端口;销返回高。将延迟写入程序中,以便;该端口引脚将是高,足够长,可以看到,如果附加到;发光二极管;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;复位向量;;;;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;主程序体;START: ORL CKCON, #080h;设置看门狗超时时间2**23;(约758 mS @ 11.059 MHz);;在实际应用程序中,接下来的三行将被放置;在程序的各个位置重新启动看门狗;在它超时之前。MOV TA, #0AAh;重启看门狗定时器mov TA, #055h;使用定时setb RWT;访问。;;MOV TA, #0AAh;开启看门狗定时器复位mov TA, #055h;使用定时setb EWT;访问。;;MOV R1, #0FFh;创建一个延时环路,这样portLOOP: MOV R2, #0FFh;djnz R2, $;一个重置有待观察。djzr1,循环;Mov p1, #00;P1 = 0,复位导致P1 = 1;MOV PCON, #01h;进入空闲模式等待复位sjmp $;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;结束
一个稍微不同的应用程序的高速微的看门狗定时器是作为一个长间隔定时器。在这个应用程序中,中断是使用使能看门狗定时器中断(EWDI=EIE.4)位启用的,复位是禁用的。当超时发生时,看门狗定时器将设置WDIF位(WDCON.3),如果设置了全局中断使能位(EA=IE.7),则会发生中断。看门狗中断标志将指示中断的来源,必须由软件清除。如上表所示,25 MHz晶体的间隔为5.26 ms至2.68秒。这个时间间隔明显长于使用标准16位计时器的时间间隔。
另一个简短的程序说明看门狗定时器的特点如下所示。这个程序演示了看门狗定时器和中断必须如何初始化,以便超时导致中断。包括一个短中断服务程序。
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;; WD_INT。ASM程序;;这个程序演示了看门狗定时器的使用;80 c320。它利用了定时器的中断生成能力。为了演示,程序切换端口1的引脚;$MODS320;;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;复位向量;;;;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;看门狗中断矢量;ORG 063h;MOV TA, #0AAh;重启看门狗定时器mov TA, #055h;使用定时setb RWT;访问。;MOV TA, #0AAh;清除看门狗中断标志mov TA, #055h;采用定时clr WDIF;访问。;CPL a;补齐端口1以显示mov P1, A;中断程序已进入。;RETI;从中断中返回。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;;主程序体;START: orl CKCON, #040h;设置看门狗超时时间2**20;(约94.8 mS @ 11.059 MHz);MOV TA, #0AAh;重启看门狗定时器mov TA, #055h;使用定时setb RWT;访问。;塞塞·伊迪;开启看门狗中断和setb EA;这里:MOV PCON, #01;进入空闲模式,等待sjmp Here;中断后,返回空闲状态;;;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;结束
如上所述,在系统软件中定位看门狗重启指令有时会很困难。系统软件的结构和流程的复杂程度决定了任务的难易程度。在DS80C320中,看门狗定时器本身可用于辅助此活动。一般的方法是允许看门狗引起中断,并从服务例程中确定中断发生在代码中的哪个位置。通过在此点之前放置看门狗重启指令,可以确保看门狗将在超时之前重新启动(当软件流遵循此特定分支时)。这个过程一直重复,直到没有更多的看门狗中断发生。如果程序流程是线性的,并且不依赖于数据,则系统将按预期运行。
前面的软件示例提供了执行此功能所需的大部分软件。但是,作为第一步,应该确定所需的最大超时间隔,并根据该值修改代码。与往常一样,选择的超时时间是系统的一个功能,以及允许微控制器失去控制的时间。在修改软件以初始化所需的看门狗超时间隔之后,应该在中断服务例程中添加以下说明。它们将使处理器显示在中断未发生时将被执行的指令的地址。如果这种显示机制对系统实现不方便,可以将地址转换为ASCII并在其中一个串口上输出。
Mov 0, sp;获取SP contentsMOV P3, @R0;显示高地址字节dec R0;指向低地址byteMOV P1, @R0;显示低地址byteSJMP $;停在这里
上面的指令将堆栈指针的内容移动到R0,然后R0用于指向在确认中断时推送到堆栈上的数据。这个地址反映了下一条指令,如果中断没有发生,它将被执行。端口3引脚显示地址的高字节,端口1引脚显示地址的低字节。如果重新启动看门狗定时器的指令放在这个地址之前,看门狗将永远不会超时。
当设计一个使用看门狗作为监视器的系统时,有许多考虑必须进入有效的设计。首先,处理器可以失控运行的最长时间将决定最大看门狗超时时间。一旦确定了超时时间,就必须分析系统软件,以确定在哪里定位看门狗重启指令。对于一个有效的设计,看门狗重启的次数应该保持在最低限度,并且应该考虑不正确执行重启的可能性。如前所述,一些系统软件过于复杂或依赖于数据,无法确保看门狗重启覆盖所有软件流路径。这可能意味着需要一种自诊断软件方法。如果存在预期的故障机制,如周期性EMI突发或电源故障,看门狗超时应该考虑这个时间段。
为了使看门狗复位成为一种有效的纠错机制,处理器的复位状态必须是安全的。在某些应用程序中,看门狗的中断能力可能用于在复位之前操作数据或堆栈,以确保处理器在复位后正常工作。
通过仔细考虑上述方面,可以设计一个系统,使用一个看门狗定时器,将在非常恶劣的环境中运行。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308