- 正確な時間を測定しているのか
- AVRを駆動するクロックをカウントして時間を測定しているので、正確さはクロックのそれに直接依存してます。ストロベリーリナックス のボードは16MHzクォーツですのでそれほど狂ってはいないと思いますが。
- 頻繁にボタン・センサをOn/Offしても正確に測定できるか
- 回路はOn/Offが切り替わったときだけPC側にその情報を送ります。On/Offが頻繁に起きるとUSB通信も増えるわけで、そういったCPU負荷が高い状態でも時間を正確に刻めるか。
- PCの時計は信用できないので、あらかじめNTP でサーバに同期。
- AVR側は10kHz(1秒間に1万回)、内部のカウンタを延々と+1し続けます。PCから命令を受けるとその時の内部カウンタをPC側に返す機能を追加。
- PC上のWindowsプログラムは1時間ごとにAVR側に内部カウンタを報告させるコマンドを発行、1時間の間にカウンタがいくつ増加しているかを調べる。
- 上の測定をスイッチのOn/Off無しと頻繁に繰り返す状態で行い、比較する。
スイッチ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 追記] 続き
Comments