Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Абсолютное значение времени   Найти похожие ветки 

 
Ega23 ©   (2005-06-01 17:19) [0]

Можно ли получить значение DateTime (или другого типа) более точное, чем одна миллисекунда?
Например, завязаться на такты процессора?

Задача такая: с внешнего устройства приходит событие. Нужно чётко определить его время в рамках операционки.


 
Kerk ©   (2005-06-01 17:22) [1]

rdtsc или GetTickCount ?


 
Суслик ©   (2005-06-01 17:24) [2]

Посмотри

QueryPerformanceCounter и QueryPerformanceFrequency

может чем поможет


 
Ega23 ©   (2005-06-01 17:25) [3]

GetTickCount - это с точностью до миллисекунды. А точнее можно?
Пусть даже не на WinAPI, а на уровне ядра?


 
Ega23 ©   (2005-06-01 17:26) [4]

rdtsc - это чьё? Как ей пользоваться, например на asm-е?


 
Kerk ©   (2005-06-01 17:27) [5]

Ega23 ©   (01.06.05 17:26) [4]

так и пользоваться
asm
 rdtsc
end;
возвращает в edx:eax кол-во тактов с момента старта процессора


 
REA   (2005-06-01 17:34) [6]

Таймер все равно кривой абсолютный - сползет. И тот что в биосе получше, но тоже сползет. Лучше внешние железные часы. И опять же 1мс довольно сложно обеспечить в течение длительного промежутка времени даже с термокомпенсацией. А в чем задача в целом?


 
ferr ©   (2005-06-01 17:37) [7]

function RDTSC:int64;
asm
 RDTSC;
end;

var
c1,c2:int64;
q:integer;
begin
C1:=RDTSC;
sleep(1000);
c2:=RDTSC;
writeln((c2-c1)/Mhz);
readln;

Может и наврал :)


 
raidan ©   (2005-06-01 17:40) [8]

>ferr ©   (01.06.05 17:37) [7]
rdtsc - крут, но если у мя A64 и включен Q"n"Q?
Частота процессора плавает в зависимости от нагрузки...


 
ferr ©   (2005-06-01 17:53) [9]

А я чё, я Kerk"a дополнил.


 
pasha_golub ©   (2005-06-01 17:58) [10]

Юзать QNX ;0)


 
Ega23 ©   (2005-06-02 10:00) [11]

Вообще задача следующая (это папик ко мне за советом обратился):
Есть внешняя измерительная установка - всякие детекторы, предусилители и т.п. Ожидаемое количество событий (интенсивность излучения) - порядка 20 - 30 событий в секунду. Т.к. измерение проходит в низко-энергетической области, то начинает наводки давать микрофоника (висит провод, по нему ток идёт, между проводом и землёй - ёмкость получается. При малейшем колебании провода имеем изменение ёмкости).
Микрофонику можно "отсечь", поскольку известны характеристики сигнала. Но для этого надо привязаться ко времени и сделать достаточно быструю дискретизацию сигнала. Вот здесь и встаёт вопрос  о каком-то генераторе отсчётов. В принципе, у бати есть внешний генератор, как раз для CAMAC-а. Беда в том, что этот гад сам микрофонику свою дополнительную даёт. Поэтому надо попробовать привязаться к компу - может так лучше получится?


 
Jeer ©   (2005-06-02 10:13) [12]

Платформа w2k дает возможность работать в режиме "мягкого" real-time на уровне системного кванта 10 ms.
В случае твоего "папика" имеет смысл использование PCI-карты АЦП или внешнего АЦП.
В этом случае буферится массив измерений, а из операционки с дискретом 10-20 мс он считывается по необходимости.

Если уйти на уровень DOS, то можно работать спокойно с прерываниями.


 
REA   (2005-06-02 11:34) [13]

QNX неплохо справляется с real-time задачами. Я под него систему сбора информации писал. А обязательно этот провод, который между землей висит делать? Может железную схему компенсации сигнала сделать?


 
Ega23 ©   (2005-06-02 11:37) [14]

QNX неплохо справляется с real-time задачами. Я под него систему сбора информации писал. А обязательно этот провод, который между землей висит делать? Может железную схему компенсации сигнала сделать?

Это любой провод так работать будет. Шлейф в компе, например. Малейшая вибрация корпуса (топнул в комнате кто-то сильно) - провод задёргался - пошла наводка. Экранирование, конечно, помогает, но всё не заэкранируешь.

Про QNX знаю, сами используем. Но там - не прокатит.


 
REA   (2005-06-02 12:27) [15]

