We have two types of measurement / receiving / sending modules:
Time Critical means that the measured data will be useless if a very accurate timestamp can not be applied to it. Non-time critical means that a less accurate timestamp is good enough. Non-time critical data would be the generic sensor measurement data like radiation, temperature and other envoironmental sensors. Time-critical data is measurement data like satellite radio that need to be used for satellite communication.
The timing bus will consist of two parts, a high accuracy timing line and a low accuracy timing port. Low- and High Accuracy timestamps will be transmitted separately.
The low accuracy timing port will be sending out information containing a timestamp ( example format might be in the format of „YYYY-MM-DD hh:mm:ss“ (YYYY = year, MM = month, DD = day, hh = hour (0-24)), mm = minutes, ss = seconds). The BUS used for this will be RS485 with the timing module broadcasting the time on it. Measurement modules are using that bus readonly, timing modules read/write.
The high accuracy timing port will be sending a 10Mhz (currently wip, actual frequency to discuss) clock that is highly stabelized to all modules. It will also send a RESET signal. Every measurement module will track the timing clock and count the clocks in a register (use 24 bit for 10Mhz). The reset pin will be used to reset the 24 bit register to 0. It will be triggered by the timing module every second. Thus we have a very exact pulse every 1 second and can use the contents of the register to count on in the 1 second timeframe.
To get the most accurate timing information, the measurement module will put a pin to high and the timing logic will copy the actual timing information into a buffer where it can be read from serially.
Addition to this image… The microcontroller reading the low accuracy timing signal will also get the pps / reset signal.
We're currently experimenting with 10Mhz Oscilators and 4Bit Counters. Our current test-setup looks like this: