Banner publicitario de PCBWay

Arduino, cambio de dirección output/input sin romper nada

¡Hola! :)

soy nuevo en el foro. Mis conocimientos de electrónica son muy elementales, he estado probando algunas cosas con Arduino y han funcionado bien, pero quisiera consultar una cosa para no romper nada.

Tengo un Arduino conectado al puerto usuario de un Commodore 64. Hay 8 pines de Arduino configurados como output, conectados a respectivos 8 pines del C64 configurados como input (por defecto, cuando el C64 se enciende, estos pines están como input). Hasta ahora ha funcionado todo sin problemas. También he puesto alguna conexión al revés: Arduino input, C64 output y también funciona. Ahora bien, estas configuraciones las he probado “fijas”, es decir, desde que enciendo Arduino y el C64, están con esos input y outputs y no cambian.

Ahora quisiera que durante la ejecución del programa, algunas de esas líneas cambien de sentido. Por ejemplo, un pin de Arduino que estuviera como output, ponerlo como input, y el correspondiente pin del C64, pasarlo de input a output.

Mi pregunta es, ¿en qué orden debo hacer el cambio para no quemar nada? Me imagino que en algún momento de transición, si ambos están como input, no pasará nada, pero si ambos están como output, aunque sea durante unos instantes, se podría romper algo. ¿Antes de cambiar de input a output o viceversa, conviene que ponga el pin en LOW, o esto da igual?

Creo que alguna vez hice por error una conexión output – output y no pasó nada, pero prefiero no arriesgarme.

Esto que pregunto, ¿es aplicable a conexiones en general entre dos mictrocontroladores?

Espero haberme explicado... Soy principiante y quizá me falle la terminología.

¡Muchas gracias! :)
 
bienvenido al foro.
Necesitaría que te explayes un poco mas para poder entrar en contexto, ya que no se si queres establecer algun tipo de comunicacion o que cosa. Ese puerto no solo podes emplearlo como un puerto paralelo, sino que tambien admite comunicacion RS232 por software, entre otras cosas mas... Quizas, si nos comentas un poco que estas queriendo hacer, no resulte util esa consigna para recomendarte algo "practico y seguro"
 
Creo que alguna vez hice por error una conexión output – output y no pasó nada, pero prefiero no arriesgarme.

Esto que pregunto, ¿es aplicable a conexiones en general entre dos mictrocontroladores?
La respuesta es..."depende", pero para hacerlo de forma segura, sobre todo si los cambios don frecuentes, lo mejor es colocar ambos puertos como entradas y luego conmutar uno de ellos al estado I/O correcto.
Por supuesto que el "depende" se refiere a la configuración del hardware, pero no es muy normal estar cambiando de modo I/O todo el tiempo a menos que haya algun mecanismo de sincronización entre ambos extremos.
 
Muchas gracias a ambos por las respuestas!

Intento explicar mejor el contexto. Esto es para un proyecto que empecé hace unos años y viene funcionado bien. Se trata de conectar un teclado MIDI a Arduino y Arduino al Commodore 64, para tocar el C 64 como si fuera un instrumento.
Aquí está la página con todos los detalles de hardware y software (por ahora en inglés, pero hoy en día se traduce fácilmente)


Uso los 8 pins del puerto paralelo del C64. Hasta ahora había usado 7 de esos pins (PB0 - PB6) para que Arduino transmita datos y mande la señal "handshake" al C64, y un 1 pin (PB7), al revés, para que el C64 envíe la señal handshake a Arduino. Hasta ahí todo bien. Hace poco he aprendido a usar otros dos pines que no son del puerto serie para que Arduino y C64 hagan el handshake. Quedan entonces libres los 8 pines del puerto paralelo para datos (estos dos nuevos pines son el PA2, que funciona como cualquiera de los PB0 - 7, y uno que llaman FLAG2, que permite a C64 reconocer una bajada de 5 a 0; los dos me funcionan bien, pero creo que no son relevantes para lo que quiero hacer ahora).

En la versión más reciente (sin actualizar en la página), Arduino usa los 8 pines del paralelo para transmitir al C64, es decir, son todos output en Arduino, y todos input para el C64. Todo esto, mientras Arduino lee las notas MIDI y las pasa al C64.

Pero quisiera hacer una cosa más, y es que el C64, en alguna "pausa", es decir, desactivando la lectura de MIDI en Arduino, le pase algunos datos a Arduino en la otra dirección. No es algo para hacerlo continuamente, sino sólo cuando el usuario deja de tocar y pasa a un "modo edición". (Me sirve el dato de que no es normal estar cambiando continuamente I/O, ¿es por algún peligro de quemar algo?)

En resumen, quisiera poder hacer ese cambio de dirección en los cables que van del puerto paralelo del C64 al Arduino, sin romper nada en el intento. Muchas gracias! :)

(Edito: ¿serviría de algo poner resistencias "preventivas" entre cada par de pines?)
 
Atrás
Arriba