Ну есть мультимедийные еще таймера - можно попробовать их использовать. А нельзя измеритель без проводов подключить? Или это другой провод какой то не связанный с измерениями. Насчет быстрой дискретизации - тоже выход. Мы недавно делали съем данных с L-Card АЦП - втыкается в USB порт, пример работы есть на Delphi, буфер там приличный, время нарезанное по внутреннему таймеру.


 
Ega23 ©   (2005-06-02 12:46) [16]

А нельзя измеритель без проводов подключить?

А как ты себе это представляешь? В любой установке - масса проводов.


 
Jeer ©   (2005-06-02 12:59) [17]

Ega23 ©   (02.06.05 12:46) [16]

Значит надо переходить на передачу более мощным аналоговым сигналом или вооще переходить на цифру,например, использовать ШИМ- или ЧИМ- сигнал.


 
REA   (2005-06-02 13:10) [18]

Ну как представляю: плата с АЦП размером с коробок с микроконтроллером. Можно даже с аккумулятором, чтобы питание не тащить. А от нее уже сигнал в цифре, можно по радиоканалу. Думаю готовых таких тоже навалом со стандартными протоколами.


 
Ega23 ©   (2005-06-02 13:17) [19]

Ну как представляю: плата с АЦП размером с коробок с микроконтроллером. Можно даже с аккумулятором, чтобы питание не тащить. А от нее уже сигнал в цифре, можно по радиоканалу. Думаю готовых таких тоже навалом со стандартными протоколами.

Есть такая штука - CAMAC - фактически внешняя шина. В него контроллеры пихать можно. Всё это к компу подсоединяется.


 
REA   (2005-06-02 14:37) [20]

Кинь ссылочку плз. - авось пригодится. А часов у нее нет своих?


 
REA   (2005-06-02 14:38) [21]

Если это вот это:
http://www.lecroy.com/lrs/appnotes/introcam/introcam.htm
то не надо кидать, я ядреной физикой не занимаюсь (к сожалению).


 
Ega23 ©   (2005-06-02 14:40) [22]

Кинь ссылочку плз. - авось пригодится. А часов у нее нет своих?

Да это крейт здоровый, в пол-комнаты. Туда блоки вставляешь. Есть блок - счётчик (фактически - часы). Но, как я уже писал выще, сам этот блок производит довольно большую наводку, которая в рамках данного эксперимента неприемлема.
Поэтому ищутся обходные пути. Один из вариантов - в качестве генератора использовать процессор компа.


 
Jeer ©   (2005-06-02 15:06) [23]

Ega23 ©   (02.06.05 14:40) [22]

Комп тоже не слабо фонит.
Я использовал PCI-карты ADLink с гальванической развязкой.


 
Ega23 ©   (2005-06-02 15:15) [24]

2 Jeer ©   (02.06.05 15:06) [23]

Да комп-то может достаточно далеко от установки стоять...
В общем, батя ветку посмотрел, сказал, что
Kerk ©   (01.06.05 17:27) [5]  - именно то, что ему нужно.


 
REA   (2005-06-02 16:19) [25]

Да ну нафиг - какие такты?: когда твоему потоку процессор время даст, тогда и засечешь. А если он отвлекся на свапование, то извини подвинься.


 
Jeer ©   (2005-06-02 17:32) [26]

Ega23 ©   (02.06.05 15:15) [24]

Неверно.


 
Ega23 ©   (2005-06-02 19:10) [27]

2 Jeer ©   (02.06.05 17:32) [26]
Пушшай сам разбирается.


 
Jeer ©   (2005-06-02 19:27) [28]

Как-что, так бате отдуваться ?:)


 
Ega23 ©   (2005-06-02 19:33) [29]

Как-что, так бате отдуваться ?:)

Есть у меня некоторое подозрение, что всё это будет под DOS-ом реализовано...


 
Просто Джо ©   (2005-06-02 19:34) [30]


>  [29] Ega23 ©   (02.06.05 19:33)
> Есть у меня некоторое подозрение, что всё это будет под
> DOS-ом реализовано...

Да оно и к лучшему, имхо.


 
Jeer ©   (2005-06-02 19:47) [31]

Вечный DOS.:)


 
Ega23 ©   (2005-06-02 19:50) [32]

Вечный DOS.:)

Там прерывания захватить можно  :о)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.036 c
9-1111308695
grouzd[E]v
2005-03-20 11:51
2005.06.29
ASCII и треугольник


14-1117189726
Alexius
2005-05-27 14:28
2005.06.29
Помогите найти компонент!


14-1117791381
Ega23
2005-06-03 13:36
2005.06.29
Без халтуры - ну никак!


3-1116144603
GodDamned
2005-05-15 12:10
2005.06.29
ADOQuery1.Parameters.ParamByName(


14-1117699904
REA
2005-06-02 12:11
2005.06.29
А хорошо ли это?





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