knigechka
Сайт содержит тексты редких методических пособий, лабораторных и контрольных работ. Вообщем, то что трудно найти в сети но очень нужно для подготовки к экзаменам, в частности на заочной форме обучения.
Настройка и диагностика LPT-портов
Конфигурирование LPT-портов
Управление параллельным портом разделяется на два этапа — предварительное конфигурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Оперативное переключение возможно только в пределах режимов, разрешенных при конфигурировании. Этим обеспечивается возможность согласования аппаратуры с ПО и блокирования ложных переключений, вызванных некорректными действиями программы.
Конфигурирование LPT-порта зависит от его исполнения. Порт, расположенный на плате расширения (мультикарте), устанавливаемой в слот ISA или ISA+VLB, конфигурируется джамперами на самой плате. Порт на системной плате конфигурируется через BIOS Setup.
Ниже перечислены параметры, подлежащие конфигурированию.
♦ Базовый адрес — 3BCh, 378h или 278h. При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и, соответственно, присваивает обнаруженным портам логические имена LPT1, L PT2, L РТЗ. Адрес ЗВСЬ имеет адаптер порта, расположенный на плате MDA или HGC. Большинство портов по умолчанию конфигурируется на адрес 378h и может переключаться на 278h.
♦ Используемая линия запроса прерывания: для L РТ — IRQ7, для LPT2 — IRQ5. Традиционно прерывания от принтера не задействуются, и этот дефицитный ресурс можно сэкономить. Однако при использовании скоростных режимов ЕСР (или Fast Centronics) работа через прерывания может заметно повысить производительность и снизить загрузку процессора.
♦ Использование канала DMA для режимов ЕСР и Fast Centronics — разрешение и номер канала DMA.
♦ Режимы работы порта:
• SPP — порт работает только в стандартном однонаправленном программно- управляемом режиме;
• PS/2, он же Bi—Directional — отличается от SPP возможностью реверса канала (установкой CR. 5=1);
• Fast Centronics — аппаратное формирование протокола Centronics с использованием FIFO-буфера и, возможно, DMA;
• ЕРР — в зависимости от использования регистров порт работает в режиме SPP или ЕРР;
• ЕСР— по умолчанию включается в режим SPP или PS/2, записью в ECR
может переводиться в любой режим ЕСР, но перевод в ЕРР записью в ECR кода 100 не гарантируется;
• ЕСР+ЕРР — то же, что и ЕСР, но запись в ECR кода режима 100 переводит порт в ЕРР.
Выбор режима ЕРР, ЕСР или Fast Centronics сам по себе не приводит к повышению быстродействия обмена с подключенными ПУ, а только дает возможность драйверу и ПУ установить оптимальный режим в пределах их «разумения». Большинство современных драйверов и приложений пытаются использовать эффективные режимы, поэтому «подрезать им крылья» установкой простых режимов без веских на то оснований не стоит.
Принтеры и сканеры могут пожелать режима ЕСР. Windows (3.x, Эх и NT) имеет системные драйверы для этого режима. В среде DOS печать через ЕСР поддерживается только специальным загружаемым драйвером.
Сетевые адаптеры, внешние диски и CD—ROM, подключаемые к параллельному порту, могут использовать режим ЕРР. Для этого режима специальный драйвер пока еще не применяется; поддержка ЕРР включается в драйвер самого подключаемого устройства.
Неисправности и тестирование параллельных портов
Тестирование параллельных портов разумно начинать с проверки их наличия в системе. Список адресов установленных портов появляется в таблице, выводимой BIOS на экран перед загрузкой ОС. Список можно посмотреть и с помощью тестовых программ или прямо в BIOS Data Area с помощью отладчика.
Если BIOS обнаруживает меньше портов, чем установлено физически, скорее всего, двум портам присвоен один и тот же адрес. При этом работоспособность ни одного из конфликтующих портов не гарантируется: они будут одновременно выводить сигналы, но при чтении регистра состояния конфликт на шине, скорее всего, приведет к искажению данных. Программное тестирование порта без диагностической заглушки (Loop Back) не покажет ошибок, поскольку при этом читаются данные выходных регистров, а они у всех конфликтующих (по отдельности исправных портов) совпадут. Именно такое тестирование производит BIOS при проверке на наличие портов. Разбираться с такой ситуацией следует, последовательно устанавливая порты и наблюдая за адресами, появляющимися в списке.
Если физически установлен только один порт, a BIOS его не обнаруживает, то либо порт отключен при конфигурировании, либо он вышел из строя (скорее всего из-за нарушений правил подключения). Если вам везет, неисправность устраняется «передергиванием» платы в слоте — там иногда возникают проблемы с контактами.
Наблюдаются и такие «чудеса» — при «теплой» перезагрузке DOS после Windows 95 порт не виден (и приложения не могут печатать из MS-DOS). Однако после повторной перезагрузки DOS порт оказывается на месте. С этим явлением легче смириться, чем бороться.
Тестирование портов с помощью диагностических программ позволяет проверить выходные регистры, а при использовании специальных заглушек — и входные линии. Поскольку количество выходных линий порта (12) и входных (5) различно, то полная проверка порта с помощью пассивной заглушки принципиально невозможна. Разные программы тестирования требуют применения разных заглушек (рис. 1.8).
Рис. 1.8. Схема заглушки для тестирования LPT-порта: а — для Norton Diagnostics б -для Checklt,
Большинство неприятностей при работе с LPT-портами доставляют разъемы и кабели. Для проверки порта, кабеля и принтера можно воспользоваться специальными тестами из популярных диагностических программ (Checklt, PCCheckи т. п.). Можно попытаться просто вывести на принтер какой-либо символьный файл.
♦ Если вывод файла с точки зрения DOS проходит (копирование файла на
устройство с именем LPTn или PRN совершается быстро и успешно), а принтер (исправный) не напечатал ни одного символа — скорее всего, это обрыв (не контакт в разъеме) цепи Strobe*.
♦ Если принтер находится в состоянии On Line, а появляется сообщение о его неготовности, причину следует искать в линии Busy.
♦ Если принтер, подключенный к порту, в стандартном режиме (SPP) печатает нормально, а при переходе в режим ЕСР начинаются сбои, следует проверить кабель — соответствует ли он требованиям IEEE 1284 (см. выше). Дешевые кабели с неперевитыми проводами нормально работают на скоростях 50-100 Кбайт/с, но при скорости 1-2 Мбайт/с, обеспечиваемой ЕСР, имеют полное право не работать, особенно при длине более 2 м.
♦ Если при установке драйвера PnP-принтера появилось сообщение о необхо
димости применения «двунаправленного кабеля», проверьте наличие связи
контакта 17 разъема DB-25 с контактом 36 разъема Centronics. Хотя эта связь изначально предусматривалась, в ряде кабелей она отсутствует.
♦ Если принтер искажает информацию при печати, возможен обрыв (или замы
кание) линий данных. В этом случае удобно воспользоваться файлом, содер
жащим последовательность кодов всех печатных символов. Если файл печата
ется с повтором некоторых символов или их групп, по периодичности повтора
можно легко вычислить оборванный провод данных интерфейса. Этот же файл
удобно использовать для проверки аппаратной русификации принтера.
Аппаратные прерывания от LPT-порта используются не всегда. Даже DOS-программа фоновой печати PRINT работает с портом по опросу состояния, а ее обслуживающий процесс запускается по прерыванию от таймера. Поэтому неисправности, связанные с цепью прерывания от порта, проявляются не часто. Однако по-настоящему многозадачные ОС (например, NetWare) стараются работать с портом по прерываниям. Протестировать линию прерывания можно, только подключив к порту ПУ или заглушку. Если к порту с неисправным каналом прерывания подключить адаптер локальной сети, то он, возможно, будет работать, но с очень низкой скоростью: на любой запрос ответ будет приходить с задержкой в десятки секунд — принятый из адаптера пакет будет приниматься не по прерыванию (сразу по приходу), а по внешнему тайм-ауту.
Литература:
ГукМ. Г93 Аппаратные интерфейсы ПК. Энциклопедия. — СПб.: Питер, 2002. — 528 с.: ил.
LPT порт — чем протестировать ?
#1 Pushnoi


