 < ---------------------------- [ EKO Magazine ] ---------------------------- >
 < - [ Boludeando con los Puertos ] ----------------------------------------- >
 < - [ por Phreaking Arpac Eniac de Delphi ] --------------------- (EKO 02) - >



                Proyecto: Boludeando con los Puertos.
                      Tarjeta Experimental.



Con el fin de practicar un poco con los puertos de comunicaciones, encontre
por ahi esta tarjeta experimental para conectar al puerto de Impresora, de
tres entradas y ocho salidas digitales.
Una PC tiene 3 conjuntos de lineas o buses que trasnportan informacion binaria.
A travez de estos es posible introducir y extraer datos digitales con el
proposito de realizar procesos de control.

Bus Interno: Esta compuesto por los buses de Direcciones, Datos y Control del
             Micro y algunas otras se~ales generadas por otros circuitos de
	     la PC. Las ventajas de la coneccion de una tarjeta de adquisicion
	     de datos directamente a este bus son: alta velocidad de muestreo,
             bajo costo y tama~o reducido. La potencia para alimentar los
             circuitos de Datos se obtienen directamente de los terminales
	     del bus. Para PC los buses mas comunes son ISA, EISA, PCI,
	     Microcanal y AGP.

Buses Externos: Hay dos buses externos llamados puertos; el serial y el
                paralelo a travez de ellos se conectan los perifericos. El
		puerto serial, tambien llamado RS-232 o de comunicaciones,
		maneja los datos que entran y salen en forma serial.
                Hay algunas ventajas cuando se usa este puerto en adquisicion
                de datos y control: requiere pocas lineas, es posible
		configurar sistemas de cualquier tama~o, los circuitos de datos
		se ubican a cualquier distancia de la PC y son compatibles
		con la mayoria de los perifericos.
                El puerto de impresora o puerto paralelo, tambien llamado
		Centronics, esta compuesto por un conjunto de entradas y
		salidas digitales que permiten la operacion de la impresora
		en un PC.
		Este puerto es ideal para aquellos que quieran iniciarse en el
		manejo y control ya que es el que mejor se adapta a los
		circuitos, placas, configuracion etc.
                Hoy en dia esta tambien muy en boga y se impone Standar el
		Puerto USB mucho mas rapido que los anteriores y de facil
		manejo. Tambien esta el modelo PS/2, similar a un conector de
		teclado.
                Estos puertos (serie y paralelo) se encuentran en la parte
		posterior del equipo y es facil distinguirlos ya que el
		paralelo utiliza un conector DB-25 hembra, mientras que el
		serial utiliza un conector DB-25 macho. Ya que vamos a utlizar
		el puerto paralelo para conectar la tarjeta experimental
		vamos a explicarlo con mas detalle.
                La funcion de cada terminal del conector DB-25 se muestra en
		la siguiente figura:

                 
                 ------------------------------------------------------- 
                 \  13  12  11  10  09  08  07  06  05  04  03  02  01 /
                  \                                                   / 
                   \  25  24  23  22  21  20  19  18  17  16  15  14 /
                    \-----------------------------------------------/

01 = Strobe (STB)
                                      14 = Autofeed (AUTO FD)
02 = Data 0 (D0)
                                      15 = Error (FAULT)
03 = Data 1 (D1)
                                      16 = Initialize (IP)
04 = Data 2 (D2)
                                      17 = Select IN
05 = Data 3 (D3)
                                      18 = Tierra
06 = Data 4 (D4)
                                      19 = Tierra
07 = Data 5 (D5)
                                      20 = Tierra
08 = Data 6 (D6)
                                      21 = Tierra
09 = Data 7 (D7)
                                      22 = Tierra
10 = Acknowledge (ACK)
                                      23 = Tierra
11 = BUSY
                                      24 = Tierra
12 = Paper Empty (PE)
                                      25 = Tierra
13 = Select

Las se~ales del bus se pueden clasificar en cuatro grupos: salidas de datos,
tierras, entradas de protocolo y salidas de protocolo.

Lineas de Datos: Transportan informacion desde la PC hacia el periferico. Lo
                 hacen en grupos de ocho bits (un byte) al tiempo y utilizan
		 los terminales del 2 al 9 del conector DB-25. El bit D0 es el
		 de menor peso o LSB y el bit D7 es de mayo r peso o MSB. Los
		 bits estan representados por niveles de voltaje TTL: una se~al
		 entre 2.5 y 5 voltios es un nivel alto y entre 0.8 y 2.4
		 voltios un nivel bajo.

