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


E-440, Linux, загадки с частотой оцифровки.

Вы не вошли.

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

Аркадий
22.01.2009 07:35:20
#1

Гость

E-440, Linux, загадки с частотой оцифровки.

Здравствуйте.

Работал в Linux с E-140. Сюрпризов не было.
Сейчас появилась задача для E-440:
Параллельная оцифровка 4-х каналов на ч-те 44100.

Заполняю параметры так:
adcPar.t1.AutoInit = 1; // цикл. заполн. буфера
adcPar.t1.dRate = 400.0;
adcPar.t1.dKadr = 1/44.1;
adcPar.t1.dScale = 0;
adcPar.t1.SynchroType = 0;
adcPar.t1.NCh = 4;
adcPar.t1.Chn[0] = 0x0;
adcPar.t1.Chn[1] = 0x1;
adcPar.t1.Chn[2] = 0x2;
adcPar.t1.Chn[3] = 0x3;
adcPar.t1.FIFO = 4096;
adcPar.t1.IrqStep = 4096;
adcPar.t1.Pages = 256;
adcPar.t1.IrqEna = 1;
...

В параллельном потоке (строго по примеру из дистрибутива от LCard) ожидаю заполнения половины кольцевого буфера и скидываю эти данные в файл.
Это делается в цикле и вроде нормально работает.

Но!

При указанных параметрах оцифровки можно было бы ожидать, что половина буфера будет заполняться за время:

IrqStep*pages/2 / (freq * channels) :

4096*256/2 / (44100*4) = 2.97 сек.

Вместо этого имею стабильные 3.95 сек.

С помощью подгонки параметра:
adcPar.t1.dKadr = 1/xxxxx;

можно получить желаемый результат, но хотелось
бы иметь соответствие документации и уверенность в правильности.

Может что-то упустил в описании?
Подскажите, пожалуйста.

С уважением. Иванов Аркадий.

22.01.2009 11:10:48
#2

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

Re: E-440, Linux, загадки с частотой оцифровки.

все верно. Посмотрите временные параметры кадра в книжке. Там ADC_Rate и Inter_Kadr_Delay что и задается в структуре. А 1/44.1 это период кадров Tk. Если посчитать то и выйдет 3.955с...

Аркадий
22.01.2009 11:55:57
#3

Гость

Re: E-440, Linux, загадки с частотой оцифровки.

Большое спасибо.
Въехал. Сделал. smile