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


Не запускается ЦАП на L783 под lcomp

Вы не вошли.

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

Денис
30.05.2006 12:54:09
#1

Гость

Не запускается ЦАП на L783 под lcomp

dacPar.t1.s_Type = L_DAC_PARAM;
   dacPar.t1.AutoInit=1;
   dacPar.t1.dRate=1.0;
   dacPar.t1.FIFO=1024;
   dacPar.t1.IrqStep=1024;
   dacPar.t1.Pages=2;
   dacPar.t1.IrqEna=1;
   dacPar.t1.DacEna=1;
   printf("/n FillDAQ returned %d", pI->FillDAQparameters(&dacPar.t1));
  printf("/nRate     %f", dacPar.t1.dRate);
  printf("/nRate     %d--%d", dacPar.t1.FIFO,dacPar.t1.IrqStep);
   ULONG db=5000;
   printf("/n ReqBuff returned %d", pI->RequestBufferStream(&db, L_STREAM_DAC));
   printf("/n SetPars returned %d", pI->SetParametersStream(&dacPar.t1,&db, (void **)&data1, (void **)&sync1,L_STREAM_DAC));
      printf("/nBufSize     %d", db);
   for(i=0;i<2*1024;i++) data1[i] = ((USHORT)(1024.0*sin((2.0*3.1415*i/1024.0)))&0xFFF) | (1<<12); 
printf("/n InitStartLDevice returned %d", pI->InitStartLDevice());
   printf("/n StartLDevice returned %d", pI->StartLDevice());

В приведенном куске кода 2 последние строчки возвращаются с ошибкой (1).
Почему так?

30.05.2006 13:01:14
#2

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

Re: Не запускается ЦАП на L783 под lcomp

без инита АЦП цап не будет работать... а по поводу остановки - Вы выводите на ЦАП сигнал или просот шум? И нет ли там кода 0xFFFF - это типа останова...

Денис
30.05.2006 13:16:11
#3

Гость

Re: Не запускается ЦАП на L783 под lcomp

Под инитом АЦП подразумевается заполнение структуры adc и выполнение FillDAQ или полноценный проход с использованием ReqBuff и SetPar? Кстати, можно ли при этой инициализации указать в структуре adc параметр AdcEna=0? Что тогда произойдет? Цап будет выводить, а Aцп не будет снимать отсчеты?
Теперь вторая часть вопроса. Идея следующая записывать в буфер цап, который ,как я понял, ограничен 2048 словами, периоды синуса, прямоугольника, треугольника и пилы так, чтобы на выходе при циклицеском прогоне буфера появлялся непрерывный периодический сигнал. Про код 0xFFFF не понял. Я считал, что этот код не воспринимается 783-й... Кстати, разве после выполнения StopLDevice вывод с цапа продолжится? Как же тогда его остановить?

Денис
30.05.2006 14:40:41
#4

Гость

Re: Не запускается ЦАП на L783 под lcomp

Я уже устал воевать с ЦАПом... Даже после выполнения StopLDevice, CloseLDevice и Release на выходе все равно держится сигнал. Пока единственный способ заткнуть ЦАП для меня - перезагрузить компьютер. Даже при рестарте приложения с DacEna = 0 он схраняет старый сигнал. Даже при выполнениии команды C_ENABLE_DAC_STREAM_PLX, с соответствующей 0-й переменной не имеет результата. Можно только изменить сигнал перезаполнив буфер и выполнив StartLDevice, но вопрос-то в другом. Как прекратить выводы отсчетов?

30.05.2006 18:51:58
#5

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

Re: Не запускается ЦАП на L783 под lcomp

должен остановиться если автоинит в 0 был поставлен - тогда ЦАП при StopLDevice встанет.
0xFFFF это я для 780M

Денис
31.05.2006 12:38:21
#6

Гость

Re: Не запускается ЦАП на L783 под lcomp

