Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


2.5.2  Puertos E/S:  Puertos Paralelo

§1  Sinopsis

Los diseñadores del IBM PC incluyeron la posibilidad de conectar impresoras, para lo que podían instalarse hasta tres puertos de salida paralelo de funcionamiento simultaneo, numerados 0, 1 y 2, así como los servicios correspondientes en la BIOS .

Nota:  Aunque internamente los puertos se identifican por sus números, empezando por el 0, se han popularizado los alias utilizados por el MS DOS:  LPT1, LPT2 y LPT3, que son equivalentes a los números.

En los primeros modelos la placa-base no disponía de ningún adaptador de puerto paralelo,  por lo que debían instalarse tarjetas auxiliares.  Generalmente estas tarjetas eran multi-uso; montaban uno o dos puertos paralelo e incluso puertos serie.  En otros casos el puerto paralelo era incluido junto con un adaptador de video.

§2  Recursos del puerto paralelo

Cada adaptador de puerto paralelo tiene tres direcciones sucesivas que se corresponden con otros tantos registros que sirven para controlar el dispositivo.  Son el registro de salida de datos; el registro de estado y el registro de control.  El registro de salida es la dirección en que hay que poner cualquier carácter que sea dirigido al puerto (generalmente una impresora); el de estado contiene información sobre el dispositivo conectado, en especial la ocurrencia de posibles errores.  El registro de control permite inicializar el puerto y controlar la transferencia.

La dirección del registro de salida de los puertos 0, 1 y 2, denominadas dirección-base del adaptador, están contenidas respectivamente en las direcciones 00408, 0040A y 0040C de la memoria de la ROM-BIOS ( H4).  Estas direccones de base son inicializadas a cero si no existe el adaptador correspondiente.  En la tabla adjunta se han indicado las direcciones e interrupción usadas por cada puerto, aunque esta asignación no es siempre consistente, y debería ser investigada.

Puerto R. de salida R. de estado R. de control IRQ
LPT1 378 379 37A 7
LPT2 278 279 27A 5
LPT3 3BC 3BD 3BE 7
§3  Servicios BIOS de puerto paralelo

Los servicios BIOS ( H2.4.1) relacionados con el puerto paralelo, denominados servicios de impresora, se gestionan mediante el vector de interrupción 23 (17h); este servicio tiene 3 subservicios numerados del 0 al 2, que se solicitan a través del registro AH, mientras que el número de puerto debe indicarse en el registro DX.

  • Subservicio 0:  Envía un byte a la impresora
  • Subservicio 1:  Inicializar el puerto paralelo
  • Subservicio 2:  Leer el registro de estado del puerto

En la tabla que sigue se muestra el significado del patrón de bits del registro de estado del puerto, que es situado en el registro AH por el subservicio 2.  Este subservicio debe ser utilizado después de cualquiera de los anteriores para comprobar el resultado de la operación.

76543210

Significado

X.......

.X......

..X.....

...X....

....X...

.....X..

......X.

.......X

Estado de impresora:  1 = ocupada; 0 = no ocupada

Señal de reconocimiento producida por la impresora: 1 = activo;  0 = inactivo

Señal de falta de papel ("Paper out"): 1 = falta papel;  0 = Ok papel correcto

Impresora seleccionada:  1 = seleccionada;  0 = no seleccionada

Estado de Error:  1 = Error E/S;  0 = Ok. correcto

No utilizado

No utilizado

Temporización ("Time out"):  1 = Time out;  0 = en tiempo


Nota: cualquier programa que gobierne un periférico debe disponer de una rutina para controlar el tiempo que este puede tardar en completar cada orden. Durante este tiempo el programa debe esperar, pero si se alcanza el límite, y (en su caso) el número de reintentos establecido, debe lanzarse una excepción ("Time out") e interpretarse que el dispositivo en cuestión está fuera de servicio por alguna causa.  Este tiempo depende de cada circunstancia.  En el caso de una impresora no es el mismo para un salto de página que para un retorno de carro (CR).

Además de la interrupción 23 (17h) la BIOS tiene otro servicio relacionado con la impresora, el denominado servicio de impresión de pantalla que es solicitado mediante la interrupción 5.  Este servicio se diseñó para ser manejado mediante interrupciones, y puede ser invocado desde cualquier programa que lo necesite.

La interrupción 5 también se genera mediante la combinación de teclas [Shift+Impr Pantalla] que envía el contenido del buffer de pantalla ("Frame buffer") al puerto de impresora 0 utilizando a su vez los servicios estándar de video y de impresora.

§4  Puerto paralelo estándar

Como puede verse, los diseñadores del PC no pensaron en la posibilidad de utilizar los puertos paralelo para recibir datos (no existe un subservicio BIOS para leer en el puerto paralelo); eran solo de salida.  Este puerto original es denominado SSP ("Standard Parallel Port"), y su modo de operación modo compatible.

Aunque originalmente no estaban preparados para recibir datos, mediante ciertos artificios se consiguió que los puertos SPP también pudieran recibir datos, un nibble (4 bits) cada vez.  Este tipo de operación, 8 bits de salida y 4 de entrada se denomina modo nibble.

Nota: los puertos actuales de características mejoradas (ver a continuación) tienen también los modos compatible y nibble para compatibildad con el software anterior.

