Hi Li Ang, You're making good progress. Thanks for the update and the photos. I am impressed with both the project and the way you are documenting and sharing the progress on the qsl.net web site.
The new algorithm is good. Yes, the whole idea of a timestamping counter is that you start it once and then let it run indefinitely, checking on the deltas only as much as you need to prevent counter aliasing. One correction -- when you compute deltas using two's compliment integer variables there is no need for a special-case overflow check. This is a common misunderstanding by non-assembly programmers. So, instead of your: ref_delta = (ref_curr > ref_prev) ? (ref_curr - ref_prev) : (0xffffffff - ref_prev + ref_curr); sig_delta = (sig_curr > sig_prev) ? (sig_curr - sig_prev) : (0xffffffff - sig_prev + sig_curr); Just use: ref_delta = ref_curr - ref_prev; sig_delta = sig_curr - sig_prev; Not only is it much simpler but it also works in every case (your code would fail whenever curr equals prev). Here's a test program in case you don't believe me: http://leapsecond.com/tools/wrap1.c /tvb _______________________________________________ time-nuts mailing list -- [email protected] To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts and follow the instructions there.
