打印

定时器精确定时

[复制链接]
3081|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
westsfw|  楼主 | 2008-1-25 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dai_weis| | 2008-1-25 15:20 | 只看该作者

使用自动重装定时器就可以了

使用特权

评论回复
板凳
westsfw|  楼主 | 2008-1-25 17:21 | 只看该作者

中断太频繁了吧

中断太频繁了吧

使用特权

评论回复
地板
5880527| | 2008-1-25 17:58 | 只看该作者

能消除

你既然都想到了就一定能消除

使用特权

评论回复
5
救火车| | 2008-1-25 18:18 | 只看该作者

可以消除

你可以进行汇编级的调试。把重装的时间也算进去。
我曾用定时器做过时钟。
精度做到了每天小于1秒。我们用的晶振一般都是20ppm,不是太准。做时钟是差点,但一般情况还是够用。

使用特权

评论回复
6
ayb_ice| | 2008-1-25 20:28 | 只看该作者

可以消除

使用特权

评论回复
7
liuf| | 2008-1-25 22:02 | 只看该作者

把指令执行的时间算进去 可以消除的

使用特权

评论回复
8
westsfw|  楼主 | 2008-1-26 19:28 | 只看该作者

还有误差

回各位兄弟,我着做过才这么问的。发现每次进入中断的时候计数器计过的数不一样,差一个机器周期吧,也就是说这个误差肯定不能除去了。我已经做到MS级了每24小时哈哈。

使用特权

评论回复
9
5880527| | 2008-1-26 19:49 | 只看该作者

谁说的不能除去了

那误差不会是差一个机器周期,不过还是可以除去的,使每次进中断的效果都同一时刻,虽然我从没做过时钟之类的东西

使用特权

评论回复
10
xwj| | 2008-1-26 19:50 | 只看该作者

这个问题讨论得太多了,这个误差绝对能消除,

你不能消除的话只能说你太笨了

使用特权

评论回复
11
后学| | 2008-1-26 20:53 | 只看该作者

干吗要那么准,

又不是做时钟,

做时钟直接用个rtc更好,

使用特权

评论回复
12
westsfw|  楼主 | 2008-1-26 21:26 | 只看该作者

10楼的同志呀

我承认我不聪明,我要能解决的话不来这儿丢人了。您老人家这么牛看着这么简单来解决一下呀,别站着说话不腰疼哈哈

使用特权

评论回复
13
sz_kd| | 2008-1-26 21:34 | 只看该作者
14
gyt| | 2008-1-27 13:29 | 只看该作者

可以啊

使用特权

评论回复
15
westsfw|  楼主 | 2008-1-28 10:48 | 只看该作者

回13楼

没办法呀,天和自卑哈哈,拍一下感觉打击不小呀;不过还是谢谢那位兄弟,不是十楼的砖头俺还不知道人有多大胆地有多大产呢,哈哈;用51已经把每次进入中断时定时器低位跑过的数的差值修正了。
下面开始考虑下义隆上怎么搞定了:4M晶振,振荡周期先分频再给计数器,看怎么设法消除分频计数器上的1个差值了。谢谢各位了~

使用特权

评论回复
16
zhang123| | 2008-1-28 12:04 | 只看该作者

*们用的晶振一般都是20ppm,不是太准?

那要什么精度的?

使用特权

评论回复
17
westsfw|  楼主 | 2008-1-28 12:24 | 只看该作者

只是较真儿~

俺就做来看看的,要求每次进入中断函数的某个指定(自已设的唯一的)位置时用的时间是1S,误差在10US之内就可以了,发这个帖子只是跟自己较下真儿,看看到底能不能做到没有误差,现在在KEIL里模拟已经看不到误差了。如果没问题就不扯这个了,除非还有做得不对的地方。中断程序如下:
void timer1(void) interrupt 3 using 1
{
    unsigned int times;

    TL1  += 25;    
    TH1   = 252;
    times++;
    if(times>=500)
    {        
        times=0;
    }
}
用6M晶振,timer1方式1,每2MS中断一次,现在两次到times=0;语句的时间差是1S,拍吧~哈哈

使用特权

评论回复
18
yixiupu0| | 2008-1-28 12:52 | 只看该作者

re

    uchar times;
    if(times>=500)
    你是不是
    #define uchar unsigned int 呀? 

使用特权

评论回复
19
westsfw|  楼主 | 2008-1-28 15:34 | 只看该作者

sorry

搞错了,为了简单往上贴的时候弄错的,是unsigned int times

使用特权

评论回复
20
xwj| | 2008-1-28 15:42 | 只看该作者

呵呵,不红不革命,不拍不成材...


不拍拍你你怎么会去动脑筋?
又怎么能解决问题呢?

使用特权

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

本版积分规则

19

主题

131

帖子

0

粉丝