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.

CCS/MSP430F2617: MSP430F2617 executes random code when voltage is shut down

Genius 4170 points
Part Number: MSP430F2617

Tool/software: Code Composer Studio

Hello all,

this time i got another tricky question for all of you, wheather one has expirienced this behaviour before :)

We do have a board with a MSP430F2617 and some FRAM attached to it via I2C and a lot other stuff going on, but now after some time in field the following corruption of FRAM ( remember this one is external not internal to the MSP430) did happen.

Some address, always the same, did get overwritten and at first look we did not know why this was happening.

After some investigation now, we found out that indeed the MSP430 is executing an I2C FRAM write command, which was completly unreachable in the

while(1) loop.

So we probed the I2C pins and the Vcc of the MSP430, and around 2 V Vcc ( after shutdown the 3V3 took about 20 ms to drop down to 0 V ) the MSP43ß I2C line is executing a write to exactly the Adress that

gets corrupted in field.

So here is the question to the experts: Have you ever expirienced behaviour like this?

What could be triggering this execution of some rather random code snippet, maybe the program counter is set to a certain value when some brown out happenes?

Note that as a workaround, for example setting the voltage supervisor in hardware to around 2,5V will help, also altering the written code in the while(1) loop, by for example adding another if(flag== blablba){

will also help to get around this problem.

But all those things treat the symptoms and not the root cause i fear, so I would rather prefer some explenation of that phenomenon.

And what does the MSP430 do when reaching the voltage supervisor level, does it halt internally? or shut down? or simply only set a flag, but executes the following codes anyway?

Thanks a lot for reading.

  • Seb,

    I would assume you let the while(1) execute at 8 or even 16 MHz correct. In such a case you would violate the frequency vs. supply voltage spec and will overclock the CPU at lower voltages. In such a case the device will run out of control and might execute unpredictable code.

    In such case you need either reduce frequency before remove power or activate SVS ensuring device is pulled into reset before it reaches critical supply level for a dedicated frequency.
  • indeed, indeed, this makes sense, thanks a lot, i will give it a try by executing the code in 1 MHz MCLK, or at least lower to look at the behaviour.

    This is of course happening to a lot if not all devices, I do not think a lot of people think about shutdown and their respected frequency. I have a lot of products out running on 24 MHz, I dont know when they get shutdown and never expirienced any issues with them, of course this is a rather statistical issue, but on these certain devices we could reproduce exactly the same error behaviour each and every time..

    So I will try running a lower clock, and let everything else the same, so then maybe the behaviour does occure on a lower voltage level.

    lets see what happenes, but thanks for the advice.
  • One additional note a lot of people do not consider this during power up as well! If you power up slope is slow and you switch quickly to a higher frequency without considering DVCC is high enough the same problem can appear as well.

    This is a problem a lot of people face even if the spec clearly states it it is very application depended. Therefore the SVS is an important item for proper operation.