Altium Designer, 电路设计技巧

PCB设计的基本技巧:如何在您的PCB设计中实现看门狗定时器

当你在家工作时,有很多工作的好处。你可以自己做饭,在午餐时间洗衣服,喝所有你想要的茶。我用一个灶具水壶烧水冲茶,所以当我开始写作时,要靠水壶的口哨声来告诉我水烧开了。

有时候偶尔我会粗心大意,没有盖紧水壶的盖子。结果,当水壶里面的水迅速变成气体时,它仍不会响。在这种情况下,我的粗心行为意味着我将会少喝茶。在嵌入式系统中,如果您不知道如何操作看门狗定时器(WDT),后果会更严重。当您的WDT无法运行时,一个停滞的微控制器将继续保持停滞状态,并导致嵌入式系统停机。让我们来看看如何让他们在第一次尝试时正常工作,以避免这种情况。

 

为什么嵌入式系统虽然有WDT却仍然无法恢复

WDT是电子设备中的一个简单的故障安全功能,有助于在发生硬件或软件故障时重新启动微控制器。 WDT可以作为单独的集成电路(IC)使用,也可以作为微控制器本身的内置功能。在嵌入式系统设计中不使用WDT往往是不可原谅的。

WDT的运行方式很简单。它被编程为在设定的时间间隔内倒计时。在正常操作下,微控制器定期刷新WDT的倒数计时器,以防止其到期。如果微控制器没有反应,那么它不会刷新WDT。因此,当WDT到期时,将触发一个脉冲或信号来复位微控制器。这个简单的功能可以弥补可能导致微控制器崩溃的设计错误或环境因素。

但是,如果WDT失败,那么嵌入式系统不太可能从错误的状态中恢复。这就是为什么查明WDT为什么无法复位微控制器的原因是很重要的事情。最明显的答案是WDT有问题。但是,如果您多次遇到嵌入式系统的多个单元无法恢复,那么您的设计可能会有一些问题。实际上,在我多年设计和部署数百个基于微控制器的设备的时间里,我从来没有遇到过一次WDT失败的情况。根本原因往往只是人为错误。

为什么WDT可能无法正常运行

对于使用内部WDT的嵌入式系统来说,如果配置位被无意地覆盖,则溢出代码可能会禁用WDT。外部WDT会遇到完全不同的问题。在这种情况下,当固件工程师正在开发和调试程序时,通常有一个跳线引脚可以断开来自外部WDT的复位信号。在部署现场之前,通常需要手动连接这些跳线引脚。如果不是,则WDT复位信号将保持断开状态,无法复位单片机。

WDT失效的一个更常见的原因是编码错误。如果刷新WDT定时器的功能被放在程序的错误部分,那么它们将不会按照预期的方式运行。当实时操作系统(RTOS)中有多个不同优先级的任务时,微控制器的固件变得复杂。即使低优先级任务处于异常无限循环中,优先级更高的任务也可能继续执行。如果WDT定时器刷新在最高优先级任务中,则微控制器在不正常工作时不会刷新。

如何确保WDT的可靠运行

确保WDT的工作涉及到固件开发人员、系统安装人员和硬件设计人员。固件开发人员应该在程序中应用最佳做法,以避免代码溢出,从而关闭内部WDT。固件开发人员必须对微控制器的存储器结构以及如何在代码中正确使用存储器指针和分配有一个很好的理解。

除此之外,还应绘制程序的结构,使得WDT在程序的适当地点更新。这意味着如果程序中的任何一点发生无限循环,程序将触发一个复位。您也可以开发一个测试工具来检查现场WDT的功能。这也消除了在外部WDT和微控制器之间丢失任何断开的跳线引脚的风险。

Tagged ,

About Simon Wang

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.