Перестал печатать принтер HP LJ 6P — пробную стр. печатает своей кнопкой и по IrDa печать принимает — вроде исправен.
Кроме того и сканер на LPT работать перестал — «необнаружен» типа.
Думаю LPT гикнулся — запустил тестовую прогу Кофтуна — XPlpt — все пины шевелюся — мерил мультиметром и сигналы на входах правильные и тоже реальность отображают. Кроме того что на 13 входе всегда лог. 0 (10 мВ) и не подтягивается ( при подаче «1» с выходов ДАТА поднимается лишь до 850 мВ) даже внешним сигналом — но вроде это нормально.
Чем — можно проверить в чем дело ? Просто WinXP пишет «неудалось напечатать этот документ» и всё — т.е. инфо скудная. А когда щелкаешь по принтеру в панеле задачь — выдает его состояние «Ошибка — идет печать». Но она конечно не идет.
Какой прогой можно протестировать LPT и узнать чего принтеру не хватает ? Сканеру тоже.
== В биос поставил «норамальный» режим вместо ECP — не помогло и порт удалял из системы и при перезапуске он снова возник сам и тоже не помогло.
== про 13-й контакт LPT можно подробней ? может ли он быть всегда «0» ?
Сообщение отредактировал Pushnoi: 03 Сентябрь 2007 — 12:55
#2 Avangard



