|
/ C3 [- f! t8 w! n7 K
说一下我的调整方法:
1 b3 z' L+ a8 F
l+ O0 R [& M, _) W' ]- c1秒=(n-1)*定时器时间1+定时器时间2
1 y% c' H0 k) L5 g% {) u
, q( G, g4 [6 y首先假定定时器时间1=定时器时间2,我的MCU晶振为12Mhz的,取n=200,那么定时器时间为5000us
* V' I* ?, E4 [0 g' Y- t; {7 c+ q/ w* ^
实际上因为晶振的频率多少有点偏差,需要对定时器时间进行调整,这时候总能找到两个连续的值,一个使电子钟走时偏慢,一个使电子钟走时偏快,取其中一个值为定时器时间1。) q$ m' w5 L8 U
: a: y( ^. R1 s* I) q2 \3 ~
定时器时间1每+/-1us,电子钟的1秒就+/-200us,这就需要引入定时器时间2,在us级上调整时间。; P9 |# M- m0 Z9 D) L
可以算出定时器时间2的取值范围是5000us+/-100us。3 V* _# o/ W: X9 P( N
8 W6 ?! w4 Y' G+ T) `
接下来找定时器时间2,这时候也总能找到两个连续的值,一个使电子钟走时偏慢,一个使电子钟走时偏快,中间的这个点就是最精确走时的定时器时间。2 Z$ H/ W) t3 `
2 j, G. g0 ^6 w) B1 O
按照这个方法调试,基本可以把1秒的走时误差控制在理论的最小误差范围内,即+/-0.5us,换算1天的累积误差就是+/-0.0432秒。 |
|