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


L791 v3 и L791 v4. Проблема с прерываниями IRQ

Вы не вошли.

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

Александр
17.12.2013 21:26:39
#1

Гость

L791 v3 и L791 v4. Проблема с прерываниями IRQ

Здравствуйте!

Существует следующая проблема: некоторое время назад были приобретены платы L-791 (тогда еще REV.2; полное название L-791v3 3R386205) и под них было разработано некоторое программное обеспечение, которое использовало синхронизацию от платы по событию заполнения буфера FIFO (из расчета по количеству отчетов и частоты работы платы – каждые 5 мс). В то время основным драйвером платы был lcomp.exe (цифровая подпись 12 апреля 2012 г. 12:51:58).
Инициализационный код, который обеспечивал эту синхронизацию следующий:
AdcPar.t2.s_Type   = L_ADC_PARAM;
AdcPar.t2.AutoInit = 1;
AdcPar.t2.dRate = 400.0;
AdcPar.t2.dKadr = this->KadrCounting(*dFrequencyBase,ulDotsOnPeriod, AdcPar.t2.dRate); //расчет подходящего шага между отчетами
AdcPar.t2.SynchroType = 0;
AdcPar.t2.SynchroSrc = 0;   
AdcPar.t2.NCh     = ulNChanels;
AdcPar.t2.FIFO    = ulFIFO;
AdcPar.t2.IrqStep = 1;
AdcPar.t2.Pages   = 1;
AdcPar.t2.IrqEna  = 1 << SBIT_ADC_BUF_EVENT; //;0xFFFF; //разрешили все
// SBIT_ADC_BUF_EVENT - разрешение прерываний по количеству записей
// SBIT_ADC_MST_EVENT - заполнение буфера АЦП

if (pI->SetLDeviceEvent(hIRQStep, 4) == L_ERROR) {ShowMessage("SetLDeviceEvent Error"); return;} // передача события

&#8195;
Собственно с данной картой и драйвером все работало: после инициализации и запуска опроса плата стабильно выставляла прерывание, дальнейшей задачей была лишь своевременная обработка результата.
Однако впоследствии встала необходимость расширения системы измерений, и были закуплены новые платы L-791 (L-791v4 4D561374). Они поставлялись с драйвером lcomp.exe (цифровая подпись 10 июля 2013 г. 13:44:40).
Описанное приложение вылетает с ошибкой на строке:
if (pI->SetLDeviceEvent(hIRQStep, 4) == L_ERROR) {ShowMessage("SetLDeviceEvent Error"); return;} // передача события

Подскажите, что нужно сделать, чтобы заставить программу работать?

17.12.2013 23:36:48
#2

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

Re: L791 v3 и L791 v4. Проблема с прерываниями IRQ

Старый драйвер использовать. В новом переделано много в этой части из-за проблем с адресацией на современных компах где много памяти. Плата не может выйти за рамки 4 гигабайта адреса и поэтому пришлось переписать код с прямого busmаster на busmaster в некую спец буферную память и копирование данных в обработчике прерываний. И своместимость частично порушилась.Плата стала больше похожа на L-780/783 тк стало можно память выделять большую под буфер...

Александр
18.12.2013 07:58:39
#3

Гость

Re: L791 v3 и L791 v4. Проблема с прерываниями IRQ

Poul, благодарю за оперативный ответ, все заработало. smile
Жаль, что я сам не догадался до этого =/