Jump to content
Rei Vilo

[Energia Library] Anaren CC110L AIR BoosterPack

Recommended Posts

@@bluehash - Sorry I didn't ever open a new thread.  I didn't have my notifications set right to see that someone had quoted my post.

 

I managed to import the library successfully a long time ago, and it has been working well.  I'm now trying to optimize my design a bit.  Are there any built in functions in the library to put the radio in a "sleep" mode?  I found a sleep function, but it gives me the error:

 

"/Applications/Energia.app/Contents/Resources/Java/hardware/msp430/libraries/AIR430BoostUSAFCC/utility/A110x2500Radio.h:206:15: error: 'static void A110x2500Radio::sleep()' is private"

 

Thanks for any help!

Share this post


Link to post
Share on other sites

Schnecker,

 

The intent of the library was to provide a simple interface to the radio. If you dive into the library source code, you will find that putting the radio to sleep is handled for you in the GDO0 ISR of the A110x2500Radio class - there is no need to call sleep(). Also, the interface correctly handles waking up the radio whenever a receiverOn() or transmit() operation occurs - there is no need to call wakeup().

 

I hope this clarifies things for you. Feel free to contribute or modify your local version of the library to extend its features (but do share!).

 

-Brandon

Share this post


Link to post
Share on other sites

Hi All,

 

Michael from Malta here, just started playing with the CC110L Booster pack today.  So I've been trying out a cut down version of the wireless test sample project using a TI Launchpad running an M430G2553 chip, rx and tx jumpers are correctly configured, and an anaren CC110L Air Module plugged into the Launchpad.  The code I'm using is behaving quite weirdly in that whenever I call the radio.begin command, the code seems to freeze.  To this effect the code below sends the full expected serial stream to the serial port:

 

Serial Output:

[starting Up]
finished beginning
mike
mike
mike
mike
mike
mike
mike
 
***********************************************************************************************************************************************
Code:
#include <SPI.h>
#include <AIR430BoostFCC.h>
 
void setup()
{
  Serial.begin(9600);
  delay(500);
  Serial.println("[starting Up]");
 
  // Radio.begin(0x01, CHANNEL_1, POWER_MAX);
  
  Serial.println("finished beginning"); 
}
 
void loop()
{
Serial.println("mike");
delay(500);
}
 
 
while the following code segment (with radio.begin un-commented) seems to hang at the radio.begin command:
 
Serial Output:
[starting Up]
 
***********************************************************************************************************************************************
Code:
 
#include <SPI.h>
#include <AIR430BoostFCC.h>
 
void setup()
{
  Serial.begin(9600);
  delay(500);
  Serial.println("[starting Up]");
 
  Radio.begin(0x01, CHANNEL_1, POWER_MAX);
  
  Serial.println("finished beginning"); 
}
 
void loop()
{
Serial.println("mike");
delay(500);
}
 
 

Your Help would be greatly appreciated! :)

 

Thanks

 

Michael

Share this post


Link to post
Share on other sites

Hi All,

 

Michael from Malta here, just started playing with the CC110L Booster pack today.  So I've been trying out a cut down version of the wireless test sample project using a TI Launchpad running an M430G2553 chip, rx and tx jumpers are correctly configured, and an anaren CC110L Air Module plugged into the Launchpad.  The code I'm using is behaving quite weirdly in that 'whenever I call the radio.begin command, the code seems to freeze'.  To this effect the code below sends the full expected serial stream to the serial port:

.

.

.

Thanks

 

Michael

Hi Michael,

I was also having this problem of code freezing at the 'Radio.begin()' command. This problem seems to be particular to Energia 10, since using same code through Energia 9, i found no problems.

I haven't investigated the root cause of this, but to me, it seems to be either in SPI or Interrupt code of latest Energia release. I'll look at it in few days

In the meantime, I just used Energia 9 instead of 10

 

Rohit

Share this post


