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.

current consumption problem with MSP430F4250 device

Other Parts Discussed in Thread: MSP430F4250, MSP430F5510

Hi all,

Here, I am having a new query of MSP430F4250 device. I am designing low power battery operated pressure indicator product. but i am facing problem with current consumption of MSP430F4250 chip while using in low power modes.As per mentioned in the datasheet, supply current in case of LPM3 is suppose to be between 2-3 microamphere but in actual case i found it was 700 microamp. So kindly help me to get exact results also want to inform you that i am using SD16 ADC module, LCD module & flash module so what change in software code I need to do for this?

Thanks & regards...

waiting for reply

Ankita Waghela

Radix Electrosystems pvt ltd.

 

  • If you are sure you are in LPM3 mode, and you are seeing such high current consumption, then its likely you....

    • Have left a high consumption peripheral running
    • You have a GPIO output pin drawing a lot of current, or
    • You have some GPIO input pins floating in their linear region around the switching point

    The first two issues would generally give you a stable high current. The last one usually produces a current that varies a lot over time.

    Steve

     

     

  • Hi...Thanks for your  reply...but still I am not getting any fine decrement in current consumption values.

    I checked with the status of all peripherals I have used..but still unable to found that  which is drawing high current.

    Here, I am giving  you my software code which may require some changes to be done.

    I want to tell you that I have given external ref. voltage to SD16 ADC module through Vref. pin & routines "datainit(), delay() & convert_number()"

    are used for LCD display instead of using LCD module.

    void main()
    {
        volatile unsigned int i;
        WDTCTL=WDTPW+WDTHOLD;  //stop watchdog timer
        FLL_CTL0 |= XCAP18PF;         // Set load capacitance for xtal
        FLL_CTL1 |= FLL_DIV_8;      // using ACLK
        for (i=0; i<10000; i++)      // Delay to stablize crystal
        {   }
        P1DIR=0xFF;            //set port1 as output direction
        P1OUT=0x00;
        P2DIR=0xFF;            //set port1 as output direction
        P2OUT=0x00;
        P6SEL=P6SEL+0x03;  // ADC i/p channel0
       
        BTCTL=BT_ADLY_1000;   // basic timer interrupt delay
        IE2 |= BTIE;                       // Enable BT interrupt
        P5DIR = 0xFF;           // All P5.x outputs
        P5SEL = 0x00;             // All P5.x reset
       // P6DIR = 0xFF;          // All P6.x outputs
       // P6SEL = 0x00;            // All P6.x reset
        cnt=0;


    FCTL2 = FWKEY + FSSEL0 + FN1;     // MCLK/3 for Flash Timing Generator
      value = 0;                       // initialize value   
      SD16CTL = SD16LP+SD16SSEL0+SD16XDIV_3+SD16DIV_3;   // 1.2V ref, SMCLK/8
      SD16CCTL0 |= SD16DF+SD16OSR_512+SD16SNGL;         // single conversion with OSR=512
      SD16INCTL0 = SD16INCH_0+SD16GAIN_8+SD16INTDLY_0;      // set PGA gain to 8 & select A0 input
      for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup
       
    results=0;
    while (1)
      {
          _bis_SR_register(LPM3_bits+GIE);       // enter in LPM
         SD16CTL = SD16LP+SD16SSEL0+SD16XDIV_3+SD16DIV_3; 
           SD16CCTL0 |= SD16SC;                    // Set bit to start conversion
        while ((SD16CCTL0 & SD16IFG)==0);       // Poll interrupt flag for CH0
      _bis_SR_register(LPM3_bits+GIE);       // enter in LPM
        results = SD16MEM0;                     // Save CH2 results (clears IFG)
     
        _no_operation();                     // set break point here
        mv=results;
        mv=(mv*75)/32767;                 // to display o/p in mV
       mv=mv*100;

       results=mv;
         data_init();

          delay(30000);
         convert_number(results);    
      }
       write_SegC(value);
       copy();          
    }

    #pragma vector=BASICTIMER_VECTOR
    __interrupt void basic_timerISR(void)
     {
         _bic_SR_register_on_exit(LPM3_bits);    // Clear LPM0 bits from 0(SR)
     }             

    void write_SegC(char value)
    {
      char *Flash_ptr;                          // Flash pointer

      Flash_ptr = (char *)0x1040;               // Initialize Flash pointer
      FCTL3 = FWKEY;                            // Clear Lock bit
      FCTL1 = FWKEY + ERASE;                    // Set Erase bit
      *Flash_ptr = 0;                           // Dummy write to erase Flash seg

      FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

        *Flash_ptr = value;                   // Write value to flash

      FCTL1 = FWKEY;                            // Clear WRT bit
      FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
    }

    void copy(void)
    {
      char *Flash_ptrC;                         // Segment C pointer
     FCTL2 = FWKEY + FSSEL0 + FN1;       // MCLK/3 for Flash Timing Generator (mem write + flash clock select)

      Flash_ptrC = (char *)0x1040;              // Initialize Flash segment C ptr
     
      value1 = *Flash_ptrC;          // copy value segment C to seg D
     

    }

    So please help me for this.

    Waiting for reply.

  • Hi!

    I had some LPM3, LPM4 power consumption problems with a MSP430F5510.

    That's my thread where I got the help to solve the issue:

    http://e2e.ti.com/support/microcontrollers/msp43016-bit_ultra-low_power_mcus/f/166/p/109033/387437.aspx#387437

    i suggest you to read the thread, probably it's something similar.

     

    Regards,

    Carloalberto

  • Hi Carloalberto,

    Thanks..for your help but I am not satisfied with the thread.

     

    So still waiting for the reply

  • If I can give you a suggest I would try a simpler code where everything it's off. If there is also some hardware components that can draw current, disconnect them. Then you can put the mcu in low power and you have to get the power consumption in the datasheet. If you don't, do not move on ADC and other stuff.

**Attention** This is a public forum