By now my DCF77 project can completely decode the official time signal under really bad conditions. Since bad means “really really bad” I also have to anticipate that there will be prolonged periods without any reasonable signal at all. Thus I should better have a local clock that can keep time while the signal is lost.
However since I have a very sophisticated algorithm there is something in between that I will exploit as well. Remember the phase detection experiment? Of coure it may be possible that the phase can still be detected while although the signal is to noisy to extract any reasonable data. So here is my plan.
1) Extract time data from the signal.
2) As long as the noise is low enough to still decode something sync the local clock to the signal.
3) If the nosie is to high but the phase can still be kept, use the 1s ticks from the official signal to proceed the local clock.
4) If sync is not possible anymore stick to the local clock.
Thing gets somewhat tricky when the phase can be recovered but not yet the complete signal. In order to sort things out I introduced a simple finite state machine.
Have a look at my local clock experiment. It contains all the details plus the source code. By now this should beat any other implementation with regard to noise resilence. But I am not yet done. Wait for the next article on how to push this just one step further. Always along the notion of “anything worth doing is worth overdoing” ;)