Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
ВнизКак установить интервал таймера 1 микросекунда Найти похожие ветки
← →
Delphi_is_cool © (2005-08-22 16:24) [0]Минимальный интервал таймера 1 милисекунад, а как сделать
чтоб интервал был 1 микросекунда ?
← →
andov (2005-08-22 16:26) [1]На сколько я знаю на обычным TTimer этого не раализовать!
← →
tesseract © (2005-08-22 16:29) [2]Можно считать такты процессора. Но только в режиме ядра aka драйвер.
← →
Delphi_is_cool © (2005-08-22 16:29) [3]Честно говоря всё равно как, главное чтоб работало как надо :)
← →
TUser © (2005-08-22 16:31) [4]TTimer и 1 мсек не даст, там точность ниже. Микро можно сделать только на специальном железе, большинство таймеров такой возможности просто не поддерживают. Да и не нужно оно чаще всего.
← →
DiamondShark © (2005-08-22 16:42) [5]А с какой целью интересуетесь?
← →
Desdechado © (2005-08-22 16:49) [6]Windows - этоне realtime-система, поэтому такой точности она не выдаст НИКОГДА
причем, даже если получится достигнуть что-то лучше 10 миллисек, 98%, что девиация таких интервалов будет зависеть от загруженности ситемы
← →
Delphi_is_cool © (2005-08-22 17:37) [7]Значит это не возможно ?
← →
DiamondShark © (2005-08-22 18:38) [8]
> Delphi_is_cool © (22.08.05 17:37) [7]
Это -- невозможно.
Но если скажешь, зачем тебе это понадобилось, может оказаться, что не всё так плохо.
← →
SH@RK © (2005-08-22 19:24) [9]Стандартный Timer работает с точностью 55 милисек, т.е. "обновляется" 18 раз с секунду (со времён ДОСа знаю). Но в Win32 можно добится большей точности, используя API-шные функции:
function timeSetEvent(uDelay, uResolution: UINT; lpTimeProc: Pointer; dwUser: DWORD; fuEvent: UINT): Integer; stdcall; external "winmm";
function timeKillEvent(uID: UINT): Integer; stdcall; external "winmm";
Сколько раз с секунду "обновляется" этот Timer я не помню.
← →
TUser © (2005-08-22 19:56) [10]> Стандартный Timer работает с точностью 55 милисек
Слышал, что эта константа зависит от версии ОС. Так или нет - не проверял.
← →
Defunct © (2005-08-22 20:39) [11]Delphi_is_cool © (22.08.05 17:37) [7]
Это возможно, но не под Windows. Либо если под виндовс - тогда в режиме ядра обрабатывать непосредственно прерывание от APIC таймера (если последний имеется в ниличии).
SH@RK © (22.08.05 19:24) [9]
> Стандартный Timer работает с точностью 55 милисек, т.е. "обновляется" 18 раз с секунду (со времён ДОСа знаю).
Стандартный таймер настраивается, и его точность может достигать чуть меньше одной микросекунды (1.193Mhz если мне не изменяет память). В Windows NT таймер настроен на квант времени ~100 микросек, прикладным приложениям событие обновления сист таймера выдается с точностью 10 милисек)
> TUser © (22.08.05 19:56) [10]
так.
← →
Eraser © (2005-08-22 21:00) [12]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=434
← →
DrPass © (2005-08-22 23:05) [13]
TUser © (22.08.05 19:56) [10]
> Слышал, что эта константа зависит от версии ОС. Так или
> нет - не проверял
55 мсек - это интервал импульсов, которые выдает нулевой канал системного таймера. Это значение не менялось уже четверть века, с тех пор, когда появились первые IBM PC. Традиционно все временные отсчеты в компьютере привязывались к нему. Возможно, современный ПК имеет другие устройства, для более точного измерения времени, которые использует Windows - я не интересовался.
← →
Eraser © (2005-08-22 23:32) [14]NT - 10 мс
9x - 55 мс
← →
Defunct © (2005-08-22 23:44) [15]DrPass © (22.08.05 23:05) [13]
> 55 мсек - это интервал импульсов, которые выдает нулевой канал системного таймера.
Я тоже так думал, до тех пор пока, участвуя в одном из споров на эту тему, не прочитал Рихтера.
> Возможно, современный ПК имеет другие устройства, для более точного измерения времени, которые использует Windows - я не интересовался.
APIC таймер разрешающая способность - 1 такт процессора.
← →
KilkennyCat © (2005-08-22 23:46) [16]
> [15] Defunct © (22.08.05 23:44)
у меня этот спор даже сохранен где-то был... надо найти. Познавательно было.
← →
Delphi_is_cool © (2005-08-23 01:31) [17]DiamondShark ©
>Но если скажешь, зачем тебе это понадобилось, может оказаться, что не всё так плохо.
Личный интерес =)
Defunct ©
>Это возможно, но не под Windows. Либо если под виндовс - тогда в режиме ядра обрабатывать непосредственно прерывание от APIC таймера (если последний имеется в ниличии).
А что за APIC таймер ?
← →
SH@RK © (2005-08-23 01:50) [18]API-шная функция timeSetEvent имеет точность 1 милисек, а точнее может выдавать 850 "тиков" в секунду.
http://lib.csu.ru/dl/bases/prg/kompress/articles/2001%5F05%5Ffaronov/
Листинг тестовой программы: http://lib.csu.ru/dl/bases/prg/kompress/articles/2001%5F05%5Ffaronov/list5.htm
Проверьте сами.
← →
Defunct © (2005-08-23 03:06) [19]Delphi_is_cool © (23.08.05 01:31) [17]
Подробности в документации к процессорам.
доcтуп в делфи через:
QueryPerformanceCounter()
QueryPerformanceFrequency()
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c