Atmel D20 basura en la salida de USART

0

Tengo un Atmel SAM D20J18 uC. Estoy tratando de imprimir algo a través de USART. Los primeros símbolos están bien, pero después del símbolo 8-9 hay basura. Sin embargo, si ejecuto el código línea por línea en el modo de depuración (con SAM ICE JTAG), todos los símbolos se imprimen correctamente. Estoy seguro de que tengo la configuración serial correcta tanto en la unidad uC como en el programa del terminal (uso Putty). Yo uso USB a TTL como dispositivo serie. ¿Qué más podría causar el problema? (enlace al código fuente: main.c )

UPD

Ver mi propia respuesta a continuación

    
pregunta c_spk

2 respuestas

1

Hay dos posibilidades distintas aquí.

  1. La tasa de baudios está cerrada pero desactivada en algún porcentaje en el rango de 3-5%. Si está enviando una forma de mantener la tubería UART llena, es posible que no haya una oportunidad para que el extremo del receptor vuelva a sincronizar su reloj en el centro del bit de inicio y esto lleve a recoger basura cuando el UART finalice. sincronizar entre sí.

  2. Está enviando demasiado rápido cuando finaliza el transmisor. La mayoría de UARTS tiene un búfer de transmisión de un byte. Parece que el suyo tiene un FIFO que puede almacenar hasta los primeros 7 u 8 bytes de escritura. Después de eso, si su rutina de envío no espera correctamente a que esté disponible la próxima ranura FIFO, es probable que la última se haya sobrescrito con los datos incorrectos.

En cualquiera de los dos casos, el hecho de que un paso a paso sea un solo carácter a la vez y lo vea funcionar correctamente confirma que es uno de los dos casos anteriores porque la demora permite que el receptor se vuelva a sincronizar o que el FIFO se vacíe en el transmisor

    
respondido por el Michael Karas
0

Lo verifiqué hoy nuevamente y no obtuve ninguna salida, aunque no había cambiado nada en el código. Pero más tarde encontré el problema: era una mala soldadura. Ahora, como está resuelto, funciona como debería sin ningún tipo de basura. Gracias por las respuestas.

    
respondido por el c_spk

Lea otras preguntas en las etiquetas