¿Cómo puedo usar un solo 74595 para manejar dos IC diferentes?

0

Estoy tratando de construir un circuito de audio con la menor cantidad de partes posible. Además, realmente necesito limitar el número de pines utilizados en mi Arduino.

No pregunté esto en el sitio de Arduino porque no creo que esto sea específico de Arduino, pero quería mencionar que lo estaba usando por si acaso.

De todos modos, tengo dos chips de sonido. Cada uno tiene un bus de datos / direcciones de 8 bits que he eliminado un 74x595 (no recuerdo exactamente cuál en este momento).

Al usar cualquiera de los IC de audio, todo está bien. Pero, lo que quiero hacer es posiblemente usar el mismo registro de desplazamiento para manejar AMBOS IC de música.

Desafortunadamente, ninguno de los circuitos integrados de audio parece tener una forma de ponerlos en modo de alta impedancia ( SN76489 y AY-3-8912 ) que puedo decir. Además, ambos están diseñados para tocar notas, mientras que la CPU hace otras cosas, así que simplemente restablecer (o deshabilitar) una, mientras que la otra información recibida detendría la reproducción de sus notas actuales.

Mi primer pensamiento fue usar algún tipo de transceptor de bus octal, pero en realidad nunca diseñé un circuito con uno. Pero si no me equivoco, ¿no tendría que desconectar eléctricamente un IC de audio del bus de datos mientras el otro recibe datos?

O, hay simplemente una mejor manera. Estoy luchando para agregar ese transceptor de bus en lugar de tirar tres pines más del Arduino y usar un segundo registro de cambios. Pero si lo hiciera, tendría que usar los pines de audio para la lógica digital. Lo que sé es técnicamente bien. Solo estaba tratando de evitarlo.

Cualquier consejo sería apreciado.

Gracias.

EDIT

Otra idea que tenía era utilizar un registro de desplazamiento de 16 bits y dividir el bus. Tendría que cambiar drásticamente mis controladores de audio, pero eso podría funcionar. A menos que haya una mejor manera ...

EDIT 2

OK, dos registros de turno encadenados juntos NO pueden ser una buena idea.

Piensa en esto:

El AY-3-8912 requiere dos escrituras de 8 bits (dirección luego datos). El SN76489 solo requiere una escritura de 8 bits.

Entonces, si mis datos fueran:

$A5 $38   // AY
$78       // SN

Enviar un $ A5 luego $ 38 pondría $ A5 en el bus de datos SN. Entonces las cosas se desincronizarían.

Además, ahora que lo pienso, el formato de datos VGM (que estoy usando) también tiene comandos que no son de IC, como comandos de pausa. Así que podría obtener un comando de pausa que es three bytes long .

Mantener todo esto rellenado / sincronizado parece una pesadilla.

Ugh ...

    
pregunta cbmeeks

1 respuesta

1

Puede conectar en cadena los 595 tanto como desee: simplemente conecte la salida de uno a la entrada del siguiente y conecte sus señales de control juntas.

Primero desplace los datos para el SN76489 seguido de los datos para el AY-3-8912. Tu código difícilmente tendría que cambiar; solo desplaza 16 bits en lugar de 8.

    
respondido por el Joris Groosman

Lea otras preguntas en las etiquetas