打印
[ZLG-ARM]

DelayNS,DelayMS大约是多少时间?

[复制链接]
4998|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
malaohu|  楼主 | 2007-4-29 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如:
void DelayMS(uint32 dly)
{  uint8  i;

   for(; dly>0; dly--) 
      for(i=0; i<100; i++);
}

void DelayNS(uint32 dly)
{  uint8  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}

这个时间是怎么估计出来的,i取多少时是1秒,取多少是1毫秒?

在zlg7290的软件包里有如下程序,为什么要DelayMS(10)?这个延时是多少,怎么确定的?
unsigned char ZLG7290_SendCmd(unsigned char Data1,unsigned char Data2)
{
    unsigned char Data[2];
    
    Data[0]=Data1;
    Data[1]=Data2;
    ISendStr(ZLG7290,0x07,Data,2);
    DelayMS(10);
    return 1;
}  

相关下载

相关帖子

沙发
王紫豪| | 2007-4-29 10:31 | 只看该作者

估算,不精确

使用特权

评论回复
板凳
malaohu|  楼主 | 2007-4-29 11:23 | 只看该作者

大约怎么个估算法?

使用特权

评论回复
地板
zlgARM| | 2007-4-29 13:58 | 只看该作者

malaohu

精确延时一般用定时器。

Delay(1S)这种用法仅仅在类似这样的例子:我让一个灯亮1S,灭1S,不停闪烁。


您可以用Delay()来做灯的闪烁试验,您改一下Delay的延时参数,再看看闪烁速度。


使用特权

评论回复
5
ntman1985| | 2007-4-29 21:41 | 只看该作者

用函数来延时,要看把这函数翻译成汇编后有多少条指令

单片机执行一条指令要用多少时间,再乘一下.

使用特权

评论回复
6
malaohu|  楼主 | 2007-4-30 09:30 | 只看该作者

原来是要现翻译成汇编。怪不得以前调试AVRStudio时发现怎么每一句指令执行所需时间都不同呢。

使用特权

评论回复
7
zlgARM| | 2007-4-30 14:53 | 只看该作者

malaohu

51计算指令周其很方便。基本上只要按照晶振的频率来计算就好。
但ARM的指令周期不是很好计算,因为不仅仅取决于CCLK,还要受流水线、指令存取速度的影响。

使用特权

评论回复
8
malaohu|  楼主 | 2007-5-1 12:05 | 只看该作者

嗯,非常感谢;)

使用特权

评论回复
9
Swd21ic| | 2007-5-1 22:08 | 只看该作者

!!!

用示波器测一下就知道了,不过受时钟频率,编译器,RAM/FLASH模式,ARM/THUMB模式的影响

使用特权

评论回复
10
malaohu|  楼主 | 2007-5-10 15:17 | 只看该作者

总该有个估计值吧?

一:
你比如一个
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<5000; i++);
}

我若把5000换位50000是不是原来的延时时间乘10了?那么上面的延时函数一般是延时多少us或ms?就没有个粗略值么、

二:
比如
ADCR= 0x11423453;
DelayNS(10);
这儿究竟延时了多少,我应用到控制中去的时候会不会因为延时过长过短造成损失呢?

使用特权

评论回复
11
Ice_River| | 2007-5-10 16:35 | 只看该作者

建议不估算!

对于2292来说,仿真时候的延时和真正跑起来时候的延时也是不一样的!
还是调试下,再调整!

使用特权

评论回复
12
zlgARM| | 2007-5-10 19:23 | 只看该作者

malaohu

我觉得暂时不应该花费这么多力气在这种问题上。先把基本概念搞清楚可能好些。
精确延时,明明可以用定时器去做,为什么非要用软件延时呢?有时候,好奇心会把人引到歧途~

使用特权

评论回复
13
chengyabcd| | 2007-5-11 08:04 | 只看该作者

赞同

ZLGARM说的对,没有必要在这种问题上花费大量的时间,需要精确定时就用定时器好了。^_^

使用特权

评论回复
14
zlgARM| | 2007-5-11 08:28 | 只看该作者

by the way

非常短的精确延时可以用软件延时实现。其它情况的精确延时最好用定时期。

使用特权

评论回复
15
malaohu|  楼主 | 2007-5-11 19:50 | 只看该作者

ok

懂了,要是显示个led之类的用个delayNS就可以了,要是精确延时还是用timer。thanks

使用特权

评论回复
16
250673206| | 2007-5-15 11:04 | 只看该作者

hehe

ZLGARM没法精确定时地,
只有定时器才行
因为,汇编之后有可能是THUMB指令也有可能是ARM指令

使用特权

评论回复
17
malaohu|  楼主 | 2007-5-15 15:34 | 只看该作者

嗯,认识逐渐的深刻了!

非常感谢各位大侠!!!

使用特权

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

本版积分规则

31

主题

95

帖子

0

粉丝