-the timing system shall display the time down to at least the hundredth of a second (xxx.xx) to 2
- the timing system shall be accurate to within 3ms over 60 seconds (50 ppm)
- the timing system shall provide the same timing for both lanes to within 2ms over 60 seconds
Good, this describes both the accuracy and the resolution needed. But, the 3rd point is redundant and somewhat conflicting. The 2nd point says accurate to 3ms, the 3rd point says 2ms. Not exactly sure what the words “shall provide” mean, especially given the requirement to display to 0.01 second.
I am aware of several RTCs with 0.01 sec resolution but none that provide 0.001. Since time of day is not needed, as pointed out above, one solution would be a custom Arduino-compatible board with a decent crystal, say 20ppm. I’ve designed and built several of these and they do indeed run within spec. Then one of the internal timers could be set up to give interrupts at 1000Hz, which would provide the time base. Use the external interrupts for the start and stop for each lane.
If a custom board isn’t an option, then an external oscillator with the required accuracy will be needed, as an Arduino’s ceramic resonator isn’t good enough. This most likely will not be an RTC; while many can provide various frequency square waves, the frequencies are usually powers of two. (Although I suppose computational games could be played to come close enough, similar to the way millis() works.)