§5  Nuevos puertos paralelo
§5.1  Puerto paralelo extendido

Ante la necesidad de conectar dispositivos rápidos y de recibir información por el puerto paralelo, IBM incluyó un puerto de impresora bidireccional de alta velocidad en su sistema PS/2 presentado en 1987.  Esta solución fue rápidamente adoptada por la industria del PC, dando lugar un puerto bidireccional de características mejoradas respecto del SSP tradicional.  El EPP ("Enhanced Parallel Port"), del que existen dos versiones ligeramente diferentes, la 1.7 (que se formalizó en el estándar IEEE 1284) y la 1.9 que es posterior.

Este tipo de puertos opera a velocidades entre 0.5 y 2 MBps, y además de impresoras puede servir para conectar dispositivos como escáneres y unidades de disco o de red externas.  En los sistemas actuales suele venir incluido en el chipset de la placa-base.

§5.2  Puerto paralelo mejorado

En 1992, Microsoft y HP presentaron otra versión de puerto paralelo bidireccional de alta velocidad denominado ECP ("Extended Capabilities Port").  Este nuevo diseño, que dispone de acceso directo a memoria, utiliza generalmente el canal 3 DMA, y opera entre 2 y 4 MBps.

Los equipos modernos suelen disponer de puertos paralelo multimodales, en los que el modo de utilización puede ser establecido mediante el programa de setup de la BIOS.  En estos casos la configuración por defecto suele ser compatibilidad ECP.

§5.3   Recursos de los nuevos puertos paralelo

Los puertos mejorados utilizan más recursos que los tradicionales SPP.  Además de las direcciónes-base (378h, 278h, 3BCh ), utilizan cuatro direcciones adicionales.  Con el fin de facilitar la operación PnP, además de las tradicionales IRQ 5 y IRQ 7 (mantenidas por compatibilidad), pueden utilizar cuatro o cinco IRQs adicionales.

Si el dispositivo utiliza acceso directo a memoria, como es el caso de los puertos ECP, pueden utilizar dos canales DMA.

§6  El cable y conectores de impresora

El cable tradicional de impresora tiene 25 hilos; el conector del lado del PC es un DB-25 macho (conocido como IEEE 1284-A), la hembra está en el PC.  El lado de la impresora tiene un conector CN-36 Centronics de 36 pines macho (la hembra está en la impresora).  En la tabla adjunta se muestra la distribución de pines.

Señal DB25   36-Cen
Strobe 1 <-- 1
Data Bit 0 2 --> 2
Data Bit 1 3 --> 3
Data Bit 2 4 --> 4
Data Bit 3 5 --> 5
Data Bit 4 6 --> 6
Data Bit 5 7 --> 7
Data Bit 6 8 --> 8
Data Bit 7 9 --> 9
Acknowledge 10 <-- 10
Busy 11 <-- 11
Paper Out 12 <-- 12
Select 13 <-- 13
Autofeed 14 <-- 14
Error 15

<--

-->

32
Reset 16 <-- 31
Select 17 <-- 36
Signal Ground 18 --- 33
Signal Ground 19 --- 19,20
Signal Ground 20 --- 21,22
Signal Ground 21 --- 23,24
Signal Ground 22 --- 25,26
Signal Ground 23 --- 27
Signal Ground 24 --- 28,29
Signal Ground 25 --- 30,16
Protección Carcasa --- Carcasa+17
25 PIN D-SUB FEMALE

ConectorxDBx25M

ConectorxCNx36M

ConectorxminixCentronics

Actualmente se está utilizando un nuevo tipo de conexión.  El conector del lado de la impresora es un micro Centronics de 36 pines, conocido como IEEE 1284-C.

Por su parte, el cable está formado por pares tranzados similares a los utilizados en redes con el fin de minimizar los efectos del ruido y las interferencias.

§7  Información relacionada

Se incluye información de dos programas que pueden ser de interés para los aficionados a la experimentación y al "cacharreo". El primero, Parallel Port Customizer, es un programa freeware (W9x/2k/XP) de Obock, que puede ser útil para controlar dispositivos mediante el puerto paralelo del PC.  El segundo, de Ashish Derhgawen, permite controlar el motor paso a paso de un disquete ("stepper motor") mediante el mismo puerto [1], aunque utilizando la interfaz adecuada, puede ser utilizado con cualquier otro motor.

Obock    www.obock.de/

Presentación del producto (original inglés):  "I coded Parallel Port Customizer for a friend who wanted to control an external electronic device using his PC.

He told me that it would be nice to use the single pins of the parallel port to turn on / off those tiny devices like transistors and stuff like that.  Cause he didn't find any tool solving his problem I offered him to code one for him.

So, if you are interested in electronics this should be a nice testing tool for you!

You may think "This GUI application isn't really supposed to be used in automated environments". Because of this Parallel Port Customizer comes with a small dynamic link library (DLL). With this DLL all you coders out there can implement the complete functionality of PPC in your own applications!

With this tool and the DLL you get a complete suite to build and test software with interfaces that can control nearly everything - use your imagination...
"

Controlar motor de disquete   www.codeproject.com/ 

  Inicio.


[1]  El disquete tiene dos motores, uno para hacer rotar el disquete y otro para accionar la cabeza de lectura.  Nos referimos a este último.