dacPar.t1.s_Type = L_DAC_PARAM;
dacPar.t1.AutoInit=1;
dacPar.t1.dRate=10;
dacPar.t1.FIFO=256;
dacPar.t1.IrqStep=256;
dacPar.t1.Pages=2;
dacPar.t1.IrqEna=1;
dacPar.t1.DacEna=1;
int i;
printf("/n FillDAC returned %d", pI->FillDAQparameters(&dacPar.t1));
printf("/nRate %f", dacPar.t1.dRate);
printf("/nFIFO,IRQ %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));
dacPar.t1.Pages);
printf("/nBufSize %d", db);
for(i=0;i<512;i++)
data1[i]
(USHORT)2047&0xFFF) | (0<<12);
В приведенном коде на 0 канал после подачи команды StartLDevice упорно выводится 2,5 вольт. Если поставить 1<<12, то на 1-м канале будет 5 вольт. Что к чему?
И еще одна особенность. Если задан вывод 0-го канала, то после выполнения StartLDevice устанавливается напряжение в 2 раза меньше требуемого. После StopL и CloseL оно сохраняется, НО после повторного запуска приложения и загрузки биоса, но до StartL на 0 канале выставляется то, что должно было быть при предыдущем запуске, т.е. в данном контексте 5 вольт. С 1-м каналом все работает как надо. После StartL выставляется требуемое напряжение, После завершения приложения это напряжение сохраняется, после загрузки БИОС напряжение равно 0. А вот что происходит с 0-м каналом - непонятно. Объясните плз.