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


Как тормознуть ЦАП ?!

Вы не вошли.

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

zardoz
22.05.2005 22:35:17
#1

Гость

Как тормознуть ЦАП ?!

Доброе утро L-Card !
Работаем с L780B. Драйвера LComp (последние). Можно ли как-нибудь вывести содержимое буфера на ЦАП один раз ? По форуму встречал что при значении в буфере $FFFF ЦАП останавливается. У меня не получилось... Пробовал через SetLDeviceEvent(hEventData,L_EVENT_DAC_BUF), тоже не вышло - событие не наступает.
Инициализацию делал так:
DacPar.t1.s_Type    := L_DAC_PARAM;
DacPar.t1.AutoInit  := 0;
DacPar.t1.dRate     := 10;
DacPar.t1.IrqEna    := 1;
DacPar.t1.DacEna    := 1;
DacPar.t1.DacNumber := 1;
DacPar.t1.FIFO      := 1000;
DacPar.t1.IrqStep   := 1000;
DacPar.t1.Pages     := 2;

UsedSize:=4096;
pLDev.RequestBufferStream(UsedSize,L_STREAM_DAC);
pLDev.SetParametersStream(DacPar.t1, UsedSize, LData, Sync,L_STREAM_DAC);

hEventData := CreateEvent(nil,FALSE,FALSE,nil);
pLDev.SetLDeviceEvent(hEventData,L_EVENT_DAC_BUF);


Заранее благодарен.

23.05.2005 09:24:01
#2

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

Re: Как тормознуть ЦАП ?!

Нельзя.

zardoz
23.05.2005 11:35:19
#3

Гость

Re: Как тормознуть ЦАП ?!

Павел, я где-то по форуму читал Ваш ответ про код остановки ЦАПа (в массиве данных). Вы рекомендовали заглянуть в книжку. Я вчера просмотрел 3 книжки: по LComp, по VxdApi, по железу - ничего не нашел.
Кто может посоветовать как вывести импульсы дительностью 10 мс с плавно изменяющейся паузой между ними от 90мс до 15 мс ??? Заранее благодарен за ответ!

23.05.2005 11:40:27
#4

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

Re: Как тормознуть ЦАП ?!

Это все в других платах 1450 780M E440... для 780B надо кодировать это в DSP.

zardoz
23.05.2005 12:58:18
#5

Гость

Re: Как тормознуть ЦАП ?!

Понятно. У меня вообще-то есть L761, L780B, L780M, L783. Так... Уже взял L780M (Rev.C). Драйвер Lcomp (свежий, майский). Выставил:
DacPar.t1.s_Type := L_DAC_PARAM;
DacPar.t1.AutoInit := 0;
DacPar.t1.dRate := 10;
DacPar.t1.IrqEna := 1;
DacPar.t1.DacEna := 1;
DacPar.t1.DacNumber := 1;
DacPar.t1.FIFO := 2000;
DacPar.t1.IrqStep := 2000;
DacPar.t1.Pages := 16;

Выделяю 32768 отсчетов. Выделяет  -ОК.

Т.е. 16 страниц. Вроде ОК, проглотил, Pages стало 16. Далее запускаю. Читаю счетчик отсчетов. И...
1. Добегает до 8192 и зависает. Причем крепко. sad( Я думал что счетчик побежит по моим 32768...
2. Устанавливаю L_EVENT_DAC_BUF (уменьшил буфер с 32768 до 8000)  - не наступает событие!!!

Что делать? Без L791 не обойтись?
Заранее благодарен!

23.05.2005 14:38:51
#6

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

Re: Как тормознуть ЦАП ?!

Там все сложнее... буфер выделяется в словах, но у цап отсчеты двухсловные - это раз. И еще попробуйте буфер  цап уменьшить до 1024 или 512 (fifo и irqstep).
Событие должно генериться...
В SetParameters при ненулевом первом параметре должны быть обновлены Pages IrqSetp и FIFO

zardoz
25.05.2005 01:10:14
#7

Гость

Re: Как тормознуть ЦАП ?!

Доброе утро Павел. Двухсловный отсчет я ощутил:
DacPar.t1.s_Type    := L_DAC_PARAM;
DacPar.t1.AutoInit  := 0;
DacPar.t1.dRate     := 0.4;
DacPar.t1.IrqEna    := 1;
DacPar.t1.DacEna    := 1;
DacPar.t1.DacNumber := 0;
DacPar.t1.FIFO      := 1000;
DacPar.t1.IrqStep   := 1000;
DacPar.t1.Pages     := 4;

Т.е. usedsize возвращается 4000. Но данные для ЦАПа надо писать в цикле до 8000.  Т.е. счетчик Sync бежит до 4000, а данные выгружаются из массива 2-хбайтных чисел размером 8000.Можно узнать как такое организовано ?? (точнее зачем).
И 2-й вопрос: L_EVENT_DAC_BUF не наступает ни при указанной DacPar ни при DacPar из примера ../Program Files/L-Card/LIBRARY/l780.osc/TEST.CPP (L780C, DSP-2185, S/N 4C2439, WinXP+SP2).

Заране благодарю за ответ!

25.05.2005 09:27:44
#8

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

Re: Как тормознуть ЦАП ?!

Такой буфер у ЦАПа тк он в PM памяти DSP размещен , а она 24 битная. Функция выделения памяти просто унифицированная. И обычное приведение типов потом для работы...
Событие наступит если в буфер ЦАП запихать код останова 0xFFFF (см инф. листок по L780M на CDROM). AutoInit цап игнорирует....

zardoz
31.05.2005 11:12:07
#9

Гость

Re: Как тормознуть ЦАП ?!

Спасибо Павел !
С L-780M вроде счетчик бежит, буфер на 15000 отсчетов сделал - работает. Возвращаюсь к искомой L-780B:

1) Взял L-780В... И облом (LComp майский):

