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


L780M и работа ввода/вывода по прерываниям

Вы не вошли.

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

AlexZ
05.07.2005 09:07:06
#1

Гость

L780M и работа ввода/вывода по прерываниям

Необходимо настроить работу ЦАПа и АЦП на частоте 16384Гц и передачу больших массивов, или точнее на данный момент на секунду работы.
Что я делаю:
rate = 16384
sampleCount = 16384
1. ЦАП -
fifoDacCardBufferSize = 2048; // Максимальный размер FIFO-буфера ЦАПа

dac_PARAM.AutoInit = true;
dac_PARAM.dRate = rate / 1000f;
dac_PARAM.FIFO = fifoDacCardBufferSize * 2; // Увеличиваю вдвое т.к. размер в словах, а передавать надо по два слова на отсчет
dac_PARAM.IrqStep = dac_PARAM.FIFO;
dac_PARAM.Pages = sampleCount / fifoDacCardBufferSize;
dac_PARAM.DacNumber = 0;
dac_PARAM.IrqEna = true;
dac_PARAM.DacEna = true;

2. АЦП -
adc_PARAM.AutoInit = false;
adc_PARAM.dRate = rate / 1000f;
adc_PARAM.dKadr = 0;
adc_PARAM.dScale = 0;
adc_PARAM.SynchroType = 1;
adc_PARAM.SynchroSensitivity = 0;
adc_PARAM.SynchroMode = 0;
adc_PARAM.AdChannel = 0;
adc_PARAM.AdPorog = 0;
adc_PARAM.NCh = adcChannels;
adc_PARAM.Chn[0] = 0x00;
adc_PARAM.FIFO = fifoAdcCardBufferSize;
adc_PARAM.IrqStep = adc_PARAM.FIFO;
adc_PARAM.Pages = sampleCount / fifoDacCardBufferSize;
adc_PARAM.IrqEna = true;
adc_PARAM.AdcEna = true;

Вывод вроде идет правильно, а ввод идет на двойной частоте. Что и где я делаю не так?

05.07.2005 11:41:11
#2

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

Re: L780M и работа ввода/вывода по прерываниям

для ЦАП фифо увеличивать не надо. Оно в PM и так уже нормальное получается...

AlexZ
05.07.2005 14:58:30
#3

Гость

Re: L780M и работа ввода/вывода по прерываниям

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

А все остальное правильно или что-то еще не так? А то никак не получается добится нужной частоты -- то вывод, то ввод работают вдвое быстрее/медленнее.

05.07.2005 15:27:52
#4

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

Re: L780M и работа ввода/вывода по прерываниям

RequestBuffer в USHORT, как написано в доке. Усе остальное вроде правильно...

AlexZ
05.07.2005 16:14:13
#5

Гость

Re: L780M и работа ввода/вывода по прерываниям

Т.е. именно в RequestBuffer и надо писать вдвое большее значение, И трактовать этот буфер надо как набор 32битных значений? Понял.

Спасибо.

AlexZ
27.07.2005 07:46:10
#6

Гость

Re: L780M и работа ввода/вывода по прерываниям

Возвращаюсь еще раз.

Частота ввода/вывода стала теперь нормальной, но, как только теперь выяснилось, в ЦАП циклическти выводится только то, что уместилось в буфер на плате, а все остальное из буфера в памяти компьютера туда не попадает -- в чем может быть дело?

И еще вопрос: Вы мне присылали исходники wdm-драйвера, попытался его скомптлтровать и ничего не вышло. С какой версией DriverStudio Вы его компилите, а то что-то он не находит соответствующих функций (я его пробую с версией 3.2)

AlexZ
27.07.2005 08:31:22
#7

Гость

Re: L780M и работа ввода/вывода по прерываниям

С буфером все решилось -- откуда-то зателался старый биос -- естесственно там это и не работало...

А про DS мне все еще интересно! И, кстати, Вы там в ее исходниках ничего не меняли?

27.07.2005 09:14:53
#8

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

Re: L780M и работа ввода/вывода по прерываниям

менял .... ds25

AlexZ
27.07.2005 20:03:03
#9

Гость

Re: L780M и работа ввода/вывода по прерываниям

А нельзя ли Вас попросить прислать и эти изменения тоже (надеюсь их немного) -- очень хочется скомпилировать драйвер.

P.S. А что содержит (если конечно это не тайна) ldevs.sys и функции LHoldNumber и LFreeNumber?