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.

MSP430F149: Wakeup From Standby Mode

Part Number: MSP430F149

Hi, 

We encountered an unusual situation in our code when we speed up the MSP430F149 from a standby mode.

Initially the MSP430F149 is configured this way…

 

    DCOCTL = 0x40;                // speed up the computer

    BCSCTL1 = 0x85;               // 40-84 ~ 750 KHz   --   40-85 ~1.25 MHz  --   a0-84 ~950 KHz

    BCSCTL2 = 0x00; 

 

After a couple of seconds we put the MSP430 in standby mode

The MSP430 is in standby mode for a couple of seconds:

 

     DCOCTL = 0x00;                    // go back to low power mode

      BCSCTL1 = 0x80;                   // slow down the computer

      …..

      …..

      ….. After 5 seconds……

               

Then we speed up the MSP430:

 

   DCOCTL = 0x40;                      // speed up the computer

    BCSCTL1 = 0x85;                     // 40-84 ~ 750 KHz   --   40-85 ~1.25 MHz  --   a0-84 ~950 KHz

    P5OUT ^= BIT3;                         //Toggle Pin 5.3 is not executed

    REGULATOR_ON;

    EIGHT_VOLTS_ON;

 

 

MSP running at 1.25Mhz.  P5OUT ^= BIT3 is not executed    the first time,                   

 

 

 

MSP running at 950Khz. P5OUT  P5OUT ^= BIT3 it’s executed                

 

 

 

Initial clock configuration

  DCOCTL = 0x40;                // speed up the computer

  BCSCTL1 = 0x85;               // 40-84 ~ 750 KHz   --   40-85 ~1.25 MHz  --   a0-84 ~950 KHz

  BCSCTL2 = 0x00; 

 

 

Standby mode configuration 

     DCOCTL = 0x00;                    // go back to low power mode

      BCSCTL1 = 0x80;                   // slow down the computer

 

 

Based on the datasheet, we know that the MSP430 needs at least 6 microseconds to wake up from standby (Wake up from standby in less than 6 µs).

But we expected the MSP to be ready before trying to execute the next instruction.

We solved this problem by adding an "extra" command after BCSCTL1 = 0x85; instruction or by slowing down the MSP430 at 950 KHz.

Is this the expected behavior or is there something else to this situation?

 

Thanks,

 

Jean                 

  • Hi Jean,

    Backing up a step to make sure we are on the same page as I'm having a little bit of trouble following what happens: When you say you are going to low power mode in this example - which low power mode do you go to- LPM3? Are you using the SCGx bits to go to LPM (e.g. __bis_SR_register(LPM3_bits); )? Sharing the code that happens in between your setting of DCOCTL/BCSCTL1 might help clear this up. 

    I see that you are clearing the DCOCTL bits and have this commented as going to low power mode - however, that will not put the part in low power mode, rather that will simply slow the DCO way down. Is this line intending to put the part in LPM or do you do that afterwards, with another line of code? (this is where seeing a little more of your code might help us understand)

    If what you are trying to do is put the part in low power mode, then this code example demonstrates going to LPM3: https://dev.ti.com/tirex/explore/node?node=AC84.BwX-KmnCShGYaRcjQ__IOGqZri__LATEST  You do not need to modify the clock, simply set the appropriate low power mode bits. You can also find more information in the user's guide www.ti.com/lit/pdf/slau049 section 2.3 Operating Modes.

    Or is there a different reason you are setting DCOCTL to a very low speed? 

    Regards,

    Katie Pier

    MSP WW Apps Manager

  • Hi Katie, 

    Currently, we are not using any low power mode (the comment in the code is wrong), we just slow down the DCO and then speed it up again.

    Thanks,

    Jean

  • It would seem that errata BCL5 would apply since you are changing RSEL in steps larger than 1.

  • Thanks, David. I followed the Errata instructions and that fixed my problem.

**Attention** This is a public forum