aegotheles

Sleep Modes with cc1310 / cc1350

5 posts in this topic

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.

 

 

Share this post


Link to post
Share on other sites

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 likes this

Share this post


Link to post
Share on other sites

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

aegotheles and Fmilburn like this

Share this post


Link to post
Share on other sites

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.  

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now