This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC430F6137:在看门狗未启用的情况下进行看门狗超时复位

Guru**** 2502205 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/715256/rtos-cc430f6137-watchdog-timeout-reset-without-watchdog-enabled

器件型号:CC430F6137

工具/软件:TI-RTOS

我目前正在运行适用于 MSP43x 版本2.12.1.33的 TI-RTOS。 我没有启用看门狗、也没有将 RTOS 配置为不将看门狗计时器置于保持状态。 我还在代码中的几个点验证了看门狗装置被设置为保持状态、使用调试器来评估寄存器。 当我运行系统的时间"长"时、通常是隔夜发生、我发现处理器已复位、系统复位矢量表示它来自看门狗超时事件(SYSRSTIV = 0x16)。 我在文档中找不到任何地方表明 TI-RTOS 使用看门狗、因此我对这种情况的发生方式感到很损失。 我已经在 main 的开头设置了一个断点、并且在 OS 开始之前设置了一个闪烁例程、以指示在连接和不连接调试器的情况下要测试的 SYSRSTIV 寄存器的值。

我们非常感谢您对测试的任何建议或可能的复位源。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    WDTCTL 寄存器中的 WDTHOLD 位(位7)是否设置为1? 如果没有、请将以下代码行添加到 main 的开头:

    WDTCTL = WDTPW | WDTHOLD;

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 在启动时立即设置看门狗保持位。 我已经验证了它在代码中的几个点、例如硬件中断、任务和软件中断。 我当前已将调试器与一个断点连接、该断点监控看门狗寄存器是否有写入尝试并捕捉可能引发问题的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果 HOLD 位被置位、WDT 应该不会运行、所以你永远不会得到 WDT 超时。

    这是否会在您每隔一夜运行程序时发生? 您是否在运行程序时将器件置于任何异常状态、例如极高或极低的温度?

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我完全同意在保持看门狗时不应发生看门狗超时。 我没有在代码中启用它、我找不到任何说明 TI-RTOS 何时/是否启用它的文档。 因此、据我所知、它没有被启用。  

    在过去的2-3个星期里、我发现这种情况在一夜之间发生。 该系统位于办公室的工作台上。 我确定温度摆动几度、恒温器会在一夜之间改变6度 F。  

    我最后一次尝试捕获对看门狗控制寄存器的写入操作不起作用。 调试器断开连接、并在我重新连接时复位芯片。

    我已实施代码来处理由于温度变化可能在一夜之间触发的 FLL 勘误表。 我目前正在尝试重现此问题、方法是绕过检查以查看 DCO 频率是否超出规格、并在每个循环(1秒循环时间)运行调整代码。

    是否有其他可能导致问题的想法?

    感谢您的想法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我觉得有点傻。 我在代码中找到了一个点、该点假设在闪存的擦除命令之前使用并禁用了看门狗、然后重新启用它。