Jump to content
43oh

Anaren TI CC110L RF AIR Booster Pack


Recommended Posts

Has anyone attempted to see how many nodes they can interact with cleanly using the LarsRF code?

Also how busy is that portion of the spectrum? I'm wondering if it would be useful and/or unduly difficult to incorporate some type of channel hopping or listen-before-transmit functionality.

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

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Here's an updated CCS project for the Anaren Air Booster Pack. It's quite obvious they're not familiar with CCS. Included directories are very vague and leave header includes looking like "../../../HA

I was similarly frustrated with Anaren but especially TI for a short while, until I realized that TI actually have some simple example RF code out there in nice BSD licenses. That's the code that http

Hi all,   Anaren has released an update of their firmware and its now also available for CCs   http://www.anaren.com/content/File/AIR/ ... upport.cfm   cheers   Cor   EDIT: just checked the

Posted Images

Hi,

 

I am using this code at home, currently I have 5 nodes in my system, 3 of them are pure data transmitters (they send sensory data and sleep), 2 of them are receiving/transmitting (1 relaying data from 433Mhz (3 external LaCrosse temperature sensors) to 868Mhz and 1 relaying directly to an Arduino). 

In this setup I have not felt the need to use more channels or start frequency hopping. Data comes in at a high baudrate so the transmitterbursts are very short. 

 

cheers

CorB

Link to post
Share on other sites

CorB, good to know, thanks!

 

Of general note, in Code Composer Studio 5 I had to alter the ISR syntax to get it to compile:

#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR (void)
//Instead of:
//interrupt(PORT1_VECTOR) PORT1_ISR()

 

One of my boards seems to be getting stuck in the RFSendPacket() function, though; it makes one transmit but never returns.

This is puzzling me, since both boards are running the same code, and the other is fine.

Link to post
Share on other sites

CorB, good to know, thanks!

 

Of general note, in Code Composer Studio 5 I had to alter the ISR syntax to get it to compile:

#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR (void)
//Instead of:
//interrupt(PORT1_VECTOR) PORT1_ISR()

 

One of my boards seems to be getting stuck in the RFSendPacket() function, though; it makes one transmit but never returns.

This is puzzling me, since both boards are running the same code, and the other is fine.

If you are using simpliciTI there are ASSERT statements that will cause the code to end up in an endless loop if the statement is not true. Look for 'ASSERT'. It depends on the state it's looking for. These assume you are using a debugger when you are runing code. I would suggest running the node that goes out to lunch using CCS and in debug mode (just run it and wait for it to hang) then pause execution. That will show you where it's going out to lunch. It could be in the mrfi or bsp code.

 

I was frustrated at first until I discovered that "feature" it had. The ASSERT macros are useful until you have your application behaving. You may have to add a watchdog timer to prevent the device from hanging however. Ussually the issue is the hardware isn't in the right state. If you have it happen on one specific unit it could happen on any that is running that code.

 

Cyb

Link to post
Share on other sites

CorB, good to know, thanks!

 

Of general note, in Code Composer Studio 5 I had to alter the ISR syntax to get it to compile:

#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR (void)
//Instead of:
//interrupt(PORT1_VECTOR) PORT1_ISR()

 

One of my boards seems to be getting stuck in the RFSendPacket() function, though; it makes one transmit but never returns.

This is puzzling me, since both boards are running the same code, and the other is fine.

 

I had that also in the beginning, Ive added the following lines at the start of the RFSendPacket

 

 

  TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);           // set to IDLE
  TI_CC_SPIStrobe(TI_CCxxx0_SFRX);           // Flush RX
  TI_CC_SPIStrobe(TI_CCxxx0_SFTX);           // Flush TX
 
 
cheers
Cor
Link to post
Share on other sites

Sorry for being offline for so long. I've been working hard on my PhD, so haven't been able to follow up my DIY-projects. It's good to see that the code is useful. The 868-part of the spectrum is generally not very busy. 434 and 2.5GHz is much busier. 

 

I'm pretty sure you can run a LOT of nodes using this code, but if you want mesh-networks than something like SimpliciTI, which also can forward packets is very useful. It's not very difficult to set up a simple substitute with the LarsRF code though, although if you want retransmissions across a mesh network, it'll get a bit hairy. 

Link to post
Share on other sites

Sorry for being offline for so long. I've been working hard on my PhD, so haven't been able to follow up my DIY-projects. It's good to see that the code is useful. The 868-part of the spectrum is generally not very busy. 434 and 2.5GHz is much busier. 

 

