El microcontrolador se cuelga durante la comunicación en serie

1

Estaba trabajando en un proyecto en el que el microcontrolador se está comunicando en serie con la computadora.

Inicialmente funciona correctamente pero después de cierta duración (es decir, de 2 a 3 horas) el microcontrolador se cuelga.

Creo que se cuelga debido a la comunicación en serie con la computadora. Para verificarlo, he escrito un programa para el microcontrolador y para que la computadora transmita y reciba datos en serie.

En mi programa, primero estoy transmitiendo una serie de cinco caracteres en serie desde la computadora. El microcontrolador recibirá la cadena y la retransmitirá a la computadora. La computadora recibirá la cadena transmitida por el microcontrolador.

Ahora transmití una cadena y una cadena recibida en la computadora, comparo ambas cadenas y, si son iguales, estoy escribiendo '1' en un archivo y '0' si son diferentes.

¿Quiero saber si mi proceso para verificar la comunicación del puerto serie es correcto o no?

    
pregunta Saad Rafey

3 respuestas

1

El cableado en serie de larga duración incidentalmente puede sufrir errores de bit. ¿Qué le parece agregar una suma de verificación a cada mensaje (marco de datos) que envíe, de modo que el extremo receptor pueda verificar esa suma de comprobación y, si está equivocado, descartar todo el marco de datos, probablemente solicitando una retransmisión?

Se puede lograr un mecanismo de suma de comprobación simple mediante la EOR de todos los bytes en el marco y el envío del byte resultante como suma de comprobación. El extremo receptor debe poder calcular la misma suma de comprobación.

    
respondido por el jippie
1

Lo que sugieres probará que el hardware y el software básico de bajo nivel están funcionando. Sin embargo, ya lo sabía, ya que dice que se ejecuta durante más de 2 horas antes de que algo se detenga.

Esto significa que tienes un error en algo que solo ocurre raramente, como un error de bit, un desbordamiento o un error de trama. ¿Qué sucede bajo cada una de estas condiciones en el micro? Es posible que sea necesario reiniciar el hardware en un error de trama o un desbordamiento. ¿Estás haciendo esto?

También debes considerar que el ruido puede entrar en la línea. ¿Cómo se recupera su protocolo cuando un lado recibe algo un poco diferente al otro lado enviado? Tienes que pensar en estas cosas. Puede enviar datos en paquetes con sumas de comprobación, ACK y reintentos. Podría hacer algún tipo de esquema de actividad con restablecimiento automático en inactividad después de un tiempo de espera. Hay muchas maneras. Estas razones explican por qué es mucho más difícil diseñar un buen protocolo de serie de lo que la mayoría de las personas parece pensar a primera vista.

    
respondido por el Olin Lathrop
0

¿Está ejecutando otras cosas en el microprocesador al mismo tiempo? Si es así, intenta deshabilitarlos. Si es posible, intente usar otro chip y vea si tiene el mismo comportamiento.

    
respondido por el ErikAndren

Lea otras preguntas en las etiquetas