打印

拿牛刀杀**的感觉

[复制链接]
楼主: aolin
手机看帖
扫描二维码
随时随地手机跟帖
21
ayb_ice| | 2007-7-22 07:57 | 只看该作者 回帖奖励 |倒序浏览

回20楼...

那用RTC你去读也会要时间...
再次强调只是功耗问题,精度不成任何问题...

使用特权

评论回复
22
gyt| | 2007-7-22 10:44 | 只看该作者

赞成楼上ayb_ice的看法

使用特权

评论回复
23
龙在天涯| | 2007-7-22 13:49 | 只看该作者

回21楼

您说的有道理,我是这样想的,因为搂主没有说到是手持还是什么也没有提到功耗与供电的方式问题,所以我觉着功耗倒是问题不大。我想如果用RTC的话你的读取时间可以做到是定值,不会应为你程序代码某处发生了修改就涉及到读取时间上的差异。RTC的时基一般挺准的。和单片机一样但是它没有单片机那么多变化。

使用特权

评论回复
24
ayb_ice| | 2007-7-22 16:49 | 只看该作者

单片机你用中断处理,肯定比去读要响应快...

就算读取时间是恒定的,什么时候去读是否能做到恒定呢...

使用特权

评论回复
25
5880527| | 2007-7-22 19:44 | 只看该作者

有些时候还是单片机本身的时间准点吧

LZ的要求完全能达到,这论坛里很多关于时钟的讨论了

使用特权

评论回复
26
aolin|  楼主 | 2007-7-23 10:36 | 只看该作者

能不能说说没有软件误差的思路?

ayb_ice/gyt,
能不能说说你们的"没有软件误差的思路"啊?
我要用51系列做一个Audio System的控制软件. Audio System一般都要有一个电子钟,在standby时显示时间,同时又要实现定时开关机的.所以供电不是个问题,晶体引入的误差也好办,只要控制好晶体的精度,所引入的误差也就在接受范围了.
但是软件就不能引入误差了,软件引入的误差是无法让人接受的!

使用特权

评论回复
27
ayb_ice| | 2007-7-23 10:52 | 只看该作者

这个很简单的...

把重装载时的指令算进去或者用个合适的重装值,比如:0X2000,显然TL0就不用管它了,还有其它方法...

使用特权

评论回复
28
conwh| | 2007-7-23 11:03 | 只看该作者

不懂为什么LZ一直在强调“没有软件误差的思路”?

不管使用什么方式,MCU的指令是按照系统时间分配的,但你的计时系统(采用TIMER0或其他的计数器或RTC)是采用“硬件”自动完成的,软件与这些硬件运行是“同步”完成的,它与“软件误差”是不搭界的。不知道LZ的思路是什么?

使用特权

评论回复
29
古道热肠| | 2007-7-23 11:08 | 只看该作者

你想实现的这功能,淘宝网上一大堆做成的

  都用缩体51单片机AT89C2051做的,楼主不妨买个回去,看看精度如何,肯定能悟出如何提高精度的道理的。

使用特权

评论回复
30
aolin|  楼主 | 2007-7-23 11:27 | 只看该作者

你不懂得什么叫"软件误差"就看看那篇**就明白了.

上面贴的那篇鬼佬写的文章就有误差,那个误差就是软件引起的,所以叫"软件误差",用那种方法,哪怕给你理想精度的晶体和理想的硬件条件,做出来的时钟也是不准的.

使用特权

评论回复
31
gyt| | 2007-7-24 11:57 | 只看该作者

27楼正确

ayb_ice说的完全对,我就不重复了

使用特权

评论回复
32
sharks| | 2007-7-24 14:09 | 只看该作者

51的误差

   51的指令周期不定,一条没执行完之前不响应中断,所以中断会有时间差。解决的办法很简单,PCON=0x01,从休眠中中断,绝对时间可靠

使用特权

评论回复
33
啊龙| | 2007-7-24 14:26 | 只看该作者

楼主要求的没有软件误差是不可能的,如果用自动重载功能,

中断读取,只是在本次读取中,不会累计到下一次.你的要求看没要那么精确,一次的误差,人根本觉察不到.

使用特权

评论回复
34
xwj| | 2007-7-24 15:35 | 只看该作者

唉,再说一遍:

软件无累计误差完全可以做到,但系统无累积误差却不可能

使用特权

评论回复
35
maychang| | 2007-7-24 15:47 | 只看该作者

楼主看来还不知道单片机是怎么回事

总是强调算法。
须知算法是人写出来的,你想让它没有误差就可以没有误差,如果有,那是你没想到。

使用特权

评论回复
36
loading888| | 2007-7-24 17:49 | 只看该作者

查认

使用特权

评论回复
37
aolin|  楼主 | 2007-7-25 09:05 | 只看该作者

已经找到方向了!

已经找到方向了,正在验证中!
27楼说的方法是行不通的:
1, 定时器中断重装定时器时,你根本不知道从定时器溢出到中断响应已经过了多少指令周期,所以那个所谓的补偿值是很难准确去算出来的!

2, 避开TL0的重装值一点意义都没有! 12MHz晶体,不用TL0的重装值,每次定时中断永远都是256US的整数倍,不可能得到整毫秒或秒的.这样的重装跟不要重装是区别不大!

使用特权

评论回复
38
mqy1977| | 2007-7-25 09:15 | 只看该作者

拿牛刀杀**的感觉

使用特权

评论回复
39
后学| | 2007-7-25 11:13 | 只看该作者

re:

34楼: 唉,再说一遍: 

软件无累计误差完全可以做到,但系统无累积误差却不可能
 
 

使用特权

评论回复
40
gyt| | 2007-7-25 12:08 | 只看该作者

晕啊

27楼的方法绝对行得通的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则