El cristal externo AVR no funciona con UART

2

Así que tengo un ATmega328P con un cristal externo de 14.7456MHz, configuración de swing completo, y estoy tratando de hablar con mi mac a través de UART y un dispositivo tipo amigo FTDI.

Si conecto AVR Tx a AVR Rx, entonces todos los bytes aparecen perfectamente (puedo verlo en algunas pantallas de 7 juegos). Si conecto FTDI Rx a FTDI Tx, entonces todos los bytes aparecen perfectamente (se ven en el monitor serie de Arduino). Las velocidades en baudios de ambos dispositivos son las mismas.

Sin embargo, cuando los conecto juntos ...

El monitor serie obtiene datos (la barra de desplazamiento aparece y comienza a desplazarse), pero no se muestran caracteres. Es como si fueran todos espacios (envío 'a', o un número de 8 bits arbitrario). Si selecciono la mitad de la velocidad en baudios, aparecen caracteres extraños, pero no lo que envío.

El AVR recibe caracteres (recibe los disparos de interrupción), pero lo que recibe es 0 o el mismo número (por ejemplo, 173, pero parece bastante aleatorio) para cualquier carácter que envíe.

He buscado en Google y en Google, y no he encontrado ninguna solución para esto. ¿Algunas ideas? La ayuda en esto es muy apreciada. (espero que haya proporcionado suficiente información)

    
pregunta potato5

1 respuesta

0

revisa las siguientes cosas:

  • es correcto el cálculo de la velocidad en baudios / configuración de registro
  • su cristal admite la velocidad de transmisión seleccionada (es el error de velocidad de transmisión por debajo del umbral crítico)
  • es correcta la configuración de F_CPU (el cálculo del valor del registro de la velocidad de transmisión puede depender de esto)
  • ¿has configurado correctamente tus fusibles para usar el cristal?
  • ¿has mezclado las conexiones de línea RX-TX (mira mi comentario anterior)
respondido por el vlad_tepesch

Lea otras preguntas en las etiquetas