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.

CC430 operates at 1.2V

Other Parts Discussed in Thread: CC430F6137, TPS62200

Hi,

I am using CC430F6137 mcu in my application. MCU is powered by TPS62200 regulator (3V output). When CC430 is in LPM4 mode TPS62200 Enable pin is controled by CC430 (power consumption reduction). TPS Enable pin is controlled by CC430 High-Side Monitor SVMH interrupt (SVMHIFG and SVMHVLRIFG).

In active mode, TPS operates continuously. On key press CC430 goes into LPM4 mode where TPS is controlled by CC430. Pressing the key in LP4 mode causes CPU reset (WDTCTL = 0;). The CPU restarts and operates in active mode until the next key press.

LPM4 operation:

When voltage falls below low_voltage_thr the SVMHIFG interrupt turns on the TPS and changes the threshold to high_voltage_thr (SVSMHRRL bits).

When voltage rises above high_voltage_thr the SVMHVLRIFG interrupt turns TPS off and changes threshold to low_voltage_thr (SVSMHRRL bits).

Voltage thresholds are set in accordance with Available SVMH Settings Versus VCORE Settings.

It works, but I experienced the following problem: After approximately ten transitions into LPM4 mode the voltage is just ~1.2V. CC430 still works. If I press the key cpu resets, voltage is 3V. On next key press CC430 goes into LP4 mode, voltage is 1.2V again. Thus, until I turned off/on the power.

The low_voltage_thr is 2.35V and high_voltage_thr is 2.65V.

Why voltage levels change? Why BOR doesn't reset the CPU because the voltage is too low?  What could be wrong?




#pragma vector=SYSNMI_VECTOR

__interrupt void sysNmiISR(void)

{
    switch (SYSSNIV)

    {
        case 0x0012:            // SVMHVLRIE


            P1OUT &= ~BIT0;        // TPS off

            PMMCTL0_H = 0xA5;
            PMMIFG = 0;
            PMMRIE |=  SVMHIE + SVSHPE + SVSLPE;
            SVSMHCTL &= ~0x0007;
            SVSMHCTL |=  SVMHE + SVSHE + 4 ;        // low level, 2.35V
            PMMCTL0_H = 0x00;

            break;

        case 0x0004:            // SVMHIE


            P1OUT |= BIT0;        // TPS on

            PMMCTL0_H = 0xA5;
            PMMIFG = 0;
            PMMRIE |=  SVMHVLRIE + SVSHPE + SVSLPE;
            SVSMHCTL &= ~0x0007;
            SVSMHCTL |=  SVMHE + SVSHE + 5;        // high level, 2.65V
            PMMCTL0_H = 0x00;
            break;

    }

}


Regards,

Tomi

**Attention** This is a public forum