[an error occurred while processing this directive] [an error occurred while processing this directive]
Можно! Делать надо так (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Беня 16 мая 2002 г. 18:03
В ответ на: Подскажите!!! Необходимо считывать данные с устройства через LPT с интервалом 1мкс (выдается управляющий сигнал и через 1мкс считываются данные и опять выдается управляющий сигнал и так в цикле 10тыс. раз ). Можно ли в WINDOWS выдержать точные интервалы времени? Если да то как это сделать. отправлено RS 16 мая 2002 г. 08:24

1) Можно пользоваться функциями API
QueryPerformanceFrequency и QueryPerformanceCounter
Одна функция возвращает время в специальных тиках, а другая выдает количество таких тиков в секунду (т. е. частоту). На компьютерах, которые мне встречались, частота этого счетчика 1 193 180 Герц (меньше микросекунды - Вам должно хватить).

2) В Пентиумах есть встроенный регистр - счетчик тактов - он выдает количество выполненных процесором тактов. Недавно один товарищ приводил код (на BCB 5.0), который узнает этот счетчик :

__int64 getxclk(void)
{
union _dwi64{
struct _dw32{
DWORD lodw;
DWORD hidw;
}dw32;
__int64 i64;
}dwi64;
__asm rdtsc
dwi64.dw32.lodw=_EAX;
dwi64.dw32.hidw=_EDX;
return dwi64.i64;

}

При выполнении таких ответственных моментов желательно выставить REALTIME приоритет для этого процесса.



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru