Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Вниз

Задержки ?   Найти похожие ветки 

 
МИФИст   (2002-01-10 22:25) [0]

Искал, искал...так и не нашёл, как же сделать задержку в микросекундах, достаточно точную. Пытался сделать с помощью GetTickCount, да что то не очень. Например, NOP выполняется от 1.2мкс до 1.8мкс, это разве хорошо? не знаю что взять привязаться за эталон, короткой задержки(~1мкс или меньше), слышал, что кто-то делал с точностью до десятков наносекунд.
Заранее благодарю. =)


 
SoftOne   (2002-01-11 01:25) [1]

Я тоже МИФИст, но УВЫ помочь не могу! В микросекундах - могу лишь дать совет для DOS. Причем не очень простой.


 
Beauty_Full   (2002-01-11 04:02) [2]

Multimedia Timer my friend !


 
MegaVolt   (2002-01-11 10:06) [3]

Принесу ответ после 12:00 :)


 
andrucco   (2002-01-11 11:30) [4]

Юзай API для Performance Counter


 
Dimka Maslov   (2002-01-11 11:56) [5]

Windows.Sleep(dwMilliseconds)


 
MegaVolt   (2002-01-11 13:58) [6]

Вот принёс :)


var uTimerId:UINT;
//Старт таймер где:
//mS-Время в миллисекундах
//Error_mS допустимая ошибка формирования временного интервала в милисекундах
//RecVirtual функция вызываемая по срабатыванию таймера описывается так:
//procedure RecVirtual(uTimerID, uMessage: Uint; dwUser, dw1,dw2: DWORD) stdcall;


uTimerID:=TimeSetEvent(mS,Error_mS,@RecVirtual,100,time_periodic);
//Стоп
timeKillEvent(uTimerID);


Пользуйтесь на здоровье :)


 
Mbo   (2002-01-11 14:46) [7]

var QW : TLargeInteger;

QueryPerformanceFrequency(QW);
ClockRate := QW.QuadPart;
QueryPerformanceCounter(QW);
StartTime := QW.QuadPart;
repeat
//Application.ProcessMessages;
QueryPerformanceCounter(QW);
TimeElapsed:=(QW.QuadPart - StartTime)/ClockRate;
until TimeElapsed ...



 
Хакеренок   (2002-01-11 18:39) [8]

Вот тебе - Sleep(0,001) и все тут !!! А вы мучились :))))))))


 
SoftOne   (2002-01-12 02:57) [9]

2 Mbo © (11.01.02 14:46)
Из всех ответивших, Вы дали самый "лучший" ответ,
однако, как МИФИст, замечу, что для реальных физических измерений, зто врядли подходит.
Ещё раз, для реальных физических измерений, Windows просто не в дугу. DOS - ещё куда не шло. НО единственно грамотный способ - работать с внешним или внутрениим устройством, которое измеряет в реальном времени, а уж потом, при случае скидывает данные в компьютер.
Тут, кстати, можно перейти и к наносекундам, как спросил автор вопроса.


 
Slaventius   (2002-01-13 02:48) [10]

У Mbo всё отлично в ответе. Но могу дать пару советов (практических конечно :) ).

1. QueryPerformanceFrequency для РС всегда возвращает 1.193 МГц (или около того.. не помню точно). То есть 1 тик проходит ~0.8 микросекунд. То есть можно чуть оптимизировать алгоритм приведя задержку из времени в количество тиков. Деление что ни говори операция емкая...
2. Для увеличения точности, повысить исполняемому процессу приоритет. Что бы другие операции не так влияли на точность измерений. (полностью этого не избежать :( увы).
3. В любом случае - погрешность всё равно будет... На PII 266Mhz добивался точности измерений сигналов с периодом от 200мкс. И то.. Если винда дергала винтом, то возникали провалы в измерениях до 500 мс.. :-( Поэтому внешнее измеренее пожалуй самое правильное решение.



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-22740
snoup
2002-03-26 23:47
2002.04.08
Почему не работает вот такая фигня: if timeover = 10 then label1.color:=clred;??????


14-22810
Феликс
2002-02-22 18:04
2002.04.08
Матч Россия-США?


1-22628
snoup
2002-03-27 20:33
2002.04.08
Как сделать простую инсталяху которая копирует на винт пару файло


1-22646
IronHawk
2002-03-27 12:30
2002.04.08
Как обыкновенную ToolBar-ину сделать вертикальной ? Все её свойства и её саму повернуть на 90° ???


1-22756
Aleksandr
2002-03-27 11:29
2002.04.08
Никто не в курсе, в каких случаях появляется такое исключение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский