jcxz 236 22 августа Опубликовано 22 августа · Жалоба 21 минуту назад, Baza сказал: Есть давно такая штука http://ra3pkj.ru/page2.shtml Ну - если наличествует любая платка на CY7C68013, то даже такой переходник покупать не нужно: Насколько помнится - в примерах кода для CY7C68013 был пример реализации LPT-порта (причём - как раз вроде EPP или ECP). Просто взять, скомпилить его и загнать в любую платку на CY7C68013. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 2 22 августа Опубликовано 22 августа (изменено) · Жалоба 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, так что могут быть не совместимы с эмуляцией. Изменено 22 августа пользователем HardWareMan Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 180 22 августа Опубликовано 22 августа · Жалоба Все, часть сигналов сдампил, щас раскурю протокол и можно плату разводить😆 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 22 августа Опубликовано 22 августа · Жалоба 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: Я это пишу к тому, что будьте готовы увидеть протокол какой угодно причудливости. В те времена приходилось иногда знатно покрутиться. Даже с задачами, которые сейчас кажутся простейшими. Возможности железа были весьма скромны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 180 22 августа Опубликовано 22 августа · Жалоба 2 часа назад, jcxz сказал: А вы уверены в этом? PS: Я это пишу к тому, что будьте готовы увидеть протокол какой угодно причудливости. В те времена приходилось иногда знатно покрутиться. Даже с задачами, которые сейчас кажутся простейшими. Возможности железа были весьма скромны. Вообще, насколько я понял из беглого ознакомления со стандартом LPT, полноценный хост умеет "знакомиться" с девайсом путем нехитрых рукопожатий. Но! Мне нужно подыграть старую железку всего лишь для одного компа, который еще на ДОСе работает)) Поэтому я взял лог. анализатор, включил комп, а затем нагорячую подключил LPT и выяснил, что компу вообще пофигу на то, чего там умеет девайс. В биос жестко прошит режим EPP и я по лог. анализатору вижу последовательную запись адресов и чтения данных. Т.е. там N циклов "запись адреса - чтение данных". Одна линия управления от хоста не используется, всегда в лог. 1, две линии управления от девайса тоже "молчуны" - в неких лог. состояниях без изменения. Все данные, формат, кто за кем идет и какие биты за что отвечают - в течение сегодняшнего дня полностью определил. Единственное, комп шлет сигналы стробов весьма короткими - 0.5мкс, но еще заложен некий аппаратный flow control в виде сигнала Busy (Wait) от слейва. В принципе, к STM-ке через буфер все подцепляю и формирую нужные диаграммы. В течение месяца-другого, когда дойдут руки сделать прототип железяки, отпишусь о результатах (если не забуду). P.S. В подопытной железяке LPT-порт подключен к ПЛИСе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 2 22 августа Опубликовано 22 августа · Жалоба 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) идёт нахер. Ну, окай, ждём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 180 22 августа Опубликовано 22 августа · Жалоба 2 минуты назад, HardWareMan сказал: Гонял целевой софт или что там BIOS/DOS/WINDOWS пытались в PnP? Если целевой софт, соответствовала ли активность одной из эпюр из букваря на 1284? Там эпюры достаточно полные для разных режимов. Да, эпюры вполне похожи на те, что в книжке. Включал основной софт, который взаимодействует с железкой. Цитата Уууу... Плюсы: можно сделать аппаратно 1284 в любой конфигурации. Минусы: согласования линий и остальная физика (в том числе и ESD) идёт нахер. Ну, окай, ждём. Да смысла особо нет рассуждать, правильно или нет было на ПЛИС - как считали нужным, видимо, так и делали. Я поставлю на шину данных 5В двунаправленный буфер, все остальные сигналы тоже через буферы однонаправленные пропущу. Прикинусь той самой железкой - работать будет, уверен)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baza 31 23 августа Опубликовано 23 августа · Жалоба On 8/22/2024 at 2:16 PM, HardWareMan said: Это совсем не то, что нужно ТСу. Но оно может понадобиться для подключения их оригинальных устройств к ПК без физического LPT интерфейса. Что касается "как это работает?" то тут всё просто. На указанный диапазон устанавливается ограничение доступа, при обращении в который вызывается обработчик исключения, в котором сидит как раз эмулятор. Работать это всё будет, естественно, только в режиме V86, подобное делали ещё при эмуляции SB. Из-за физических задержек в USB а так же зависимость от скорости CPU (вызов исключения - дорогая операция, т.к. происходит смена контекста) скорость эмуляции иногда настолько низка, что, собственно, ломает работу приложения. Некоторые Win приложения для прямой работы с портами I/O используют шлюзы наподобие GiveIO или UserPort, так что могут быть не совместимы с эмуляцией. Это единственная железка usb lpt, которая работает быстро и с библиотеками give i0 и user port Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 2 23 августа Опубликовано 23 августа · Жалоба 1 hour ago, Baza said: Это единственная железка usb lpt, которая работает быстро и с библиотеками give i0 и user port Не скажу за GiveIO, а вот UserPort работает не как шлюз, он модифицирует таблицу доступа, понижая права на указанные адреса I/O, тем самым разрешая к ним доступ из Ring3 и V86. Как при этом будет отлавливаться исключение для эмуляции я не знаю, надо пробовать. Единственным полноценным решением для программ с прямум доступом к портам I/O я вижу лишь в написании loader'а, как у трейнеров в игре. Родительский процесс всегда может перехватывать все доступы (даже прямые) у своего ребёнка, правильно эмулируя функционал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться