搜索
bottom↓
回复: 8

CVAVR自带的延时函数问题【恢复】

[复制链接]

出0入0汤圆

发表于 2008-12-7 03:49:39 | 显示全部楼层 |阅读模式
请教马老师一个问题

在程序中不断的用CVAVR自带的延时函数,是不是比自编的延时函数用的程序量要大。(就是将来生成的代码多)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-1-16 19:41:39 | 显示全部楼层
学习了! THANKS

出0入0汤圆

发表于 2009-1-8 09:27:59 | 显示全部楼层
谢谢马老师指点!!!

出0入0汤圆

发表于 2008-12-16 11:06:20 | 显示全部楼层
原来延时还有这些要注意的,呵呵。今后一定要注意了。谢谢马老师!

出0入0汤圆

 楼主| 发表于 2008-12-8 15:19:48 | 显示全部楼层
谢谢马老师的指点,我有一次编译没通过,还以为它提供的延时函数只可用如常量呢,原来如此啊。

所以我开头的问题,以为这样子会占用很多代码量的。

不过它的延时函数 ms的和us的,我用示波器测量了,还是非常的准确的。

出0入0汤圆

发表于 2008-12-8 12:18:15 | 显示全部楼层
请注意,需要仔细看人家的东西,再发表评价。



CVAVR中提供了2个延时函数:



The functions are:



void delay_us(unsigned int n)

generates a delay of n mseconds. n must be a constant expression.



void delay_ms(unsigned int n)

generates a delay of n milliseconds.

This function automatically resets the watchdog timer every 1ms by generating the wdr instruction.



其中delay_us(unsigned int n)要求n是常数,因为us要准确,使用变量的话会大大影响精度。1us执行的指令不多。

在C程序中调用delay_us()后,你可以看生成的ASM代码,它不是使用CALL,而是用的宏,嵌入了一段代码。当你系统时钟为1M时,调用delay_us(1)还会编译出错,因为嵌入的一段代码,已经超过了1us!



而delay_ms(unsigned int n)中的N就可以是变量,它生成的汇编是采用CALL调用函数,两者不同。另外,在delay_ms()中还清WDT(就是你使用了WDT,也能使用该函数)。作为通用的delay_ms(),代码当然多了点。



以上可以查看CVAVR编译后产生的LST文件。



1。没有好的汇编基础,和对AVR的彻底透彻的掌握,一般人写不出比它还要优化的通用代码。



2。我已经说过多少遍了。在实际的系统中尽量不要使用软件延时,浪费资源不说,系统很难做到并行处理。因此对于10us以下的延时,考虑直接嵌入汇编的_nop_指令。10-100us可以适当考虑使用delay_us(),而大于100us的延时,应该采用定时器中断了。

出0入0汤圆

 楼主| 发表于 2008-12-8 08:10:25 | 显示全部楼层
另外,它的延时函数只适合常量,不能用于变量,自编的延时函数可以用于变量。

出0入0汤圆

发表于 2008-12-7 13:40:03 | 显示全部楼层
要看你的水平,你的水平高,可以编写专用的。CVAVR中是通用的,适合各种系统时钟频率。



不过,尽量不要使用软件延时,特别是对于毫秒以上的延时,应该使用定时器。

本贴被 machao 编辑过,最后修改时间:2008-12-07,13:40:58.

出0入0汤圆

发表于 2013-5-6 00:44:13 | 显示全部楼层
恩 学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 21:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表