Linux / C上的高分辨率(100 nsec)时序

时间:2015-02-28 22:26:00

标签: c timer raspberry-pi gpio

我在Raspberry B +上使用Raspian在GPIO输出上获得1700纳秒(+ - 10%)的脉冲。因此,我需要一个高分辨率的挂钟计时器。对于高分辨率时序,有几个clock_gettime引用(例如12)。但是,我得到1.只有1微秒的分辨率和2.这个短代码没有足够的最短时间:

int start_time, current_time, elapsed_time;
struct timespec resolution;

clock_gettime(CLOCK_MONOTONIC, &resolution);
start_time = Resolution.tv_nsec;

clock_gettime(CLOCK_MONOTONIC, &resolution);
current_time = resolution.tv_nsec;

elapsed_time = current_time - start_time;
if(elapsed_time < 0) {
  elapsed_time = elapsed_time + 1000000000; //in case clock_gettime wraps around
}

printf("%i\n", elapsed_time);

结果是3000(纳秒),即使这个最短的代码片段也花费太多时间。如果我添加一些耗时的代码,下一个更大的结果是4000。

如何才能获得一个至少100 nsec分辨率且最小可能时间小于1700 ns的挂钟定时器? Raspberry Pi可以做得更快(带有WiringPi的100纳秒脉冲)显示GPIO Benchmark。我知道额外的电子设备(monoflop)可以帮助我,但我希望以更简单的方式解决问题。谢谢。

0 个答案:

没有答案