例のMsTimer2の精度の件。
こういうのは時間がちゃんと取れるときでもないと
ろくな調査にならないんだけど、やっぱ少しくらい
は見ておきたいな…と思ってArduinoのコアソースを
ちょっと眺めてみる。
arduino-0021\hardware\arduino\cores\arduino
↑ここの中
main.cppからWProgram.h→wiring.cと順に追っていくと、
その中に
SIGNAL(TIMER0_OVF_vect)
っていう割り込みベクタ内の処理を定義する関数が
出てきて、そこでミリ秒単位の経過時間と、
fract(端数?)という変数の処理をしてて、多分
ここがarms22さんからご指摘のあった調整部分って
ことのように見えるんだけど、ここだけ読んでも
処理の意味がイマイチ…
コアのソースコード全体についてtimer0関係のタグで
テキストサーチを掛けてみると、millis()関数以外にも
やっぱアレコレ使ってて、それらもちょっと念頭に置いて
置かないとイカンだろうな。tone()とかanalogWrite()とか 。
まぁ、調べないといけないそのモノはtimer2の方なので、
底なし沼に入り込まないうちにそっちにちゃんと
戻らないとね。それに調べるだけじゃぁアウトプットに
繋がらないから、そこそこにしないと。
また続きは後で。
|
|
|