Link to post
Share on other sites

can someone please help me. I am building a weather station and trying to use the msp430 with the CC110L. I would like to send this struct from one node to the hub.

 

I would like to know how to transmit float & int too please.

 

ideally i would like to send and receive this:

 

struct sPacket
{
  uint8_t from;
  float tempC;
  float preshPA;
  uint8_t valLDR;
};
 
thank you.

Share this post


Link to post
Share on other sites

Hi I am having freezing issues with this library. please see the code below:

 

#include <Wire.h>
#include <BMP085_t.h>
#include <SPI.h>
#include <AIR430BoostFCC.h>
 
#define ADDRESS_LOCAL    0x02
#define ADDRESS_REMOTE   0x01
 
int tmp102Address = 0x48;
int ldr = PD_2;
BMP085<3> PSensor;
 
struct sPacket
{
  uint8_t from;           // Local node address that message originated from
  float tempC;
  float preshPA;
  int valLDR;
};
 
struct sPacket txPacket;
 
void setup(){
  pinMode(ldr, INPUT);
  Radio.begin(ADDRESS_LOCAL, CHANNEL_1, POWER_MAX);
  txPacket.from = ADDRESS_LOCAL;
  txPacket.tempC=0.00;
  txPacket.preshPA=0.00;
  txPacket.valLDR=0;
  Serial.begin(9600);
  Wire.begin();
  PSensor.begin();
  pinMode(GREEN_LED, OUTPUT);
}
 
 
void loop(){
  PSensor.refresh();                  // read current sensor data
  delay(5);
  txPacket.tempC = getTemperature();
  delay(5);
  Serial.print("Celsius: ");
  Serial.print(txPacket.tempC, 2);
  PSensor.calculate();
  delay(5);
  txPacket.preshPA = (PSensor.pressure+50)/100;
  txPacket.valLDR = chkLight();
  Serial.print(" Pressure: ");
  Serial.print(txPacket.preshPA, 2);   // display pressure in hPa
  Serial.print("hPa");
  Serial.print(" Light: ");
  Serial.println(txPacket.valLDR, DEC);
  digitalWrite(GREEN_LED, HIGH);
  Serial.print(sizeof(txPacket));
  Serial.println(" Bytes Sent");  
  Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txPacket, sizeof(txPacket)); //If I comment this line then the loop runs fine otherwise the loop runs once and then freezes.
  delay(5);
  digitalWrite(GREEN_LED, LOW);
  delay(5000);
}
 
float getTemperature(){
  Wire.requestFrom(tmp102Address,2); 
 
  byte MSB = Wire.read();
  byte LSB = Wire.read();
 
  //it's a 12bit int, using two's compliment for negative
  int TemperatureSum = ((MSB << 8) | LSB) >> 4; 
 
  float celsius = TemperatureSum*0.0625;
  return celsius;
}
 
int chkLight()
{
  int x=analogRead(ldr);
  return x; 
}
 
 
I will really appreciate any help. 
I have tried energia 0101E0011-0101E0012. I am using a stellaris LM4F120 with a cc110L booster pack and TMP102 from spark fun with BMP085 and a LDR from RS.

Share this post


Link to post
Share on other sites

Have you tried replacing "sizeof(txPacket)" in the radio.transmit() call with a Constant?  Also, the examples include this in the loop:  

 /**
   *  The radio transmitter and receiver cannot be operated at the same time.
   *  Wait until transmit completes before turning on the receiver. Please note
   *  that the radio is considered busy when it is transmitting.
   *
   *  WARNING: If busy is not checked between two successive radio operations
   *  receiverOn/transmit, the radio may not perform the specified task. The
   *  radio must be complete with the transmission before it can begin the next
   */
  while (Radio.busy());
 
I recompiled some of my code for Stellaris (normally use the MSP) and other than a problem with the internal temperature reading, it transmits fine; so far 1 every 10 seconds for over an hour. I am sending a fixed length 18 byte message and using Energia 0101E0011; haven't upgraded yet.
 
