先日、Arduino UNO R4のクロック周波数を測った。
- Arduino UNO R4を単独(外部電源)で動かすとクロックの精度は悪い
- USBケーブルをつないでいればクロックの精度はそれなりに良い(USBクロックで補正)
大きくまとめると、この二点。
その後、もうちょっと見ていたら別の挙動も見えてきたというのが、今回の話。何かというと、長時間動作ではクロックが変動するというもの。前回の実験では、単独動作ではクロック周波数の精度は+0.3%だった。これは動作させてすぐに測ったもの。
+0.3%なのでストップウォッチよりも進む(ストップウォッチが置いていかれる)。ところが、そのまま放置しているとストップウォッチよりも遅れていた。
本当かと測り直してみた。


何度かやってみたが、長時間動かすとこのようにストップウォッチに対して遅れる。ストップウォッチはiPhoneの標準の時計アプリ。
1MHzのPWMもこのように周波数が低くなっている。

USBケーブルでPCにつないだ状態なら、ストップウォッチとほぼ一緒だし、PWM出力の周波数も前回の実験と同じ。


ということで、Arduino UNO R4のクロックは、単純にプラスかマイナスにズレているというものではなく、ズレは一定していないと思ったほうが良さそう(今回の実験では、長時間で常に遅くなるという傾向ではあったが)。
いずれにしても、Arduino UNO R4のクロックはあてにならない、ある程度の精度を確保したければUSBケーブルでPCにつなげておけ、という話には変わりない。
コメント