Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


L783

Вы не вошли.

 Поиск | Регистрация | Вход 

Станислав
18.01.2004 10:58:00
#1

Гость

L783

беру стандартный пример и провожу серию опытов.
снимаю с ацп с разной частотой 1000000 точек и засекаю время работы.
получилось следующее:
Частота   | Реальное | Время
оцифровки |  время   | которое
          | работы   | должно быть в идеале
100кГц    | 10605мс  | 100000мс
200кГц    | 5350мс   | 5000мс
300кГц    | 3607мс   | 3333мс
как видно есть добавки по времени 605, 350 и 274мс.

ВОПРОС ПЕРВЫЙ: Откуда они берутся?

продолжаю повышать частоту. получаю
Частота   | Реальное | Время
оцифровки |  время   | которое
          | работы   | должно быть в идеале
2.0МГц    | 621мс    | 500мс
2.5МГц    | 562мс    | 400мс
2.8МГц    | 841мс!!!!| 357мс

ВОПРОС ВТОРОЙ: Почему идет увеличение времени??!!

19.01.2004 10:47:15
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L783

Сотря как время засекаете. В примере идет запись на диск и возможно это время добавляется при сбросе кэша на диск при окончании программы. При высокой частоте сбора загрузка на проц выше и в конце просто в кэше больше данных остается.

Станислав
19.01.2004 13:40:32
#3

Гость

Re: L783

Работу с диском из примера убрал, данные коипуруются только в буфер и все. Нет даже обрабтки данных.
Засекаю предельно просто:
x1=GetCurrentTime();
Start3();
x2=GetCurrentTime();
time=x2-x1;

19.01.2004 16:06:00
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L783

Так это тоже не совсем понятно. Если есть в Start3
DeviceIoControl вызовы типа StartLDevice StopLDevice итп то это они дают добавку. Или засекается в консольном примере чисто время работы треда?
Ни и засекать надо GetTickCount.

Станислав
20.01.2004 10:26:12
#5

Гость

Re: L783

Сделал так.
long x1=GetTickCount();
while(!complete) Sleep(20);
long x2=GetTickCount();
time=x2-x1;
Время добавки немного уменьшилось.
По идее разница с идеальным временем должна быть копеечной. Но:
100кГц - 10509мс
200кГц - 5252мс
Причем добавка пропорционально уменьшается с увеличением частоты. Почему так? Может это конечно какие-то виндовские тонкости... Но все равно не очень понятно.
2.5МГц - 422мс (почти идеал)
но уже дальше
2.6МГц - 438мс
2.8МГц - 757мс (!!!)
3.3МГц - 646мс
почему на частотах выше 2.5МГц идет увеличение добавки? Нестабильная работа платы или что-то еще?