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


L780C после остановки 0xFFFF

Вы не вошли.

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

Andrey
01.04.2009 12:01:30
#1

Гость

L780C после остановки 0xFFFF

Base______0xE800
BaseL_____0x80
Mem______0xFEBE0000
MemL_____0x10000
BoardType_0xE
DSPType__0x889
Irq_______0x3

BrdName      L780
Rev             C
DspType      2185
IsDacPresent   1
Quartz     147456

Пишу на :

Задаю параметры ЦАПа
dacPar.t1.s_Type = L_DAC_PARAM;
    dacPar.t1.AutoInit=0;
    dacPar.t1.dRate=10.0;
    dacPar.t1.FIFO=512;
    dacPar.t1.IrqStep=512;
    dacPar.t1.Pages=4;
    dacPar.t1.IrqEna=1;
    dacPar.t1.DacEna=1;
    dacPar.t1.DacNumber=0;
    pI->FillDAQparameters(&dacPar.t1);

В инициализации данных ЦАП
data1[4094]=0xFFFF;   
Делаю событие по ЦАПу
pI->SetLDeviceEvent(hEventData,L_EVENT_DAC_BUF);

в ServiceThread(PVOID Context)
WaitForSingleObject(hEventData,INFINITE); // ждем 0xFFFF
потом обновляю данные для ЦАПа,
но он больше не выводит если только не использовать
pI->StopLDevice();
pI->InitStartLDevice();
pI->StartLDevice();

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

Andrey
01.04.2009 12:12:19
#2

Гость

Re: L780C после остановки 0xFFFF

Пишу на VC6:

01.04.2009 12:49:15
#3

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

Re: L780C после остановки 0xFFFF

никак.только в динамике два потока. можно данные подкладывать нулевые для цапа...

Andrey
01.04.2009 13:01:59
#4

Гость

Re: L780C после остановки 0xFFFF

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

01.04.2009 14:07:53
#5

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

Re: L780C после остановки 0xFFFF

событие о стопе это не для подкладывания... надо следить

01.04.2009 14:09:24
#6

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

Re: L780C после остановки 0xFFFF

сорвалось... за счетчиком выгрузки и подкладывать... Один старт прошел и потом из буфера ЦАП выводится, а в буфер АЦП кладется и все...так до конца.

Andrey
01.04.2009 16:27:49
#7

Гость

Re: L780C после остановки 0xFFFF

А следить за каким счетчиком?
pI->SetParametersStream(&dacPar.t1,&db, (void **)&data1, (void **)&sync1,L_STREAM_DAC);
за sync1 получиться в Rev C?

Andrey
01.04.2009 18:13:06
#8

Гость

Re: L780C после остановки 0xFFFF

Собрал для примера такой поток

DWORD WINAPI ServiceThread(PVOID Context)
{
   int i;
   ULONG halfbuffer = 4095/2;             // Собираем половинками кольцевого буфера
   ULONG fl2,fl1;
   USHORT *tmp, *tmp1;
   USHORT dataNEW[4096];
   while(1)
   {
     j=j+100.0; if (j>1024) j=0.0;
     for(i=0;i<4096;i+=2) dataNEW[i]=((USHORT)(j)&0xFFF)|0x0000;
     fl1 = fl2 = (*sync1<=halfbuffer)? 0:1; // Настроили флаги
     while(fl2==fl1) fl2=(*sync1<=halfbuffer)? 0:1; // Ждем заполнения половинки буфера
     tmp=data1+(halfbuffer*fl1);                  // Настраиваем указатель в кольцевом буфере
     memcpy(tmp,dataNEW+halfbuffer*fl1,halfbuffer*sizeof(USHORT));// Записываем данные в файл
     
     Sleep(0);
};
   
   return 0;
}    

Но почему-то *sync1 пробегает вроде раза 4 и стопориться на 0x600. Я что-то не так делаю?

Andrey
01.04.2009 19:33:56
#9

Гость

Re: L780C после остановки 0xFFFF

Да кажеьтся понял это из-за установок АЦП
adcPar.t1.AutoInit = 0;
надо 1 , тогда и ЦАП не тормозит.