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.

[参考译文] TMS320F28035:看门狗中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1365173/tms320f28035-watchdog-interrupt

器件型号:TMS320F28035

我有一个棘手的错误、在一个较大的项目中无法重现。
复位源为看门狗复位。

我在用户指南(第87页)中看到、我可以将看门狗配置为调用中断、而不仅仅是执行复位。 我想使用此工具来分析堆栈、以便了解问题所在。

我已经为此在初始化例程中插入了行:

SysCtrlRegister.SCSR.AsWord = 0x02;// 条目。 WD_ENINT = 1;//启用看门狗中断

static void InitWatchDog(void)
{
  EALLOW();

  // Setup WatchDog
  // set check bits and set prescale to max, set disable to 0 (enable watchdog),
  // keep WDFLAG bit as is
  // Watchdog period is set to Oscillator Cycletime (10MHz, 100nsec) * 512 * 64 * 256
  //                          = 100 nsec * 512 * 64 * 256 = 851.97 msec
  // 512: osc divide, 64: wd prescaler (max, used here), 256: 8-bit WD counter, 6: PLL multiplier (WD runs at ext. Clk rate)
  // -> WD decrements every 512*64*6 = 32768*6 = 196608 cycles
  Watchdog.WDCR.AsWord = (WDCHK_MASK | WDPS_512_64);
  SysCtrlRegister.SCSR.AsWord = 0x02; //  Items.WD_ENINT = 1; // enable Watchdog interrupt
  EDIS();
}

调试器会为 SYSCTRL 显示值0x07。 这似乎是正确的。

为了测试中断、我 在几秒后调用一个具有无限循环的方法。  

但现在什么都不会发生、甚至不会进行重置。

我检查了每个 ISR (也包括 NOTUSED 和 NMI_ISR)、但调用的不是它们。

我想我缺少某个启用功能、但我不知道哪一个

请提供帮助。 谢谢

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

    您好!

    看门狗 ISR 设置似乎有问题。

    是否 在中断控制器中启用了想要由看门狗中断触发的中断。 如果您的示例中有任何其他中断正常工作、请检查配置是否正确完成

    谢谢!

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

    我还设置了相应的定义、

    [DSP2803x_SWPrioritizeIsrLevels.h]

    #define INT1PL 1 //组1中断(PIEIER1)
    [...]
    #define G18PL 1//5 // WAKEINT (WD/LPM)

    并且还定义中断
    中断失效 WAKEINT_ISR (void)// WD/LPM
    {
    [...]

    但是我忽略了在 main 的设置方法中启用中断。。。 (昨天不是我最好的一天)

    感谢您快速回答

    (闭路)