aegotheles 2 Posted February 24, 2017 Share Posted February 24, 2017 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. Quote Link to post Share on other sites
dubnet 238 Posted February 24, 2017 Share Posted February 24, 2017 My understanding is that Delay() is functionally equivalent to Sleep() in EMT which I believe is LPM3. I also am of the understanding that the Suspend command puts the MCU in LPM4 and requires a interrupt to return to an active state. I welcome those more knowledgeable to correct this if I am mistaken. Fmilburn 1 Quote Link to post Share on other sites
energia 485 Posted February 25, 2017 Share Posted February 25, 2017 EMT low power unfortunately is not well documented but quite simple. How low of a power the device goes into depends on what interfaces are open and what device the Sketch runs on. The quick reference: If all Sketches are in delay() the idle loop is entered. The idle loop is a TI-RTOS task that consults the power manager and then determines what level of low power it can go to. Make sure that all unused pins are in the appropriate state according to the datasheet. Usually this is output high. Make sure that sensors that are connected are put into sleep mode if you intend to go to low power. Make sure that you call the .end() function on peripherals. e.g. Wire.end(), SPI.end(), Serial.end(), etc. This releases the constraint that the peripherals .begin() functions sets in the power manager. Use inter task communication interfaces to communicate to other tasks when low power should commence. Examples of the low power intertask communication can be found in the Energia examples under File->Examples->10.MultiTasking. Typically you would want to go for semaphore of Event. Pending on a semaphore also acts as low power mechanism. If you pend, the task stops becoming runnable and wont execute again unless the semaphore is posted. Hope this helps. I do have low power example Sketches in the pipeline but I won't be able to get to the in the next month or so. Robert Fmilburn, ahmedmibrahim and aegotheles 3 Quote Link to post Share on other sites
aegotheles 2 Posted February 25, 2017 Author Share Posted February 25, 2017 Thanks! This really helps clarify some of the questions. I'll add some tags to this post so others can find it at a later date. Quote Link to post Share on other sites
dubnet 238 Posted February 26, 2017 Share Posted February 26, 2017 @energia Thanks for providing the detail on low power modes in EMT. I have managed to pick up pieces of information on LPM here and there but didn't feel I had all the pieces of the puzzle. I did forget to mention to the OP about shutting down peripherals before going into power down mode. A little while back I did some quick experiments using EMT power down modes and Energy Trace. Wasn't able to get data sheet numbers but it was pretty close. Impressive. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.