PCでmsec時間測定(5) - 校正

AVR側はとりあえずできLink 、Windows側も結構出来上がってきました。センサとの接続部で回路設計の見直しが生じ、プログラムの方は待ち状態になりつつあるため、以前から気になっていた以下のことを検証することに。
正確な時間を測定しているのか
AVRを駆動するクロックをカウントして時間を測定しているので、正確さはクロックのそれに直接依存してます。ストロベリーリナックスLink のボードは16MHzクォーツですのでそれほど狂ってはいないと思いますが。
頻繁にボタン・センサをOn/Offしても正確に測定できるか
回路はOn/Offが切り替わったときだけPC側にその情報を送ります。On/Offが頻繁に起きるとUSB通信も増えるわけで、そういったCPU負荷が高い状態でも時間を正確に刻めるか。
というわけでPC側のプログラムを拡張。
  • PCの時計は信用できないので、あらかじめNTPLink でサーバに同期。
  • AVR側は10kHz(1秒間に1万回)、内部のカウンタを延々と+1し続けます。PCから命令を受けるとその時の内部カウンタをPC側に返す機能を追加。
  • PC上のWindowsプログラムは1時間ごとにAVR側に内部カウンタを報告させるコマンドを発行、1時間の間にカウンタがいくつ増加しているかを調べる。
  • 上の測定をスイッチのOn/Off無しと頻繁に繰り返す状態で行い、比較する。
On/Offの繰り返しは手元にあったPIC 12F683でM系列Link を発生させるプログラムを作成、AVR側のスイッチ入力としました。AVRのクロックが正確なら、1時間後のカウンタは3600万増えているはず。測定の結果は以下の通り。
スイッチOn/Off 1時間のカウント増加 1秒あたり
なし 35998815.95 9999.67
あり 35998770.97 9999.66

今やっているのはミリ秒単位の測定なので、1秒間1万カウント中影響が出てくるのは10の位。しかしAVR側のカウンタの狂いはその2桁下、スイッチOn/Off有無による違いは更に1桁下。

スイッチOn/Off間隔が数分にも及ぶような測定の場合はミリ秒単位に影響が出てくるのでこの結果による補正が必要になってきますが、今前提としているのは1~2秒間隔。無視しても良さそうですねぇ。

[2010/9/25 追記] 続きLink

— posted by mu at 07:11 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0095 sec.
prev
2010.7
next
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31