PolkaDot 12 Posted March 21, 2013 Share Posted March 21, 2013 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. Quote Link to post Share on other sites
CorB 64 Posted March 21, 2013 Share Posted March 21, 2013 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 Quote Link to post Share on other sites
PolkaDot 12 Posted March 25, 2013 Share Posted March 25, 2013 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. Quote Link to post Share on other sites
cyberman_ff 3 Posted April 1, 2013 Share Posted April 1, 2013 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 Quote Link to post Share on other sites
CorB 64 Posted April 1, 2013 Share Posted April 1, 2013 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 Quote Link to post Share on other sites
larsie 121 Posted April 3, 2013 Share Posted April 3, 2013 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. Quote Link to post Share on other sites
CorB 64 Posted April 4, 2013 Share Posted April 4, 2013 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 Quote Link to post Share on other sites
hai 0 Posted April 9, 2013 Share Posted April 9, 2013 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 Quote Link to post Share on other sites
CorB 64 Posted April 9, 2013 Share Posted April 9, 2013 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 Quote Link to post Share on other sites
hai 0 Posted April 11, 2013 Share Posted April 11, 2013 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) ? Quote Link to post Share on other sites
CorB 64 Posted April 12, 2013 Share Posted April 12, 2013 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 Quote Link to post Share on other sites
remy 0 Posted May 16, 2013 Share Posted May 16, 2013 hi everyone, For example, I want to send character M from PC to MSP1 serially and to turn on the light connected with PORT2 BIT0 on MSP2(via air boosterpack). But i couldn Quote Link to post Share on other sites
dzhon 1 Posted June 17, 2013 Share Posted June 17, 2013 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. bluehash 1 Quote Link to post Share on other sites
bluehash 1,581 Posted June 18, 2013 Share Posted June 18, 2013 @@dzhon Welcome to 43oh and thanks for sharing your code. Quote Link to post Share on other sites
mph 11 Posted May 3, 2014 Share Posted May 3, 2014 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? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.