Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронизация приборов с помощью TTL логики [D5, Win95/98]


bg8 ©   (2004-03-11 14:49:00) 

Доброго времени суток, уважаемые Мастера!
Есть задача: на выходе нужно получить несколько импульсов с некоторым временным интервалом между ними, причем интервал должен измеряться десятками микросекунд. В DOSe это реализованно с помощью отключения ВСЕХ прерываний и прогонкой пустых циклов между изменениями статуса TTL-выходов. Вопрос: можно ли это как-нибудь организовать под винду?!


guron   (2004-03-20 04:07:00) [1]

Попробуй перед тем как "уговаривать" плату отдать время равноценным потокам
Sleep(0)


GEN++   (2004-03-18 22:00:00) [2]

Для спокойной работы с подобным оборудованием из-под любой
Windows лучше всего использовать внешний контроллер - "прокладку"
Например RS2-4-5x - (информация www.fractal.com.ru) Вам подойдет.


bg8   (2004-03-17 12:26:00) [3]

С риалтайм - приоритетом процесса все, как ни странно, работает отлично. Всем спасибо.


Cobalt   (2004-03-16 23:12:00) [4]

Пишите драйвер к ней и задаёте драйверу временную диаграмму.
А системные прерывания, кроме как с помощью оченьгрязного хака, отключить не удастся.
Вы хоть представляете себе, как функционирует операционка?


bg8   (2004-03-16 09:04:00) [5]

И вообще, как отключить системные прерывания? Железные прерывания отключить невозможно, я так понимаю, а софтовые? cli не работает =(((


bg8   (2004-03-16 09:02:00) [6]

>вот это да...
>А плата PCI-ная?
>Неужто она допускает такие допуски по времени - "десятками >микросекунд"?

Плата PCI

В техсопровождении платы написано, что время уставки всех напряжений не превышает 8-ми мкс.
Тупым тестированием я получил, что минимальное время между выводом сигналов на плату составляет 7.5 микросекунд. Но дело в том, что когда выводишь сложный импульс, во время импульса происходят всякие события винды, и она отбирает управление у программы, поэтому импульсы иногда "расплываются", т.е. время между двумя уставками не 8 мкс, а (8+n*10) мкс, n от 0 до 2-3, иногда 4-5, что, сами понимаете, нежелательно! =( пробовал ассемблерные вставки типа asm; cli //вывод импульса// sti end; - не помогает. Как это сделать? Кто-то говорил про риалтайм-приоритет программы, но как это сделать???


Cobalt   (2004-03-13 15:33:00) [7]

вот это да...
А плата PCI-ная?
Неужто она допускает такие допуски по времени - "десятками микросекунд"?


bg8   (2004-03-13 12:41:00) [8]

Сигнал с платы выводится в цифровом формате, если бы это был ЦАП, то его можно было бы запрограммировать на разные сигналы любой  длительности, а так можно одной командой устанавливать либо ноль на выходе, либо 5 вольт...


pasha_golub   (2004-03-12 13:22:00) [9]

Digitman ©   (12.03.04 11:17) [7]
Согласен на все сто.


Cobalt   (2004-03-12 11:35:00) [10]

bg8 ©   (12.03.04 10:32) [6]
Ну и работай через плату. Её же можно запограммировать на всякие сигналы.
Если это, конечно, не какая-нибудь шибко старая плата...


Digitman   (2004-03-12 11:17:00) [11]


> Под ДОС то все уже работает


выдели отдельную машинку, которая будет исполнять роль контроллера для связи с ЭУ .. пусть на этой машинке под ДОС крутится твоя уже работающая и отлаженная управляющая математика

потребуется лишь подключить контроллер к сети и доработать свою математику в части задействования того или иного сет.протокола, чтобы по сети взаимодействовать с Win-хостом, где работает сетевое приложение "с кнопочками, картинками красивыми и т.д", выполняющее роль виз.интерфейса управления удаленным контроллером

иными словами - и волки сыты и овцы целы


bg8   (2004-03-12 10:32:00) [12]

Вся эта фигня мне нужна для запуска приборов на экспериментальной установке, запуск осуществляется через плату АЦП, на которой есть TTL входы/выходы. Под ДОС то все уже работает, но дело в том, что вся обработка, типа управлением осциллографами и прочей дребеденью делается под виндой из LabView. Босс хочет чтобы и синхронизация была красивой - там с кнопочками, картинками красивыми и т.д. А под ДОСом им не нравится...


MegaVolt   (2004-03-12 10:25:00) [13]

Под 98 точно также. Вставляешь ассемблерную вставку и запрещаешь прерывания делаешь что тебе нужно а потом обратно включаешь. Только нафига винда тогда? Она при запрете всех прерываний будет полностью висеть. И все действия от опроса клвавы до отрисовки и обновления экрана придётся делать самому :(


Юра   (2004-03-11 17:02:00) [14]

И еще, в догонку, у приложения должен быть REALTIME приоритет. Чтобы это приложение не остановило систему, в мометны ожидания колбэка таймера ты должен ожидать какого-либо события, например, оконного сообщения.

2 Vladimir
cli под НТ вызовет исключение (привелегированная инструкция)


Vladimir "Chainik"   (2004-03-11 16:56:00) [15]

Здесь почти тоже самое, но это чревато нежелательными последствиями, а именно переключению приоритета текущего потока  REALTIME и
asm
 cli
// твоя функция

 sti
end;
но во время работы твоего кода ниодна системная функция будет недоступна (останавливаются системные часы!!!)


Юра   (2004-03-11 16:52:00) [16]

Под винду практически не возможно. Но можешь попробовать :)
1 - Тебе бужет нужен доступ к порту напрямую (к LPT скорее всего). Для этого заюзай библиотеку DLPortIO (или DLIOPort не помню уже)
2 - Не импользуй компоненты типа TTimer, т.к. они основанны на оконных сообщениях винды. Сам понимаешь, о чем это говорит :)
Почитай в МСДН статью High-Precision Timing Under Windows, Windows NT, & Windows 95.
Для тайминга юзай:
MMRESULT timeSetEvent(
 UINT           uDelay,      
 UINT           uResolution,
 LPTIMECALLBACK lpTimeProc,  
 DWORD_PTR      dwUser,      
 UINT           fuEvent      
);
Вообще, для этих целей пользуй либо голый ДОС, либо RTLinux.
Удачи


Digitman   (2004-03-11 15:44:00) [17]


> на выходе

на выходе чего ? речь идет об электрофизическом сопряжении неких интерфесов ?


> В DOSe это реализованно с помощью отключения ВСЕХ прерываний


какое отношение DOS и программная логика с использовангием или неиспользованием механизма "прерываний" имеют к электрофизическому сопряжению, если о нем идет речь ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо