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

Глюки в драйвере под Windows

Вы не вошли.

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

Владимир
07.03.2002 22:43:27
#1

Гость

Глюки в драйвере под Windows

   Задача. Возможно ли с помощью драйвера, поставляемого фирмой L-Card, под Windows, одновременно посылать и принимать данные длиной до 30 с? Использую карту L-783.
   Как я убедился, если использовать при этом переменную синхронизации, считывая ее значение и проверяя, дошла ли она до заданного места, то ничего не выйдет. При попытке прочесть Sync[0] каждые 64 блока (1 блок = половине FIFO АЦП): увеличивается переменная Sync[1] и драйвер делает неизвестно что. Это "неизвестно что" продолжается следующие примерно 23 блока, и при этом данные не копируются с FIFO АЦП в большой кольцевой буфер! После того, как драйвер сделает "неизвестно что", то, чтобы "догнать" ушедшую вперед переменную синхронизации, драйвер заполняет пропущенную часть БКБ новыми данными, поступающими на данный момент! В результате, если подавать несколько с на ЦАП синусоиду (поблочно) и одновременно принимать ее с АЦП, то получаются специфические "повторы" каждые 64 блока длиной примерно 23 блока.
   Вопрос: зачем нужна переменная Sync[1] и можно ли избежать ее глюкового изменения? Если нужно, могу выслать график принятой синусоиды.
   При этом стоит заметить, что данной проблемы не будет, если вообще не обращаться к переменной Sync[0], а для синхронизации использовать текущее значение L_FIFO_PTR_PLX.

11.03.2002 10:01:38
#2

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

Re: Глюки в драйвере под Windows

а для PCI плат и нет переменной Sync[1] есть только Sync[0] типа DWORD. Выдача данных на ЦАП возможна только при частоте опроса до 1 МГц. Вообще на ЦАП оновление записывается медленно - он предназначен исключительно для работы из своего внутреннего буфера или на очень низких частотах.

VBV
11.03.2002 13:52:37
#3

Гость

Re: Глюки в драйвере под Windows

Я програмирую под Windows98 плату Е-440. Задача состоит в приеме сигнала с АЦП и в реальном времени  оценить сигнала и выдать управления на ЦАП и цифровые линии. Используя мультимедийный таймер с задержкой 1 мс и минимальным буфером обмена 64 байт (для минимума временного сдвига отцифровки и передачи данных) можно теоретически решить задачу. Практически интервал приема сигнала увеличивается в 8-10 раз, а дискретизация во столько-же уменьшается (принятый сигнал сжат). Похоже, что в каждом цикле компьютер успевает принять один из 8-10 буферов собираемых АЦП.
Я определил, что время устойчивого обмена командой (вывод на цифровую линию ) порядка 20 мс. Если такие гиганские времена  связаны с выбором команд из DLL, то можно ли получить асемблерные коды команд ввода/вывода данных. Возможно это решит проблему реального времени под Windows. Под DOS мы данную задачу давно решили.

VBV
11.03.2002 13:56:23
#4

Гость

Re: Глюки в драйвере под Windows

Я програмирую под Windows98 плату Е-440. Задача состоит в приеме сигнала с АЦП и в реальном времени приема оценить сигнал и выдать управления на ЦАП и цифровые линии. Используя мультимедийный таймер с задержкой 1 мс и минимальным буфером обмена 64 байт (для минимума временного сдвига отцифровки и передачи данных) можно теоретически решить задачу. Практически интервал приема сигнала увеличивается в 8-10 раз а дискретизация во столько-же уменьшается (принятый сигнал сжат). Похоже, что в каждом цикле компьютер успевает принять один из 8-10 буферов собираемых АЦП.
Я определил, что время устой чивого обмена командой (вывод на цифровую линию ) порядка 20 мс. Если такие гиганские времена  связаны с выбором команд из DLL, то можно ли получить асемблерные коды команд ввода/вывода данных. Возможно это решит проблему реального времени под Windows. Под DOS мы данную задачу давно решили.

Контакты

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

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

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

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