Установка задержки в микросекундах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Установка задержки в микросекундах

Сообщение Nikolas » 30.04.2015 14:32:05

Здравствуйте.
Требуется задавать задержку выполнения операций в программе/потоке с точностью до +/-25 микросекунд.
В Windows-программе я для этого использовал QueryPerformanceFrequency + QueryPerformanceCounter.
А как это сделать в lazaruse под Linux?
Nikolas
новенький
 
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Re: Установка задержки в микросекундах

Сообщение dedm0zaj » 01.05.2015 03:37:34

http://www.freepascal.org/docs-html/rtl ... ofday.html
http://www.freepascal.org/docs-html/rtl ... meval.html

Код: Выделить всё
var
  tval    : timeval;
begin
  fpGetTimeOfDay(@tval,nil);
end;


fpGetTimeOfDay забирает нынешнее время в тип timeval, разбивая на секунды и микросекунды.
задержку можно устраивать, как while, выход из которого будет разница во времени.
dedm0zaj
постоялец
 
Сообщения: 108
Зарегистрирован: 05.10.2012 19:55:20

Re: Установка задержки в микросекундах

Сообщение Nikolas » 12.05.2015 13:10:05

Я похоже полный нуб - не понимаю как их объявить и вызвать

Добавлено спустя 1 час 3 минуты 29 секунд:
Или данная функция вызывается только под Linux, а под Windows нужные модули не подключаются?
Nikolas
новенький
 
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Re: Установка задержки в микросекундах

Сообщение mig-31 » 12.05.2015 15:25:53

Обычно для этих целей используется REAL TIME операционная система.

В Windows такую задежку гарантированно сделать невозможно. System Clock Windows = 1kHz = 1ms.

В Linux надо установить RT PREEMPT ядро. System Clock RT PREEMPT = 1MHz = 1microsec. и использовать функцию fpnanosleep.

Опишите для чего нужна подобная задержка, что бы дать правильный ответ.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: Установка задержки в микросекундах

Сообщение Лекс Айрин » 12.05.2015 16:21:01

mig-31 писал(а):В Windows такую задежку гарантированно сделать невозможно. System Clock Windows = 1kHz = 1ms.


так уж и невозможно?

http://rsdn.ru/forum/winapi/4159851.all
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Установка задержки в микросекундах

Сообщение mig-31 » 13.05.2015 11:46:53

Дело не в таймере, а в операционке, которая должна обрабатывать например прерывания.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 260

Рейтинг@Mail.ru