Lineas de Tierra: Realizan dos funciones: una de ellas es unir las tierras
                  entre la PC y el periferico de tal forma que haya una
		  referencia de potencial comun y la otra, es realizar el
		  blindaje de las se~ales contra ruidos externos al cable,
		  evitando interferencias entre las mismas se~ales que
		  transportan el cable ribbon que se usa por lo general en
		  esta conexion.
                  Por ejemplo, el cable de tierra conectado al terminal 19
		  del conector DB-25 realiza el blindaje entre los terminales
		  6 y 7. Lo anterior evita el acople capacitivo que pueda
		  ocurrir entre las lineas de datos D4 y D5 a lo largo del
		  cable ribbon qye une la PC y el periferico.

Entradas y Salidas
  de Protocolos: Una computadora es mucho mas rapida que cualquier periferico
                 y, por lo tanto, le puede transmitir mas datos de los
		 que puede recibir. Por esta razon, los circuitos de los
		 perifericos, como la impresora usan se~ales especiales para
                 decirle a la PC que detenga momentaneamente el envio de datos
		 hasta que se encuentre listo para recibirlos. De esta manera
		 la PC tiene la oportunidad de realizar otras tareas hasta que
		 el periferico le indique, por intermedio de una se~al de
		 protocolo, que se encuentra listo para recibir datos.
                 Las lineas de protocolo strobe, busy y acknowledge son las
		 mas utlizadas para realizar la cordinacion entre una PC y un
		 periferico lento. Cuando la PC tiene datos para enviar por
		 el puerto paralelo, lo hace acompa~ado por una se~al de
                 strobe, el periferico responde con una se~al de busy hasta
		 que termina de aceptar o procesar los datos; asi evita que
		 la PC le envie datos nuevos, y cuando se encuentra listo le
		 responde con una se~al de acknowledge.

Direcciones del
Puerto Paralelo: Segun la documentacion de algunas PC y del nunca olvidado
                 DOS es posible tener hasta tres puertos paralelos LPT1, LPT2
		 y LPT3. Como se sabe, los dise~adores de PC asignan una
		 direccion, entre las posibles, a cada puerto de entrada y
		 salida.
                 Solo existe una direccion unica y asignada para cada puerto.
		 Cada puerto paralelo esta conformado por 12 lineas de salida
		 informacion y 5 lineas de entrada. Se requieren 3 bytes (tres
		 length de 8 bits) para manejar esta informacion. Por lo tanto,
		 a cada puerto paralelo se le deben asignar 3 direcciones. En
		 la siguiente tabla se hace un resumen de las direcciones
		 asignadas a los posibles puertos paralelos en una PC. Ademas,
		 se indica el numero de cada terminal del conector DB-25F y
		 la entrada o salida que le corresponda a cada bit de los 3
		 bytes de cada puerto. Observe en la tabla, que las se~ales
		 de los puertos se clasifican solamente como entradas y
		 salidas.


        TABLA. DIRECCIONES, BITS y PINES DEL PUERTO PARALELO
        ---------------------------------------------------------------
        |Direccion del Puerto Hex. |   Bits    |  DB-25F  |  Entrada  |
        |--------------------------|  En Byte  |   PINS   |     o     |
        |  LPT1  |  LPT2  |  LPT3  |   (N)     |          |  Salida   |
        |--------------------------|-----------|----------|-----------|
        |        |        |        |     0     |    2     |  Salida   |
        |        |        |        |     1     |    3     |  Salida   |
        |  3BC   |  378   |  278   |     2     |    4     |  Salida   |
        |        |        |        |     3     |    5     |  Salida   |
        |        |        |        |     4     |    6     |  Salida   |
        |        |        |        |     5     |    7     |  Salida   |
        |        |        |        |     6     |    8     |  Salida   |
        |        |        |        |     7     |    9     |  Salida   |
        |--------|--------|--------|-----------|----------|-----------|
        |        |        |        |     0     |   NA     |  ------   |
        |        |        |        |     1     |   NA     |  ------   |
        |  3BD   |  379   |  279   |     2     |   NA     |  ------   |
        |        |        |        |     3     |   15     |  Entrada  |       
        |        |        |        |     4     |   13     |  Entrada  |       
        |        |        |        |     5     |   12     |  Entrada  |
        |        |        |        |     6     |   10     |  Entrada  |
        |        |        |        |     7*    |   11     |  Entrada  |
        |--------|--------|--------|---------- |----------|-----------|
        |        |        |        |     0*    |    1     |  Salida   |
        |        |        |        |     1*    |   14     |  Salida   |
        | 3BE    | 37A    |  27A   |     2     |   16     |  Salida   |
        |        |                 |     3*    |   17     |  Salida   |
        |  ------------------------|     4     |   NA     |  ------   |
        |  |  * el dato en estos  ||     5     |   NA     |  ------   |
        |  |  Bits esta invertido ||     6     |   NA     |  ------   |
        |  ------------------------|     7     |   NA     |  ------   |
        ---------------------------------------------------------------

