Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.045 c
1-1105457924
avi
2005-01-11 18:38
2005.01.23
Помогите с загрузкой текста из файла.


3-1103529804
alex145
2004-12-20 11:03
2005.01.23
BDE глючит на полную


1-1105452981
SomeOneElse
2005-01-11 17:16
2005.01.23
Кнопки на TToolBar


6-1099338319
JR
2004-11-01 22:45
2005.01.23
RAS -> BytesReceived


1-1104847433
BoAlSe
2005-01-04 17:03
2005.01.23
Деактивация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский