Here's my setup.
I have a custom built server (running on AT89LP52 microcontroller) and two clients.
On each client, theres a big microcontroller (AT89S52) connected in parallel to a smaller microcontroller (AT89C4051).
All micros have crystals attached to them and each crystal is rated to have +/-50ppm for frequency stability and +/-50ppm for frequency tolerance. they also have 33pF capacitors connected to each leg of the crystal but I may change the caps to 5% NPO (I probably have bad luck with 20% ceramics)
All devices connect to each other wirelessly with HM-TRP radio modules.
Now the smaller microcontrollers have phototransistors and lazers attached. Their job is to detect what remote client hits them and to know when it is their turn to start the lazer. Currently each client relies on the local microcontroller clock for timing.
In the initial stages, everything seems to run smoothly, but I'm afraid because of the properties of the crystals themselves that eventually the timing will go off (example: one micro could run several uS faster than the other) and the smaller microcontrollers will not respond with the correct data.
I am aware that a possible solution would be for the master to issue a sync command to all clients simultaneously, but the question is how frequent does this have to be done?
I do intend to replace the crystals in the smaller microcontrollers to ones with 10ppm tolerance instead of 50ppm tolerance for better accuracy, but even still, I will probably have to issue a global sync command for them as well.
I have a custom built server (running on AT89LP52 microcontroller) and two clients.
On each client, theres a big microcontroller (AT89S52) connected in parallel to a smaller microcontroller (AT89C4051).
All micros have crystals attached to them and each crystal is rated to have +/-50ppm for frequency stability and +/-50ppm for frequency tolerance. they also have 33pF capacitors connected to each leg of the crystal but I may change the caps to 5% NPO (I probably have bad luck with 20% ceramics)
All devices connect to each other wirelessly with HM-TRP radio modules.
Now the smaller microcontrollers have phototransistors and lazers attached. Their job is to detect what remote client hits them and to know when it is their turn to start the lazer. Currently each client relies on the local microcontroller clock for timing.
In the initial stages, everything seems to run smoothly, but I'm afraid because of the properties of the crystals themselves that eventually the timing will go off (example: one micro could run several uS faster than the other) and the smaller microcontrollers will not respond with the correct data.
I am aware that a possible solution would be for the master to issue a sync command to all clients simultaneously, but the question is how frequent does this have to be done?
I do intend to replace the crystals in the smaller microcontrollers to ones with 10ppm tolerance instead of 50ppm tolerance for better accuracy, but even still, I will probably have to issue a global sync command for them as well.