реклама на сайте
подробности

 
 
> Выбор порта на персоналке с малыми задержками
Andrey Pesoshin
сообщение Sep 14 2011, 12:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 5-07-10
Пользователь №: 58 297



Приветствую!

Я разрабатываю устройство для психологических исследований. Суть - в том, что испытуемому на экране показывают динамично меняющееся изображение, а испытуемый управляет отображаемым процессом посредством некоего пульта.

Пульты бывают двух видов - либо простая кнопка, у которой обрабатывается только время нажатия, либо плавный переключатель (например, педаль), для которого учитывается его мгновенное положение (как коэффициент от 0.0 до 1.0)

В устройстве критичны задержки при обработке сигналов от пульта, поэтому например компьютерная клавиатура, подключенная по usb, - сразу не подходит в качестве пульта (задержка буффера клавиатуры, задержка USB-порта).

Если делать устройство на базе персоналки, какой интерфейс я могу использовать в данном случае и какие задержки (именно задержки, а не скорость интерфейса) я могу получить? Как варианты - USB; FireWire; кастомная плата, подключенная по PCI/PCIe/PCMCI, может быть древний LPT/COM?

Естественно, на персоналке планируется ОСРВ, чтобы аппаратные прерывания обрабатывались жестко по мере поступления.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andrey Pesoshin
сообщение Sep 14 2011, 12:54
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 5-07-10
Пользователь №: 58 297



Спасибо за быстрый ответ!

Насчет 10-20 мс - соглашусь, это период перерисовки (обновления видеопамяти), чаще - нет смысла, т.к. это не покажет ни один монитор, реже тоже - картинка не будет какое-то время соответствовать модели.

Только в таком случае, если ориентироваться на этот интервал при обработке внешнего прерывания, то и погрешность будет в пределах 10-20 мс.
К тому же, если фактически сигнал от пульта сгенерирован во время первого кадра, то и обработать его желательно за время первого кадра, а не второго.

Время реакции испытуемого хотелось бы оценивать с большей точностью, в идеале - 1 мс.

Не поделитесь раскладкой по времени конкретных интерфейсов?
Go to the top of the page
 
+Quote Post
Demeny
сообщение Sep 14 2011, 14:26
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Andrey Pesoshin @ Sep 14 2011, 16:54) *
Время реакции испытуемого хотелось бы оценивать с большей точностью, в идеале - 1 мс.

Не поделитесь раскладкой по времени конкретных интерфейсов?

Из популярных интерфейсов ввода (RS-232, USB, LPT, PS/2) разве что в USB сложно строго детерминировать время от физического события (нажатия кнопки, условно говоря) до появления данных в буфере драйвера (обработчика прерывания). Это связано с тем, что USB-устройства всегда аппаратно опрашиваются хостом (поллинг) с помощью выстроенной цепочки дескрипторов, поэтому время реакции будет зависеть от правильности выстраивания этой цепочки драйвером, от количества USB-устройств и может составлять от 1 мс до 1 с (теоретически!).
Что касается остальных интерфейсов - LPT частота опроса до 200 кГц, RS-232 зависит от скорости передачи данных и т. п.
Однако когда прикладное приложение получит данные уже от драйвера - здесь гораздо всё более туманно в многозадачной системе, даже если она ОСРВ, зависит от периода "тика" планировщика задач, загруженности системы и интенсивности работы высокоприоритетных процессов (например, обмена по сети).
На мой взгляд, Вам не нужно бояться относительно длительного времени между событием и его фиксацией - главное, чтобы оно было как можно более определённым ( в идеале - одинаковым от измерения к измерению), тогда его можно просто вычесть при расчётах.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Andrey Pesoshin
сообщение Sep 14 2011, 16:08
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 5-07-10
Пользователь №: 58 297



Хм, значит USB точно нельзя использовать из-за недетерминированности времени отклика.

На время эксперимента можно же отключить все остальные приоритетные процессы и выставить приоритет на внешние прерывания, тик, если варьируется, выставить по-максимуму, тогда задержку многозадачной ОС можно попробовать не учитывать.

LPT с 200 кГц, ps/2 и rs232 (через DB9, а не виртуальный COM-порт через COM/USB-переходник) выглядят заманчиво, но встречаются на персоналках в природе уже редко, и тенденция, что скоро их не будет совсем.

