Low power mode (LPM) usage is highly recommended. One of the necessary steps to achieve low power consumption in an MSP430 application is to minimize the time spent active mode and maximize the time in low power modes. Peripherals can be configured to operate without CPU intervention and the CPU only needs to wake up to perform critical tasks and quickly return to low power mode.
An application that always stays in active mode is not energy efficient and could significantly reduce lifetime for battery-powered applications.
This remark is issued when no LPM-entering instruction can be
found in any code file in the project.
__bis_SR_register( LPM0_bits);
//****************************************************************************** // MSP430G2xx3 Demo - Basic Clock, LPM3 Using WDT ISR, 32kHz ACLK // // Description: This program operates MSP430 normally in LPM3, pulsing P1.0 // at 4 second intervals. WDT ISR used to wake-up system. All I/O configured // as low outputs to eliminate floating inputs. Current consumption does // increase when LED is powered on P1.0. Demo for measuring LPM3 current. // ACLK = LFXT1/4 = 32768/4, MCLK = SMCLK = default DCO ~ 800kHz // //* External watch crystal installed on XIN XOUT is required for ACLK *// // // // MSP430G2xx3 // --------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P1.0|-->LED // // D. Dang // Texas Instruments Inc. // December 2010 // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include <msp430g2553.h> void main(void) { BCSCTL1 |= DIVA_2; // ACLK/4 WDTCTL = WDT_ADLY_1000; // WDT 1s/4 interval timer IE1 |= WDTIE; // Enable WDT interrupt P1DIR = 0xFF; // All P1.x outputs P1OUT = 0; // All P1.x reset P2DIR = 0xFF; // All P2.x outputs P2OUT = 0; // All P2.x reset while(1) { int i; P1OUT |= 0x01; // Set P1.0 LED on for (i = 5000; i>0; i--); // Delay P1OUT &= ~0x01; // Reset P1.0 LED off __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 } } #pragma vector=WDT_VECTOR __interrupt void watchdog_timer (void) { __bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR) }
See the rest of the code examples for all MSP430 devices here!
Want to squeeze a few more nanoAmps out of your application? Leverage the e2e (Engineer-to-Engineer) online community to get all of your ULP questions answered! Or, if you are an Ultra-Low Power pro, give back to the community with your expertise.
Go to MSP430's e2e online forum!
If you are posting on the forums in relation to this rule, try using the tag "ULP_1.1"
For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Compiler/diagnostic messages/MSP430/10371 here. |