Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/10/2012 #1


Necesito usar STROBE del puerto paralelo
Hola gente, este es mi primer post, si ya existe este tipo de duda o si no lo estoy posteando en el lugar correcto les pido disculpas...
Vamos al grano, resulta ser que estoy haciendo un cartel de led de 7x32, manejado por puerto paralelo (nada de pic)... basicamente consiste en que por los pines de Data (D0-D6), yo manejo las filas del cartel de led y mediante 4 latch (74LS164), controlo las columnas, ahora bien, para manejar el Clock y el Data de los Latch utilizo los pines C0 (Strobe) y D7 (q me sobra) respectivamente, el inconveniente se produce con que yo no soy capaz de manipular correctamente el C0, no se como se hace, se que debo usar la funcion "outb" y que el registro de control es la direccion base+2; he intentado colocando la linea "outb(1,0x37a);" (mi puerto base esta en 0x378h) pero al leer el pin no modifica su estado...
Lo estoy programando mediante el lenguaje C sobre Ubuntu. A cualquiera que me pueda ayudar desde ya le agradezco
24/10/2012 #2

Avatar de miguelus

Buenos días pegroagusb.

Ten en cuenta que de las cuatro señales del Registro de Control, C3, C1 y C0 son negadas.

Mira este tutorial, quizás te sirva de ayuda.

http://cfievalladolid2.net/tecno/cyr...o_paralelo.htm.


Sal U2
24/10/2012 #3


Hola miguelus, claro, yo cuando leia el estado del pin C0 cada vez que intentaba cambiarle el estado me leia siempre 1 (o sea, q esta bajo).... Yo quisiera ver como hacer para cambiarle el estado, no importa que me lo expliques en C, C++, o alguno parecido, quiero tener una idea de como comunicarme con ese pin...
A la pagina esa ya la habia visto :P , igualmente te agradezco por haberme ayudado

Ojala que puedan ayudarme
24/10/2012 #4

Avatar de miguelus

Buenas tardes pedroagusb
Hace tiempo que no hago ningún control por el Puerto Paralelo, los controles los hacía en Visual Basic 6.0, para ello utilizaba una libreria la "IO.DLL", que creo que esta DLL también funciona en C.

La instrucción es la típica ...

PortOut Port, Dato ' Para enviar Dato a Bus de Datos
PortOut Port + 2, Dato ' Para enviar Dato a Bus de Control

Poco más puedo decirte, nunca tube problemas con ella.

P.D. Esta librería está por Internet y es gratuíta si la utilizas sin fines comeciales.

Sal U2
24/10/2012 #5


Hola Miguelus, gracias nuevamente... exactamente, esos son las instrucciones que uso para los Registros de Data.... Cuando los uso para el registro de Control, falla. Si podes, decime si hago algo mal...

Mi puerto base es 0x378, entonces para interactuar con el registro de control uso 0x37A. Esta bien ese puerto?

Donde pones "PortOut Port + 2, Dato", en la parte de Dato, iria un 1, no? (xq 2^0 = 1, siendo 0 el numero del pin STR de control), o cual seria el numero que iria en Dato?


Muschas gracias
24/10/2012 #6

Avatar de miguelus

pedroagusb dijo: Ver Mensaje
Hola Miguelus, gracias nuevamente... exactamente, esos son las instrucciones que uso para los Registros de Data.... Cuando los uso para el registro de Control, falla. Si podes, decime si hago algo mal...

Mi puerto base es 0x378, entonces para interactuar con el registro de control uso 0x37A. Esta bien ese puerto?

Donde pones "PortOut Port + 2, Dato", en la parte de Dato, iria un 1, no? (xq 2^0 = 1, siendo 0 el numero del pin STR de control), o cual seria el numero que iria en Dato?


Muschas gracias

Port = 888 ' En decimal
Dato = 1
PortOut Port + 2, Dato

Como el Bit C0 es negado en realidad estás enviando un "0"

Port = 888 ' En decimal
Dato = 0
PortOut Port + 2, Dato

Ahora estamos enviando un "1"

Como te comenté, hace mucho que no hago nada con el Puerto Paralelo y esto intentando recordar pero la cosa era más o menos así.

Si no te funciona intenta cambiar alguno de los otros tres Bit, para ello solo tienes que enviar un número comprendido entre 0 y 15 (0 y F en hex)
Pudiera ser que esté mal la salida del Pin 1

