无法更新看门狗?

4个帖子/ 0新
最后一篇
Mark.Bloechl.
离线
最后一次露面:1年7个月前
加入:2015-12-09 16:33
无法更新看门狗?

我正在运行两个任务,一个任务正在更新看门狗,另一个任务正在执行应用程序逻辑。当我在应用程序逻辑中输入do - while循环时,应用程序崩溃,当我使循环条件下的循环条件为false时,它将只执行一次;应用程序不会崩溃。我假设我因看门狗而崩溃,但我不是100%肯定。试图阻止应用程序在循环中崩溃,我叫WDG_RELOAD(0xFE);无论如何都没有效果并崩溃。然后我试图冻结看门狗并在循环之后恢复它,这也没有任何影响并崩溃。虽然当我删除do循环时,应用程序运行正常,但在那里循环逻辑会更好地工作。我也试图禁用看门狗全部,我所看到的是应用程序永远不会崩溃,但它似乎并没有像我预期的那样执行,虽然这可能是其他因素。

这是看门狗崩溃的症状吗?如果即使我更新或冻结它,为什么是看门狗?

设备:
mt_dialog.
离线
最后一次露面:3个月2周前
职员
加入:2015-06-08 11:34
嗨mark.bloechl,

嗨mark.bloechl,

看门狗应该像应该一样更新和冻结,我想别的东西导致了这一点,或者它是看门狗并困扰着其他地方,你应该确保你的应用程序由于看门狗超时而崩溃。因此,您必须确保您的应用程序停止因为看门狗,当应用程序“崩溃”设备应堆叠在NMI_Handler中时,您是否看到您的设备击中该处理程序?如果您这样做,您可以从PC检查并检查触发WatchDog的位置。

谢谢mt_dialog.

Mark.Bloechl.
离线
最后一次露面:1年7个月前
加入:2015-12-09 16:33
我已经测试了代码看

我已经测试了代码,看看它是否会在nmi_handler中崩溃,它确实如此。因此,当我添加了循环功能时,它在nmi_handler中删除了,当我删除了它永远不会在nhi_handler中删除的循环功能时。

我相信此测试证明存在看门狗相关的崩溃,并且专门从循环功能调用它。

mt_dialog.
离线
最后一次露面:3个月2周前
职员
加入:2015-06-08 11:34
嗨mark.bloechl,

嗨mark.bloechl,

由于当您将循环放置时,因此在将循环放置时发生的循环中的某些内容会延迟代码超过2.6秒(因为您正在更新具有0xFE值的看门狗),或者该循环影响您的代码,并且在其他某个点发生NMI(按照该方法提及并检查PC在NMI发生之前的情况下检查)。我想,即使您更新监视程序停止时,如果该指令位于该循环中,则循环仅执行一次。

您可以对看门狗和NMI进行小测试只是为了熟悉,使用一段时间(1);并将其放置在Project示例中的某处从SDK(例如,当您编写特征时)。当您编写特定特性时,代码应该到达NMI。然后更换(1);有一段时间(1){WDG_RELOAD(VALUE)},这不应该强制NMI执行,但它只会在该点中停止您的代码(更新看门狗值)。

谢谢mt_dialog.