¿Fallo de uC en demultiplexación?

1. Vamos a hacer algunos ensayos con otro integradito simpático, morocho y cuadradito que se llama HEF4049:
:confused: :confused:
El 4049 es un séxtuple inversor CMOS "de potencia" pero no es un registro de desplazamiento...

Y tampoco es taaaan simple con un solo chip! Necesitás además un latch colgado en las salidas cosa de mantener el ultimo valor enviado mientras están desfilando en el registro los próximos bits que estés enviando. Esa es la ventaja del 74LS595, que tiene el registro, el latch y el reset...y además es tri-state (y) (y) (y)
Los ultimos que compré los conseguí en electrocomponentes de la calle Solís.
 
:confused: :confused:
El 4049 es un séxtuple inversor CMOS "de potencia" pero no es un registro de desplazamiento...

Y tampoco es taaaan simple con un solo chip! Necesitás además un latch colgado en las salidas cosa de mantener el ultimo valor enviado mientras están desfilando en el registro los próximos bits que estés enviando. Esa es la ventaja del 74LS595, que tiene el registro, el latch y el reset...y además es tri-state (y) (y) (y)
Los ultimos que compré los conseguí en electrocomponentes de la calle Solís.

Hola, me parece que quiso escribir HEF4094.

Es verdad, me confundí en la emoción el código del IC, :oops: pero ya lo corregí.

Estamos de acuerdo Dr. Z, siguen haciendo falta latches, no las puedo evitar con esto.

A mi también me parece que los 595 son lo ideal (no por nada te lo presentan en Arduino como la primera opción de demultiplexación), pero como ya mencionamos antes en este mismo hilo acá no se consiguen. Y como de la calle Solís estoy a unos 1600km estoy viendo de hacer lo mejor que puedo con lo mejor que tengo y muy buena onda. Consideremosló un sistema alternativo ;)
 
Oooopppppssss... pense que estabas en la CABA...
Igual podes poner un 74LS373 que ya tenes y latcheas las salidas...
Fijate si el CD4094 tiene disponible la salida serie, por que con eso podes enlazar "en serie" la cantidad que quieras para ampliar el numero de salidas.
 
Oooopppppssss... pense que estabas en la CABA...

No hay problema, Doc. Fé de erratas. ;)

Igual podes poner un 74LS373 que ya tenes y latcheas las salidas...

Exactamente, esa es la idea. :D
A continuación explico por qué.

Fijate si el CD4094 tiene disponible la salida serie, por que con eso podes enlazar "en serie" la cantidad que quieras para ampliar el numero de salidas.

Como mencioné en mi anterior ensayo el 4094 efectivamente posee no una, sino dos salidas de datos en serie. Inclusive el datasheet aclara como es la conexión en cascada de los mismos:
Cascada 4094.png

De hecho fue una de las opciones que evalué. No obstante surge la siguiente secuencia de razonamientos:

:unsure:

Los 4094 pueden ponerse en cascada para armar un bus del tamaño que se quiera, ocho con un solo integrado. Incluso podrían usarse directamente como salidas, pero...
Para cargar dicho bus los datos entran en serie y, como bien dijo usted, desfilan (este término me pareció práctico para definirlo, vamos a adoptarlo ;) ).

Para que las salidas (del demultiplexador en sí) no muestren este desfile (que redundaría en cosas que se prenden y apaga de maneras extrañas :confused: ) cabría la posibilidad de bajar el pin OUTPUT ENABLE... pero en ése caso todas las salidas se apagan :facepalm: , que generalmente sería un inconveniente. Lo mejor es que el 4094 permanezca con las salidas habilitadas.

Las latches son un obligado de este sistema. Por otro lado ya estamos forzados a utilizar tiempo en transferir los datos en serie (one by one :facepalm: ) por lo que agregar algunos instantes más (tantos como latches se tengan) para accionar las latches no me parece tanto desperdicio. Tengamos además en cuenta que pese a qque los datos desfilaran hasta formar el bus las latches no lo ven hasta que abramos sus registros internos con el pin LATCH.

Esto también podría haber sido gestionado con el STROBE de los 4094, pero ahora no me acuerdo por qué esto no me parecía una buena idea :unsure:

Por lo pronto podemos armar el bus en serie. Cuando tenemos los 8 bits listos permitimos que el registro de la primer latch los vea y almacene (mediante el contador 4017), armamos una nueva serie de 8 bits y la cargamos en otra latch... y así vamos. :p

:unsure: Estoy pensando que quizás esto podría implementarse solo con 4094´s, pero solo pensando. Quién sabe: quizás terminemos usando solo registros de desplazamiento como sugirió Scooter. :D
 
me gusta me gusta esa nueva propuesta de hardware

de hecho te dare un TIP ;)

una LCD 16x2 se puede como ya sabemos controlar con 4 bits y 3 lineas de control, entonces podemos usar un puerto de 8 bits para controlarlo

¿que pasa si en lugar de escribir en un puerto escribo en un byte en RAM?

es decir en lugar de yo usar el puerto de 8 bits uso un registro de 8 bits digamos un INT8 o un unsigned CHAR

supongamos que hacemos una libreria genrica que controla la LCD por el puerto
lo cambiamos a que en lugar de escribir en el puerto escribimos en un byte

y ahora ese byte lo enviamos al registro de corrimiento

¿que se logra?

un fabuloso display a solo 3 lineas ;)
 
No solo eso, sino lo que querramos.

Mientras hacía la cena me dí cuenta de que en realidad la imagen que le dejé al Dr. Z era el fin de mi busqueda. Solo con los HEF4094 colocados en cascada no es necesario utilizar latches ya que los mismos poseen un registro de 8-bit controlado por el pin STROBE que funciona tal cual el pin de un latch. Los registros de desplazamiento están aparte de este sistema.

Por lo tanto:

Se dejan las salidas habilitadas del 4094 (10Kohm a V+)
Se cargan los datos en serie entre DATA y CLOCK en el primer 4094. Si se quiere se puede enganchar tantos 4094 como se deseen, el pin QS2 dbe ir conectado con el DATA del 4094 que siga (mediante 1Kohm) y los CLOCK deben ir en paralelo con el resistor de 1Kohm (todos deben accionarse al mismo tiempo).
El primer dato que se introduce es el bit menos significativo (LSB).
Se mantiene en estado bajo STROBE (10Kohm a GND) y cuando se termina de cargar todos los bits le damos un disparillo a los STROBE (tam,bién en paraleilo) y todas las salidas se modifican como hacian los 373.
Bajamos el estado de STROBE, cargamos el próximo desfile de datos. Mientras STROBE se encuentra bajo las salidas no se ven afectadas por el desfile.
Terminado de cargar los bits, pulsilio a STROBE... y así le vamo´dando pa´que tenga! ;)

(y) Ya está probado en la protoboard con mis injertos quinientoscincuentescos. Está vuelta no tengo la secuencia de fotos. :p Igual, si alguien quiere que la arme, a sus ordenes.

Así que el 4017 y los 373 quedaron olvidados, salvo que la cosa deba ser de alta velocidad y se esté dispuesto a usar un bus directo desde el uC, esto dependerá del proyecto.

Así que ahora si puedo decirlo: Misión cumplida, doña (y)

Igual me quedo con la duda ¿Cómo es eso que decís, Trilo? No conozco la circuitería asociada a un display... no sabría qué controlar. :confused:

PD: ¿Quieren que hagamos el multiplexor? Ya estoy subido arriba de la pelota... :D
 
lo que sugirio el Dr.Zoidberg

es lo que decia yo y Don Scooter de los 74HC595 solo que esto son de la familia CD40XX

igual tienen el pin latch es decir mantendran el dato una vez cargado.

no solo un registro de corrimiento envia un byte, si no que se puede comportar como un puerto mas obviamente de salida.

y con algo de ingenio hasta PWM puedes hacer
 
Ahí conseguí el datasheet del CD4094. Es lo mismo que el 74LS595!!! (solo que es CMOS y no TTL, y además no tiene Reset)
(y) (y) (y) (y)
No le des mas vueltas y metele con ese nomás :aplauso: :aplauso:
Solo que para resetearlo le vas a tener que mandar un 0x00, pero bueno... es lo que hay.
 
me gusta me gusta esa propuesta.

una vez en el kilo de fierro viejo me encontre una matriz led una color cells cc784
corria con un Z80 si funcionaba pero era hora de hacer algo con bluetooth y un micro.

¿cual era el problema?

que tenia varios 74hc595 y 74hc164 revueltos en la PCB

pero increible el mismo algoritmo para el 74hc595 funciono para los 164

lo malo es que tenia varios 74hc164 por que eran mas baratos que los 74hc595 y queria haer PWM con ellos.

por desgracia no funciona el PWM con los 164 por que carecen del pin latch una decepcion pero no se le puede pedir peras al olmo
 
Ahí conseguí el datasheet del CD4094. Es lo mismo que el 74LS595!!! (solo que es CMOS y no TTL, y además no tiene Reset)
(y) (y) (y) (y)
No le des mas vueltas y metele con ese nomás :aplauso: :aplauso:
Solo que para resetearlo le vas a tener que mandar un 0x00, pero bueno... es lo que hay.

¿Para qué quiero resetearlo? :confused:

Con cargar la primera secuencia de datos reemplazo (perdón, DESPLAZO ;) ) a lo que sea que haya los registros de desplazamiento. :D
 
Por que si tenes 4 o 25 registros y hace falta ponerlos en cero al iniciar la operacion, es mas rapido tener un pin de reset que mandar 32 o 200 bits para arrancar en 0... sobre todo si es alguna condicion de emergencia...
 
Ok. Entonces las cosas que sean de emergencia deben estar primero: el bit que se escribe es el menos significativo, pero si lo tratase como el más significativo en un dato y un clock estoy ahí ;)
 
Atrás
Arriba