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.

[参考译文] CC430F5137:WDT 时序问题

Guru**** 2618835 points

Other Parts Discussed in Thread: CC430F5137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/784270/cc430f5137-wdt-timing-problem

器件型号:CC430F5137

您好!

我正在尝试使用 CC430F5137设置 WDT。 我在间隔模式和看门狗模式之间存在计时问题。 当我使用间隔模式并将 WDT 设置为1000ms 时。 它可以正常工作、并且每1000ms 发生一次 WDT 中断。代码如下:

WDTCTL = WDT_ADLY_1000;
SFRIFG1 &=~WDTIFG;
SFRIE1 |= WDTIE;
P2OUT ^= BIT4; //使用异或
__bis_SR_register (LPM3_bits + GIE)切换 P1.0; //输入 LPM3,启用中断
__NO_OPERATION (); //对于调试
器}

//看门狗计时器中断服务例程
#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
#pragma vector = WDT_vector
__interrupt void WDT_ISR (void)
#Elif defined (__GDT__)
void __attribute__(interrupt (interrupt (WDT_vector

)#pruate (WDT_isr)#vector (void)#pru_isc!)错误!
#endif
{
P2OUT ^= BIT4; //使用异或
}切换 P1.0 

然后、当我将 WDT 模式更改为"看门狗模式"时。 每~3400 ms 进行一次复位。 代码如下:

WDTCTL = WDT_ARST_1000;
SFRIFG1 &=~WDTIFG;
SFRIE1 |= WDTIE;
P2OUT ^= BIT4; //使用异或
__bis_SR_register (LPM3_bits + GIE)切换 P1.0; //输入 LPM3,启用中断
__NO_OPERATION (); //对于调试
器}

//看门狗计时器中断服务例程
#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
#pragma vector = WDT_vector
__interrupt void WDT_ISR (void)
#Elif defined (__GDT__)
void __attribute__(interrupt (interrupt (WDT_vector

)#pruate (WDT_isr)#vector (void)#pru_isc!)错误!
#endif
{
P2OUT ^= BIT4; //使用异或
}切换 P1.0 

。 我检查了32kHz 振荡器。 这是没有问题的。 您能帮我解决这个问题吗? 原因是什么? 


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

    我已经看到、器件启动时间将花费1000ms (www.ti.com/.../cc430f5137.pdf 第5.15部分)我不知道在初始化复位过程中是否有其他函数。

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

    您好!
    感谢您的回答。 我认为这不是我的答案。 有关我的问题的更多信息:
    -当我将 WDT 设置更改为“WDTCTL = WDT_ARST_16;”时,复位大约每70ms 而不是16ms 发生一次。
    -当我将 WDT 设置更改为“WDTCTL = WDT_ARST_250;”时,复位大约每880ms 而不是250ms 发生一次。
    -当我将 WDT 设置更改为“WDTCTL = WDT_ARST_1000;”时,复位大约每3440ms 而不是1000ms 发生一次。

    但是、当我将 WDT 模式更改为"间隔模式"时。 时序是正确的、正如我之前所说。 中断及时发生。

    我的问题是 WDT 启动延迟和 WDT 中选定的间隔时间之间是否有关系? 或者、这是什么原因?

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

    我认为测试延迟时间的正确方法是使用计时器中断来馈入看门狗。

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

    您好!
    我已经使用计时器测量了延迟时间。 发生相同的结果。 仅"看门狗"模式、其作用就像使用10kHz 晶体一样。 对这种情况有什么看法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    您能否与计时器共享测试代码、以便为 WDT 提供数据? 我可以为您回顾一下。