![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Абсолютное значение времени [Win2k]
Ega23 © (2005-06-01 17:19:00)Можно ли получить значение DateTime (или другого типа) более точное, чем одна миллисекунда?
Например, завязаться на такты процессора?
Задача такая: с внешнего устройства приходит событие. Нужно чётко определить его время в рамках операционки.
Jeer (2005-06-02 10:13:00) [21]Платформа w2k дает возможность работать в режиме "мягкого" real-time на уровне системного кванта 10 ms.
В случае твоего "папика" имеет смысл использование PCI-карты АЦП или внешнего АЦП.
В этом случае буферится массив измерений, а из операционки с дискретом 10-20 мс он считывается по необходимости.
Если уйти на уровень DOS, то можно работать спокойно с прерываниями.
Ega23 (2005-06-02 10:00:00) [22]Вообще задача следующая (это папик ко мне за советом обратился):
Есть внешняя измерительная установка - всякие детекторы, предусилители и т.п. Ожидаемое количество событий (интенсивность излучения) - порядка 20 - 30 событий в секунду. Т.к. измерение проходит в низко-энергетической области, то начинает наводки давать микрофоника (висит провод, по нему ток идёт, между проводом и землёй - ёмкость получается. При малейшем колебании провода имеем изменение ёмкости).
Микрофонику можно "отсечь", поскольку известны характеристики сигнала. Но для этого надо привязаться ко времени и сделать достаточно быструю дискретизацию сигнала. Вот здесь и встаёт вопрос о каком-то генераторе отсчётов. В принципе, у бати есть внешний генератор, как раз для CAMAC-а. Беда в том, что этот гад сам микрофонику свою дополнительную даёт. Поэтому надо попробовать привязаться к компу - может так лучше получится?
pasha_golub (2005-06-01 17:58:00) [23]Юзать QNX ;0)
ferr (2005-06-01 17:53:00) [24]А я чё, я Kerk'a дополнил.
raidan (2005-06-01 17:40:00) [25]>ferr © (01.06.05 17:37) [7]
rdtsc - крут, но если у мя A64 и включен Q'n'Q?
Частота процессора плавает в зависимости от нагрузки...
ferr (2005-06-01 17:37:00) [26]
function RDTSC:int64;
asm
RDTSC;
end;
var
c1,c2:int64;
q:integer;
begin
C1:=RDTSC;
sleep(1000);
c2:=RDTSC;
writeln((c2-c1)/Mhz);
readln;
Может и наврал :)
REA (2005-06-01 17:34:00) [27]Таймер все равно кривой абсолютный - сползет. И тот что в биосе получше, но тоже сползет. Лучше внешние железные часы. И опять же 1мс довольно сложно обеспечить в течение длительного промежутка времени даже с термокомпенсацией. А в чем задача в целом?
Kerk (2005-06-01 17:27:00) [28]Ega23 © (01.06.05 17:26) [4]
так и пользоваться
asm
rdtsc
end;
возвращает в edx:eax кол-во тактов с момента старта процессора
Ega23 (2005-06-01 17:26:00) [29]rdtsc - это чьё? Как ей пользоваться, например на asm-е?
Ega23 (2005-06-01 17:25:00) [30]GetTickCount - это с точностью до миллисекунды. А точнее можно?
Пусть даже не на WinAPI, а на уровне ядра?
Суслик (2005-06-01 17:24:00) [31]Посмотри
QueryPerformanceCounter и QueryPerformanceFrequency
может чем поможет
Kerk (2005-06-01 17:22:00) [32]rdtsc или GetTickCount ?