免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3617 | 回复: 8
打印 上一主题 下一主题

跪求高手:嵌入式精确延时 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-12 16:04 |只看该作者 |倒序浏览
我在嵌入式开发中碰到一个这样的问题,在应用层我写了一延时函数,
for(int i=0;i<70000;i++)
;
for(int j=0;j<60000;j++)
;
这两个循环在单独跑时耗时7.2毫秒,我要用到这个延时来控制外设的延时。当我把这个模块和其他的模块一起跑时,延时就有变化,不稳定了,应该是进程的切换耗时。现在想再,跑这个延时函数时,不要进行进程的切换,怎么去做呢,听说nice可以设置,但是好像没用啊。
多谢啦!

论坛徽章:
0
2 [报告]
发表于 2012-06-12 16:22 |只看该作者
usleep()精确到到微秒

论坛徽章:
0
3 [报告]
发表于 2012-06-12 16:25 |只看该作者
不能靠循环来控制延时,太不可靠,也可以设置定时器

论坛徽章:
0
4 [报告]
发表于 2012-06-12 19:30 |只看该作者
我用过usleep来延时,可是,usleep(5),和usleep(10),usleep(1)都是一样的10ms,而我需要的是7.2毫秒。这个就不知道咋弄了。在示波器下回复 3# ljk186


   
z75993971 该用户已被删除
5 [报告]
发表于 2012-06-13 12:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2012-06-13 14:54 |只看该作者
z75993971 发表于 2012-06-13 12:32
精确延时,用定时器啊

我用了clcok_gettime,来,还是发现不行啊。能明示吗,多谢
z75993971 该用户已被删除
7 [报告]
发表于 2012-06-14 13:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2012-06-14 15:55 |只看该作者
这种精度的延时还是放到内核里面比较合适吧。

论坛徽章:
0
9 [报告]
发表于 2012-06-15 16:05 |只看该作者
z75993971 发表于 2012-06-13 12:32
精确延时,用定时器啊

其实我这里主要是用到485串口,是半双工的,所以在发数据时,把电平拉高,数据发完,就拉低电平,所以就用到延时,来控制延时。有没有一种方法知道数据完全发送完呢。在网上看到可以设置,O_SYNC。
fd = open("/dev/ttyS0",0_WRRD|O_SYNC),然后看write的返回数据,是实际的写完的数据,后来用示波器看,其实返回的数据并没有写完,应该返回的只是表示刚写完。有没有一种办法知道数据放送完呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP