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


биос от версаче

Вы не вошли.

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

Сергей Гребенюк
23.06.2003 14:56:25
#1

Гость

биос от версаче

Здравствуйте.
Сначала расскажу, что мне нужно сделать. Передо мной стоит задача написать систему управления объектом (область - нейрофизиология), то есть анализировать сигналы, приходящие от устройств, и в ответ генерировать управляющие сигналы. Таким образом, мне не подходит концепция «подготовил-загрузил буфера АЦП/ЦАП / запустил работу». Мне необходим быстрый способ выдачи на цап одиночных значений, поскольку выходной сигнал становится известен только в процессе регистрации входов. Я работаю в системе win200/98 с платой L1450/АЦП и уже наполовину решил задачу. Написал гибкую систему управления с Си-подобным спец. языком описания процесса управления. Когда же пришла очередь заняться железом я попросил у Павла исходники драйвера, совместимого с lcomp и попробовал запустить ваш пример(для платы 1450//lcomp).
Проблемы начались с того, что я не смог добиться генерации прерываний, хотя сигнал на выходе АЦП правильный. Единственный раз, когда генерируется прерывание – это после вызова DLL->StopLDevice(); Забавно. Переменные Sync не меняют своих значений в течение всей работы (и даже после вызова StopLDevice() smile
Начал ковыряться в исходниках, обнаружил в драйвере одну явную ошибку и одну очень вероятную. Потом я подумал, что проще попросить обновленную версию исходников у Павла, тем более, что они, как я понимаю, находятся в процессе разработки.
Кроме того, оказалось, что функция асинхронного чтения прерывает вывод на ЦАП. Судя по всему и считывание с АЦП прерывается также.
Но это не все. Для того чтобы моя система смогла работать быстро и точно, некоторые функции мне необходимо перенести под юрисдикцию DSP. Кроме того, мне необходимы точные отсчеты времени. (Сначала я пытался использовать 2 канал таймера 8254, но обнаружил неприяный сюрприз. Оказалось, что циклический опрос таймера и инкремент счетчика на уровне драйвера и циклический опрос счетчика на уровне приложения, снижают производительность системы совершенно неприемлемо. Игры с приоритетами не принесли результата)
Поэтому, я подумал, что DSP вполне мог генерировать прерывания в компьютер в ответ на прерывания от своего таймера. Каково же было мое разочарование, когда я обнаружил, что все возможные таймеры в штатном биосе уже используются. Конечно возможно такое извращение типа подать выход от динамика PC на внешний вход IRQ0 DSP, но в штатном биосе прерывания отключаются в самых разных местах и в самое разное время, поэтому надеяться на точность такого таймера не приходится.

Вобщем, я в тупике. В расчете на широкие возможности плат, оборудованных DSP, мы их купили 4 штуки, а использовать из можно пока только под ДОС в самом простом варианте типа ЛГраф.

Хотелось бы получить поддержку в таких вопросах

1. Как минимум я хотел бы получить обновленные исходники всех уровней организации (lComp.dll; ldevisa.sys; и l1450.bio). Причем l1450.bio, хотелось бы иметь в виде проекта под VisualDSP, что сильно бы облегчило разбирательство сс штатным биосом.

2. Организация таймера средствами биоса, возможно за счет других механизмов, скажем ЦАПа. Поскольку мне нужен в основном одиночный вывод с разрешением 100мкс, то вывод из буфера ЦАП можно убрать, освободив таймер SCLK0.
3. Скоростной одиночный вывод.

Итак, для решения поставленной задачи мне необходимо следующее:
1. Организация таймера.
2. Скоростной одиночный вывод на ЦАП/TTLin/TTLout
3. Хорошие возможности синхронихации ввода/вывода, уже реализованные в штатном биосе.
4. Ввод с АЦП через ДМА/IRQ

Чем вы, как разработчики платы мне могли бы помочь?
Очень надеюсь на ваше сотрудничество
Сергей Гребенюк