Tarjeta Experimental: En el archivo diagrama.jpg esta el esquema de armado.
                      Las ocho lineas de salida de los datos (D0 a D7),
		      terminales del 2 a 9 del conector DB-25, se conectan
		      por medio de compuertas inversoras de los circuitos
		      integrados IC1 e IC2 a 8 diodos emisores de luz. Estos
		      diodos nos representaran las salidas digitales sobre las
		      cuales se quiere realizar control. En una aplicacion
		      industrial se pueden reemplazar por reles o triacs para
		      manejar cargas de mayor potencia. 
                      Las resistencias de 330 ohmios limitan la corriente de
		      los diodos y las de 4,7 Kohm evitan falsos disparos de
		      las se~ales del circuito. A los terminales de entrada
		      12, 13 y 15 del conector DB-25 se conectan interruptores
		      pulsadores S1, S2 y S3. Esots representan las entradas
		      digitales. En una aplicacion real pueden ser detectores
		      de proximidad, interruptores de Timing o sensores.

Montaje de la Tarjeta: El proyecto se monta en un circuito impreso de una sola
                       cara, o en su defecto en una tarjeta universal con los
		       materiales que se describen a continuacion.
                       Materiales:
                          Resistencias 1,4 W, 5%
                            R1,R2,R3 = 2.2 Kohms
                            R4...R11 = 4,7 Kohms
                            R12..R19 = 330 Ohms
                          Semiconductores
                            D1 a D8 Diodos LED rojos 5 mm
                            IC1, IC2 = 74LS34
                          Varios
                            S1, S2 y S3 pulsadores miniatura.
                            1 conector para impreso de 12 pines(Macho y hembra)
                            1 Conector DB-25 Macho con Carcaza
                            2 bases para CI de 14 pines
                            1 metro de cable ribbon de 12 lineas

Alimentacion del
   Circuito: Tanto los circuitos inversores como los diodos LED, necesitan un
             voltaje de 5 VDC y hay dos formas de proporcionarlo: utilizando
	     una fuente externa de 5v conectada a los terminales de
	     alimentacion o sacarlos directamente de la fuente de la PC. 

Cable de Conexion: Para llevar las se~ales del puerto paralelo a la tarjeta,
                   se debe construir un cable conformado por dos conectores
		   y un cable ribbon de 12 hilos.
                   Las puntas de uno de los extremos de este se deben soldar
		   a un conector DB-25M macho y las del otro extremo del cable
		   se deben soldar a un conector hembra de 12 terminales (12P).
		   La longitud del cable no debe exceder de los dos metros,
		   por el efecto capacitivo entre conductores aumenta con la
		   longitud. Cuando se trata de iluminar LEDs el problema de
		   capacidad no es critico, pero si en la aplicacion se
		   presenta el envio de datos a registros o Flip-Flops
		   externos, puede haber perdida de informacion debido a este
		   efecto.

Programacion de la Tarjeta: Si la Tarjeta se conecta al puerto de salida LPT1
                            queda ubicada en las direcciones 3BC, 3BD y 3BE
			    como lo indica la tabla anterior. Ahora solamente
                            falta el programa que haga posible el funcionamiento
			    de la tarjeta.
                            Por una cuestion de comodidad lo vamos a hacer en
			    BASIC y en PASCAL.
                            En lenguaje BASIC, para enviar datos a un puerto se
			    utiliza la siguiente linea:
                                OUT direccion, dato
                            Donde direccion, es la localizacion del puerto y
			    dato es el valor binario expresado en Hex., que se
			    desea enviar al puerto de salida. Por ejemplo,
                            para encender todos los LEDs de la tarjeta tenemos
			    que usar:
                                OUT &H3BC,&HFF
                            Para adquirir informacion presente en el puerto se
			    utiliza:
                                Variable = INP(direccion)
                            Donde direccion es la direccion del puerto y
			    variable es el nombre de la variable en la cual
			    se desea almacenar el valor leido. El programa
			    que incluyo, implementa un secuenciador variable
			    con los 8 LEDs. La velocidad y la secuencia se
			    controlan por medio de kis tres pulsadores.
			    Pulsando S3 se cambia a una secuencia de luces
                            superior. Si se presiona S2 se aumenta el retardo
			    entre los pasos de la secuencia.
                            S1 actua en combinacion con los otros pulsadores
			    para producir el efecto contrario.
                            Por ejemplo, pulsando S1 y S3 se cambia a una
			    secuencia inferior y activando S2 y S1 se disminuye
			    el retardo entre los pasos de la secuencia.




     -------------------------------------------------------------------
    | Nota del Editor: en el directorio addons/eko02-07 se encuentra el |
    | archivo Puerto.bas y Diagrama.jpg correspondientes a este texto.  |
     -------------------------------------------------------------------

*EOF*