Other Parts Discussed in Thread: CC1111EMK868-915
Hi,
I am not sure how to phrase my question correctly as I am not sure what the root cause might be. I will try to give some background:
I have a system of CC430 where multiple nodes (battery driven) speak to one hub (power connected). While the hub is alway on (with RX on), the nodes sleep most of the time. The nodes work with polling mechanism: Every 7 seconds roughly the nodes wake up and advertise their availability to the hub with a small packet. The nodes then stay in RX for a small time frame so that the hub has a chance to interact with the node.
This works very well most of the times. I have tested and figured out what would be the shortest time for the nodes stay in RX after sending the advertisement command so that packets can be received safely.
I am not sure if this information is relevant, but I wanted to five some background.
Now here is my problem: In certain scenarios, the communication fails between hub and node fails. I have one system where one hub speaks to two nodes. One node (Node A) is fairly far away, even needs to transmit through a house (40 meters + house in between). The node (Node B) sits close to the hub (10 meters, line of sight, only some bushes).
While communication between Node A and Hub is fine, the communication between Node B and Hub very often fails, by means of the advertisement package is not received by the hub or the command from Hub to Node B fails after receiving an adv. packet. The weird thing: In case a package from Node B to Hub does go through, it has a fairly good RSSI (approx. -70dbm). When I move Node B sidewise a few meters, everything works again.
It has to do something with the location/position of Node B as interchanging Node A and Node B give the same results but now with Node A having the communication problems. So it's not a problem of the individual device.
I see the problem most likely being related to the radio settings, so here are my register settings:
/** * CC430 configuration registers */ #define SYNC1 0xB5 // Synchronization word, high byte #define SYNC0 0x47 // Synchronization word, low byte #define FSCTRL1 0x06 // Frequency synthesizer control. #define FSCTRL0 0x00 // Frequency synthesizer control. // Carrier frequency = 868 MHz #define FREQ2_868 0x21 // Frequency control word, high byte. #define FREQ1_868 0x62 // Frequency control word, middle byte. #define FREQ0_868 0x76 // Frequency control word, low byte. #define MDMCFG4 0xC7 // Modem configuration. #define MDMCFG3 0x83 // Modem configuration. #define MDMCFG2 0x13 // Modem configuration. #define MDMCFG1 0x22 // Modem configuration. #define MDMCFG0 0xF8 // Modem configuration. #define CHANNR 0x00 // Channel number. #define DEVIATN 0x40 // Modem deviation setting (when FSK modulation is enabled). #define FREND1 0x56 // Front end RX configuration. #define FREND0 0x10 // Front end TX configuration. #define MCSM0 0x10 // Main Radio Control State Machine configuration. #define MCSM1 0x30 // Main Radio Control State Machine configuration. #define FOCCFG 0x16 // Frequency Offset Compensation Configuration. #define BSCFG 0x6C // Bit synchronization Configuration. #define AGCCTRL2 0x03 // AGC control. #define AGCCTRL1 0x40 // AGC control. #define AGCCTRL0 0x91 // AGC control. #define FSCAL3 0xE9 // Frequency synthesizer calibration. #define FSCAL2 0x2A // Frequency synthesizer calibration. #define FSCAL1 0x00 // Frequency synthesizer calibration. #define FSCAL0 0x1F // Frequency synthesizer calibration. #define FSTEST 0x59 // Frequency synthesizer calibration. #define TEST2 0x81 // Various test settings. #define TEST1 0x35 // Various test settings. #define TEST0 0x09 // Various test settings. #define FIFOTHR 0x47 // RXFIFO and TXFIFO thresholds. #define IOCFG2 0x29 // GDO2 output pin configuration. #define IOCFG0 0x06 // GDO0 output pin configuration. Refer to SmartRF® Studio User Manual for detailed pseudo register explanation. #define PKTCTRL1 0x04 // Packet automation control. #define PKTCTRL0 0x05 // Packet automation control. #define ADDR 0x77 // Device address. #define PKTLEN 0x3D // Packet length.
It would be great if you could please check if you can see something weird here that could cause such packet losses.
Could radio reflections (e.g. from an opposite wall) cause such behavior?
Could it be that reflections causes the CCA not sent a packet?
The communication problem is also present if the other node is switched off. So traffic from other nodes is not causing the issue.
Best,
Henry