Demeny, а как Вы считаете, если использовать кастомный пульт (допустим, с единственной кнопкой) и кастомную печатную плату для обработки сигналов от пульта и сопряжения с шиной PCI/PCIe (или PMCIA для использования в "полевых" условиях, когда в роли персоналки - ноутбук), можно ли выстроить систему так, что задержка интерфейса будет минимизирована? Я же правильно понимаю, что задержки генерации прерываний при использовании PCI/PCIe много меньше 1 мс?
Go to the top of the page
 
+Quote Post
Demeny
сообщение Sep 15 2011, 06:48
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Andrey Pesoshin @ Sep 14 2011, 20:08) *
Demeny, а как Вы считаете, если использовать кастомный пульт (допустим, с единственной кнопкой) и кастомную печатную плату для обработки сигналов от пульта и сопряжения с шиной PCI/PCIe (или PMCIA для использования в "полевых" условиях, когда в роли персоналки - ноутбук), можно ли выстроить систему так, что задержка интерфейса будет минимизирована? Я же правильно понимаю, что задержки генерации прерываний при использовании PCI/PCIe много меньше 1 мс?

Не думаю, что кастомный пульт, подключаемый к PC, принципиально улучшит точность измерения времени реакции, поскольку основная неопределённость находится в программной части (драйвер - приложение) на PC. И правильно Вам сказали, что применение ОСРВ здесь вряд ли что-то изменит. Вам по сути нужно не столько получить отклик с минимальной задержкой, сколько привязать этот отклик к конкретной временной метке, связанной с кадром на экране. Чтобы получить временную метку с разрешением 500 мкс - системный тик должен быть как минимум такой же, а 500 мкс тик даже для QNX - это очень серьёзный стресс для ОС (типовое значение 10 мс).
Я бы сделал примерно так - пульт можно соединить с PC по RS-232 на скорости, например, 115200 бит/с. При этом переписать обработчик прерывания по приходу байта в COM-порт таким образом, чтобы он вычитывал из регистров видеокарты текущий номер разворачиваемого кадра и текущие координаты луча развёртки. Время передачи управления обработчику прерывания в любой ОС составляет единицы микросекунд, время передачи байта по RS-232 тоже известно (~87 мкс). Таким образом можно вычислить время нажатия кнопки почти до пикселя на экране rolleyes.gif


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Andrey Pesoshin   Выбор порта на персоналке с малыми задержками   Sep 14 2011, 12:15
- - Demeny   Время развертки одного кадра изображения на монито...   Sep 14 2011, 12:30
||- - Andrey Pesoshin   Demeny, DpInRock Большое спасибо за проявленный ин...   Sep 15 2011, 13:18
||- - Demeny   Цитата(Andrey Pesoshin @ Sep 15 2011, 17...   Sep 16 2011, 09:11
||- - Andrey Pesoshin   Цитата(Demeny @ Sep 16 2011, 13:11) Неопр...   Sep 16 2011, 13:50
|- - Ruslan1   Цитата(Andrey Pesoshin @ Sep 14 2011, 15...   Sep 14 2011, 16:40
- - DpInRock   Обычная клавиатура. PS\2. Обычная мышь. (Даже...   Sep 14 2011, 14:00
- - Andrey Pesoshin   Тест - Реакция на движущийся объект (примерное опи...   Sep 14 2011, 14:44
- - Andrey Pesoshin   Ruslan1 Я, если честно, решил пока задачу "вл...   Sep 14 2011, 17:25
- - Xenia   Цитата(Andrey Pesoshin @ Sep 14 2011, 16...   Sep 14 2011, 17:42
- - Andrey Pesoshin   Xenia А порекомендуете что-нибудь конкретное из ли...   Sep 14 2011, 18:13
- - DpInRock   Ну как же люди любят все усложнять.... Казалось б...   Sep 14 2011, 19:22
|- - Ruslan1   Цитата(DpInRock @ Sep 14 2011, 22:22) Ну ...   Sep 14 2011, 19:48
- - Andrey Pesoshin   ну а стремление усложнять это не всегда же плохо )...   Sep 14 2011, 20:43
- - DpInRock   Цитатаэто время в ПК для коррекции и дальнейших по...   Sep 15 2011, 07:10
|- - muravei   Цитата(DpInRock @ Sep 15 2011, 10:10) Наж...   Sep 16 2011, 09:46
- - _3m   Цитата(Andrey Pesoshin @ Sep 14 2011, 16...   Sep 16 2011, 14:04
- - Andrey Pesoshin   Цитата(_3m @ Sep 16 2011, 18:04) Геймерск...   Sep 16 2011, 14:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 00:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01564 секунд с 7
ELECTRONIX ©2004-2016