- Пол: Мужчина
Просто WinXP пишет «неудалось напечатать этот документ» и всё — т.е. инфо скудная. А когда щелкаешь по принтеру в панеле задачь — выдает его состояние «Ошибка — идет печать».
Как проверить lpt порт на работоспособность windows 7
sven » 28 дек 2009, 23:12
Re: Проверка LPT порта
ASD » 29 дек 2009, 09:31
Плату со светодиодами делать не обязательно, хотя это, конечно, нагляднее. Достаточно, измеряя мультиметром напряжение на выходных контактах разъема, убедиться, что его уровни соответствуют тем, что Вы устанавливаете в окне программы. Выход можно считать исправным, если высокий (High) уровень на нем не менее 2,4 В, а низкий (Low) не более 0,4 В. Строго говоря, приведенные значения положено измерять при токе нагрузки 14 мА. Без нагрузки высокий уровень обычно получается выше, а низкий — ниже указанного.
Для проверки входных линий порта нужно перемычкой на разъеме соединить проверяемый вход с одним из заведомо исправных (уже проверенных) выходов. Меняя состояние выхода, убедитесь, что за ним следует и показываемое в окне состояние входа.
Re: Проверка LPT порта
sven » 29 дек 2009, 21:17
Re: Проверка LPT порта
БОРИС » 30 дек 2009, 23:04
Re: Проверка LPT порта
sven » 10 мар 2010, 22:51
Re: Проверка LPT порта
ASD » 11 мар 2010, 00:18
1. Изменяя уровень на линии DATA1, убеждаемся, что вместе с ним изменяется состояние линии BUSY.
2. Изменяя уровень на линии DATA2, убеждаемся, что вместе с ним изменяется состояние линии PE.
3. Устанавливаем низкий уровень на линии DATA4, чем включаем верхнюю по схеме половину микросхемы DD1.
3.1. Изменяя уровень на линии DATA6, убеждаемся, что вместе с ним изменяется состояние линии MOSI.
3.2. Изменяя уровень на линии DATA7, убеждаемся, что при низком уровне светодиод включен, а при высоком — выключен.
3.3. Изменяя уровень на линии DATA5, убеждаемся, что вместе с ним изменяется состояние линии SCKI.
4. Устанавливаем низкий уровень на линии DATA3, чем включаем нижнюю по схеме половину микросхемы DD1.
4.1. Изменяя уровень на линии DATA8, убеждаемся, что вместе с ним изменяется состояние линии RESET.
4.2. Убеждаемся, что на линии ACKLNG — высокий уровень. При соединении линии MISO с общим проводом (GND) уровень на линии ACKLNG должен стать низким.
Учтите, уровни желательно проверять не только по показаниям программы, но и с помощью вольтметра или осциллографа. Подозрение должны вызвать случаи, когда уровень «не совсем высок» (заметно меньше напряжения питания) или «не совсем низок» (заметно больше нуля) и, к тому же, отличается от аналогичных уровней на других выходах. Причиной неправильной работы элементов, выходы которых соединены параллельно, может быть плохая пайка одного из соответствующих им входов (они обязательно должны быть надежно соединены параллельно).
Re: Проверка LPT порта
sven » 14 мар 2010, 23:54
Re: Проверка LPT порта
ASD » 15 мар 2010, 00:55
Re: Проверка LPT порта
Ewgen » 06 окт 2010, 17:17
Проверка на возможность ввода информации по шине данных AD0-AD7 на четырёх
разных AT и ATX компьютерах. (контакты 2,3,4,5,6,7,8,9 разъёма DB-25, LPT-порт)
1. Войти в BIOS, установить режим EPP 1,7 или EPP, определить базовый адрес
LPT-порта (обычно BASE = 378h) и запустить компьютер.
2. Прочитать значение регистра управления (CR) по адресу BASE+2 (например 37Ah)
и сохранить. Например на языке программирования QBASIC:
3. Для переключения шины данных в режим ввода установить бит 5, регистра
управления 37Ah , в «1»:
4. Измерить напряжение на линиях шины данных AD0 — AD7. На всех линиях будет
около 4.2 — 4.4 В. (контакты 2-9 разъёма DB-25, порта LPT)
(на одном из древних компьютеров шина данных переключилась в состояние высокого
входного сопротивления )
5. Прочитать состояние шины данных AD0 — AD7:
d=INP(&H378)
PRINT d ;» десятичное «; HEX$(d);» шестнадцатиричное»
Оно будет равным 255 в десятичном виде или FF в шестнадцатиричном.
6. Соединить с общим проводом одну из линий шины данных через
резистор в 200 Ом и прочитать состояние шины данных:
DO
d=INP(&H378)
PRINT d , HEX$(d)
LOOP WHILE INKEY$ = «»
В зависимости от номера линии данных, соединенной через резистор в 200 Ом
на общий провод на экране будет значение
линия AD0 254 FE
линия AD1 253 FD
линия AD2 251 FB
линия AD3 247 F7
линия AD4 239 EF
линия AD5 223 DF
линия AD6 191 BF
линия AD7 127 7F
—————- 255 FF
7. Измерить напряжение на этой линии, соединённой с общим проводом через
резистор 200 Ом.
Оно будет в пределах 0.1 — 0.6 В.
Это означает что шина данных в состоянии ввода
Если напряжение около 2,5 Вольт или больше, то шина данных находится в
обычном состоянии вывода.
8. Вычислить ток текущий через резистор (разделить измеренное напряжение
на 200 Ом). Ток через резистор можно измерить и мультиметром, вкючив его
последовательно с резистором (ни в коем случае не замыкайте выходы
параллельного порта на корпус и не соединяйте выходы LPT-порта напрямую
между собой )
9. Восстановить старое значение регистра управления 37Ah:
OUT(&H37A),a ‘ восстановить значение регистра BASE+2
END
Если вы владеете языком программирования (например QBASIC) то у вас должно
получиться. Скопируйте программу в текстовый файл, присвойте ему расширение bas,
откройте файл из среды QBSIC или QB45 и клавишей F5 запустите.
Каждое соединение сопровождается звуком разного тона.
Если сообщения на экране не читаются, подредактируйте текст,
перепишите выводмые строки в кавычках за командой PRINT.
SCREEN 11
PRINT » ТЕСТИРОВАНИЕ LPT-ПОРТА НА ВОЗМОЖНОСТЬ ВВОДА ПО ЛИНИИ ДАННЫХ»
PRINT » Поочерёдно соединяйте линии 2 — 9 разъёма DB-25 LPT»
PRINT «с общим проводом через резистор 160 — 200 Ом»
PRINT » РЕГИСТР УПРАВЛНИЯ БЫЛО»
DEFINT A-Z
a37A = INP(&H37A)
PRINT «37Ah «,
w = a37A
GOSUB b1
kl$ = «»
OUT (&H37A), 32
PRINT » РЕГИСТР УПРАВЛНИЯ СТАЛО»
a37 = INP(&H37A)
PRINT «37Ah «,
w = a37
w$ = «»
GOSUB b1
DO
LOCATE 10, 1
PRINT » РЕГИСТР ДАННЫХ»
PRINT «378h»,
kl$ = INKEY$
IF kl$ <> «» THEN
OUT (&H37A), a37A
PRINT
PRINT » РЕГИСТР УПРАВЛЕНИЯ ВОССТАНОВЛЕН »
a37A = INP(&H37A)
PRINT «37Ah»,
w = a37A
w$ = «»
GOSUB b1
END
END IF
a = INP(&H378)
w = a
w$ = «»
GOSUB b1
LOOP
b1:
zn = w
FOR c = 7 TO 0 STEP -1
x = 2 ^ c
IF w >= x THEN
w$ = w$ + «1»
END IF
IF w = x THEN w = w — x
NEXT c
PRINT w$; » «; HEX$(zn), zn
RETURN
