应广单片机 PMC156/PMS156 系列8 位 OTP IO 类型单片机看门狗的应用
什么是看门狗定时器(WDT,或简称为看门狗)
就像名人钱包里住着一只小狗,爱叫,通常认为看门狗定时器是不必要的或多余的。然而,将两者等同起来会对看门狗造成很大的伤害。与“钱包狗”不同,看门狗增加了关键的监控功能,可让您从内部和外部监控系统是否发生故障,并在发生故障时采取行动。看门狗定时器到底是什么?简而言之,看门狗定时器是一种设备,如果在特定时间范围内未收到来自处理器的周期性脉冲信号,它会发出复位输出。实现此目的的一种方法是将来自处理器的数字信号输出 (GPIO) 馈送到外部看门狗定时器的看门狗输入 (WDI)
看门狗芯片与MCU的连接关系如下:其基本的原理就是MCU要在固定的时间内通过IO翻转去控制看门狗芯片的WDI引脚,否则看门狗芯片就会将WDO拉低,进而使CPU复位。
看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog/service the dog),一个输出到MCU的RST端。
MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位,防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞
看门狗计数器是一个定时器,其时钟源来自内部低频振荡器(ILRC)。利用 misc 寄存器的选择,可以设定三
种不同的看门狗计数器超时时间,它们是:
当 misc[1:0]=10 时:16384 个 ILRC 时钟周期
当 misc[1:0]=01 时: 4096 个 ILRC 时钟周期
当 misc[1:0]=01(默认) 时:2048 个 ILRC 时钟周期
ILRC 的频率有可能因为工厂制造的变化, 电源电压和工作温度而漂移很多; 使用者必须预留安全操作范
围。为确保看门狗计数器在超时溢出周期之前被清零,在安全时间内,用指令“wdreset”清零看门狗计数器。在上
电复位或任何时候使用 wdreset 指令,看门狗计数器都会被清零。当看门狗计数器超时溢出时,PMC156/PMS156
将复位并重新运行程序。请特别注意,由于生产制程会引起 ILRC 频率相当大的漂移,上面的数据仅供设计参考
用,还是需要以各个单片机测量到的数据为准。
应广单片机 PMC156/PMS156 系列8 位 OTP IO 类型单片机 看门狗
PMC156/PMS156 系列8 位 OTP IO 类型单片机
PMC156/PMS156 有三个中断源:T16 计数器中断和外部中断源 PA0 和 PB0 中断源。每个中断请求源都
有自己的中断控制位启用或停用它。
所有的中断请求标志位是由硬件置位并且并通过软件写寄存器 intrq 清零。
中断请求标志设置点可以是上升沿或下降沿或两者兼而有之,这取决于对寄存器 integs 的
设置。所有的中断请求源最后都需由 engint 指令控制(启用全局中断)使中断运行,以及使用 disgint 指令(停
用全局中断)停用它。中断堆栈是共享数据存储器,其地址由堆栈寄存器 sp 指定。由于程序计数器是 16 位宽度,
堆栈寄存器 sp 位 0 应保持 0。
此外,用户可以使用 pushaf / popaf 指令存储 ACC 和标志寄存器的值到堆栈,
以及使用 pushaf / popaf 指令将值从堆栈恢复到 ACC 和标志寄存器中。
由于堆栈与数据存储器共享,在 Mini-C 模式,堆栈位置与深度由编译程序安排。在汇编模式或自行定义堆
栈深度时,用户应仔细安排位置,以防地址冲突。
为何看门狗定时器如此重要?
看门狗定时器提供了一种方法,用于向系统发出警报或重置软件冻结或挂起的处理器。虽然没有人会故意设计冻结的软件,但优秀的系统设计人员无论如何都会为故障做好准备——因为为意外做好准备总是更好的。如果没有这种监控,处理器可能会无限期地保持冻结状态并导致进一步的系统故障。
具有可调超时间隔的外部看门狗定时器(例如 PMC156/PMS156 )可以在短短几毫秒内识别这些软件冻结并适当地重置系统或处理器。此功能在嵌入式或远程系统中尤其必要,因为手动重置系统不切实际甚至不可能。如何在我的嵌入式系统中实现看门狗定时器?实现看门狗定时器有两种主要方法:
使用具有集成看门狗功能的处理器。
许多微控制器(例如 PMC156/PMS156 系列)都具有集成的看门狗功能。这很有价值,因为它非常容易实现,并且不需要其他 IC。
但是,它有一个主要的警告:集成看门狗可能并不总是按预期工作,因为导致 MCU 发生故障的代码问题也可能无意中禁用看门狗定时器。同样,软件的编写方式使得内部看门狗应该能够检测到任何冻结或挂起。但是,采取额外步骤以冗余方式监视看门狗输入可以帮助解决代码中不可预见的错误。
使用带有看门狗定时器的电压监控器。
具有看门狗定时器功能的监控器(例如 PMC156/PMS156)允许您以外部冗余方式监视电源电压和看门狗信号。如果处理器的内部看门狗无法检测到错误或丢失的脉冲,则外部看门狗定时器将增加其他方式无法实现的检测级别。原则上,看门狗定时器的功能并不太复杂。然而,其在维护系统可靠性方面的重要性怎么强调也不为过。如果发生故障时人为启动的系统重置不可能或非常困难,则尤其如此