While doing yet more stress testing I noticed a couple of odd message go past and a long pause every so often when sending a message in the Visual Studio output window.
I have two Arduino devices sending addressed messages every (both individual and broadcast) to the Adafruit RFM69 HCW Radio Bonnet, on my two Windows 10 IoT Core devices every 100mSec. At the same time the windows 10 devices are sending each other a message every 5 seconds.
To help spot the pauses I added some code to mark any events where there was a significant gap. In this case ” is ASCII character for 0x22 the device address
21:10:30.746 Received To 34 a 23 byte message Hello World ---0x22:236 CRC Ok True 21:10:30.918 Received To 153 a 23 byte message Hello World ---0x99:236 CRC Ok True 21:10:31.399 Received To 34 a 23 byte message Hello World ---0x22:237 CRC Ok True 21:10:31.568 Send-hello world RFM69-915-01 09-10-31 21:10:31.580 Send-Done 21:10:31.592 Received To 34 a 33 byte message """"""""""""""""""""""""""""""""" CRC Ok True RC------------------------------------------- 21:10:32.052 Received To 34 a 23 byte message Hello World ---0x22:238 CRC Ok True 21:10:32.225 Received To 153 a 23 byte message Hello World ---0x99:238 CRC Ok True 21:10:32.705 Received To 34 a 23 byte message Hello World ---0x22:239 CRC Ok True
There were also still some corrupted messages
21:10:30.746 Received To 34 a 23 byte message Hello World ---0x22:236 CRC Ok True 21:10:30.918 Received To 153 a 23 byte message Hello World ---0x99:236 CRC Ok True 21:10:31.399 Received To 34 a 23 byte message Hello World ---0x22:237 CRC Ok True 21:10:31.568 Send-hello world RFM69-915-01 09-10-31 21:10:31.580 Send-Done 21:10:31.592 Received To 34 a 33 byte message """"""""""""""""""""""""""""""""" CRC Ok True RC------------------------------------------- 21:10:32.052 Received To 34 a 23 byte message Hello World ---0x22:238 CRC Ok True 21:10:32.225 Received To 153 a 23 byte message Hello World ---0x99:238 CRC Ok True 21:10:32.705 Received To 34 a 23 byte message Hello World ---0x22:239 CRC Ok True
It looks like if the base station receives a message as it is about to send a message the Rfm69Device_OnTransmit never gets called.
It also looks like every so often the transmitter gets stuck on one of Windows 10 devices effectively jamming the frequency.
Transmit stuck on 16:12:10.193 Received To 34 a 22 byte message Hello World ---0x22:65 CRC Ok True 16:12:10.360 Received To 153 a 22 byte message Hello World ---0x99:65 CRC Ok True 16:12:10.831 Received To 34 a 22 byte message Hello World ---0x22:66 CRC Ok True 16:12:10.998 Received To 153 a 22 byte message Hello World ---0x99:66 CRC Ok True The thread 0x570 has exited with code 0 (0x0). 16:12:11.484 Send-hello world RFM69-915-01 04-12-11 16:12:11.494 Received To 34 a 22 byte message Hello World ---0x22:67 CRC Ok True 16:12:11.504 Send-Done The thread 0x3a8 has exited with code 0 (0x0). 16:12:16.554 Send-hello world RFM69-915-01 04-12-16 16:12:16.566 Send-Done 16:12:16.660 Transmit-Done T-------------------------------------------- 16:12:16.736 Received To 153 a 22 byte message Hello World ---0x99:75 CRC Ok True 16:12:17.206 Received To 34 a 22 byte message Hello World ---0x22:76 CRC Ok True 16:12:17.374 Received To 153 a 22 byte message Hello World ---0x99:76 CRC Ok True 16:12:18.011 Received To 153 a 22 byte message Hello World ---0x99:77 CRC Ok True Transmit stuck 16:12:07.591 Transmit-Done 16:12:07.880 Received To 153 a 23 byte message Hello World ---0x99:137 CRC Ok True 16:12:08.533 Received To 153 a 23 byte message Hello World ---0x99:138 CRC Ok True 16:12:08.839 Received To 17 a 24 byte message Hello World ----0x11:139 CRC Ok True 16:12:09.186 Received To 153 a 23 byte message Hello World ---0x99:139 CRC Ok True 16:12:09.493 Received To 17 a 24 byte message Hello World ----0x11:140 CRC Ok True 16:12:10.799 Received To 17 a 24 byte message Hello World ----0x11:142 CRC Ok True The thread 0xc8 has exited with code 0 (0x0). 16:12:12.567 Send-hello world RFM69-915-02 04-12-12 16:12:12.589 Send-Done 16:12:12.681 Transmit-Done 16:12:16.510 Received To 17 a 33 byte message hello world RFM69-915-01 04-12-16 CRC Ok True 16:12:16.576 Received To 153 a 22 byte message Hello World ---0x99:75 CRC Ok True 16:12:17.025 Received To 153 a 23 byte message Hello World ---0x99:151 CRC Ok True 16:12:17.214 Received To 153 a 22 byte message Hello World ---0x99:76 CRC Ok True 16:12:17.331 Received To 17 a 24 byte message Hello World ----0x11:152 CRC Ok True The thread 0xfa0 has exited with code 0 (0x0). 16:12:17.661 Send-hello world RFM69-915-02 04-12-17 16:12:17.680 Send-Done 16:12:17.772 Transmit-Done 16:12:17.851 Received To 153 a 22 byte message Hello World ---0x99:77 CRC Ok True 16:12:18.331 Received To 153 a 23 byte message Hello World ---0x99:153 CRC Ok True 16:12:18.489 Received To 153 a 22 byte message Hello World ---0x99:78 CRC Ok True 16:12:18.638 Received To 17 a 24 byte message Hello World ----0x11:154 CRC Ok True 16:12:18.985 Received To 153 a 23 byte message Hello World ---0x99:154 CRC Ok True 16:12:19.291 Received To 17 a 24 byte message Hello World ----0x11:155 CRC Ok True 16:12:19.638 Received To 153 a 23 byte message Hello World ---0x99:155 CRC Ok True 16:12:19.944 Received To 17 a 24 byte message Hello World ----0x11:156 CRC Ok True 16:12:20.291 Received To 153 a 23 byte message Hello World ---0x99:156 CRC Ok True 16:12:20.597 Received To 17 a 24 byte message Hello World ----0x11:157 CRC Ok True
Then as rfm69Device.SetMode(Rfm69HcwDevice.RegOpModeMode.Receive) hasn’t been called no messages are received until another message is sent.
It looks like a timing issue around access to the message fifo (I have that in a critical section) so I need todo some more debugging. Maybe purging the receive buffer
byte regPacketConfig2 = RegisterManager.ReadByte((byte)Rfm69HcwDevice.Registers.RegPacketConfig2); regPacketConfig2 |= 0b00000100; RegisterManager.WriteByte((byte)Rfm69HcwDevice.Registers.RegPacketConfig2, regPacketConfig2);
The adfruit.io RFM69 shield has DIO2 which can be used for automode operation which might remove some of the synchronisation issues I am encountering.