h2zero / n-able-Arduino

An arduino core for ARM based BLE devices supported by the NimBLE stack.
GNU Lesser General Public License v2.1
34 stars 12 forks source link

resets every 5s (watchdog issue) #32

Open doh38 opened 7 months ago

doh38 commented 7 months ago

I have a device with a nrf51802. just calling anything under 10ms (even with the simplest form with delay(9) in the main loop) will make a few iteration and crash. funnily calling a delayMicrosecond(100000) will also crash it. I don't intent to use "delays" actually, but even the freertos example crash or any millis() usage. Is there anything I can do to debug this? I don't have serial on this board and use RTT... unfortunately here on an higher level, so I'm not sure to be able to check anything there :) *I succeeded to root it narrower. seems t be the watchdog triggering (error 2) ... tried to disable it, but it doesn't change anything unfortunately.

doh38 commented 7 months ago

by default the watchdog is activated. first time ever used. You need to disable it or add `NRF_WDT->RR[0] = WDT_RR_RR_Reload; at any place you want it to be reseted. so solved :)

jhmaloney commented 6 months ago

I also ran into this issue.

You can also disable the watchdog timer by adding: -DCONFIG_WDT_TIMEOUT_SECONDS=0 to your compiler flags.

It would be nicer for newcomers to n-able-Arduino if the CONFIG_WDT_TIMEOUT_SECONDS setting defaulted to 0 to disable the watchdog timer.

Alternatively, 'NRF_WDT->RR[0] = WDT_RR_RR_Reload' could be added to the top-level loop in main.c.

h2zero commented 6 months ago

I find it strange that this is happening, I've not seen it on my end but will definitely make that change.

jhmaloney commented 6 months ago

Thanks!

(You might not have noticed that the resets were happening. I didn't notice at first. What brought it to my attention was that variables were getting reset to their startup values.)

jhmaloney commented 4 months ago

I just submitted a tiny PR to make CONFIG_WDT_TIMEOUT_SECONDS default to zero (WDT disabled).