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.

MSP430F5310: Power cycling at cold temperatures results in the PC at zero

Part Number: MSP430F5310


Tool/software:

For several years we have been running around 1000 units per month over a temperature from -40C to +85C.  Our product has another main processor and the MSP430F5310 functions as a co-processor to provide a Real Time Clock (RTC).   At five different temperatures we completely power off our product, which includes powering off the RTC (MSP430).  At -40C we have around 4 units out of the 1000 that the RTC (MSP430) gets stuck and will not run.  The number of four units fluctuates and sometime we don't have any that lock up.  We have gotten around this issue by powering the MSP430 with a coin cell battery, so when the product power cycles at the cold temperatures the MSP430 stays running. 

I have been determined to find this issue, with two failed units that have exhibited this problem I have reproduced at my desk by using cold spray...  I have discovered that the program counter (PC) will zero when the code returns from the PMM_setVCoreUp function.  I have attached a screen shot of the debugger and the unit stuck with the PC = 0x00004.. I believe that the PC gets completely cleared then runs to the 0x00004 where there is an infinite loop jumping to the address 0x4 as shown in the snippet.     

What peripheral is a address zero?  Is address zero in flash and is it possible to write code to produce a POR when this condition happens?  Note the User NMI flash access violation or bus error didn't catch this out of memory error.

  • Some more information.... To be able to power off the unit, I exit the debugger mode in the IAR tool and leave the SPI by wire attached.  I freeze spray the MSP430, disconnect the battery and then reconnect.  The MSP430 is stuck, I then start the IAR debugger by using the "Project" tab and then selecting the "Attach to Running Target" selection. 

    Also, there are times that I have captured this and the PC address was F0000 instead of 00004.  

  • Hi Dave,

    I suppose this is the reserved address for the peripheral, I aslo do not find its definition.

    By the way, this might be related to below errata:

    https://www.ti.com/lit/er/slaz267ac/slaz267ac.pdf?ts=1730881269316&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FMSP430F5310 

    You could take the try with its workaround.

    B.R.

    Sal

  • I'm using the latest PMM library and the code in the PMM_SetVCoreUp has the following comments.... 

    //The code flow for increasing the Vcore has been altered to work around
    //the erratum FLASH37.
    //Please refer to the Errata sheet to know if a specific device is affected
    //DO NOT ALTER THIS FUNCTION  

    So, I'm assuming that the work around is already in place.  Keep in mind that this is only happening on 0.4% of the units that we test over temperature. I'm wondering if I should remove the chip from my product and submit to TI for failure analysis?

  • Hi Dave,

    Okay, I see. Please correct me if misunderstanding:

    The failed unit will halt after it running "PMM_SetVCoreUp". You find sometimes it stuck at PC=0x4 (This is in peripheral address); and also PC=0xF 0000 (This is in code flash).

    Does this means that the code is changed? If you read the memeory, is the failed one same as the others?

    By the way, for the failed one, re-program could fix it or not?

    B.R.

    Sal

**Attention** This is a public forum