Перейти к содержанию
    

Смастерить LPT EPP на микроконтроллере

21 минуту назад, Baza сказал:

Есть давно такая штука

http://ra3pkj.ru/page2.shtml

Ну - если наличествует любая платка на CY7C68013, то даже такой переходник покупать не нужно: Насколько помнится - в примерах кода для CY7C68013 был пример реализации LPT-порта (причём - как раз вроде EPP или ECP). Просто взять, скомпилить его и загнать в любую платку на CY7C68013.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, Baza said:

Есть давно такая штука

http://ra3pkj.ru/page2.shtml

https://www-user.tu-chemnitz.de/~heha/basteln/PC/USB2LPT/index.en.htm

 

китайцы лепят клоны на её основе для mach3

https://purelogic.ru/catalog/kontroller_plcm-lpt-2__interfeys_usb/

http://homecnc.ru/electro/33-lpt-dlya-cnc

 

работал с ним, поддерживает даже программы, которые дергают пинами и слушают порт в прямом доступе

Это совсем не то, что нужно ТСу. Но оно может понадобиться для подключения их оригинальных устройств к ПК без физического LPT интерфейса. Что касается "как это работает?" то тут всё просто. На указанный диапазон устанавливается ограничение доступа, при обращении в который вызывается обработчик исключения, в котором сидит как раз эмулятор. Работать это всё будет, естественно, только в режиме V86, подобное делали ещё при эмуляции SB. Из-за физических задержек в USB а так же зависимость от скорости CPU (вызов исключения - дорогая операция, т.к. происходит смена контекста) скорость эмуляции иногда настолько низка, что, собственно, ломает работу приложения. Некоторые Win приложения для прямой работы с портами I/O используют шлюзы наподобие GiveIO или UserPort, так что могут быть не совместимы с эмуляцией.

Изменено пользователем HardWareMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все, часть сигналов сдампил, щас раскурю протокол и можно плату разводить😆

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, Arlleex сказал:

Сам протокол обмена там, вроде, простейший - горсть сигналов квитирования/строба и 8 бит шины данных.

А вы уверены в этом?

Вспоминается, что на заре своей проф.деятельности, в одной очень древней разработке, я тоже использовал LPT для связи ПК со своим девайсом. Так вот - изначально я тогда тоже планировал использовать EPP/ECP. Но потом, из соображений совместимости и возможности работы на разнообразном зоопарке компов, решил работать в режиме минимума - SPP only. И, как выше уже справедливо заметили - lpt-link Norton-а тоже мог работать в режиме SPP.

Естественно в этом случае на приём (в ПК) остаётся всего 5 линий (если не путаю). Что очень мало. А значит - приём будет медленный. А если идти классическим путём (с сигналами квитирования и прочей тряхомудрией), то ещё медленее (всего 4 бита за раз можно передать).

Поэтому на приём я придумал оптимизированный вариант трансфера: по 5 бит за раз. Т.е. - не отдавать ни одного провода на сигналы управления. А в качестве сигнала квитирования использовать факт изменения состояния любой линии из 5-ти. Для этого сперва кодируем передаваемый поток данных по 5 бит с экранированием 0-ей (передаются только символы в диапазоне 1...31). А далее - передаём в порт каждое новое значение как XOR к предыдущему состоянию порта.

В качестве метода кодирования без нулей можно использовать любой способ: хоть COBS-подобный, хоть SLIP-подобный, хоть свой доморощенный (например - на операциях длинного умножения) - не принципиально.

Это позволило заметно поднять скорость трансфера. И более того - когда я потом померял и сравнил скорость своего оптимизированного трансфера и скорость трансфера Norton-а, то оказалось что они полностью совпали! Один-в-один на одном и том же ПК. Получается, что скорее всего внутри Norton использовал подобный моему метод трансфера (в режиме SPP).

 

PS: Я это пишу к тому, что будьте готовы увидеть протокол какой угодно причудливости. В те времена приходилось иногда знатно покрутиться. Даже с задачами, которые сейчас кажутся простейшими. Возможности железа были весьма скромны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, jcxz сказал:

