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


Прерывания АЦП L-791

Вы не вошли.

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

Michael
10.01.2007 19:34:48
#1

Гость

Прерывания АЦП L-791

Для L-791 EventId L_EVENT_ADC_BUF соответствует прерыванию ADC_Mst_Event, а L_EVENT_ADC_FIFO - прерыванию ADC_Buf_Event? Я правильно понимаю описание?
Работает ли прерывание ADC_Mst_Event в случае циклического сбора данных? В моем случае почему-то не генерируются прерывания, с чем это может быть связано? Привожу код инициализации сбора данных

void StartADC(unsigned short *channels, unsigned short NCh)
{
  int i;

  m_pI->StopLDevice();
  m_adcPar.t2.s_Type = L_ADC_PARAM;
  m_adcPar.t2.AutoInit = 1;
  m_adcPar.t2.dRate = POLL_FREQUENCY/1000.;
  m_adcPar.t2.dKadr = 1000.*(1./BASE_FREQUENCY - (NCh-1)/POLL_FREQUENCY);

  m_adcPar.t2.SynchroType = 0;
  m_adcPar.t2.SynchroSrc = 0;

  m_adcPar.t2.NCh = NCh;
  for(i=0; i < NCh; i++)
    m_adcPar.t2.Chn[i] = channels[i];

  m_adcPar.t2.FIFO = 64;
  m_adcPar.t2.IrqStep = 4 * 1024;
  m_adcPar.t2.Pages = 32;
                                       
  m_pI->SetLDeviceEvent(m_hEventADC, L_EVENT_ADC_BUF);
  m_adcPar.t2.IrqEna = (1 << SBIT_ADC_MST_EVENT);
  m_adcPar.t2.AdcEna = 1;
  m_pI->FillDAQparameters(&m_adcPar.t2);

  unsigned long size = 1000000;
  m_pI->RequestBufferStream(&size, L_STREAM_ADC);
  m_pI->SetParametersStream(&m_adcPar.t2, &size, (void**)&m_dataADC, (void**)&m_regL791, L_STREAM_ADC);

  m_pI->InitStartLDevice();
  m_pI->StartLDevice();
}

11.01.2007 10:20:31
#2

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

Re: Прерывания АЦП L-791

по идее должны. А при однократном сборе генерятся? А данные вообще собираются?

Michael
12.01.2007 12:59:40
#3

Гость

Re: Прерывания АЦП L-791

Однократный сбор не пробовал.
Да, данные собираются. Для сбора данных используется отдельный поток с приоритетом выше, чем у основной программы. ADC_Buf_Event отрабатывается, а ADC_Mst_Event нет.
WaitForSingleObject(L_791->m_hEventADC, INFINITE);
должна нормально отрабатывать прерывание с EventId L_EVENT_ADC_BUF?

12.01.2007 14:40:56
#4

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

Re: Прерывания АЦП L-791

там пример есть L791.OSC - однократный сбор с прерыванием....работал...

Michael
12.01.2007 17:46:48
#5

Гость

Re: Прерывания АЦП L-791

Проверю однократный сбор да буду искать ошибку у себя. Спасибо за консультацию.