Форум: Техническая поддержка

Тема: Работа по с FIFO по IRQ

Вы не вошли.

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

Vladimir
28.09.2001 09:32:59
#1

Гость

Работа по с FIFO по IRQ

Уважаемые коллеги! Помогите!
Прочел в конференции вопрос по работе E330 с FIFO по IRQ. С У330 у меня все получилось. Решил такую же технологию применить к L1250.
Ничего не получилось. Прерывания не вызываются ни разу. Вроде делаю все по ТД.
-------------------------------------
const
  NPOINT    = 1024;           // размер буфера данных
  MAX_CHAN  = 16;             // максимальное число каналов

var
  Rate:    integer  = 100;    // период дискретизации, мкс
  NChan:   integer  = 1;      // число опрашиваемых каналов
  Channels: array[0..MAX_CHAN-1] of word; // массив каналов АЦП
  Buf: array[0..NPOINT-1] of smallint;    // буфер данных АЦП
  CountIRQ: integer = 0;     // счетчик числа прерываний

implementation

uses LCARD_32;

{$R *.DFM}

// обработчик прерываний
procedure FIFOHandler(Hndl: THandle); stdcall; far;
begin
READ_FIFO(Buf, NPOINT);
Inc(CountIRQ);
// выводим счетчик прерываний
frmMain.edtCountIRQ.Text:=IntToStr(CountIRQ);
RESET_IRQ;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var
i: integer;
begin
SELECT_SLOT(0);               // выбираем слот с L1250 - 0
if PLATA_TEST <> 0 then       // тестируем наличие модуля и загрузку BIOS в модуль
  MessageDlg(/'Не инициализирована плата АЦП/', mtConfirmation, [mbYes], 0);
for i:=0 to MAX_CHAN-1 do CREATE_CHANNEL(Channels[i], 0, 0);
INTR_SETUP(0);                // IRQ10
CONFIG_2FIFO_TYPE(1, NPOINT); // двойной FIFO буфер с генерированием прерываний
end;

// включаем ввод с использованием IRQ
procedure TfrmMain.bbtTestIRQClick(Sender: TObject);
begin
CONFIG_2FIFO_TYPE(M1, NPOINT);          // двойной FIFO буфер с генерированием прерываний
STREAM_FIFO2_BEGIN(Rate, @FIFOHandler, Channels, NChan);
end;

// останавливаем ввод
procedure TfrmMain.bbtStopTestClick(Sender: TObject);
begin
STOP_INTR;
CONFIG_2FIFO_TYPE(0, 0);
CountIRQ:=0;
end;

end.

Хотелось бы работать с обеими устройствами (E330 и L1250)по единой технологии. Буду очень признателен за помощь.
Владимир.

28.09.2001 11:28:01
#2

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

Re: Работа по с FIFO по IRQ

Попробуйте убрать вызов INTR_SETUP(0) или
замените его на INTR_SETUP(10) - так будет правильно.

Vladimir
28.09.2001 14:13:37
#3

Гость

Re: Работа по с FIFO по IRQ

Пробовал и так и этак. Проверял с размыми версиями LCARD_32.DLL и разными версиями LBIOS009.
Результат тот же.
В BIOSE компьютера IRQ10 - available.
Где еще копать? Помогите!
Владимир.

Влад
28.09.2001 15:53:49
#4

Гость

Re: Работа по с FIFO по IRQ

А прерывание IRQ10 в BIOSe включено в режим ISA (а не PCI PnP)?

Vladimir
29.09.2001 14:26:00
#5

Гость

Re: Работа по с FIFO по IRQ

На компьютере где в BIOSE можно явно указать
IRQ в режиме ISA все получилось - работает прекрасно. По прерываниям пишу буфер в файл и одновременно успеваю его визуализировать.
На другом компьютере настройки IRQ хитрее, но это мы поборем.
Спасибо.
Тема снята.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск