阅读:3135回复:35
windows下,有没有方法可以实现1ms或更小的精确定时
霍霍
|
|
最新喜欢:![]()
|
沙发#
发布于:2002-10-28 21:33
好像有方法可以使用硬件时钟中断,举例来说,比如你有一块数据采集卡,需要很高的精度,这时卡上可能会有一个时钟芯片,产生精度很高的时钟,你或许可以使用这一时钟中断,不过小弟没有研究过,在这里板门弄斧了。
|
|
板凳#
发布于:2002-10-27 09:56
我 也正在研究这个问题 在cmos中断未到来时,cpu资源是否其它的程序占用呢? |
|
地板#
发布于:2002-10-22 11:50
我 也正在研究这个问题
我是用cmos中断做的,现在碰到了一点问题,有兴趣我们共同研究. |
|
地下室#
发布于:2002-10-21 14:39
直接修改8254的计数值,改写IRQ0的IDT,自己拦截时钟中断,可以达到20微秒级的时间间隔。我现在就在做这个东西,我试过的最小值是14微秒
|
|
|
5楼#
发布于:2002-10-20 16:45
如果是做中断型的触发,可以通过0层的click计数实现,要是想实时传送,恐怕要设定你的中断优先级别,让这个计时中断在次最高级别,试试!
|
|
6楼#
发布于:2002-10-20 15:00
使用楼上方法系统占用很大,有没有其他方法呢
|
|
7楼#
发布于:2002-10-19 22:42
配合使用QueryPerformanceCounter和QueryPerformanceFrequency函数能获得很高的计时精度。前者是取CPU启动到现在的时间,后者是CPU频率。
|
|
8楼#
发布于:2002-10-17 14:24
时钟分辨率是可更改的,timeBeginPeriod就是通过NativeAPI修改这一参数。默认情况下时钟中断10ms发生一次,最小可改到1ms。
媒体定时器对精度不特别高的任务可以胜任,但它的多线程加事件机制能力也是颇为有限的,特别是受高优先级线程的影响很大。 时间计数是较准确的,系统会用TSC修正其值。 低于1ms的定时自然可以,需要硬中断源,最容易想到的就是系统时钟源与cmos实时钟源。个中区别、适用范围自己想想吧,很多人用过的。 |
|
9楼#
发布于:2002-10-17 12:54
正常运行时多媒体定时器为1ms,而普通定时器为10ms(nt/2k)
系统其他会影响到该定时器 |
|
10楼#
发布于:2002-10-15 20:39
1\\ 在windows下想达到毫秒级,最好的方法是让你的程序运行在RING-0级,并且接管时钟中断; 同意,我说做驱动就是为了在 0 级。 |
|
|
11楼#
发布于:2002-10-15 17:27
1\\ 在windows下想达到毫秒级,最好的方法是让你的程序运行在RING-0级,并且接管时钟中断;
原因是: windows 是多任务,运行在RING 3 级程序的线程之间的切换,就不可能让你获得1毫秒的时钟间隔。 曾经在 win 98 上无意间做过一次,现成的转换频率是 200/秒 (说明:当时我的计算机开的程序还不多,否则会更差) 同时,高优先级的程序可以随时介入你的时间处理进程,若他的处理时间大于1毫秒,是否你的程序在很大程度上会失去意义。 郭 |
|
|
12楼#
发布于:2002-10-14 13:38
系统时间当然是 windows 自己计的,我是说 click 数。
你要不把系统时间向前改,再看看 click 数会不会减小。 |
|
|
13楼#
发布于:2002-10-14 13:34
设了。
|
|
|
14楼#
发布于:2002-10-14 13:33
至于 windows 里毫秒级的 click 数,我觉得应该是从硬件实时时钟里读的,不是 windows 自己计的。 不,应该是Windows自己计数,不信看,当SoftIce弹出时,系统时间会变慢。 在你做过的里面用timeBeginPeriod设精度了吗? |
|
|
15楼#
发布于:2002-10-14 13:30
至于 windows 里毫秒级的 click 数,我觉得应该是从硬件实时时钟里读的,不是 windows 自己计的。
[编辑 - 10/14/02 by cn18799] |
|
|
16楼#
发布于:2002-10-14 13:24
我说过了,多媒体定时器受会影响的,你定为 1 ms,但受影响时,它的定时间隔会在 1 到 几十甚至上百 ms 之间。
每秒 60 帧的视频,也不需要 1 ms 的精度。 |
|
|
17楼#
发布于:2002-10-14 13:16
他要 1ms 的,我干吗要做 0.1ms 的? 那多媒体还不够??? 够了 |
|
|
18楼#
发布于:2002-10-14 13:16
好呀好呀
继续, 我喜欢 :D |
|
|
19楼#
发布于:2002-10-14 13:15
他要 1ms 的,我干吗要做 0.1ms 的?
|
|
|
上一页
下一页