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


Прерывания в L1450

Вы не вошли.

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

Локоть Сергей
22.11.2004 16:24:52
#1

Гость

Прерывания в L1450

После команды C_START заполняется первая половина буфера в плате, генерится одно прерывание, а далее плата молчит и ни каких следующих прерываний не выдаёт. В обработчике сбрасываю оба контроллера и плату (in ax,dx(=base+8)), никаких команд плате не передаю, толко считываю число отсчётов из буфера и то в программе (в прерывании только устанавливаю бит, который программа ждёт). ПОЧЕМУ?

22.11.2004 17:06:16
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,494

Re: Прерывания в L1450

Я так понимаю, что Вы работаете под DOS.
1. По факту прихода прерывания от платы L-1450 необходимо вычитывать из платы IrqStep отсчётов. Иначе плата больше не будет генерить прерываний в РС.
2. Что значит "считываю число отсчётов из буфера"? Какой функцией вычитывается это число? Если используете GET_DM_WORD(), то при этом LBIOS благополучно полностью останавливает работу АЦП.
3. Типовую организацию обработчика прерываний для платы L-1450 смотри на нашем CD-ROM в файле /ISA/L1450/WAVPLAY.DOS/WAVPLAY.CPP (функция IRQ_Handler()).

Локоть Сергей
23.11.2004 14:15:34
#3

Гость

Re: Прерывания в L1450

Я писал на С++ только программу загрузки LBIOSa, и всевозможных настроек (типа DSP, буфера, самой платы и т.д.). Основная программа - на ассемблере - через порты общается с LBIOSом. Запускает АЦП командой С_START, и останавливает командой чтения ячейки памяти. В прерывании просто читаются (вроде нужное число)слов из порта данных по факту установки бита готовности. у меня исп. 3 канала по 1024 отсчёта, а буфер стало быть в два раза больше. Все общение с платой я провожу в точности как в исходнике библиотеке на С++.