ここから本文です

マイコンのタイマの精度について質問です。

nkaaydyaさん

2012/4/913:45:34

マイコンのタイマの精度について質問です。

水晶が正確だとすると、マイコンのタイマの精度は、誤差0%になると思ってよいでしょうか?
それとも、マイコン自体のタイマにも誤差があるものなのでしょうか?

例:32MHz のメインクロックを使って、8分周して、1msのタイマを作成したとき、
水晶誤差なしのときは、マイコンの1msタイマも誤差なしと考えてよく、
水晶の誤差が、10ppm だと ±320Hzずれ →
1分周だと、31999680 ~ 32000320 Hz の間で誤差。
8分周で1msタイマを作成するので、3999.960~4000.040 カウントの誤差。
これを、ms に換算すると、0.99999 ~ 1.00001ms の誤差になると思うのですが、
この考えはあっているでしょうか?

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
4,071
回答数:
4

違反報告

ベストアンサーに選ばれた回答

m_taka2さん

2012/4/916:01:03

基本的には質問者さんの考え方であってますね。
分周とかは考える必要なく、水晶の精度が10ppmなら、
1ms周期は±10ppmで、0.99999ms~1.00001msの精度になる、と考えればいいです。
というか、言いたいことはわかりますが「3999.960~4000.040 カウントの誤差」というのはちょっと意味不明です。
マイコンが計測するのはあくまで「4000カウント」です。
で、その1カウントの時間が、「1÷31999680×8秒」~「1÷32000320×8秒」のバラツキがあり、その結果として4000カウントの時間は「0.99999ms~1.00001ms」の精度になるるということです。

ただし、タイマの精度ではなく、「タイマ割り込み」の精度まで考えた場合、マイコンの種類にもよりますが、「割り込み条件の成立」から「タイマ割り込みルーチンの実行開始」までの時間は、プログラムコードの実行状況に応じて、何クロックかのバラツキが発生するものもあります。

割り込み処理ルーチン内のプログラム次第では、実行タイミングのズレも発生しえます。
(たとえば、「1ms間隔の割り込みで、そのタイミングでLEDを光らせる」というプログラムがあったとしても、その割り込みが発生してから「LEDを光らせる」までのプログラム的な処理時間が一定でなければ、LEDの点滅間隔は一定でなくなってしまいます)
これは、いわゆる「ジッタ」的な精度落ちであり、誤差が蓄積したりはしませんので、クロックそのものの精度とは別に考えた方がいいでしょう。

さらに、プログラムが不出来なものだと、間隔が1msよりずれてしまう、という場合もありえたりします。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

maxtockdvdrさん

2012/4/915:56:45

普通に使われる水晶の精度は100PPMオーダーです。
他は合っています。
全く問題になるレベルでは有りません、なんせPWMで出力しても立ち上がりとかに数nsecかかるのですから。

ikemensunさん

2012/4/914:13:24

タイマー時間はクロックから作っているので、おっしゃるとおり基本的にクロックの精度になります。
ただし、タイマー呼び出しをした場合は、マイコンによって、作動までの応答時間が1から4クロック
程度は生じますので、タイミングについては、考えないという前提です。

cda59104さん

編集あり2012/4/914:10:25

マイコン、マイクロプロセッサの中には、Time Baseを発生する基準となるのは水晶発振子だけです。
水晶発振子の精度が10ppmだとすると、100万分の10、つまり10^-5ですので、
1mSに対し、10^-3×10^-5Sec=10^-8Sec=10^-2μSec
つまり1mS±(1/100)μSecということになりますが。

mSだと、10^-5mSゆえ、ご質問の誤差で合っていますよ。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。