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.

RTOS/CC1310: Graceful way to reset CC1310

Part Number: CC1310

Tool/software: TI-RTOS

There are certain events where I wish to reset the micro outside of the Watchdog system. I call the 3 lines below, and many times the device no longer executes code, it hangs. This is unacceptable.

Is there a more correct/graceful way of resetting the 1310?

Power_disablePolicy();

CPUcpsid(); //disable interrupts

SysCtrlSystemReset();

  • Hi,

    SysCtrlSystemReset() generate a System Reset and should result in a complete power-up sequence and CPU boot.
    Can you connect to running target and see where in your application it hangs?

    You could also try trigger a Warm Reset by writing to the CPU_SCS:AIRCR.SYSRESETREQ bit.

    Best Regards,
    R.M
  • R.M.

    I will connect to a target and report my results, but could you elaborate on how to do the warm reset? Where/how do I write to that bit?

    Thanks

  • I suggest that you create a user level reset-routine that you can call at any time to "reset" the CC1310. You can call this at any time and not worry about what internal reset routines the processor is going through. You can also call it first thing from main().

    The only issue is how you want to handle the RF coprocessor.
  • "The only issue is how you want to handle the RF coprocessor."

    I'm looking for guidance in this area.

    Thanks
  • Hi,

    Below is an example on how to set the SYSRESETREQ bit: 

        // Read CPU_SCS:AIRCR
        uint32_t reg = HWREG(CPU_SCS_BASE | CPU_SCS_O_AIRCR);
        // Mask out VECTKEY and SYSRESETREQ
        reg = reg & ~CPU_SCS_AIRCR_SYSRESETREQ_M & ~CPU_SCS_AIRCR_VECTKEY_M;
        // Set SYSRESETREQ bit and VECTKEY
        reg = reg | (1 << CPU_SCS_AIRCR_SYSRESETREQ_S) | (0x05FA << CPU_SCS_AIRCR_VECTKEY_S);
        // Write back to CPU_SCS:AIRCR register (will reset device)
        HWREG(CPU_SCS_BASE | CPU_SCS_O_AIRCR) =  reg;

    You can find more info on reset types (Warm Reset etc) in the CC1310 TRM (chapter 6.7):

    www.ti.com/.../swcu117

    Best Regards,

    R.M