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.

DWWD resets although its configured for NMI

Other Parts Discussed in Thread: RM48L952, HALCOGEN

I configured the digital windowed watchdog like this (HalCoGen used with RM48L952):

dwwdInit( Generate_NMI, 134, Size_100_Percent );

then i enable the watchdog counter:
dwdCounterEnable();

I do not reset (kick) the watchdog. I set a breakpoint in the esmGroup2Notification. This causes the watchdog to expire and the program jumps the breakpoint in the esmGroup2Notification as expected. Then I step out of the notification and out of the esmHighInterrupt. After making a few steps in the normal program, the program jumps to the reset vector and makes a reset.

I want only the NMI and not a reset. Why does it reset and how can I prevent this? I configured the watchdog to generate an NMI?!

Thanks for your Help!

  • Hi Lukas,

    this seems to be a problem.  But before we know for sure, can you provide your example project?

    If you don't want to share on public, please connect to me on this e2e and you can share your project.

    i would like to go through and understand why reset is generated.

    Without the project, it is hard to guess why.

  • Hi Lucas,

    i tried what you are doing.  see attached ccs project.

    I did not get CPU reset.  i put a breakpoint in esm High Interrupt and always get back to the same breakpoint for many runs.

    So, there must be something else in your system that cause reset.

    you probably need to narrow down some more.

    4744.Forum_RTI.zip

    you can look at reset section in the TRM to see what can cause reset.  Then, you can read status in system control register to know what source of reset.

    hope that helps to narrow down the cause of reset in your system.  It is not DWWD in this case.

  • Hi Henry

    I'm working with KEIL uVision 5.05. So couldn't test your example project. But I attached my sample project with Keil and the Halcogen configuration.

    According to the SYSESR register (should indicate the reset source) there is nor reset detected (SYSESR is zero ) .
    Today I observed another strange behavior: After leaving the esmHigh ISR, the cpu jumps to a complete wrong code section (like there is a wrong return address). This behavior is only with the watchdog enabled.

    Thanks

    WatchdogDemo.zip
  • Hi Lukas,

    If the CPU jumps to a strange location after exiting from the isr, most likely that may result into a external abort and may reset.  The cause can be out of range or uninitialize data&ecc, etc.  can you tell which address it jumps to?  Also did you generate ecc for all non programmed space?

    one potential root cause can be the wrong stack size.  Can you pls increase your stack size?

    i dont think it is the dwwd issue as the codes and hw should be the same in either IDE.  It does not fail on me on ccs so it is not the issue.

  • Hi Henry

    I figured out the problem: Someone else (or I) accidentally commented out the FIQ command in esm.c instead of renaming the command to IRQ after generating HalCoGen code. This caused the CPU to jump to a wrong address after leaving the interrupt.

    Now It's working as expected.

    Thanks for your help.

  • Hi Lucas,

    OK great.  I am glad you find the issue now.

    I am closing this thread.