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.
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.
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.
Conecta RX y TX a X-COM e Y-COM y por A y B cambia entre los dispositivos.
Se puede seleccionar un dispositivo/canal de acuerdo con la tabla anterior.
echo_salik
tehwalris
Bence Kaulics
Arjun