I'm pretty sure you can run a LOT of nodes using this code, but if you want mesh-networks than something like SimpliciTI, which also can forward packets is very useful. It's not very difficult to set up a simple substitute with the LarsRF code though, although if you want retransmissions across a mesh network, it'll get a bit hairy. 

Hi lars,

 

My relays from 433 to 868 and from 868 to Uart are in princicple a way to handle retransmission across a network. In my case its a specific need due to some sensors in my network that are operating at 433 Mhz. If it all would be 868 I would simply set up channels for direct transmission and let relays transfer data onto the main channel whilst listening in on a relay network. But thats my way and I am sure it can be done better and safer. 

 

Ive been in the beginning experimenting with a way to keep for instance each sensor "cleverly" spaced in transmission-time. After X transmissions the sensors asks the HUB if its not to close in sending (timewise) to another sensor. The HUB kept track of all sensors and would signal if the time between transmissions became smaller than X milliseconds. The sender would get that information and act accordingly by waiting a bit longer/shorter for the next transmission. That code worked and I could see the sensors keeping the sending space. But the negative side clearly is that you need this system and you also need to ask the sensor to wait for an incoming signal every now and then which costs far more energy than only sending data. For my battery powered sensors this is not a realistic setup so Ive removed it from my system and ... have no problems. Sometimes the sending times do interfere but very briefly and if your sending is frequent enough for the more important sensors. If the datapackets are small and the transmission speed is high it can all be achieved very simple I think.

 

cheers

 

Cor

Link to post
Share on other sites

Thanks to Mr Cor and Lars for the codes

Im new to this Launchpad and Air booster

Somehow I could not use the printf() function to show the data package sent or receive in the main function.

Would you mind tell me how to monitor the value of packet?

 

Thanks

Link to post
Share on other sites

Hi,

 

To show the package data you can use the debug function(just add a breakpoint after getting a package in or just before sending). If you want something more fancy you could set up a serial connection and print data over that line to your computer. There are quite some examples of serial output setups on this forum. I am using this code for some time: http://forum.43oh.com/topic/1643-g2553-hardware-uart-hello-world-example/#entry13987

 

cheers

CorB

Link to post
Share on other sites

Thanks Mr CorB

 

I have another question (may not related to Mr Lars' code)

 

As I view the data sheet of the Air Booster, the temperature sensor data bit was transmit and received at HUB in 16 bit . Correct me if Im wrong. 

If I want to manipulative ( calculation or do some command) , should I do it at the moment HUB receives the data bit or when Sensor gets a raw data from ADCconversionDone (before sending)  ?

Link to post
Share on other sites

Hi Hai

 

The original Anaren code demo does indeed send temperature data. The code Lars and I are using was not developed for that particular purpose but can easliy do the same. If you want to change the temperature data I would always do that at the sending station not at the receiver.

 

cheers

 

Cor

Link to post
Share on other sites
  • 1 month later...
  • 1 month later...

Ok, I have implemented very small application (which is totally based on LarsRF code) for transparent RF_UART bidirectional bridge. 
Flash firmware into two booster packs with launchpads to get "wireless" UART @ 9600bps 8b1 mode.

 

https://github.com/TheDZhon/msp430_cc110l_rf_uart_bridge

 

Big thanks to Lars Kristian Roland and all of those people from this thread.

Link to post
Share on other sites
  • 10 months later...

Thanks for a very interesting discussion.  I have installed and successfully run the Larsie code on the Anaren Boosterpack using IAR.  Now I am carefully going through the code, trying to understand it.  I have a question about the SPI register settings that are written in the file CC1100-CC2500.c, which doesn't seem to match the requirements for the CC110L.  We have

 

#define TI_CC_RF_FREQ 868

 

I looked at the register settings in Smart RF Studio for the CC110L and also the Anaren manual and compared them to the register settings in CC1100-CC2500.c for 868 MHz.  I found the following discrepancies (all in hexadecimal):

 

REGISTER                        Anaren/RF Studio                CC1100-CC2500.c

IOCFG2                            29                                         0B

PKTCTRL1                       04                                         05

ADDR                               00                                         01

FSCTRL1                         0C                                        0B

MDMCFG2                       03 or 13                               73

MCSM1                            30                                         3F

AGCCTRL0                      B0 or 91                               B2

FSCAL2                           2A                                         0A

FSCAL0                           1F                                         11

TEST0                              09                                         0B

 

Can someone explain the reason for these different settings or do they not matter?

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