我想用qnx定时器每隔2ms触发一个任务能做到吗,qnx定时精度是多少

我想用qnx定时器每隔2ms触发一个任务能做到吗,qnx定时精度是多少

系统时钟是1ms(除非你的CPU主频非常慢)。所以可以设2ms的时钟。

不过,看看下面这篇文章,能帮助你理解这样细的时钟的误差在哪里。

http://www.qnx.com/developers/articles/article_834_1.html

那请问用外部硬件定时器定时2ms,用外部中断触发任务,能做吗,任务能以2ms为周期执行吗,这个每2ms执行一次的任务会使系统崩溃吗

ClockCycles()能更精确定时,用它来触发任务问题出在哪,谢谢

外部定时器的话,确实可以更精确。2ms一次的任务不会造成系统崩溃。

ClockCycles() 可以计时,但它不触发事件(不会发生中断),所以不能用来触发任务。

系统误差是固定的吗,比如假设中断周期是10ms,误差1ms实际周期总是11ms,还是误差是变化的,

如果用外部中断,那就不用定时器了。跟系统时钟的误差也没有关系了。

如果外部硬件中断保持10ms一个中断的话,中断响应就是10ms一次。

如果用qnx系统的软件定时器实现10ms触发一个任务,如果其误差是定值并且能知道是多少,我们就不用硬件中断了

啊,不是2ms吗?又改10ms了?

关于误差,可以参考我上面列的那篇文章。如果系统时钟是1ms的话,10ms的timer的平均误差是10.5 ms.

当然还要考虑在X86上,"1ms"其实不是1000000ns所带来的误差

您的意思是误差时间并不是个定值,而是某个范围内的一个不确定的值?

最啊。最基本的,系统在每个ms时检查有没有timer expire。也就是说,系统检查的时间点是:T, T+1(ms), T+2(ms), …

如果你在 T+0.3(ms)的时候,要求一个10ms的时钟,那么你会在 T+11(ms)的那个tick被通知到,这样,你就有0.7ms的误差了。

如果用每10ms一次的外部中断,windows能否响应得过来,
如果windows能够及时响应这样短周期的中断,那么qnx的优势又在哪里呢 :question: