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 :)
 
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 :)
 
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
 
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 :)
 
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
 
Última edición:
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!
 
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
 

Adjuntos

  • 82C55A PPI.pdf
    239 KB · Visitas: 5
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
 

Adjuntos

  • libreria_io.pdf
    116.2 KB · Visitas: 8
Pedroagusb dijo:
Lo estoy programando mediante el lenguaje C sobre Ubuntu. A cualquiera que me pueda ayudar desde ya le agradezco
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? :confused: :confused: :confused:
Dejen de mandar fruta y lean la pregunta!!!!

frutayverdura.jpg


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

@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...
 
Última edición:
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 :LOL: 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 :D (entre mas ideas mejor ;) )...

saludos y gracias a todos!
 
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!
 
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!
 
Atrás
Arriba