Выполнить калибровку перед вызовом nanospin*()
#include <time.h>int nanospin_calibrate( int disable );
1
для отключения прерываний во время вызова nanospin_calibrate() или 0
для их включения.libc
Функция nanospin_calibrate() выполняет калибровку для семейства функций остановки nanospin*(). При первом вызове nanospin(), nanospin_ns() или nanospin_ns_to_count() библиотека C вызывает nanospin_calibrate() с аргументом 0
(прерывания разрешены), если она не была вызвана явно.
Если nanospin_calibrate() не вызывалась явно, первый вызов nanospin*() будет иметь слишком долгую задержку.
Функции nanospin*() предназначены для использования с аппаратурой, которая требует коротких временных задержек между операциями. Их следует использовать для задержки не более, чем в несколько миллисекунд. Для более долгих задержек следует использовать функции POSIX timer_*(). |
Прерывания, возникающие во время nanospin_calibrate(), могут нарушить ее тайминг. Если disable равен 0
(нулю), можно предотвратить эту ситуацию:
Если disable равен 1
(единице), код отключает прерывания до и после цикла калибровки. Вызывающий поток по-прежнему отвечает за привилегии ввода/вывода перед вызовом nanospin_calibrate().
Ожидание в течение 100
наносекунд:
#include <time.h>#include <sys/syspage.h>int disable = 0;unsigned long time = 100;.../* Wake up the hardware, then wait for it to be ready. */if ( (nanospin_calibrate( disable )) == EOK )nanospin_count( nanospin_ns_to_count( time ) );elseprintf ("Didn't calibrate successfully.\n");/* Use the hardware. */...
ЗОСРВ «Нейтрино»
nanospin(), nanospin_count(), nanospin_ns(), nanospin_ns_to_count(), timer_create()
Предыдущий раздел: Описание API системной библиотеки