B

Share this post


Link to post
Share on other sites

can someone please help me, When I write the instruction Radio.begin() in my sketch and Upload this in the MSP430, the program freezes and all the instructions that I write after of Radio.begin() don

Share this post


Link to post
Share on other sites

 

can someone please help me. I am building a weather station and trying to use the msp430 with the CC110L. I would like to send this struct from one node to the hub.

 

I would like to know how to transmit float & int too please.

 

ideally i would like to send and receive this:

 

struct sPacket
{
  uint8_t from;
  float tempC;
  float preshPA;
  uint8_t valLDR;
};
 
thank you.

 

Hi,

 

In my network with weathersensors I send all data as integers around. Just multiply your temperature/humidity/pressure with 10 or 100 and use the integer part.

 

cheers

 

Cor

Share this post


Link to post
Share on other sites

Hi,

 

I have a request to change part of the library. I often have had problems with the library when receiving messages (both on stellaris/msp430). After some really helpfull hints in the forums I managed to get better control on the problem. I am using declared datastructures to send my datapacks around, inside the datastructure I do have u_chars and u_ints. And simply using those doesnt work as planned. It seems the compiler aligns the data in the structure and you get a structure that has its adresses aligned by default byte based but often 2-byte based. The msp430 forum helped me out by declaring the structure I am using starting with a #pragma pack(1) and ending with a #pragma pack() statement. That did help a bit, I got more of the data inside my structures properly aligned. But not all ... and this has been bugging me for a long time. Today I found some time to debug this issue and I found a solution.

 

The problem is in the way packages of data are set inside the library, we have a structure to receive the default datapacks (inside A110x2500radio.h) that doesnt have the pragma pack(1) statement. Adding the pragma statements as shown below does the trick.

 

BTW: I the reason not many people have this issue is that most CC110L users probably dont use a mix of compilers/launchpads. In my setup I program all my MSP430 based systems in CCS but I have found it easier to program my main hub (stellaris) using Energia. Adding the pragma's is a good solution.

 

regards

Cor

 

 

/**
 *  sDataStream - message sent over-the-air.
 */
 #pragma pack(1) 
struct sDataStream
{
  uint8_t length;       // Length of the data stream (excluding length field)
  uint8_t address;      // Address for hardware filtering of data stream
  uint8_t *dataField;   // Data stream payload
  // Note: The following are provided on reception of a data stream (not sent
  // over-the-air).
  int8_t rssi;          // Receive signal strength indicator
  uint8_t status;       // CRC (BIT7) and LQI (BIT6:BIT0)
};
 #pragma pack() 

Share this post


Link to post
Share on other sites

Good sleuthing. I do use both MSP & ARM launchpads with the boosterpacks. I ended up switching to the Panstamp lowlevel library because I got tired of trying to unravel the maze of code in the Anaren libraries and I don't like the blocking mode rx.

Also, in the Anaren library output power is limited to 4dbm when the chip can do up to 12dbm. According to Anaren, 8dbm is legal in the US, I don't know what your limits would be. It took me 15 minutes one day just to find what configuration Anaren actually uses :o (In the US is is 38k 2FSK)

B

Share this post


Link to post
Share on other sites

Hi Brey,

 

I am using the boosterpacks mainly in CCS and the code I use is simple and not a maze. But thats because its a library based on (but not exactly) Simpliciti. In that code I can easily set the output to any level possible. 

 

cheers

Cor

Share this post


Link to post
Share on other sites

Hello 2 All,

I was able to get all examples from those libs to work just 'out of the box'.

 

Regarding Energia itself - is it possible to make ultra low power applications, especially with Anaren CC110L AIR BoosterPack. E.g. is it feasible to have sensor board to be powered from 2 AA batteries for few month? 

 

 

Share this post


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.

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