Форум: "Система";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
ВнизОсциллографическая плата Найти похожие ветки
← →
AndreyS (2002-09-05 15:40) [0]Вопрос по Осциллографической плате.
Есть драйвер для осциллографической платы в виде DLL.
Я вызываю функцию снять данные. Мне нужна высокая
стабильность задержки относительно момента запуска
(по независимому осциллографическому таймеру который дает
сиганал проге опять же через функции в DLL) для запуска функции
оцифровки к АЦП на плате. Какие меры надо предпренять, чтобы это
было лучше всего. Может директивы компиляции по таблице вызовов (не
знаю как в Delphi все этоделается). Как обезапасить от неожиданного
тормаза системой вызова функции (вызывается 10 раз в секунду). Может
преоретет перед вызовом менять, но с такой частотой? А наивысший
чреват. В общем что посоветуете?
← →
Наезжалкин (2002-09-05 16:10) [1]Опрос по мультимедийному таймеру. timeSetEvent()... etc
← →
AndreyS (2002-09-05 16:35) [2]Речь идет о точности порядка одной микросекунды. А какова частота дискритизации
мультимедийного таймера? И что именно вы имеете ввиду? Это что даст- финт в
смысле приоретета или что? Ну с небольшими временами я согласен, а как с микросекундой
быть? Здесь наверно нужно делать типа претриггера с освобождением "окна" под
наивысший приоретет моей проги на несколько десятков микросекун. Возможно и так как вы
говорите с Мульмедиа, но тогда если можно поподробнее.
← →
Наезжалкин (2002-09-05 16:41) [3]"Речь идет о точности порядка одной микросекунды."
Ах, вот оно что! Ну, тогда используйте прерывания. Обработчик в драйвере.
← →
AndreyS (2002-09-05 17:09) [4]Согласен. Это самое лучшее. Так скоты производители платы кроме библиотеки DLL
никаких данных о регистрах и низкоуровневых команд не дали. Вот и приходится искать
пути через одно место. Придется делать нечто среднее- драйвер на драйвере и через
DLL поганяет - вот такая ж...
← →
слон (2002-09-06 05:58) [5]Не понял откуда взялась микросекунда?
писали же
... функции (вызывается 10 раз в секунду).
← →
AndreyS (2002-09-06 14:45) [6]10 раз в секунду- это повторение импульсов запуска на внешний триггер (запуск) платы.
После каждого такого импульса надо включить на плате АЦП(плата многоканальная) так чтобы
стабильность временной задержки между импульсом запуска и началом работы АЦП была
не хуже чем одна микросекунда. Известно что аппаратная стабильность задержки
осциллографической платы между фронтом импульса запуска (на плату от каго-нибудь
прибора например) и сигналом выдаваемом ею компьютеру по PCI лучше 50 наносекунд.
Надо сделать стабильным по времени отклик компьютера на этот импульс.
Под откликом понимается следующий путь. Сигнал с PCI обрабатывается одной
функцией из DLL (уже запущенной) после чего она вызывает другую функцию
из DLL для запуска АЦП. Предустановка временной задержке на плате
между сигналом с триггера и началом АЦП у производителя не реализована
(вот такие дебилы -это же самое лучшее). Причем это наверняка возможно
если бы они дали полную документацию по прошивке и регистрам - ан нет.
Вот и остается пытатьс делать через одно место. Итак уточню вопрос.
Есть сигнал по PCI с частотой 10 герц. На каждый такой сигнал надо выдавать
ответный сигнал плате со стабильностью задержки (от сигнала к сигналу) порядка
одной микросекунды. Учитывая что все реализуется через DLL надо
заставить систему реагировать на все вызовы и прочее с постоянной
задержкой (стабильность лучше 1 микросекунда) и еще в добавок и максимально
малой задержкой.
Частота шины 133 мегагерца (а это примерно 10 наносекунд), так что
задача коректна. Есть ли идеи у кого? Да, под Досом я не хочу, да и драйвера нет.
Спасибо за внимание.
← →
AndreyS (2002-09-06 15:03) [7]Забыл добавить. Прерывание отрабатывает опять функция производителя о наличие
сигнала триггера на плате. После чего дает TRUE. Я после этого вызываю функцию
начала АЦП из DLL. Будем считать что функция отрабатывающая прерывание платы
о наличие запуска действует стабильно.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c