Search the Community

Showing results for tags 'LPM'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks

Calendars

  • Community Calendar

Found 10 results

  1. First, I'd like to say thanks for the implementation of EasyLink for the cc1310/cc1350 in Energia 18. Last year the community was invaluable in helping me develop some MSP430FR5949/BME280 dataloggers for my dissertation research. I'm working on a new version based off the cc1310, because well, transmitting my data wirelessly sure beats having to recover the dataloggers. I have a couple questions that I have been unable to answer - 1. The EMT documentation suggests that if you use delay, during compiling this is converted to a low power mode. Is this only for the MSP430/432 variants? The main reason I ask is because sleep(), sleepSeconds(), etc... do not appear to be available for the cc1310/cc1350. Low power modes would be essential for this project. 2. As general advice, any opinions if I would be better off using Sensor Controller Studio, TI-RTOS, CCS for the development of this project and then simplify and port functionality back to Energia? As always, thanks for the help and insight.
  2. Hi, I'm newbie in low power mode. I've seen a lot of examples but I'm not able to see a low current in LMP4 mode. The lowest current I can see is about 90uA. Is there a minimal working sketch in order to run LPM4 mode and wake up the microcontroller with an external interrupt and switch on a led? My hardware is launchpad V1.5 with Msp430G2553. Both red an green leds are off. I've removed all the jumpers (Vcc and uart, NOT rst and test) and my power supply is a battery at 3.5V. Thank you for your help and sorry for this newbie question.
  3. Good morning everybody, I'm Curtis, Fairly new to the world of MSP430, but VERY HAPPY that this forum exists. Energia has made my life much easier. I was about to make a hole in my wall by repeatedly bashing my head against it, but Energia removed a bunch of the minutia and provides a great abstraction layer and way of programming the MSP4230G2553 controller. See ya 'round, Curtis
  4. I was wondering if anybody has been able to get LPM modes working with Energia EMT and the MSP432. I have tried a few things, but have been unsuccessful in lowering the current draw of the MSP432. Any insights would be appreciated. Thanks!
  5. G'day, How can I enter/exit the LPM's on a Tiva? (Can do it OK on the 430) Grant
  6. My question is about where in the code I
  7. Could someone throw out some example code of how I could for instance, run some code, go into LPM3 or 4 for 60 seconds, then run the code again? So: Loop: Do something Sleep for 60 sec Couldn't the watch dog timer be used to accomplish this? I have looked at some examples, I am just having a hard time seeing how to make it all work in the Energia IDE. Here is the sample code I have been looking at...I get what is going on here, but what I want is to get rid of the parts setting LED on or off, and turn it into a function so that I can call it, it will sleep, then the ISR will wake it up and clear the sleep mode...re-run the code, go back to sleep, etc. Any help would be greatly appreciated.
  8. I am currently working on a battery operated wireless doorsensor. A message is sent whenever a magnetic switch causes an interrupt. I have read some topics on this forum and changed some lines in Winterrupts file and created the following sketch: #include <x10rf.h> #define intpin1 P1_5 #define txpin P1_7 #define txvcc P1_0 #define reps 4 x10rf myx10 = x10rf(txpin,0,reps); void setup() { myx10.begin(); pinMode(intpin1,INPUT_PULLUP); pinMode(txvcc,OUTPUT); digitalWrite(intpin1, HIGH); digitalWrite(txvcc, LOW); attachInterrupt(intpin1, Wake, CHANGE); } void loop() { LPM4; } void Wake() { int state = digitalRead(intpin1); digitalWrite(txvcc, HIGH); switch(state) { case 0: myx10.x10Security(3,0x84); break; case 1: myx10.x10Security(3,0x04); break; } delay(10); digitalWrite(txvcc, LOW); } This is working great but I have some questions. How can I check that MCU is running in LPM4? Do I need CCS to check (debug) this or are there other ways? At some point I want to add sensors to periodically report temperature and light conditions. What is a power efficient way to do this? I know timers don't work in LPM4. Should I switch to LPM3 or use an external circuit to wake the MCU every x minutes?
  9. So finally coded up my lm4970 project. And using a interrupt on switch p1.3, and tried to get LPM. Well, it didn't work. If I remove LPM, it works, but with a huge issue where it keeps looping, but still works. So the only problem is my main code, not the usi/i2c/lm4970 code. What I expect it to do: Initialize everything (Works)Go Into While LoopSwitch on State Variable Run given Case, Break out of Switch Enable Interrupts and Go to Sleep ( LPM4 + GIE )Sleep until Interrupt Interrupt Disables GIE and LPM4, Increases State Variable Exit Interrupt, reach end of While Loop, back to Switch Switch on State Variable, repeat Doesn't do that. If I remove the LPM4_Bits, so only GIE is set and disabled, the code works (I need to debounce in the interrupt, planning on using watchdog or simple delay). But since it never goes to sleep, the while loop keeps running, causing other issues. How can I fix this. In this given case, I could just have the switch/case in the interrupt, but I plan on doing some manual control that would not work well in it. Code below: #include "common.h" #include "i2c.h" #include "lm4970.h" // PB is P1.3 Pushbutton on Launchpad int lm4970_state = 0; // lm4970 State void cpu_init(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WatchDog Timer BCSCTL1 = CALBC1_1MHZ; // Set range to 1mhz Calibrated Range DCOCTL = CALDCO_1MHZ; // Set DCO to 1mhz Calibrated DCO // SMCLK = DCO = 1MHz } void pushbutton_init(void) { P1SEL &= ~PB; // Set PB as GPIO (Part 1) P1SEL2 &= ~PB; // Set PB as GPIO (Part 2) P1DIR &= ~PB; // Set PB as Input P1REN |= PB; // Set PB Pull-Up/Pull-Down Mode P1OUT |= PB; // Set PB Pull-Up P1IES |= PB; // P1.3 Interrupt set for High to Low P1IFG &= ~PB; // P1.3 Interrupt Flag Cleared P1IE |= PB; // P1.3 Interrupt Enabled } // Port 1 interrupt service routine #pragma vector = PORT1_VECTOR __interrupt void Port_1_ISR (void) { // Clear Low Power Mode and Disable Interrupts to Allow MSP to handle commands before returning to sleep _BIC_SR(LPM4_bits + GIE); // _BIC_SR(GIE); lm4970_state++; // Increase LM4970 state by 1 if (lm4970_state > 9) lm4970_state = 0; P1IFG &= ~PB; // P1.3 IFG cleared } int main(void) { cpu_init(); i2c_init(); pushbutton_init(); lm4970_init(); // Setup Complete, now check state, run function, then go to sleep with interrupts while(1) { switch ( lm4970_state ) { case 0: // Off lm4970_shutdown(); break; case 1: // Regular Audio Sync lm4970_audio_sync(); break; case 2: // Randomized Audio Sync lm4970_random(); break; case 3: // Blue *snipped* case 9: // White lm4970_led_color(lm4970_state - 2); break; case 10: // Future Options, Like Color Fade Mode default: // Reset State, Turn Off lm4970_state = 0; lm4970_shutdown(); break; } _BIS_SR(LPM4_bits + GIE); // Low Power Mode x, Enable Interrupts // _BIS_SR(GIE); // Enable Interrupts } }
  10. The same question is posted on reddit here: http://redd.it/18bkdl We are meeting with our project sponsors tonight and would love to have some kind of answer as to what's going on with our power draw. We are using an MSP430 Launchpad to develop a small project to be powered by a solar cell. Eventually we will have a single hardware interrupt, and a 30 Hz counter interrupt to update an LCD. We have estimated our power budget to be around 20 micro Watts. Oddly, with the software I have written and provided below, we are getting around 30 micro amps at 2.2V when we separate the MSP from the board. Stranger still, no matter if we try to fully load the processor, or just drop it into LPM4 we always get roughly the same power draw which doesn't make sense. I'm hoping you redditors can either find a problem with my code or how we are testing power draw. We are using the LEDs to confirm functionality of the interrupts, and then we detach the MSP from the board to test power. I have tried to comment the code well, if anything is unclear I'll try to explain. Thanks! #include <msp430g2553.h> #define greenLED 0x40 // BIT6 #define redLED 0x01 // BIT0 #define TRIGGER 400 // VLO interrupt delay. Base frequency is 12kHz. void main(void) { //Set up system clocks WDTCTL = WDTPW | WDTHOLD; // Stop WDT BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0; // DCO clock with divide by 1 if (CALBC1_1MHZ != 0xFF) { DCOCTL = 0x00; BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1MHz DCOCTL = CALDCO_1MHZ; } BCSCTL1 |= XT2OFF + DIVA_0; // Disable XT2CLK and set to divide by 1 //Set up port 1 P1DIR = 0xff; // Configure all of Port 1 to output to reduce power consumption //Set up A0 timer and VLO clock source BCSCTL3 = XT2S_0 + LFXT1S_2 + XCAP_1; //Set the ACLK clock to the internal VLO, 6pF cap, low frequency operation. TACCR0 = TRIGGER-1; // Trigger is the timer A count limit. (# of counts until the interrupt fires) TACCTL0 |= CCIE; // Enable timer A interrupt TACTL = TASSEL_1 + MC_1 + TACLR; // ACLK, up mode, clear timer. //Set up LEDs P1DIR |= greenLED; // Set P1.6 to output direction P1OUT &= ~greenLED; // Set green LED off P1DIR |= redLED; // Set P1.0 to output direction P1OUT &= ~redLED; // Set red LED on //Set up Push Button (P1.3) P1SEL &= ~0x08; // Select Port 1 P1.3 (push button) P1DIR &= ~0x08; // Port 1 P1.3 (push button) as input, 0 is input P1REN |= 0x08; // Enable Port P1.3 (push button) pull-up resistor P1IE |= 0x08; // Port 1 Interrupt Enable P1.3 (push button) P1IFG &= ~0x08; // Clear interrupt flag (just to be sure) _BIS_SR(LPM3_bits + GIE); // Enable interrupts } #pragma vector=PORT1_VECTOR // Port 1 interrupt service routine __interrupt void Port_1(void) { P1IFG &= ~0x08; // P1.3 Interrupt Flag cleared P1OUT ^= greenLED; // Toggle LED state } #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A(void) { P1OUT ^ = redLED; } power_sim.c