DacPar.t1.s_Type := L_DAC_PARAM;
DacPar.t1.AutoInit := 0;
DacPar.t1.dRate := 2.4;
DacPar.t1.IrqEna := 1;
DacPar.t1.DacEna := 1;
DacPar.t1.DacNumber := 0;
DacPar.t1.FIFO := 500;
DacPar.t1.IrqStep := 500;
DacPar.t1.Pages := 2;

pLDev.FillDAQparameters(adcPar.t1);
UsedSize:=4096;
pLDev.RequestBufferStream(UsedSize,L_STREAM_DAC);
pLDev.SetParametersStream(DacPar.t1, UsedSize, LData, Sync,L_STREAM_DAC);

pLDev.InitStartLDevice;
pLDev.StartLDevice;


После запуска счетчик Sync стоит на нуле и не обновляется ! Очень хочется обновлять буфер ЦАПа на ходу! smile Как быть ??? Может из переменных БИОСа вычитывать счетчик?

2) При связке команд (менял на ходу длину буфера):
pLDev.PutWord_DM(L_DAC_NEW_FIFO_LENGTH_PLX, NewL);
pLDev.SendCommand(cmDAC_FIFO_CONFIG_PLX);
ЦАП перестартовывает ??? Можно менять длину буфера не останавливая ЦАП?

Павел, заранее Вам благодарен !

31.05.2005 11:18:50
#10

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

Re: Как тормознуть ЦАП ?!

1 буфер цапа на ходу только если прямо читать с платы ее счетчик и прямо писатьтуда данные, но тк буфера маленькие, а скоростьчиения медленная то все работать будет только на очень медленных частотах.
2 - нельзя

zardoz
31.05.2005 11:26:20
#11

Гость

Re: Как тормознуть ЦАП ?!

Да, у меня скорость не высокая. Как лучше сделать в таком случае? Откуда вычитывать?

С уважением.

31.05.2005 13:24:38
#12

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

Re: Как тормознуть ЦАП ?!

В PM память класть новые данные. а из переменной счетчика цап собственно положение. В книжке посмотрите...

zardoz
31.05.2005 15:45:21
#13

Гость

Re: Как тормознуть ЦАП ?!

Это через L_DAC_IRQ_FIFO_ADDRESS_PLX = $8D45  ??

Прошу прощения не получается найти в книге переменную-указатель (по описанию) в БИОСе.

С уважением.

31.05.2005 15:49:05
#14

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

Re: Как тормознуть ЦАП ?!

L_DAC_FIFO_PTR_PLX 8D4F вроде, irq там нету....

zardoz
31.05.2005 15:56:17
#15

Гость

Re: Как тормознуть ЦАП ?!

Павел, спасибо!

Просто в PCICMD.pas (пишу на Delphi) ее нет. Нашел в PCICMD.h:

#define  L_DAC_FIFO_PTR_PLX   0x8D4F

Буду пробовать. smile

С уважением.

zardoz
01.06.2005 16:14:55
#16

Гость

Re: Как тормознуть ЦАП ?!

Добрый вечер Павел!

Через команды БИОСа (L_DAC_FIFO_PTR_PLX) вижу как бежит счетчик ЦАПа. Все корректно: ставлю FIFO=500, Pages=2 (итого 1000) - бежит от 12288 (по-моему) до 13288; ставлю FIFO=200, Pages=2 бежит от 12288 до 12288+400. С этим все ОК. Но НЕ через БИОС, а через Sync, передаваемую в SetParametersStream, ничего не менятеся - Sync всегда =0. Где я ошибаюсь ? Вроде IrqEna:=1...

С уважением.

02.06.2005 09:01:43
#17

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

Re: Как тормознуть ЦАП ?!

ну так и должно быть. нет поддержки в 780B прерываний.