markliang 发表于 2008-3-22 11:36:17

M16 用TCTR時鐘走時不准

我照馬老師你的例8.4做的時鐘,發現走時不准的問題。走時過快。何解?
我試過加大OCR0的值或加大中斷計數器的值。發現作用不大。
最終都不能調到跟我電腦時鐘一致。不是快一點就是慢一點。30分鐘差不多快/慢1秒。
也試過改成8M系統時鐘。用OCR0=0x7c,time_counter=1000.結果一樣是過快。1分鐘差1秒。
後來,我用OCR0=0x7c,time_counter=1038.也是一樣30分鐘誤差1秒。若改動OCR0的值的話,也一樣無法調到走時准確。

但是,我的顯示部分沒有用LED,而用改成VFD了。用的是PT6311.是否有影響。
       
        // T/C0 場宎趙
        TCCR0=0x0B;                               
        TCNT0=0x00;
        OCR0=0x7C;                         // OCR0 = 0x7C(124),(124+1)/62.5=2ms
        TIMSK=0x02;                               

指點一下學生?

little_grass 发表于 2008-3-22 15:56:14

我也发现同样的问题
据说是因为系统时钟本身就有误差的问题,但没有验证,也想听听马老师的看法。

machao 发表于 2008-3-22 20:58:26

使用外部晶体可以得到更好的精度.内部RC震荡本身有误差,受温度影响也大.

markliang 发表于 2008-3-22 23:10:12

因为手上并无4或8M的晶体。所以,没能试外置的。
有机会试了再来这里回复。
谢谢老师的回答。

markliang 发表于 2008-3-24 21:20:33

真不幸。用外置的4M也一样。过快。
手头无8M的。
此问题暂时算是无解。

machao 发表于 2008-3-24 23:44:46

采用外部晶体的话,24小时的误差应该小于5秒.如果精度要求再高的话,需要使用32768的表用晶体构成的时钟.

另外,PC上显示的时钟数字与真正的PC时钟的计时是有时间差的,因为当PC计时计到整1秒时,到显示出1秒需要处理时间.而由于PC上还有其它的软件在运行,所以显示出的时间会快,也会慢,这是非常明显的,肯定没有8-4例子显示的准确.

不信你将例8.4的时钟,PC的时钟,加上一个电子手表,三者进行比较,以电子表为准(因为是专用的),你会发现PC的显示最不准.

时钟准不准,主要在计时,而不是看显示的数字.显示的数字肯定比计时要拖后,因为程序要处理.复杂的系统可能还要先处理其它任务(如PC的鼠标移动了),所以显示数字的滞后时间也有快有慢.因此,检查时钟是否准确,需要一个长时间的检验.通常以24小时为准.

xk2yx 发表于 2008-3-25 08:31:35

我也是用内部RC,测标准频率,发现基本都是偏快。但稳定度还是可以的,校准后基本误差不大(我要求精度1%以内)。

markliang 发表于 2008-4-3 19:03:18

我用此例与PCF8653T做的时钟对比。
发现是此例确是只能试验性的做一下。呵呵。

zhongshanlang 发表于 2008-4-4 10:58:03

因为单片机在运行过程中需要时间的,中断,定时器/计数器,都需要时间周期,具有一定的延时很正常。

machao 发表于 2008-4-4 13:00:50

只要系统的时钟准确,CTC方式本身可以产生精确的定时中断,因为这是硬件的功能并提供了保证.至于程序中处理造成的延时肯定会有,至于长短要看你的技巧了.
页: [1]
查看完整版本: M16 用TCTR時鐘走時不准