Możesz dość trywialnie rozwiązać to w oprogramowaniu, nie zmieniając w ogóle sprzętu (choć możesz chcieć bardziej stabilnej częstotliwości odniesienia), używając ułamków binarnych, i możesz to zrobić w sposób, który daje rozdzielczość milisekundową i może być łatwo uwolniony wystarczająco dużo skumulowanych błędów konwersji, aby zobaczyć podstawową dokładność dowolnego źródła, do którego można by się odwoływać, w tym zegara atomowego.
Zmodyfikuj przerwanie czasomierza, aby gromadziło się w bardzo szerokim rejestrze, a do każdego przerwania dodaj dość długą wartość, która jest tak dokładnym odwzorowaniem stosunku milisekundy Ziemi do „milisekundy Marsa”, jak chcesz.
Powiedzmy dla argumentu, że chciałeś 32-bitowej rozdzielczości do konwersji. Możesz użyć 64-bitowego akumulatora, z dolnymi 32 bitami reprezentującymi ułamek. Musisz zrobić, aby znaleźć odpowiednią wartość, nieco mniejszą niż 2 ^ 32, która reprezentuje współczynnik konwersji. Za każdym razem, gdy Twoje milisekundowe przerwanie Ziemi strzela, dodajesz tę wartość do akumulatora. Za każdym razem, gdy chcesz zapytać o zegar, zwracasz górne 32 bity, czyli liczbę pełnych milisekund, które upłynęły, podczas gdy dolne 32 bity są zachowywane tylko wewnętrznie, aby uniknąć błędu zaokrąglania.
Używanie długich ułamków binarnych, takich jak ten, pozwala wykonać konwersję z taką dokładnością, jak chcesz. 32 bity są prawie na pewno za długie na ułamek, podczas gdy 32 bity na całe milisekundy mogą być za krótkie, ale można je dostosować według potrzeb.
Nawiasem mówiąc, ta technika akumulacji w długim rejestrze, ale zgłaszająca tylko pewną liczbę najbardziej znaczących bitów, jest sposobem, w jaki bezpośrednia synteza cyfrowa może wytwarzać bardzo wysoką rozdzielczość częstotliwości.
Można również rozważyć wykonanie części konwersji, zmieniając stosunek dzielnika z zegara systemowego 8 lub 16 MHz na przerwanie milisekundowe, przybliżając go do przedziału „milisekundy Marsa”. Zwłaszcza jeśli chcesz czegoś dokładniejszego niż tani kryształ, możesz mieć do czynienia ze zwykłym źródłem odniesienia 10 MHz dyscyplinowanym przez GPS lub bardziej bezpośrednio przez zegar atomowy, więc możesz zastąpić to zwykłym źródłem zegara AVR 8/16 MHz i przeliczyć go ponownie odpowiednio współczynniki podziału.