天嵌 ARM开发社区

 找回密码
 注册
查看: 3935|回复: 10

TQ2440 linux系统下驱动程序下的精确延时

[复制链接]
a13526758477 发表于 2013-6-25 10:21:21 | 显示全部楼层 |阅读模式
由于时序问题,得在驱动程序中精确延时,看了论坛中一些帖子后,听说系统自带的像ndelay()之类的函数都不准确。我想问下为啥不准呢,是因为延时函数都是基于时间片上的延时吗?那么在10ms之内该都是准确的吧?还有就是,如果这些延时函数都不行,那我该用啥办法呢,定时器,还是还有其他好办法?谢谢了,希望大家给点建议!
TQ-ZQL 发表于 2013-6-25 11:19:32 | 显示全部楼层
得看你具体要多精准,如果是很精准,建议直接使用定时器。或者自己简单地写些for循环。还有一点要注意的是即使是你得到了精确的延时时间但是也不能保证你在这个时间之内得到调度执行 。如果对实时性要求很高,建议不要使用linux。
亚瑟王 发表于 2013-6-25 11:20:37 | 显示全部楼层
亲,用硬件定时器是最准确的。
 楼主| a13526758477 发表于 2013-6-25 11:42:52 | 显示全部楼层
亚瑟王 发表于 2013-6-25 11:20
亲,用硬件定时器是最准确的。

我要ns级延时,是不是达不到啊?
 楼主| a13526758477 发表于 2013-6-25 11:45:06 | 显示全部楼层
TQ-ZQL 发表于 2013-6-25 11:19
得看你具体要多精准,如果是很精准,建议直接使用定时器。或者自己简单地写些for循环。还有一点要注意的是即 ...

我要ns级延时,也不需太精准,行不行啊?不知for循环该怎样写,怎样计算它延时时间?求帮助,谢谢了!
TQ-ZQL 发表于 2013-6-25 14:20:02 | 显示全部楼层
本帖最后由 TQ-ZQL 于 2013-6-25 14:20 编辑

就是写个
gpio_h//直接写寄存器,不要用linux做好的库
for(xxxxx)
gpio_l
用示波器量一下那个脚的电平就能大概知道延时多长了。
 楼主| a13526758477 发表于 2013-6-25 15:12:05 | 显示全部楼层
TQ-ZQL 发表于 2013-6-25 14:20
就是写个
gpio_h//直接写寄存器,不要用linux做好的库
for(xxxxx)

恩,是个办法,谢谢您!能不能像51单片机一样到keil上仿真这个循环啊,把晶振设为400M?
亚瑟王 发表于 2013-6-26 09:15:07 | 显示全部楼层
a13526758477 发表于 2013-6-25 15:12
恩,是个办法,谢谢您!能不能像51单片机一样到keil上仿真这个循环啊,把晶振设为400M?

TQ2440_Test就是ADS的裸机程序,不过这样测试效果不会很好的,建议用硬件定时器来处理这些事情。
 楼主| a13526758477 发表于 2013-6-26 11:31:40 | 显示全部楼层
亚瑟王 发表于 2013-6-26 09:15
TQ2440_Test就是ADS的裸机程序,不过这样测试效果不会很好的,建议用硬件定时器来处理这些事情。

您好,亚瑟王,硬件定时器定不到ns级吧?
亚瑟王 发表于 2013-6-28 09:54:49 | 显示全部楼层
a13526758477 发表于 2013-6-26 11:31
您好,亚瑟王,硬件定时器定不到ns级吧?

下图2440的datasheet中PWM章节的截图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| a13526758477 发表于 2013-8-6 15:42:22 | 显示全部楼层
亚瑟王 发表于 2013-6-28 09:54
下图2440的datasheet中PWM章节的截图:

亚瑟王,帮帮我,注册了定时器0中断,但是不知道该怎样改定时时间。求助啊,帮帮我,试验半天了都不行!在linux系统下,怎样写定时器0驱动啊,给点指导!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-7-3 04:58 , Processed in 1.078125 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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