Спасибо за подсказки.
Попробовал, но не срабатывает. Сигнал ЦАПа упорно не желает уходить с выхода... Но теперь появилась более приоритетная проблема, которую очень надеюсь разрешить, а то вся работа встает. Как стабилизировать картинку получаемую с АЦП??? Синусоида постоянно бежит, а надо чтобы остановилась. Пробовал задавать синхронизацию по уровню и по переходу. Эффект есть, но не тот что ожидали. Пока не выполнится условие приложение подвисает (sync, опрашиваемый в цикле, стоит на месте, соответственно выход из цикла для прорисовки половины буфера не происходит, ибо и прорисовывать-то нечего), после выполнения условия буфер начинает заполняться так, как заполнялся бы, если б я без синхронизации вызвал StartLDevice. Что я предполагаю необходимо для стабилизации картинки - после выполнения условия заполняется половинка буфера, прорисовывается, АЦП стопорится до выполнения следующего такого условия, заполняется следующая половинка и все по новой. Хотелось бы понять, как для этих целей использовать синхронизацию, реализованную в штатном драйвере и dll и влияет ли как-то на поведение синхронизации параметр AutoInit?

31.05.2006 14:35:20
#7

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

Re: Не запускается ЦАП на L783 под lcomp

никак так не выйдет... либо старт-стоп режим как в примере OSC или самим искать синхронизацию в сигнале программно...

Денис
01.06.2006 22:33:26
#8

Гость

Re: Не запускается ЦАП на L783 под lcomp

Понял, Спасибо.
Теперь очередная проблема. В рководстве сказано, что при частоте выше 1000 межкадровая задержка задается жестко 1/Rate. Ладно, учтем.
Имеющееся подключение: 1 - на генератор синуса, 2-й - болтается. остальные закорочены.
Смотрим следующую управляющую таблицу:
   ap.t1.s_Type = L_ADC_PARAM;
   ap.t1.AutoInit = 1;
   ap.t1.dRate = 1000.0;
   ap.t1.dKadr = 0.002;
   ap.t1.dScale = 0;
   ap.t1.SynchroType = 3;
   ap.t1.SynchroSensitivity = 0;
   ap.t1.SynchroMode = 0;
   ap.t1.AdChannel = 0;
   ap.t1.AdPorog = 0;
   ap.t1.NCh = 3;
   ap.t1.Chn[0] = 0x0;
   ap.t1.Chn[1] = 0x1;
   ap.t1.Chn[2] = 0x2;
   ap.t1.Chn[3] = 0x3;
   ap.t1.FIFO = 3072;
   ap.t1.IrqStep = 2502;
   ap.t1.Pages = 6;
   ap.t1.IrqEna = 1;
   ap.t1.AdcEna = 1;
Вроде все верно... Плата принимает и межкадровую задержку и частоту. Начинаем сбор. Используется стандартный пример L783.TST с удаленным потоком записи в файл. Для проверки буфера вывожу *data, *(data+1), *(data+2). Т.к. буфер кратный, то это должны быть 1-й, 2-й, 3-й каналы. Так оно и есть. Выводятся отсчеты 2-х синусоид и 0 (на 2-м канале паразитическая, убирается закорачиванием). Казалось бы все работает как надо, но стоит увеличить dKadr до 0.003 и выше, как оригинальная синусоида 1-го канала исчезает (на канале стабильный 0), паразитическая синусоида на 2 канале остается неизменной, на 3-м канале тот же 0. Внимание! вопрос: где отсчеты с 1-го канала??? Сразу скажу, если число каналов поставить 2, то dKadr можно увеличивать без проблем - отсчеты с обоих каналов в норме.

02.06.2006 09:21:38
#9

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

Re: Не запускается ЦАП на L783 под lcomp

а как на 900?

Денис
02.06.2006 11:36:50
#10

Гость

Re: Не запускается ЦАП на L783 под lcomp

Очень неприятно, но тоже 0. Стоит отметить, что плата приняла и частоту 900, подкорректировав ее до 909 с копейками и задержку 0.008 скорректировав ее до 0.0077. Т.е. по идее это приемлемые для нее параметры. Однако на 1 и 3 - 0, на 2-м - эхо 1-го синуса. И снова, если каналов сделать 2, то все отсчеты честно складываются.

Денис
02.06.2006 11:50:44
#11

Гость

Re: Не запускается ЦАП на L783 под lcomp

Сейчас попробовал и 700 МГц, есть прогресс, при задержке 0.003 сигнал присутствует, но уже при 0.004 его снова нет. Но таких диапазонов от минимально возможного 0.001 для 1000 и 0.0014 для 700 явно недостаточно. И если плата корректирует межкадровую задержку при частотах >1000 до 1/Rate, то почему здесь она принимает задержи и даже корректирует их под себя? Может вы попробуете у себя описанные мной комбинации? Выводить данные можно в цикле со слипом в 20 мс(я так и делаю). Возможно подобное поведение глюк конкретной платы....

