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.

TMS320F28379D: How to Detect a Hard Reset on TMS320F28379D?

Part Number: TMS320F28379D
Other Parts Discussed in Thread: TMS320F28377D

Tool/software:

Dear TI hello,

I have a client who asked me to investigate their product. They are using the TMS320F28377D, and it seems that a reset is occurring, which they cannot detect via CAN.

I connected a JTAG probe to monitor the code execution, and I noticed that the eCAP counter does not exceed 1000, even though it is clocked at 200 MHz, which leads me to suspect a hard reset.

I developed a code to monitor this behavior, but since a reset is occurring, I am not sure if I managed to capture it. Here is the code I developed:

#pragma DATA_SECTION(por_count, ".TI.ramfunc");
#pragma DATA_SECTION(xrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(wdrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(nmiwdrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(hwbistn_count, ".TI.ramfunc");
#pragma DATA_SECTION(hibresetn_count, ".TI.ramfunc");
#pragma DATA_SECTION(sccresetn_count, ".TI.ramfunc");

volatile Uint16 por_count = 0;
volatile Uint16 xrsn_count = 0;
volatile Uint16 wdrsn_count = 0;
volatile Uint16 nmiwdrsn_count = 0;
volatile Uint16 hwbistn_count = 0;
volatile Uint16 hibresetn_count = 0;
volatile Uint16 sccresetn_count = 0;

void check_reset_cause(void)
{
    Uint16 reset_cause = HWREGH(0x80); // Lire le registre RESC

    // Vérifier chaque bit et incrémenter le compteur correspondant
    if (reset_cause & 0x0001) por_count++;
    if (reset_cause & 0x0002) xrsn_count++;
    if (reset_cause & 0x0004) wdrsn_count++;
    if (reset_cause & 0x0008) nmiwdrsn_count++;
    if (reset_cause & 0x0020) hwbistn_count++;
    if (reset_cause & 0x0040) hibresetn_count++;
    if (reset_cause & 0x0100) sccresetn_count++;

    // Effacer les bits de reset pour éviter les faux positifs
    HWREGH(0x80) = reset_cause;
}

How can I reliably detect a reset on the TMS320F28377D, knowing that my eCAP counter does not exceed 1000 and I suspect a hard reset?

Thank you in adance 

  • Hi UserHomeInit,


    Please check the RESC register, that retains the information of the reset even on Xrsn

    The reset type is POR, so it should only be erased on power cycle.

    Instead of writing code why don't you just read the register in register view in CCS

    Thanks