А вы уверены в этом?

PS: Я это пишу к тому, что будьте готовы увидеть протокол какой угодно причудливости. В те времена приходилось иногда знатно покрутиться. Даже с задачами, которые сейчас кажутся простейшими. Возможности железа были весьма скромны.

Вообще, насколько я понял из беглого ознакомления со стандартом LPT, полноценный хост умеет "знакомиться" с девайсом путем нехитрых рукопожатий.

Но! Мне нужно подыграть старую железку всего лишь для одного компа, который еще на ДОСе работает)) Поэтому я взял лог. анализатор, включил комп, а затем нагорячую подключил LPT и выяснил, что компу вообще пофигу на то, чего там умеет девайс. В биос жестко прошит режим EPP и я по лог. анализатору вижу последовательную запись адресов и чтения данных. Т.е. там N циклов "запись адреса - чтение данных". Одна линия управления от хоста не используется, всегда в лог. 1, две линии управления от девайса тоже "молчуны" - в неких лог. состояниях без изменения. Все данные, формат, кто за кем идет и какие биты за что отвечают - в течение сегодняшнего дня полностью определил.

Единственное, комп шлет сигналы стробов весьма короткими - 0.5мкс, но еще заложен некий аппаратный flow control в виде сигнала Busy (Wait) от слейва. В принципе, к STM-ке через буфер все подцепляю и формирую нужные диаграммы. В течение месяца-другого, когда дойдут руки сделать прототип железяки, отпишусь о результатах (если не забуду).

P.S. В подопытной железяке LPT-порт подключен к ПЛИСе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 minutes ago, Arlleex said:

Но! Мне нужно подыграть старую железку всего лишь для одного компа, который еще на ДОСе работает)) Поэтому я взял лог. анализатор, включил комп, а затем нагорячую подключил LPT и выяснил, что компу вообще пофигу на то, чего там умеет девайс. В биос жестко прошит режим EPP и я по лог. анализатору вижу последовательную запись адресов и чтения данных. Т.е. там N циклов "запись адреса - чтение данных". Одна линия управления от хоста не используется, всегда в лог. 1, две линии управления от девайса тоже "молчуны" - в неких лог. состояниях без изменения. Все данные, формат, кто за кем идет и какие биты за что отвечают - в течение сегодняшнего дня полностью определил.

Единственное, комп шлет сигналы стробов весьма короткими - 0.5мкс, но еще заложен некий аппаратный flow control в виде сигнала Busy (Wait) от слейва. В принципе, к STM-ке через буфер все подцепляю и формирую нужные диаграммы. В течение месяца-другого, когда дойдут руки сделать прототип железяки, отпишусь о результатах (если не забуду).

Гонял целевой софт или что там BIOS/DOS/WINDOWS пытались в PnP? Если целевой софт, соответствовала ли активность одной из эпюр из букваря на 1284? Там эпюры достаточно полные для разных режимов.

50 minutes ago, Arlleex said:

P.S. В подопытной железяке LPT-порт подключен к ПЛИСе.

Уууу...

Плюсы: можно сделать аппаратно 1284 в любой конфигурации.

Минусы: согласования линий и остальная физика (в том числе и ESD) идёт нахер.

Ну, окай, ждём.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, HardWareMan сказал:

Гонял целевой софт или что там BIOS/DOS/WINDOWS пытались в PnP? Если целевой софт, соответствовала ли активность одной из эпюр из букваря на 1284? Там эпюры достаточно полные для разных режимов.

Да, эпюры вполне похожи на те, что в книжке. Включал основной софт, который взаимодействует с железкой.

Цитата

Уууу...

Плюсы: можно сделать аппаратно 1284 в любой конфигурации.

Минусы: согласования линий и остальная физика (в том числе и ESD) идёт нахер.

Ну, окай, ждём.

Да смысла особо нет рассуждать, правильно или нет было на ПЛИС - как считали нужным, видимо, так и делали. Я поставлю на шину данных 5В двунаправленный буфер, все остальные сигналы тоже через буферы однонаправленные пропущу. Прикинусь той самой железкой - работать будет, уверен))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...