Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизИзмерение временных интервалов с точностью 100мкс Найти похожие ветки
← →
Нуждающийся в помощи (2005-01-10 15:52) [0]Собственно subj.
Можно ли и как?
← →
ALS © (2005-01-10 16:09) [1]QueryPerformanceFrequency + QueryPerformanceCounter
← →
Нуждающийся в помощи (2005-01-11 09:14) [2]Смиренно прошу прощения, но никак не соображу: как можно сделать некий таймер использую выше приведенные функции с дискретностью 10-100мкс? Причем сделать так, чтоб он не загружал на 100% процик.
← →
PVOzerski © (2005-01-11 11:09) [3]Если речь о микросекундах - боюсь, Винда здесь просто не годится. Может, QNX посмотреть? Вроде бы, порт FreePascal для QNX делать пытались.
← →
REA (2005-01-11 11:57) [4]А погрешность какая? Можно Thread запустить и SetWaitableTimer использовать.
← →
Нуждающийся в помощи (2005-01-11 12:22) [5]Хорошо, давайте более четко вопрос задам:
Нужен таймер с дискретностью 0,1мс и погрешностью +/- 10%
← →
Нуждающийся в помощи (2005-01-11 13:36) [6]Только что еще раз обдумал задачу и решил, что ее можно упростить: нужен даже не таймер, а возможность на 0,1мс приостановить процес...
← →
Anatoly Podgoretsky © (2005-01-11 13:41) [7]Забудь, приостановка (Sleep) минимально-возможный теоритический интервал равен 1 миллисекунда. Все остальные методы это уже не остановка. Про точность не говорю, система многозадачная, вытестянющая. Даже если будешь иметь возможность указать такой интервал остановки потока, то осуществить это возможности не имеешь.
REA (11.01.05 11:57) [4]
Какой WaitableTimer на Win9x?
← →
Fay © (2005-01-11 13:43) [8]2 Anatoly Podgoretsky © (11.01.05 13:41) [7]
Windows NT/2000/XP: Included in Windows NT 4.0 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.
← →
Нуждающийся в помощи (2005-01-11 14:11) [9]Anatoly Podgoretsky © (11.01.05 13:41) [7]
Ну может мне и не остановка нужна...
Мне нужно что бы между двумя последовательными командами была задержка 0,1мс
← →
Fay © (2005-01-11 14:13) [10]Sleep(1)
Только под виндой это пофиг.
← →
Fay © (2005-01-11 14:15) [11]Ой, ошибся 8) 1 <> 0.1.
Но это тоже пофиг. Читай [3]
← →
Anatoly Podgoretsky © (2005-01-11 14:22) [12]Нуждающийся в помощи (11.01.05 14:11) [9]
Забудь, многозадачная система, забудь даже для систем класса QNX, хоть там и легче с этим делом. Переходи на систему жесткого реального времени.
← →
REA (2005-01-11 16:15) [13]>SetWaitableTimer
Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, and Windows 98
Не знаю что есть Client, но мне кажется работает.
>забудь даже для систем класса QNX
Да ну прям. Нормально все в QNX у меня работает. Это и есть система достаточно жесткого реального времени.
← →
Ega23 © (2005-01-11 16:17) [14]2 Anatoly Podgoretsky © (11.01.05 14:22) [12]
Разве QNX <> "система жесткого реального времени"?
← →
Fay © (2005-01-12 13:35) [15]2 Ega23 © (11.01.05 16:17) [14]
<>
← →
Anatoly Podgoretsky © (2005-01-12 13:41) [16]Системы жесткого реального времени - это однозадачные системы, а в многозадачных системах в любой момент управление может получить другая задача, у которой выше приоритет и когда будет возвращено управление не вполне предсказуемо. Просто разные системы этого класса имеют разное время цикла, но все равно ситуация сохраняется. QNX такая же многозадачная система с приоритетами и достаточно малым временем цикла. Естественно более подходящая для этой цели, но не все равно не дающая гарантии.
Правильнее было бы если бы автор описал свою задачу, тогда и ответы были бы более прицельные.
← →
Eraser © (2005-01-12 13:53) [17]Очень низкоуровневые дравера, перхватывающее прерывение таймера и работающие на его кольце (преоритете), а это один из самых высоких приоритетов в системе.
Или скорее всего НИКАК.
← →
Eraser © (2005-01-12 14:02) [18]>> Anatoly Podgoretsky >> QNX такая же многозадачная система с приоритетами и достаточно малым временем цикла. Естественно более подходящая для этой цели, но не все равно не дающая гарантии.
Система многоздачности в системной части Windows (драйвера, первые 2 гиктара виртуальной памяти) немного другая, чем в прикладной. Если в прикладной части поток даже с очень низким приоритетам, всё равно получает кванты времени и realtime приоритет может прерываться потоком с более низким приоритетом, то в системной части поток с меньшим приоритетом НИКОГДА не может прервать поток с более высоким приоритетом или таким же, пока тот сам не возвратит управление. На самых же высоких приоритетах стаят прерывания таймера, клавиатуры (и т.д.) поэтому если их обрабатывать рекомендуют применять т.н. отложенные процедуры.
Это я к чему... в windows можно получить таймер точно такой же к и в nix"ax.
← →
Anatoly Podgoretsky © (2005-01-12 14:24) [19]Кто спорит, в любой получит, но вот именно через 100 мкс, это а любой многозадачной системе бабушка еще на двое сказала. Для илюстрации, пускай есть три задачи, которые хотят одновременно получить управление в момент N, так вот этого ни когда и нигде не будет, хоть супер раеального времени. Вопрос то именно в этой плоскости стоит, другое дело а нужно ли это по его задаче?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.051 c