Embedded 如何选择合适的看门狗定时器值
问题是: 如果我有3个具有不同优先级和不同执行时间的任务,我应该如何配置看门狗计时器 说: 任务1:最高优先级,执行。时间=5毫秒 任务2:中等优先级,执行。时间=10毫秒 任务3:最低优先级,执行。时间=15毫秒看看这个定义 看门狗定时器是一种电子定时器,用于检测计算机故障并从中恢复。在正常运行期间,计算机会定期重置看门狗计时器,以防止其超时 因此,您可以设置看门狗定时器值,当您确定3个任务都没有运行时,该值将触发看门狗。更准确地说,您可以在确定所有任务都在运行时重置计时器。当单个任务由于未知原因停止时,您希望触发watchdog(您可以阅读更多信息)Embedded 如何选择合适的看门狗定时器值,embedded,avr,rtos,watchdog,Embedded,Avr,Rtos,Watchdog,问题是: 如果我有3个具有不同优先级和不同执行时间的任务,我应该如何配置看门狗计时器 说: 任务1:最高优先级,执行。时间=5毫秒 任务2:中等优先级,执行。时间=10毫秒 任务3:最低优先级,执行。时间=15毫秒看看这个定义 看门狗定时器是一种电子定时器,用于检测计算机故障并从中恢复。在正常运行期间,计算机会定期重置看门狗计时器,以防止其超时 因此,您可以设置看门狗定时器值,当您确定3个任务都没有运行时,该值将触发看门狗。更准确地说,您可以在确定所有任务都在运行时重置计时器。当单个任务由于未知
现在真正的问题是,看门狗定时器的时间应该是多少?当您想要重新启动程序时,您需要设置一个计时器,以便包括任务的所有等待时间、任务中的延迟,并检查至少要执行一次的所有任务的最坏情况时间(最大时间)。然后将计时器值设置为略高于此最大值。正确的方法是
如果您的任何辅助任务或看门狗任务挂起,它将最终阻止看门狗任务,看门狗将过期。您希望确保只有在所有任务正常运行时才重新触发看门狗。使用RTO提供的最简单的任务间通信方式,使其尽可能可靠地防止崩溃 你的要求是什么?如果您的要求是“系统应在至少5分钟后检测到挂起的任务”,则为5分钟。我是构建系统的人,因此我需要知道如何正确设置此要求。那么,您希望从崩溃中恢复的速度有多快?对于大多数类型的设备,秒是可以的。通常情况下,绝对不需要将看门狗与任何任务循环时间对齐,并且在您更改程序和循环计时时,会遇到不必要触发看门狗的问题。请尽可能快。那么,我应该为系统的整个时间段配置WDT吗?或者对于最长的任务?它比这更复杂,因为您需要运行所有任务的or-如果没有任务间通信,这将无法工作。这在很大程度上取决于你的任务之间的相互依赖程度。。。并将dog任务设置为最高优先级,以防止被卡在循环中的高优先级线程通过耗尽可怜的pup的CPU执行来阻止dog咬伤。@MartinJames确切地说,当WD任务没有获得CPU时,WD将触发。这就是我们想要的——如果一个更高优先级的线程被卡在循环中,我们希望WD启动——WD任务的优先级实际上不是很相关,只要它得到一些CPU来保持系统在良好的情况下保持活动。