02.06.2006 13:05:53
#12

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

Re: Не запускается ЦАП на L783 под lcomp

как ведет себя L-Graph?

Денис
02.06.2006 13:18:22
#13

Гость

Re: Не запускается ЦАП на L783 под lcomp

А никак. По умолчанию он задает частоту 100, задержку 0.01. И не смотря на то, что поля редактируемые их изменение никак не сказывается, а при переключении закладок каналов они вообще сбрасываются на умолчальные. Естественно все сигналы корректные, но при таких параметрах (100 и 0.01) они и у меня в программе корректные. Пробовал отключать автозапуск и щелкать готов - опать сбор на 100 и 0.01

02.06.2006 14:41:50
#14

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,494

Re: Не запускается ЦАП на L783 под lcomp

В L-Graph после ввода значений в эти поля необходимо нажать клавишу ENTER.

Денис
02.06.2006 14:53:07
#15

Гость

Re: Не запускается ЦАП на L783 под lcomp

Не знал, спасибо, сейчас проверю.

Денис
02.06.2006 14:56:20
#16

Гость

Re: Не запускается ЦАП на L783 под lcomp

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

Денис
02.06.2006 15:00:21
#17

Гость

Re: Не запускается ЦАП на L783 под lcomp

Скажите только, это болезнь драйвера, платы или конкретного экземпляра? Чтоб я мог понять, исключать ли мне из приложения работу с задержкой вообще. Просто сейчас у меня при частотах выше 1000 регулировки исключительно частотой, а когда надо частоты меньше 1000, то я использую 1000, а канальную частоту регулирую задержкой.

Денис
04.06.2006 13:03:24
#18

Гость

Re: Не запускается ЦАП на L783 под lcomp

Очень расчитывая на ответ на предыдущий вопрос, задаю следующий.
while(n<100000)
{
FIFO = 3072;
IrqStep=20;
Pages = 2;
   ap.t1.s_Type = L_ADC_PARAM;
   ap.t1.AutoInit = 0;
   ap.t1.dRate = 1000.0;
   ap.t1.dKadr = 0.0;
   ap.t1.dScale = 0;
   ap.t1.SynchroType = 3;
   ap.t1.SynchroSensitivity = 0;
   ap.t1.SynchroMode = 0;
   ap.t1.AdChannel = 0;
   ap.t1.AdPorog = 0;
   ap.t1.NCh = 1;
   ap.t1.Chn[0] = 0x0;
   ap.t1.Chn[1] = 0x1;
   ap.t1.Chn[2] = 0x2;
   ap.t1.Chn[3] = 0x3;
   ap.t1.FIFO = 3072;
   ap.t1.IrqStep = IrqStep;
   ap.t1.Pages = Pages;
   ap.t1.IrqEna = 1;
   ap.t1.AdcEna = 1;
   printf("/nFillDAQ %d = %d",n,pI->FillDAQparameters(&ap.t1));
   DWORD tm = 1000;
   printf("/nRequestBuff %d = %d",n,pI->RequestBufferStream(&tm,L_STREAM_ADC));
   printf("/nSetParam %d = %d",n,pI->SetParametersStream(&bp.t1, &tm, (void**)&data, (void**)&sync,L_STREAM_ADC));
   if(!n)
   {
   printf("/n Rate: %f/n",ap.t1.dRate);
   printf("/n Kadr: %f/n",ap.t1.dKadr);
   printf("/n Buffer size(word): %d",tm);
   printf("/n Pages: %d",bp.t1.Pages);
   printf("/n FIFO1: %d",ap.t1.FIFO);
   printf("/n IrqStep1: %d",ap.t1.IrqStep);
   printf("/n FIFO2: %d",bp.t1.FIFO);
   printf("/n IrqStep2: %d",bp.t1.IrqStep);
   getchar();
   }
   
   //pI->EnableCorrection();
   printf("/nInitStart %d = %d",n,pI->InitStartLDevice());
   printf("/nStartL %d = %d",n,pI->StartLDevice());
while(*sync<IrqStep*Pages)
{
    //printf("/n%d",*sync);
}
printf("/nStopL %d = %d",n,pI->StopLDevice());
 
n++;
}
Вот это цикл из модифицированного мной примера L783.TST. Очевидно, что на каждой из 100000 итераций он заного задает параметры сбора, в данном контексте одни и те же на каждой итерации и рестартует АЦП. Так вот во время отладки выявлена неприятная особенность. При некоторых значениях IrqStep, а конкретно 5 и 20, а может еще каких - все не проверишь, на некоторой, итерации в пределах этих 100000 (может быть как на 140, так и на 30000) происходит зависание. Как оказалось, зависание происходит в цикле while(*sync<IrqStep*Pages) по той простой причине, что *sync замирает вдруг на отметке IrqStep и уже больше никогда не становится равной IrqStep*Pages. Следует отметить, что такое поведеие свойственно не всем значениям IrqStep, а только некоторому ряду. Вот например только что застревание произошло на 26271 итерации при IrqStep = 12 (я в примере 20 поменял на 12). Также важно то, что все предшествующие циклу while(*sync<IrqStep*Pages) вызовы возвращают 0, а следовательно выполняются безошибочно. Так вот вопрос. Как быть? может есть исправление этому багу или IrqStep тоже оказывается дискретным в контексте мнокоразового рестарта АЦП?

