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.

CC2650 Watchdog & OAD Failures

Other Parts Discussed in Thread: CC2650

Hi,

Setup

Using BLE Device Monitor 2.1.2 to perform OAD download.

I have a sensortag branched project running on a sensortag target cc2650. 

I am seeing CRC failures when watchdog is enabled. (Using wathcdog from tirtos 2_13)

I have read one of threads in the forum(from a year ago) recommending placing a watchdog clear\kick in the crc function,

but this doesnt always work.

Also tried setting the WD reload value to something higher prior to OAD, but this didnt help.

Since there is no watchdog close function in the driver( I though I would close the watchdog prior to OAD)  

what would you advise to try next?.

Currently I have disabled wathcdog?, but need it in my project.

Thanks

Tamir

  • What version of the stack are you using? Can you verify that the OAD works without the watchdog?
  • Hi,

    Using Stack 2.1.0

    Yes I have verified it several times, it works without the watchdog.

    CRC is good.

    I was also thinking maybe the connecion interval 7.5 ms is too harsh, with watchdog enabled(Does it get to run?, Just a thought.)

    (Bye the way watchdog is configured to reset and the reload value is set to 1 second.)

    Assuming the crc calculation is time consuming as propsed by posts on the topic I was wondering if the watchdog wasnt cleared shouldnt my debugger disconnect in the crc process due to watchdog reset?.

    I am using the debugger to break on crc[0] == crc[1]  comparrison, after crc calculation.

    Regards
    Tamir

  • Ok. And can you verify that the watchdog is never expiring? If so, can you post the code you are using to implement the watchdog?
  • Watchdog_Handle hWDT;

    void wdtCallback(UArg a0) {
    Watchdog_clear(hWDT);
    }

    void watchdog_init() {
    Watchdog_Params wp;
    Watchdog_Params_init(&wp);
    wp.callbackFxn = wdtCallback;
    wp.debugStallMode = Watchdog_DEBUG_STALL_ON;
    wp.resetMode = Watchdog_RESET_ON;

    hWDT = Watchdog_open(CC2650_WATCHDOG0, &wp);
    Watchdog_setReload(hWDT, 1500000); // 1sec (WDT runs always at 48MHz/32)
    }

    Watchdog reset was verified by commenting Watchdog_clear(hWDT) in wdtCallback, so I know its functioning.

    In the OAD procedure I am not sure wathcdog is expiring or not.
    Currently I know that if I omit its use by not calling watchdog_init on startup (no WD used) the OAD succeeds.

    How could this affect crc calculation?

    Tamir

  • Hi Tim,

    Any feedback on this topic?.

    Thanks
    Tamir
  • Hi Tim,

    I have successfully progressed with OAD with watchdog enabled.

    I don't know what exactly I have done but suspecting turning on optimizations solved the issue.

    Pretty weird, will get back to investigating this later.

    Thanks

    Tamir