# Como puedo conectar un circuito a un socket de la PC?



## Neithan (Ene 14, 2009)

Estimados,

Mi duda es la siguiente: Como dice el titulo del tema quiero saber si es posible conectar un circuito "casero" a uno de los zócalos de la motherboard y poder manejar las entradas y salidas teniendo una de las distribuciones de linux como sistema operativo. Esto surge debido a que encontre en internet varios manuales sobre como hacer robots con pcs viejas y linux y me interesa sobre todo hacer que todo el sistema de manejo de motores y direccionamiento sea una placa separada. Espero esa información sea suficiente para que puedan orientarme

Agradezco cualquier tipo de ayuda. Saludos


----------



## electrodan (Ene 14, 2009)

Con que te referís a "socket"?
Si conectar un robot a un pc, mejor usa el puerto serie o paralelo.


----------



## Neithan (Ene 14, 2009)

Me refiero a las ranuras donde se conectan las tarjetas...como por ejemplo las viejas tarjetas de video...sonido...modem...etc. Y en cuanto a conectarlo al puerto paralelo y al puerto serie el problema es que prefiero dejar libre esos puertos para otros usos. Por ejemplo el puerto serie prefiero dejarlo para la comunicaciòn del robot con otra pc (ya que no le voy a dejar una pantalla colocada todo el tiempo). Gracias por tu respuesta de todas formas, saludos


----------



## Dr. Zoidberg (Ene 14, 2009)

Neithan dijo:
			
		

> Me refiero a las ranuras donde se conectan las tarjetas...como por ejemplo las viejas tarjetas de video...sonido...modem...etc.



