Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by estratos

  1. I was trying to port all the panStamp NRG project done for Arduino IDE to Energia-1.6.10E18. I initially wanted to port it as a separate hardware under .energia15/packages/hardware/ so I simply copied the project from




    The problem is that the boards listed in panstamp_nrg/1.0.7/boards.txt are not displayed under Energia->Tools->Board. Is adding new hardware cores disabled for Energia? Adding new variants under msp430/1.0.3/ works perfect.

    Thanks for your time.

  2. For anyone interested, adding the following piece of code in pins_energia.h enables Serial1:

    static const uint8_t AUX_UARTRXD = 14;  /* Receive  Data (RXD) at P2.5 */
    static const uint8_t AUX_UARTTXD = 15;  /* Transmit Data (TXD) at P2.6 */
    #define AUX_UART_MODULE_OFFSET 0x20
    #define SERIAL1_AVAILABLE 1


  3. Thanks Fmilburn. The MSP430G2955 is a very good option as well. Did you notice any  problem on any of the peripherals ? The variants + boards.txt approach is very simple but perfect if it works. I remember having had to add some specific core code for the CC430F5137 when I created the panStamp NRG project.

    Thanks Rei. Is this an ongoing project? Is there any list of third party boards (json files) supported by Energia as with the Arduino project?




  4. Dear colleagues,

    It's been a while since I used Energia and MSP's (other than my loved CC430's) to develop a project so I've just installed the latest version of the IDE and updated from Boards->Manager. I was a bit surprised to see that the list of supported devices is still quite short. What is people doing when developing for platforms not appearing in the list? Are they creating their own board cores? Do they fork from similar boards?

    My project is quite simple and could probably be solved with a bare MSP430F2553 but I wanted to stay a bit more conservative so I was looking into more powerful options, something like the MSP430G2755 for example.

    Thanks guys for your feedback,


  5. I found that commenting Clock_start() out and setting clkParams.startFlag = TRUE does make the clock periodically call the user function:

    #include <ti/sysbios/knl/Clock.h>
    #include <ti/sysbios/BIOS.h>
    Clock_Params clkParams;
    Clock_Struct clkStruct;
    Clock_Handle clkHandle;
    void clkFxn(UArg arg0)
      digitalWrite(RED_LED, !digitalRead(RED_LED));
    void setup()
      pinMode(RED_LED, OUTPUT);
      digitalWrite(RED_LED, HIGH);
      clkParams.period = 5000000/Clock_tickPeriod;
      clkParams.startFlag = TRUE;
      Clock_construct(&clkStruct, (Clock_FuncPtr)clkFxn, 5000000/Clock_tickPeriod, &clkParams);
    void loop()
  6. Hi Rei,


    The compiler complained about some lacking .h resources for the MSP432 but I was building for the CC1310 in fact.


    With MSP432 board package 3.8.0, the clock runs one time but freezes after.


    Have you posted the question on the E2E forum and reported the issue on the GitHub Energia repository?


    Yes, I've posted the question in the TI forum but they are suggesting that probably Energia was overwriting some of the functions. I'm now going to open an issue on GitHub.


    Thanks again Rei for your time,



  7. Hi Rei,


    I was never able to try with Galaxia library due to some compiling problems. In any case, I've verified that you are following the same strategy as me to drive the Clock function. First you fill clkParams, then create or construct the clock object and finally start the clock. The only difference is that you are directly entering msec into clkParams.period and  ClockTimeOut_ms. This is weird in fact since I've verified that ClockTimeOut needs to be specified in microseconds/Clock_tickPeriod.


    What happens after running clock_start() is that the callback function is called after ClockTimeOut but nothing else. It's like clkParams.period takes no effect at all.




  8. I'm trying to test the clock functionality available on TIRTOS for the CC1310 SOC from Energia but I'm finding difficulties to make the clock trigger periodically (every 5 seconds in the example). This is what I'm doing so far:

      #include <ti/sysbios/knl/Clock.h>
      #include <ti/sysbios/BIOS.h>
      Clock_Params clkParams;
      Clock_Struct clkStruct;
      Clock_Handle clkHandle;
    clkParams.period = 5000000/Clock_tickPeriod;
    clkParams.startFlag = FALSE;
    /* Construct a periodic Clock Instance */
    Clock_construct(&clkStruct, (Clock_FuncPtr)clkFxn, 5000000/Clock_tickPeriod, &clkParams);
    clkHandle = Clock_handle(&clkStruct);
    Clock_setTimeout(clkHandle, 5000000 / Clock_tickPeriod);

    I wonder whether Energia is overwriting Clock in some way.


    Thanks for your ideas,



  9. Can we ask Energia to include an external ino file (located in an external folder) in the ino2cpp build process? This would be like using an external library with an ino file inside.


    This would be a on time change so editing platform.txt might be the perfect solution.




  10. I generally like the way the Energia team has integrated TI-RTOS with the traditional setup-loop structure and how new tasks are automatically added with every new setup-loop duple. However, I'd like to manage the radio of the CC1310 from a separate task, hidden from loop(). Task_construct should be the way to do this but calling this function seems to be halting the MCU somewhere in the Energia stack. I guess task management is something only allowed to the Energia stack but I wonder whether there is still a way for us to create and run new tasks apart from the ones automatically generated by Energia.


    Thanks for your time,




  11. Running my first tests on my new MSP432 Launchpad. However I'm getting this error when trying to flash the board from Energia 18 under Ubuntu 16.04:

    Sketch uses 23,848 bytes (9%) of program storage space. Maximum is 262,144 bytes.
    /home/daniel/applications/energia-1.6.10E18/hardware/tools/DSLite/DebugServer/bin/DSLite load -c /home/daniel/applications/energia-1.6.10E18/hardware/tools/DSLite/MSP_EXP432P401R.ccxml -f /tmp/build121c3caa5b27c6be2f7efa34131b78ee.tmp/Blink.ino.elf 
    Failed: Operation was aborted
    DSLite version
    Configuring Debugger (may take a few minutes on first launch)...
    	Initializing Register Database...
    	Initializing: CS_DAP_0
    	Executing Startup Scripts: CS_DAP_0
    	Initializing: CORTEX_M4_0
    	Executing Startup Scripts: CORTEX_M4_0
    fatal: CS_DAP_0: Error connecting to the target: (Error -260 @ 0x0) An attempt to connect to the XDS110 failed. The cause may be one or more of: no XDS110 is connected, invalid firmware update, invalid XDS110 serial number, or faulty USB cable. The firmware and serial number may be updated using the xdsdfu utility found in the .../ccs_base/common/uscif/xds110 directory of your installation. View the ReadMe.txt file there for instructions. (Emulation package 
    fatal: CS_DAP_0: Error connecting to the target: (Error -260 @ 0x0) An attempt to connect to the XDS110 failed. The cause may be one or more of: no XDS110 is connected, invalid firmware update, invalid XDS110 serial number, or faulty USB cable. The firmware and serial number may be updated using the xdsdfu utility found in the .../ccs_base/common/uscif/xds110 directory of your installation. View the ReadMe.txt file there for instructions. (Emulation package 

    It's like a driver-related problem but most of the help found in the Internet is related to Windows installations. I've followed the instructions found here for Linux installs. 


    On the other hand, dmesg shows the USB interface being successfully detected:

    [16999.401946] usb 1-2: new full-speed USB device number 13 using xhci_hcd
    [16999.531131] usb 1-2: New USB device found, idVendor=0451, idProduct=bef3
    [16999.531134] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [16999.531136] usb 1-2: Product: XDS110 ( with CMSIS-DAP
    [16999.531138] usb 1-2: Manufacturer: Texas Instruments
    [16999.531139] usb 1-2: SerialNumber: M4321005
    [16999.531685] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
    [16999.532350] cdc_acm 1-2:1.3: ttyACM1: USB ACM device
    [16999.533201] hid-generic 0003:0451:BEF3.0007: hiddev0,hidraw1: USB HID v1.11 Device [Texas Instruments XDS110 ( with CMSIS-DAP] on usb-0000:00:14.0-2/input5

    Thanks in advance for your help.



  12. Energia 18 is finally supporting the new boards and libraries manager provided by the Arduino IDE. My question is: is there a URL pointing to the necessary JSON file to install the Energia cores on the Arduino IDE? Once Energia is ready to comply with the 1.6.x IDE architecture introduced by Arduino I don't see any reason to limit the use of the Energia cores and libraries to a single IDE.


    Thanks in advance for your responses.


  13. Hi @@jpnorair and @@spirilis,


    We are also behind this SOC. We were in fact looking for a Cortex-Mx solution for the new generation of panStamps so TI's announcement is quite timely.


    As @@spirilis says, we'd rather go with an integration on Arduino 1.6. Unlike Energia, Arduino 1.6 isolates every architecture and platform from the rest, giving you full freedom to maintain your own cores and libraries. Moreover, Arduino 1.6 allows creating custom menus and handle multiple compilers and bootloaders without having to touch a single line of Java code. On the downside, It's almost impossible to make your custom platfoms part of the official Arduino distro so you usually end by releasing your sources in form of a patch, to be installed on top of an exsiting Arduino install. This is a good point about Energia IMO.


    @@jpnorair, I'm not interested in exploring the multi-tasking possibilities provided by this MCU but for the rest we could cooperate to develop the cores for Energia and Arduino if you want.


    I've myself not requested TI about one of their beta boards yet. I'm just guessing that TI will release the platform anytime soon.





  14. Dear colleagues,


    I'm more than happy to announce the release of panStamp NRG, our new Wireless ISM (868/915 MHz) module based on the CC430F5137 MCU and programmable from the Arduino 1.5 IDE.




    panStamp NRG is pin, radio and software compatible with our classic AVR modules but entirely relies on a Texas Instruments CC430F5137 MCU instead of our old Atmega + CC1101 approach. As result, we are getting a more robust module providing more features, more speed and consuming less power.



    panStamp NRG can be programmed serially from the Arduino IDE or even wirelessly from our Python tools. All related to panStamp is open source, including hardware designs, cores, libraries and software tools so our users don't need to invest in development toolchains or configuration applications. We also provide sample applications, an open protocol called SWAP and software IP gateway to start deploying WSN (Wireless Sensor Networks) and developing IoT applications from the first day.


    Another nice feature of NRG is that it can host multiple sensors on-board. There is then no need to develop or buy additional boards for measuring temperature, humidity or 3-axis acceleration since all these sensors can be hosted by this tiny module. Simply grab your application, power the module from a 3V coin battery and display the readings from any of the software applications compatible with panStamp.


    panStamp NRG is already on sale and we are offering a 15% discount in all our products for the members of the 43oh community until 15 January 2015. You just have to fill your cart and send us an e-mail asking for the discount before completing the payment.
  15. Sorry to join this conversation so late.


    I know ... But they are adding since severall month so I'm a little bit impatient :)


    And doing this I learn a lot of things so, even if we do the same work, they may not support everything at the beginning so I'll be able to add features


    Have you taken a look at what is being done in the panstamp branch?


    Most of the work is included in the panstamp library since this gives us more control and lets us release our own updates on top of the latest official release of Energia. Once everything is tested and validated, we'll try to move the RF core functions to Energia's core folder. You'll find that all the RF and low-power features are already covered by the library so you can take whatever you need from there. RTC is also driven from the library as an independent class but T1A3 is covered by a new extern library called Timer1, inspired in a similar library for Arduino.


    panStamp relies on Rick Kimball's GDB bootloader for serially loading new firmware from Energia and I'm also working on a wireless bootloader for OTA upgrades. Apart from that, our port still lacks support for AES encryption and some high-level stuff related to SWAP, our open source wireless protocol. I've been talking with Robert Wessels and the panstamp port should be included in the next official release of Energia.


    Regarding your Chronos port, I worked with OpenChronos some time ago and replaced all the SimpliciTI stuff by SWAP. This let us do some fancy control of SWAP-based equipment from the Chronos:



    The issue about OpenChronos and other Chronos-related firmware is that, after covering all the typical watch functions and also all the peripheral sensor functions, there is very little place for custom applications. even though, having the ability to build the entire project from Energia would be awesome.


    I'll be following this thread form now on guys.

  16. Roadrunner, I think that loop() and LPM are perfectly compatible. For example, our panStamps are put into LPM from loop() as follows:

    void loop()
      // Do something like sending wireless packets...
      panstamp.rtc.sleep(10);    // Enter LPM3 (2uA) and stay there for 10 seconds

    Of course, we could enter LPM4 instead and wait for any binary input event, etc.

  17. I personally think that managing LPM at a high level from energia will be a difficult task. My CC430's are now waking from LPM3 based on RTC counter events but I'd also like the MCU to wake up on given date/times, pin events or even RF receptions. Many different possibilities with many different MCU's. In any case, entering LPM is quite simple so I'd avoid adding more complexities to Energia.


    On the other hand, I'd expect a way to restart the WDT after exiting from LPM. This has recently caused me some nightmares since I tried to do a delay() when the WDT was previously disabled before entering LPM. Rick has suggested me to give enableWatchDog() a try and I'll do so.

  • Create New...