Jump to content

Adding CC430 support

Recommended Posts

Yeah but if he reboots he will have to do it again ...

My stellaris and arduino are both functioning many reboot cycles later....


Driver signature enforcement is at install time only, not runtime. Disabling the checks will allow for install. Once the driver is installed you wont have to disable the checks again, it will function normally.

Link to post
Share on other sites
  • Replies 48
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Cool.  The stock Chronos 433 antenna is absolute rubbish, though, so it is a low bar.   In any case, I can mail you a hand-built ~5cm reference monopole, if you want to compare RSSI readings (send m

Hey all!   This is Adrian from TI. We absolutely love this effort! To show our support, we'd like to enable you folks with some CC430 Chronos dev kits to help you out! Please send me a PM with your

Hi everyone,   I'm working on Energia CC430 support. It's the first time I do this kind of work, it allowed me to understand a lot of things but not everything of course So I have a lot of question

Awesome! I look forward to it and am happy to help.


So, are you working on the underlying CC430 hardware features, like the CC1101 radio and PMAP stuff? (Stuff that will support most of the CC430 family.)


If so, I can work on putting together a Chronos library for Energia. Basically I want to port the entire Sportswatch app over, but improved with hardware I2C, RTC_A support, better PM, LCD contrast control, etc.


So your exsisting code will be most helpful. (I think we're on the same page here and this will be a most useful collaboration.)

Link to post
Share on other sites

rfBSL Update: Okay, so I've written a Python app (based partial on ChronosTool.py and the iHEX to TI-TXT script [memory.py) from OpenChronos) that takes a .hex file as an input and uploads it over rfBSL. I then used pyInstaller to "compile" the script into a fully self-contained executable for Windows, Linux and OS X. This way the user doesn't need Python (or any additional libraries) installed and we don't have to include the bulky jython (Java Python) interpreter.


Each executable weighs in at about 5MB and could be included in the Windows, Linux and Mac specific tools folder of Energia.


Once I do some more testing I'll post a copy of the files, but I welcome any feedback on this method. :)

Link to post
Share on other sites

So, are you working on the underlying CC430 hardware features, like the CC1101 radio and PMAP stuff? (Stuff that will support most of the CC430 family.)


If so, I can work on putting together a Chronos library for Energia. Basically I want to port the entire Sportswatch app over, but improved with hardware I2C, RTC_A support, better PM, LCD contrast control, etc.



It's my purpose built a watch firmware in Energia  :)


RTC_A lib is available in library section ;)


CC430/CC1101 lib almost finished, I'm adding high level functions. As I said in precedent posts, I got a link between chronos and G2 launchpad + CC1101 module. With the same library :) and I haven't tested but normaly it would work on Arduino too


For LCD I simply reused the one provided by TI. I just did simple ajustments to get it working but I don't find it easy to use so I will work on it to.

Link to post
Share on other sites

I made a little installation guide : https://github.com/battosai30/CC430_EnergiaSupport

I uploaded a very simple program that display hour : https://github.com/battosai30/ez430chronoslib/tree/master/examples/Chronos_test


You will need two library, also available in my git (RTC_A and ez430chronoslib) : 




About radio core, you can test this example :



The example available is built for a Chronos watch sending an array of byte to a G2 launchpad connected to a CC1101 module, chip select = 10 and GD0 = P1_3


EDIT : I retested radio lib and I don't know why but it doesn't work anymore ... I'm investigating


I also tried to interface BMP085 and BMA250. Two fails ... And I discovered that BMA250 is linked to USCI_A0, and Energia use B0 ... 


So, a day of fails !


EDIT2 : radio is back :)

Link to post
Share on other sites

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.

Link to post
Share on other sites

I'm using OpenChronos-ng as a base for my port and selectively merging in various improvements from all the forks people have done.


Everything will be modular, so you can use it as a base for your own projects. There should be a lot of room for user functions on top of the basic watch functions when I'm done!


Even the RF protocol will be modular so you don't have to use SimpliciTI. (Speaking of which, I'm adding support for SimpliciTI configuration via SmartRF Studio. So you can graphically configure your settings and just drop the exported file in with your sketch!)



Sent from my iPhone

Link to post
Share on other sites

@@estratos : thanks for your intervention. Of course I looked to panstamp branch ;) but unfortunely I did not find what I was looking for xD but as I said before, as I work on building lib for chronos it's so much easier to understand panstamp code now. And be carreful using rf1a.h, I noticed some TI mistakes ...


About RTC : as I understand you only use it as a timer for sleep functions. Mine enables all features

About radio : I don't know why but when I started to study CC1101 and CC430 I couldn't get something working (certainly my fault). I didn't dig more because I like to know what I want and I wanted to add some features that were not present. And know CC1101/CC430 almost has no secret for me xD 


So I'm more impatient know about all the publications you're talking about :)


Talking about panstamp, is it possible to get a kamikaze board ? :)

Link to post
Share on other sites

Finally find my current leak : it was very simple to solve :


In setup(). I forgot this is an obligation to disable watchdog if you want to go low power.


I updated RTC_A and ez430Chronoslib examples.


Now current consumption displaying hour is ~46

Link to post
Share on other sites

Awesome! So last night, I started building a test jig for one of my Chronos units. The idea is to make it easier to access the buttons, vary the VBATT voltage (for testing the battery meter), monitor current consumption and have access to the buzzer without the back cover on.


First off, here's a few pictures of the back side of the board and the display components.














Here's the test jig! In the first picture you can see I drilled two holes up top of the jig PCB for the inductors to fit through so the watch board lays flat. There's also four holes for zip ties to fit through. On the watch PCB itself you can see I've soldered on wires for all five switches, the buzzer plus GND and VBATT.








The next step is to add some buttons, a buzzer and a variable voltage regulator.

Link to post
Share on other sites

Nice ! I was curious to see how it is inside.


I don't know if you tested that but it was very hard to hear a sound from the buzzer. As I think about it now, I didn't explorate a drive strength issue ... I'll try this morning.


I didn't mentionned it but monitor battery voltage is very easy using my pins_energia.h :

VBAT = analogRead(A11);

I found another thing to take account and in some way it's a good news : if you supply chronos via prog interface, a little amount of current is sinked by the pull down resistor of  the supply switching system mosfet. It's a 100k resistor, 3.6V supply = ~36

Link to post
Share on other sites

Measures confirmed. I also found two bugs in my RTC_A lib : I forgot to add LPM3_EXIT in RTC interruption, so after LPM3 command, nothing was executed. And my function GetSecond(), GetMinute() ... used a wrong while() condition to check if reading was safe causing a wrong reading and an extra consumption. 


I discovered another strange thing : if I don't call lcd_init(), current consumption starts at ~6

Link to post
Share on other sites

Tonight I got the buttons soldered down, the buzzer installed and I hand made a helical antenna tuned to 433MHz.


How did you design this antenna?


Using a helical winding is a difficult way to build an antenna.  You need to determine the impedance and make sure that it is the proper terminating impedance, which is largely an experimental process.  Generally speaking, however, the total uncoiled length of an inductively loaded wire antenna is quite a bit longer than the equivalent straight-wire antenna. 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...