Ya contarás como te va.

Sal U2
24/10/2012 #7


miguelus, muchas gracias por tu ayuda

Lo mas probable que he hecho algo mal, ya voy a "traducir" esa info a C a ver que tal me va... dentro de unos dias te estoy comentado que tal ha ido . Gracias nuevamente! Saludos!
25/10/2012 #8

Avatar de Daniel Meza

el bit que controla ese pin (Strobe) es el número 0 del registro de control ubicado en la dirección 0x37A (en la mayoría de ordenadores). Al igual es importante mencionar que en algunos casos ese pin es de colector abierto. Conecta un resistor de unos 4.7k para polarizarlo en alto.
Acá te dejo la hoja de datos del PPIA 8255, es un CI obsoleto pero es la base del funcionamiento del puerto paralelo; allí muestran los bits que intervienen en el registro de control. Saludos
Archivos Adjuntos
Tipo de Archivo: pdf 82C55A PPI.pdf (239,0 KB (Kilobytes), 5 visitas)
25/10/2012 #9

Avatar de miguelus

Buenos días.

Hace agunos años me tocó tener que realizar el control de unos equipos por medio de un PC.
Ese control se utilizó en muchos PC´s, de distintas marcas y modelos y nunca nos encontramos con salidas en Open Colector en ninguno de los Pc´s.

Puede ser que algún Clon "Raro" lo haga así, en Open Colector, pero lo veo muy raro.

Pedroagusb, aunque supongo que ya lo conocerás, te dejo el PDF que explica como utilizar la librería IO.DLL.

Sal U2
Archivos Adjuntos
Tipo de Archivo: pdf libreria_io.pdf (116,2 KB (Kilobytes), 8 visitas)
25/10/2012 #10

Avatar de Dr. Zoidberg

Pedroagusb dijo:
Lo estoy programando mediante el lenguaje C sobre Ubuntu. A cualquiera que me pueda ayudar desde ya le agradezco
miguelus dijo: Ver Mensaje
Pedroagusb, aunque supongo que ya lo conocerás, te dejo el PDF que explica como utilizar la librería IO.DLL.
Todavía no has leído que Pedroagusb ESTA USANDO UBUNTU????
Como pretendés que cargue una DLL de Windows sobre Linux para manejar el hardware?
Dejen de mandar fruta y lean la pregunta!!!!



================================================== ================

@Pedroagusb:
Si pretendés acceder DIRECTAMENTE al hardware desde Linux, solo tenés dos alternativas:
  1. Te logueas como root, usás la llamada ioperm para liberar las direcciones de hardware necesarias y luego usás la outp/inp para acceder al hardware. Es un método poco recomendable para un trabajo serio, pero bue...funciona. Acá tenés un documento que mas o menos lo explica.
  2. Escribís un device driver , lo cargás en el kernel y hacés una interfaz de comunicación usando la system call ioctl. Esto es lo correcto, pero tenés que saber programar o vas a hacer un desastre.
Y por supuesto, antes de hacer todo esto tenés que estudiar como trabaja un sistema operativo que virtualiza el hardware...
25/10/2012 #11


Daniel Meza y Miguelus gracias por seguir colaborando, todavia no he podido probar nada, cuando lo haga les comento

ezavalla, no podes poner un foto de frutas y verduras xD jajajajja.... cualquier cosa me sirve, mientras mas ideas tenga, mejor es ... lamentablemente uso la 1era alternativa xq es la 1era vez que programo con puerto paralelo, ya voy a ver tu documentacion. Investigare mas a fondo para poder usar la 2da alternativa (entre mas ideas mejor )...

saludos y gracias a todos!
27/10/2012 #12


ezavalla, me podrias proporcionar alguna informacion sobre la creacion de device drivers (no importa si esta en español o ingles), porque programar en C se, pero programar hardware no se, soy bastante novato jajaja... gracias!
27/10/2012 #13

Avatar de Dr. Zoidberg

Andá leyendo esto:
http://www.xml.com/ldd/chapter/book/index.html
http://lwn.net/Kernel/LDD3/
Y buscá la cuarta edición que debe ser para los kernels mas nuevos.

Te aviso que vas a tener que dedicarle tiempo....
27/10/2012 #14


gracias ezavalla, y si, a estas cosas si hay que dedicarle tiempo para poder emprender bien ... pero en algun momento se debe empezar

muchas gracias por la data... saludos desde Cba!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.