NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

用定时器卡硬件可以实现精确周期的循环吗,是否有必要

我的需求是这样的,我希望实现的周期为T的循环如下,精度希望达到微秒级:

while(true)

{

doSomeThing();//做一些计算或者端口读取的工作,做这些事情的时间必然小于T

waitUntilNextCycle(T);//阻塞在此,检查定时器,直到本次循环的时间达到T,此时重置时钟,重新计时

}

 

其中waitUntilNextCycle(T)的作用方式与usleep这类函数并不相同,并不是简单阻塞时间T,而是使一次循环的时间达到T。

我使用的是linux系统,如果必要的话可以使用rt系统,我想请大家解答我如下几个问题:

1、现在我并没有购置硬件定时器,在不采用任何采集卡的情况下,仅添置一张定时器卡能否实现这样的循环?

2、在linux系统中要实现这样微秒级的精度的循环,是否一定要依靠外部硬件时钟?

 

新人欢迎大家指教。

 

0 项奖励
1 条消息(共 2 条)
3,138 次查看

非实时的操作系统不能实时响应的中断,即便加了硬件也没用。

Linux需要加RT核,可以用其它实时系统代替。

0 项奖励
2 条消息(共 2 条)
3,116 次查看