измерение наносекунд в arduino с использованием clock_gettime

Я делаю проект локализации, используя Arduino и Xbee Zg, где мне нужно измерять время в наносекундном разрешении, используя плату arduino due с часами 84 МГц и arduino. strong> 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);
}

пожалуйста, помогите мне


person PrinceOfEgy    schedule 22.12.2013    source источник
comment
Для справки: 84 МГц =~= 11,9 нс/цикл. Вы просто не получите истинного наносекундного разрешения, а только приближение, основанное на тиках 11,9 нс (если даже это).   -  person cHao    schedule 22.12.2013
comment
длинный план, но поскольку GCC ищет заголовки, запрошенные с помощью #include file, сначала в каталоге, содержащем текущий файл, затем в каталогах, указанных параметрами -iquote, затем в тех же местах, где он искал бы заголовок запрошен с угловыми скобками. Например, если /usr/include/sys/stat.h содержит #include types.h, GCC ищет types.h сначала в /usr/include/sys, а затем по обычному пути поиска. проверьте -iquote вариантов или попробуйте #include <time.h>   -  person Elias Van Ootegem    schedule 22.12.2013
comment
Да, я знаю, что сигнал распространяется на 1 м за 3,3 нс, поэтому я получу ошибку +- 4 м в измеренном расстоянии, что приемлемо.   -  person PrinceOfEgy    schedule 22.12.2013
comment
я впервые использовал #include‹time.h›, я получил ту же ошибку, я обнаружил, что Visual Studio включила пыльник time.h, а не time.h в arduino gcc, поэтому я скопировал последний и вставил его в путь к библиотекам arduino с моим расстоянием библиотека измерений   -  person PrinceOfEgy    schedule 22.12.2013
comment
@PrinceOfEgy: Поскольку вы используете Visual Studio: например, выполняет ли IDE автоматическое завершение функции clock_gettime? если это не так, взгляните на включенный файл time.h и сравните их, возможно, они включают какую-то производную от Microsoft версию заголовка времени... использует ли он пространства имен, и в этом случае вы имеете дело с заголовок C++... не могли бы вы указать различия между включенным заголовочным файлом и тем, который вы на самом деле пытаетесь использовать? есть ли у вас доступ к системе *NIX и компилируется ли там ваш код? вы включаете stdfax.h?   -  person Elias Van Ootegem    schedule 23.12.2013
comment
ну, в первый раз.h ничего не упоминает о clock_gettime во втором записана эта строка int _EXFUN(clock_gettime и другие параметры   -  person PrinceOfEgy    schedule 23.12.2013
comment
Как сказал @cHao, 84 МГц ~ = 11,9 наносекунд. Вы не сможете получить истинное наносекундное разрешение. Раньше я просто использовал функцию micros(). Пример можно найти здесь: http://arduino.cc/en/reference/micros Удачи.   -  person Progo    schedule 03.01.2015


Ответы (1)


я сначала использовал #include, я получил ту же ошибку, я обнаружил, что Visual Studio включила пыльник time.h, а не time.h в arduino gcc, поэтому я скопировал последний и вставил его в путь к библиотекам arduino с моей библиотекой измерения расстояния – PrinceOfEgy

person Community    schedule 17.11.2016