Например TDA7294

Форум РадиоКот • Просмотр темы - Как перевести LPT с нестандартным адресом на вход?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 28, 2025 21:56:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как перевести LPT с нестандартным адресом на вход?
СообщениеДобавлено: Пт авг 12, 2011 07:38:13 
Открыл глаза

Карма: 8
Рейтинг сообщений: 34
Зарегистрирован: Чт окт 15, 2009 20:40:16
Сообщений: 42
Рейтинг сообщения: 0
В общем, проблема такая: Из-за отсутствия LPT на материнке купил PSI-LPT на базе MosChip;
Адресное пространство получилось CD00-CD07 вместо 0378-037F; узнал, что переключение
порта с выхода на вход осуществляется установкой 5-го бита регистра control - попробовал - не
получилось; начал копать дальше - оказалась что возможно надо сменить режим порта в каком-то
регистре - вопрос как его найти???? (подобные темы видел - ответа для себя там не нашёл) или как
сменить адресное пространство на стандартное???


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как перевести LPT с нестандартным адресом на вход?
СообщениеДобавлено: Пт авг 12, 2011 15:28:43 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Регистры контроля имеют стандартное смещение от базового адреса. Control - base+1.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как перевести LPT с нестандартным адресом на вход?
СообщениеДобавлено: Пн авг 15, 2011 08:54:45 
Поставщик валерьянки для Кота

Карма: 77
Рейтинг сообщений: 3432
Зарегистрирован: Чт сен 09, 2010 07:32:24
Сообщений: 2313
Откуда: г. Рыбинск
Рейтинг сообщения: 0
Сменить диапазон адресов можно, но делать это придётся после каждой перезагрузки ОС.

Вариант №1 (самый простой) - использовать утилиту NetMosLptRedir.exe безвестного автора. Эта утилита для доступа к PCI регистрирует и запускает драйвер giveio.sys. Ввиду кривизны этого драйвера при дальнейшей работе в ОС возможны различные недоразумения, как то, неработоспособность приложений, запускающихся под виртуальной машиной NTVDM и др.

Вариант №2 (самый трудоёмкий) - сделать вручную всё то, что выполняет вышеуказанная утилита. Для этого понадобится доступ к конфигурационному пространству PCI, который можно обеспечить, к примеру, популярной программой Wpcredit. Выбираем в списке "Select device" нашу карточку: тип "Other communications", VID:PID для чипа MCS9835 - 9710:9835. В конфигурационном пространстве переходим к базовому адресному регистру (BAR) стандартного LPT по смещению 18h и меняем его значение (типа word) на тот адрес, который нам нужен, например, 378h. При этом нужно иметь ввиду, что младший бит всегда = 1, т.е. я буду вводить по смещению 18h : 79h, и 19h: 03h. Далее перемещаемся к BAR расширенного LPT по смещению 1Ch и меняем значение на 378h+400h = 778h, не забывая про установленную единичку в младшем бите, т.е. 779h. Вот и всё!
В любом случае ОС об этих изменениях знать не будет, поэтому всё на свой страх и риск :)

Что касается двунаправленного режима, то прежде, чем устанавливать 5-й бит в регистре управления принтером, нужно установить соответствующий режим с помощью регистра ECP ECR, адрес которого равен базовому + 402h. Я делал это примерно так:
Код:
  asm
    mov     dx,BasePort
    add     dx,402h             {ECP ECR adress}
    in      al,dx               {load current value}
    and     al,00011111b        {clear mode bits}
    or      al,00100000b
    out     dx,al               {set bidirectional byte mode}
    mov     dx,BasePort
    add     dx,2
    mov     al,00100000b        {set read data mode and no interrupts}
    out     dx,al
  end;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как перевести LPT с нестандартным адресом на вход?
СообщениеДобавлено: Вт авг 16, 2011 15:31:02 
Открыл глаза

Карма: 8
Рейтинг сообщений: 34
Зарегистрирован: Чт окт 15, 2009 20:40:16
Сообщений: 42
Рейтинг сообщения: 0
Mickle, спасибо за подробный ответ, со стандартным портом 378h вместо BasePort -работает , а если вместо BasePort ставлю CD00 то не компилируется - если Вам не сложно, то как будет выглядеть этот кусок кода для BaseAdress=CD00 ??


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Как перевести LPT с нестандартным адресом на вход?
СообщениеДобавлено: Вт авг 16, 2011 17:19:41 
Поставщик валерьянки для Кота

Карма: 77
Рейтинг сообщений: 3432
Зарегистрирован: Чт сен 09, 2010 07:32:24
Сообщений: 2313
Откуда: г. Рыбинск
Рейтинг сообщения: 0
Medv95, наверное нолик пропустили перед CD00h:
Код:
  asm
    mov     dx,0CD00h
    add     dx,402h             {ECP ECR adress}
    in      al,dx               {load current value}
    and     al,00011111b        {clear mode bits}
    or      al,00100000b
    out     dx,al               {set bidirectional byte mode}
    mov     dx,0CD00h
    add     dx,2
    mov     al,00100000b        {set read data mode and no interrupts}
    out     dx,al
  end;

Я рад, что всё заработало, но хочу напомнить про два существенных момента:
1) нужно иметь ввиду, что инструкции ввода-вывода являются привилегированными, поэтому код под ОС защищённого режима просто так работать не будет, только под DOS;
2) привязываться к конкретным значениям BAR вашей PCI карточки - неправильно (я имею ввиду забивать в код адреса портов, типа 0CD00h). Ресурсы выделяются PCI устройству операционной системой. К примеру, на моём компьютере адрес базового порта будет совсем другой, и на Вашем он поменяется, если установите ещё одну карту PCI :(


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y