04.06.2006 21:34:34
#19

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

Re: Не запускается ЦАП на L783 под lcomp

все дело в том что при малых IrqStep машина просто ляжет под напором прерываний.....для 783 хоть что-то буде работать хорошо при максимумах как фифо так и шага прерываний...это при высоких частотах сбора...

Виктор
21.06.2006 10:21:16
#20

Гость

Re: Не запускается ЦАП на L783 под lcomp

У меня тоже были проблемы с ЦАП у L783,а поскольку документация на эту тему помалкивает, пришлось провести экспериментальное исследование этой платы.
Выяснилось, что если AutoInit=1,то плата циклически исполняет буфер ЦАП и не обращает внимания ни на что.
Остановить ее можно только переинициализацией платы.
Если же AutoInit=0, то плата также циклически исполняет буфер ЦАП, но этот процесс останавливается при окончании потока АЦП. Таким образом в этом случае процесс циклического исполнения буфера ЦАП модулируется длительностью исполнения потока АЦП. Причем остановка ЦАП может произойти в любом месте буфера ЦАП. Это зависит от соотношения длительности исполнения потока АЦП и буфера ЦАП.А эти длительности в свою очередь зависят от  размеров буферов АЦП и ЦАП и частот
запуска АЦП и ЦАП. Режим подкачки буфера ЦАП можно организовать если установить время существования потока АЦП равным времени испонения буфера ЦАП. После окончания потока АЦП нужно снова инициализировать АЦП и ЦАП и при этом в буфер ЦАП загрузить следующую порцию данных. Таким образом можно исполнять на ЦАП практически неограниченные объемы данных. Следует учитывать, что минимальная частота запуска АЦП в потоке 305гц а ЦАП 80 гц.
Поскольку драйвер платы устроен по принципу "проси что хочешь - дам что могу", менять параметры потоков при перезагрузке не рекомендуется-поведение программы может стать непредсказуемым поскольку то что может драйвер известно слабо.

Виктор
06.07.2006 10:56:43
#21

Гость

Re: Не запускается ЦАП на L783 под lcomp

Перестал работать потоковый режим ЦАП. Все остальные режимы работают нормально. Работает однократный режим ЦАП, потоковый режим АЦП,ввод- вывод логических сигналов а потоковый режим ЦАП перестал работать в программах , в которых раньше он нормально работал.
Сначала он стал непонятным образом чувствовать предисторию т.е. если к нему не с той стороны подошел, то он мог отказатся работать а при заходе с другой стороны работал нормально. Потом вообще перестал откликаться. Что я должен делать?

07.07.2006 09:08:58
#22

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

Re: Не запускается ЦАП на L783 под lcomp

код как в примере L780.OSC работает?

Виктор
12.07.2006 09:21:24
#23

Гость

Re: Не запускается ЦАП на L783 под lcomp

Плата у Вас в ремонте. Я заменил плату на другую и все заработало. Если Poul это Павел, то мы с Вами недавно встречались и разговаривали о потоках.

12.07.2006 20:25:30
#24

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

Re: Не запускается ЦАП на L783 под lcomp

понятно. Poul это Павел