информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на InternetВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / hardware
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
"что ее ограничивают искуственно." - не ограничивают, а соблюдают стандарт. Нового по эти портам вряд ли появиться. Устаревшие они, на УСБ и файрваре идут ставки. И тут ИМХО выше не прыгнешь:-) 15.08.05 14:54  Число просмотров: 2192
Автор: Garick <Yuriy> Статус: Elderman
<"чистая" ссылка>
<hardware>
Быстрый обмен с внешними устройствами. 15.08.05 13:09  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
Есть датчик (несколько датчиков), выдающий слаботочный цифровой сигнал ("0"-0В, "1"-12В). Для сопряжение с ТТЛ и увеличения входного вопротивления есть интерфейс, состоящий из резистора и транзистора. Все это подключено к параллельному принтерному порту. Можно и к СОМ порту, но суть проблемы не меняется.
Программная обработака сигналов с датчиков осуществляется посредством считывания из принтерного порта его состояния с последующей обработкой соответствующих датчикам бит.
Скорость чтения из порта приблизительно милион в секунду. Причем создается впечатление, что эта скорость присуще всем портам (регистрам). То есть гигагерцовый процессор читает из порта за тысячу тактов!
Как бы повысить скорость без серьезного "хирургического" вмешательства с паяльником хотя бы раз в 10, а лучше в 100? В принципе это должно быть реально, просто не хочется скатываться до разработки и производства собственной интерфейсной платы. К тому же если пользовать ноутбук, то к нему будет очень проблематично какую либо разработку "прикрутить".
Порт считываем в цикле (polling) или юзаем асинхронные виндовозные функции, завязанные на прерывания? 15.08.05 13:55  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 15.08.05 13:57  Количество правок: 1
<"чистая" ссылка>
Хотя в юзер моде всё так и будет... Нуно писать драйвер (IMHO) и самому садится на обработку прерываний.
Такое предложение можно было ожидать. Оно в некоторой... 15.08.05 14:28  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Хотя в юзер моде всё так и будет... Нуно писать драйвер
> (IMHO) и самому садится на обработку прерываний.

Такое предложение можно было ожидать. Оно в некоторой степени может решить урезанный вариант задачи. Это все в предположении того, что реакция процессора на прерывание почти мгновенна (время сохранения точки возврата в стэке и перехода по вектору мало).
Не будем рассматривать никакие ОС (Виндовс и Линукс) поскольку от рботы под ними железо быстрее работать не будет. Так же не будем рассматривать защищеный и виртуальный режим, поскольку в этих режимах чтение из потра тоже быстрее не будет.
Для того, чтоб не мешало переключение контекстов пользуюсь ДОСом, хотя можно и без ОС - программа записывается в БУТ и запускается при загрузке. В этом случае максимально приближаемся к РЕАЛТАЙМ.
Буду краток. У СОМ порта 4 линии могут вызвать его прерывание с последующим его детектированием (линия приема данных не применима). У принтерного порта одна линия, вызывает прерывание. В случае использования нескольких датчиков можно с каждого дополнительно завести сигналы и на эту линию (ACK) через диоды или транзисторы.
Какой из датчиков сработал - можно узнать только читанув из порта. Возможна ситуация, когда один датчик сработает несколько раз с интервалом в несколько наносекунд или вслед за первым датчиком сработает другой (сигнал появится на короткий промежуток времени). В этих случаях сигналы/прерывания могут быть прорущены. То есть сигналы заведомо не должны идти чаще, чем их обработка.
Напрашивается единственный выход из положения - использовать разные прерывания. Например для двух датчиков использовать СОМ1 и СОМ2 с 4 и 3 прерыванием, при условии, что эти прерывания не шарятся. Порты можно не трогать, поскольку сам факт наличия прерывания уже позволяет определить какой датчик сработал.
Но увы чтобы последующее прерывание от СОМ или принтерного порта произошло нужно его "сбросить" в устройстве, прочитав из порта состояния. И послать команду завершения обработки контроллеру прерываний (out 20h, 20h).
Порт "пулится".
Скорость чтения порта ограничена скоростью порта (контроллера порта). точные данные не скажу, но в инете инфа есть. И увеличение скорости ЦПУ не даст прирост в скорости работы с портом. 15.08.05 13:48  
Автор: Garick <Yuriy> Статус: Elderman
Отредактировано 15.08.05 13:53  Количество правок: 1
<"чистая" ссылка>
Маловата частота получается - всего 1 Мегагерц... и это при... 15.08.05 14:41  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 15.08.05 14:44  Количество правок: 1
<"чистая" ссылка>
Маловата частота получается - всего 1 Мегагерц... и это при том что порты сейчас интергрированы в чипсет, изготовленный по 0.18 микронной технологии. Советские микрухи 555 или 580 серии и то 5 мегагерц тянули. Не что мешает передать данные из регистра устройства за время меньше, чем микросекунда.
Причем эта скорость тянется еще с платформы АТ(80х286). Суть не в процессоре. Вместе с процессором развивается вся архитектура. Странно что скорость не возросла хотя бы в два раза.
Все таки у меня создается впечатление, что ее ограничивают искуственно. Причем для всех портов сразу.
"что ее ограничивают искуственно." - не ограничивают, а соблюдают стандарт. Нового по эти портам вряд ли появиться. Устаревшие они, на УСБ и файрваре идут ставки. И тут ИМХО выше не прыгнешь:-) 15.08.05 14:54  
Автор: Garick <Yuriy> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach