Haz que Arduino y 89C52 hablen entre sí

Estoy tratando de crear un proyecto en el que debo hacer que Arduino y Atmel 89C52 se comuniquen entre sí.

Sé que esto se puede lograr a través de UART, pero el problema es que mi Arduino ya está usando sus puertos TX/RX. ¿Hay alguna forma de hacerlos hablar por algún otro medio? ¿Te gusta la interfaz I2C o SPI? ¿Sería suficiente UART suave? Todo el proyecto depende de que luego hablen entre ellos de manera efectiva.

Respuestas (2)

Es absolutamente posible hacerlos hablar :) Arduino tiene una función para múltiples comunicaciones RX/TX. Se puede lograr con Software serial . En lo que respecta a conectar Arduino con 89c52 con I2C, solo es posible cuando escribe el protocolo I2c desde el lado 89c52 (AT89C52 no tiene puerto de hardware I2C).

Entonces, si su puerto serie de Arduino está ocupado por cualquier otro dispositivo, puede cambiar ese pin a serie de software (es decir, transferir el propósito a otros pines) y usar ese puerto serie para comunicarse con 89c52.

EDITAR

Sí, puede usar la interfaz SPI, pero esa no es mi elección;) ya que requiere 3 cables y solo está diseñada para distancias cortas. Y también necesita tener At89s52 no at89c52.

Gracias por tu respuesta. ¿SPI también puede funcionar?
El uso de hardware SPI, en lugar de UART suave, significará menos carga de CPU para Arduino. El OP mencionó la eficiencia: si se refería a la eficiencia del tiempo de la CPU, el SPI duro podría ser una mejor opción.
Por lo que veo, el Atmel 89C52 tampoco tiene interfaz SPI, solo UART.
@BenceKaulics Gracias por señalarlo, hice la corrección.

Con hardware adicional, puede cambiar las líneas UART de Arduino entre el Atmel 89C52 y el otro dispositivo. Estos hardwares se denominan multiplexores, y mediante algunos pines de control está disponible para intercambiar entre líneas analógicas o digitales. De esta manera, solo podría comunicarse con un dispositivo a la vez, por lo que si es un problema, siga con la serie del software.

Para dar un ejemplo veamos CD4052B

Es un multiplexor/desmultiplexor analógico diferencial de 4 canales, lo que significa que puede intercambiar dos líneas (RX, TX en su caso) entre cuatro dispositivos diferentes.

ingrese la descripción de la imagen aquí

Conecta RX y TX a X-COM e Y-COM y por A y B cambia entre los dispositivos.

ingrese la descripción de la imagen aquí

Se puede seleccionar un dispositivo/canal de acuerdo con la tabla anterior.

Gracias por la respuesta. Sí, los dispositivos deben funcionar en paralelo, así que no puedo usar esto. Pero esa es la primera vez que oigo hablar de este método. Gracias.
Esta información realmente fue útil en otro proyecto que tengo. Gracias hombre. me ahorró $$$ :)