I am constructing an instrument that should collect data at 1,000Hz. The main unit is an RPI 3B+. It is connected to a number of nodes that have ATMEGA1284P and FT232R. I am trying to synchronize the data collection by sending "start" from RPI to all nodes at 1KHz.
Apparently the best way I can think of is to have an RPI digital pin going to all nodes to sync. But that means a big mess with wiring that reduces flexibility (say take one node out, add two more) in the field.
I've tried syncing over USB-UART by writing "start" to one USB serial port at a time. I am using 2Mb/s rate and each serial send seems to take about 0.04ms of CPU time. Not too bad but the best latency setting I can get for FT232R is 1ms, exactly on the 1KHz sampling frequency I'm trying to get. I was testing with software loop-back on ATMEGA1284 default 20ms latency setting and it wasn't good enough.
So I'm thinking. What about adding NRF24 modules to RPI and nodes? But what is the latency of NRF24? Does it have a broadcast mode (I vaguely remember there is). So my exact question is when NRF24 is on broadcast mode with little WiFi (2.4GHz) interference, what is the latency between you send a message to NRF24 and it sends it out?
If the answer is not very good, is there any other RF product that has better latency?