使用clock_gettime在arduino中进行纳秒测量
Posted
技术标签:
【中文标题】使用clock_gettime在arduino中进行纳秒测量【英文标题】:nanosecond Measurement in arduino using clock_gettime 【发布时间】:2013-12-22 18:11:31 【问题描述】:我使用 Arduino 和 Xbee Zg 制作了一个本地化项目,我需要使用带有 84 Mhz 时钟 和 的 arduino due 板以纳秒分辨率测量时间arduino 1.5.2 IDE
我正在尝试使用 clock_gettime
函数,我已经包含了 time.h,但我得到了相同的结果
编译错误
clock_gettime
未在此范围内声明
这只是我的 Distance_Measurement.c 文件的一部分
#include "Distance_Measurement.h"
#include "time.h"
struct timespec start, stop;
bool Start_Time()
if(clock_gettime(CLOCK_REALTIME,&start) == -1)
return false;
else
return true;
bool Stop_Time()
if(clock_gettime(CLOCK_REALTIME,&stop) == -1)
return false;
else
return true;
double Cal_Time_Nano()
return (stop_time.tv_nsec - start_time.tv_nsec);
请帮帮我
【问题讨论】:
作为参考,84 MHz =~= 11.9 ns/cycle。您根本无法获得真正的纳秒分辨率,只是基于 11.9ns 滴答声的近似值(即使是这样)。 长镜头,但看到 GCC 首先在包含当前文件的目录中查找使用 #include "file" 请求的标头,然后在 -iquote 选项指定的目录中查找,然后在相同的地方,它会寻找带有尖括号的标头。例如,如果 /usr/include/sys/stat.h 包含#include "types.h",则 GCC 首先在 /usr/include/sys 中查找 types.h,然后在其通常的搜索路径中查找。,检查您的-iquote
选项,或尝试#include <time.h>
是的,我知道信号在 3.3 ns 内传播 1m,所以我会得到一个误差 +- 4m 的测量距离,这是可以接受的
我第一次使用 #includeclock_gettime
函数?如果没有,请查看包含的 time.h
文件,并比较两者,也许它们包含一些 Microsoft 衍生版本的时间标头...它是否使用命名空间,在这种情况下,您是处理 C++ 头文件...您能否指定包含的头文件与您实际尝试使用的头文件之间的差异?您是否可以访问 *NIX 系统,并且您的代码是否在那里编译?你包括stdfax.h
吗?
【参考方案1】:
我第一次使用#include 我遇到了同样的错误我发现 Visual Studio 在 arduino gcc 中包含了 anther time.h 而不是 time.h 所以我复制了最后一个并将其粘贴到我的距离测量库中的 arduino 库路径– PrinceOfEgy
【讨论】:
以上是关于使用clock_gettime在arduino中进行纳秒测量的主要内容,如果未能解决你的问题,请参考以下文章
使用 ICC 在 Linux 中未定义的对 clock_gettime() 的引用
OpenCL clock_gettime vs 内核分析:奇怪的结果