Pregunta

Tengo una conexión de datos de muy baja velocidad sobre serial (RS485): 9600 baudios La tasa de transmisión de datos real es de aproximadamente el 25% de eso.

La línea de serie está pasando por un área de EMR extremadamente alto.Las fluctuaciones máximas pueden alcanzar los 3000 kV.

No estoy en la posición (todavía) para forzar un cambio en el medio físico, pero podría ofrecer fácilmente poner en un esquema de corrección de errores de avance sólido simple.El esquema debe ser fácil de implementar en una serie MICRO.

ideas?

¿Fue útil?

Solución

Este sitio afirma implementar Reed-Solomon en el PIC18.Nunca lo he usado yo mismo, pero tal vez podría ser una referencia útil?

Otros consejos

Buscar algoritmo CRC utilizado en el protocolo Modbus ASCII.

Desarrollo con dispositivos PIC18 y actualmente use los compiladores MCC18 y PICC18. Noté hace unas semanas que los encabezados periféricos para PICC18 mapean incorrectamente la macro Busy2Ust () a la bit de TRMT en lugar del bit de TRMT2. Esto me causó grandes dolores de cabeza por poco tiempo antes de descubrir el problema. Ejemplo, una transmisión simple:

putc2USART(*p_value++);
while Busy2USART();
putc2USART(*p_value);

Cuando la macro Busy2Usart () se asignó incorrectamente a la broca de TRMT, nunca esperaba que los bytes salieran del registro de turnos porque estaba monitoreando el broca incorrecta. Antes de darme cuenta del archivo de encabezado inexacto, la única forma en que pude transmitir con éxito un byte de más de 485 era esperar 1 ms entre bytes. Mi tasa de baudios fue de 91912 y los retrasos entre los bytes mataron mi rendimiento. También sugiero implementar un medio de detección de colisiones y cheques. Las sumas de comprobación son baratas, incluso en una PIC18. Si puede escuchar sus propias transmisiones, hágalo, le permitirá conocer las colisiones que pueden resultar de las direcciones duplicadas en el mismo bucle y los tiempos incorrectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top