[ JJY ] 内部時計

 ここ2週間ほど、PC側の時計とJJY時計との間で誤差が出ていて
その原因がはっきりしなくて悩んでいた。

症状は、JJY時計の時刻が2秒あたり200mSec前後づつ遅れていくというもの。

タイマ割り込み処理内で行っているJJYに同期する処理が重く
(約600mSec掛かる)、この処理時間によって計時時間に誤差が出る懸念もある。

また、タイマ割り込みで計時ルーチンを呼んでおり、次の割り込みまでの間に
処理が完結しなければ、時計が遅れていく事も考えられる。

前者は、割り込み処理内で行う処理を最低限(1mSecでサンプリングして
パルス幅評価をする部分)にして、後でゆっくりやって良い処理
(受信データから時刻を抽出したりする部分とか。)は追い出した。

前者をFixしても遅れる現象は変化せず。
もしかして現状でも割り込み処理内の処理時間が1mSecを越えているのか?
…と思い、後者をつつく。

割り込み処理の末尾で、ポートを反転させる処理を入れ
1mSec幅でH/Lするかオシロでチェックしてみた。
特に脱調する事もなく、ちゃんと1mSec幅でH/Lしている事が確認出来た。

となると、もう遅れる要素は考えられない。
有るとしたら繰り上がりをミスっているとか、その辺だ。
でも繰り上がりは間違っていない。うーん。

ふと思い立って、机の隅に置いてあった卓上時計(デジタル)と
PCの時計を30秒程度にらめっこしてみた。
…進んでる。PCの時計。ほんとにどんどん進む。

卓上時計を神様にしてJJY時計との誤差を見たら、2時間経っても数十mSec。
今までPCの時計は正しいものだと思って、自作のプログラムを疑っていたんだが…。

2週間無駄にしたと思うか、正しい事を確認出来て安心出来たと思うか。
先を急がなくちゃ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)