Si es una PC vieja (tipo 1999 o anterior) vas tener disponibles los llamados "slots ISA" que son esos donde los contactos estan bastante separados y son mas largos que los PCI (en realidad son dos slots uno a continuación del otro, pero ahora no recuerdo de cuantos contactos cada uno, pero me suenan 68 y 32).
Si tenes disponibles los slots ISA entonces es bastante simple diseñar y conectar una plaqueta que se inserte en esos slots (yo lo hice muchas veces en los '90s y anda perfecto). Digo que es facil por que lo que tenes disponible en esos slots es el bus de datos, el de direcciones y el de control del microprocesador, así que para direccionar cualquier periférico que conectes, primero tenes que decodificar la direccion donde lo tengas mapeado usando el bus de direcciones y las lineas IORD / IOWR/ MEMRD/MEMRW (y había otra que no me acuerdo...). Si eso lo haces bien, solo es cuestion de tomar o poner, con el pulso de la decodificación, los datos que estan el bus de datos. Es un manejo completamente estándard, sin nada raro, y para decofidificar las direcciones tenes que usar un par de 74LS138 mas un buffer tipo 74LS245 para el bus de datos. El resto del circuito depende de lo que quieras conectar al slot ISA. Si vas a usar direccionamiento en el sistema aislado (usando instrucciones *in* y *out*), solo tenes que asegurarte de mapear el dispositivo que hallas diseñado en el rango de direcciones 0x300 a 0x3FF para no tener colisiones con otras plaquetas que esten instaladas. Si vas a usar interrupciones o DMA, la cosa no cambia mucho desde el hardware pero el software es un bardo.
Si vas a usar Linux, tendrás que desarrollar un driver en modo kernel para acceder y controlar la placa que diseñes, a menos que hagas un desastre y ejecutes el programa con derechos de *root*, pero eso ya es otra historia.

Saludos!


----------



## Neithan (Ene 14, 2009)

Gracias! Es justo lo que preciso... algun manual o sitio en el que pueda encontrar buena información para recomendar?


----------



## Dr. Zoidberg (Ene 14, 2009)

Neithan dijo:
			
		

> Gracias! Es justo lo que preciso... algun manual o sitio en el que pueda encontrar buena información para recomendar?



Ese es el problema...me vas a tener que espera un poco por que estoy de vacaciones y esas cosas las tengo en el trabajo. Cuando yo empecé con esto (allá en 1990) lo que tenía a mano era un manual de IBM con todo el esquemático de la PC AT con todo los chip usados y esas cosas, pero no se si existe en PDF.

Para empezar, mirá esto: http://www.hardwarebook.información/ISA y al inicio http://www.hardwarebook.información hay mas enlaces interesantes. Mirá eso y andá sacando tus conclusiones, mientras voy a ver que encuentro en casa sobre como decodificar y algun esquema simple para hacerlo.

Saludos!


----------



## BBMNet (Ene 14, 2009)

Te sugeriria evitar meterte en problemas para conectar a las ranuras de la motherboard. Aun cuando es posible como ya te indicaron para buses ISA y PCI (es posible adquirir tarjetas para armar prototipos que incluyen esos tipos de bus) simplemente la decodificación de direcciones te requerirá varios chips. En lo personal ya experimente eso y puede ser frustrante y tardado.

Una posible solución es utilizar el puerto paralelo que normalmente se usa para la impresora. Directamente tienes un canal bidireccional de 8 bits, un canal de 4 bits de salidas y 5 bits de entradas. Con ellos puedes hacer virtualmente lo que quieras. Todo es cuestión de imaginación pero puedes crear todo un sistema de adquisición de datos con estas señales. Simplemente añade los chips adecuados y tal vez algunos trucos.

Por ejemplo, puedes utilizar dos 74HC573. Uno para 8 señales de entrada y otro para 8 señales de salida. Para activar uno u otro utilizas dos bits de entre los 4 que tienes del puerto de solo salidas. Uno activa un 573 y el otro bit al otro.

Nota: el puerto paralelo debe ser programado como EPP o ECP y debes programar uno de los bits del puerto de salida para cambiar el sentido al puerto de 8 bits. Echale un vistazo al siguiente enlace.

http://www.lvr.com/parport.htm

Ojala esto te sirva.

Saludos.


----------



## Neithan (Ene 15, 2009)

Gracias! todo sirve!


----------



## jibuze (Ene 29, 2010)

hola a todos yo tambien estoy interesado en el tema. no se mi me podeis enviar la informacion que tengas. gracias


----------



## beto3574 (May 1, 2010)

hola hace mucho estoy buscando los tipos de señales que llegan al puerto pci,,,necesito hacer una tarjeta de diagnostico por el puerto pci,,,si alguno de uds tiene informacion les agradeceria,,,saludos


----------



## tecnogirl (May 3, 2010)

beto3574: Porque tu lo has pedido:
http://pinouts.ru/Slots/PCI_pinout.shtml
Saludos.


----------



## beto3574 (May 3, 2010)

gracias tecnogirl...te agradezco el dato...ahora tengo ke mirar como trabajo estas señales...


----------



## beto3574 (May 6, 2010)

alguien tiene algun circuito para este puerto..estoy mirando pero la verdad no arranco,,


----------



## lubeck (May 6, 2010)

Esa misma duda tengo yo desde hace tiempo... en algunas tiendas de electrónica venden tarjetas (placas fenolicas) para esos puertos sobre todo ISA, pero habrá alguien que los compre?
serán para llenar el hueco en la estantería?...

 yo no he visto ningún diagrama como ejercicio... o algo asi....

bueno escribo este post para inscribirme y conocer un poquito del tema....

saludos....


----------



## Dr. Zoidberg (May 6, 2010)

Hacer un diseño con interfaz ISA es extremadamente simple, pero hacer uno con interfaz PCI es bastante complicado, particularmente por el tamaño de los decodificadores y otros bloques usados para controlar el acceso I/O, y eso requiere lógica programable.
Si necesitan hacer un diseño con interfaz PCI es necesario que compren unos PCB experimentales que disponen de un área grande para cableado o wire-wrap, e incluyen toda la lógica necesaria para hacer de interfaz con el bus PCI y dejan disponibles un conjunto de conexiones para que enlacen sus circuitos.
Estas placas no eran demasiado costosas...si mal no recuerdo creo que valían algo de U$S30.00

Y esto lo acabo de encontrar:
http://elm-chan.org/works/pci/report_e.html
siiii...un diseño de una interfaz PCI usando lógico MAS O MENOS convencional (cuidado con las velocidades de los chips por que es crítica).


----------



## lubeck (May 6, 2010)

Hola ezavalla
gracias por la introducción al mundo del los BUS....

 Lei di una hojeada rapida al link que pusiste, y vi el diagrama del circuito de ejemplo y no parece muy complicado.... excepto por el CI GAL2210C-7LP que puedo suponer es un microcontrolador..... me pondre a investigar... parece interesante....
saludos...


----------



## Dr. Zoidberg (May 6, 2010)

lubeck dijo:


> Hola ezavalla
> gracias por la introducción al mundo del los BUS....



De nada! Y que te sea leve 



lubeck dijo:


> Lei di una hojeada rapida al link que pusiste, y vi el diagrama del circuito de ejemplo y no parece muy complicado.... excepto por el CI GAL2210C-7LP que puedo suponer es un microcontrolador



Nop. No es un microcontrolador sino un Dispositivo Lógico Programable...imaginá que tenés un circuito con 1500 compuertas y podés programar ese chip para que se comporte igual que el circuito de las compuertas...pero todo dentro de un solo CI.
Si te fijás los comentarios sobre los tiempos de acceso, vas a ver que hablan de 7ns y de 5ns....y eso está muuuuyyyy lejos de las posibilidades de cualquier microcontrolador.


----------



## lubeck (May 6, 2010)

> Nop. No es un microcontrolador sino un Dispositivo Lógico Programable.


cierto... esncontre esto...
http://profesores.fi-b.unam.mx/vicflo/Dise%F1o%20de%20Sistemas%20Digitales/Datasheet/Lattice.pdf



> Si te fijás los comentarios sobre los tiempos de acceso, vas a ver que hablan de 7ns y de 5ns....y eso está muuuuyyyy lejos de las posibilidades de cualquier microcontrolador


muy cierto... 

mi próxima visita a la tienda de electrónica veré si venden el programador y el ci... sino hasta ahi llega la aventura....

Una pregunta mas....

Segun entendi...  si yo inserto una tarjeta pci en el socket .....
para acceder a ella utilizo la interrupciones de la F300H a la F31FH estoy en lo correcto?

en el entendido que previamente debo configurar mi software y mi hardware asignandole  una direccion no ocupada dentro de ese rango....


----------



## Dr. Zoidberg (May 6, 2010)

lubeck dijo:


> Segun entendi...  si yo inserto una tarjeta pci en el socket .....
> para acceder a ella utilizo *la interrupciones de la F300H a la F31FH* estoy en lo correcto?



Esas son direcciones, no interrupciones 
La verdad que no sé si estás en lo correcto, por que no analicé todo el diseño. Los dispositivos PCI son medio complicados por que requieren un registro de configuración que informe al gestor del bus algunas características y este diseño no lo tiene...así que es posible que tenga un rango de direcciones de memoria pre-asignado...


----------



## lubeck (May 7, 2010)

> Esas son direcciones, no interrupciones



perdón  .... ciertamente... como me quede pensando que se necesitaría tanto la dirección como la petición de interrupción(IRQ)...  me resbale.... mas abajo del post si las nombre correctamente....
pero si... si me refería a las direcciones....

resumo que si esta medio confuso, pero interesante el asunto...

estuve buscando en la red y creo que todo el secreto esta en eso,  usar una interfaz programable como la 8255  o el GAL2210C-7LP...

 Saludos....


----------



## lubeck (May 7, 2010)

pues estuve indagando un poco mas y creo que mi investigación la voy a orientar hacia el 8255 porque hasta donde entiendo se programa desde el PC en ASM... aunque   no encuentro ningún código fuente como punto de referencia....

Saludos y sigo...


----------



## Dr. Zoidberg (May 7, 2010)

La PPI 8255 no te sirve para esto, por que el GAL es una cosa diferente y se programa por "hard", no por soft.
Fijate que lógica es la que reemplaza el GAL y vemos como puede hacerse si no tenés acceso a ese tipo de dispositivos.


----------

