El microcontrolador escribe datos adicionales en escrituras de alta frecuencia

3

Estoy usando C-Control Pro 128 que contiene un procesador atmega. He conectado la interfaz rs232 con mi PC y leí los datos entrantes, con el siguiente programa ejecutado en el controlador:

void main(void) {
  Serial_Init(0, SR_8BIT | SR_1STOP | SR_EVEN_PAR, SR_BD9600);
  Serial_Write(0, 1);
  Serial_Write(0, 2);
}

Esperaba que el controlador generara los bytes 1 y 2 . En su lugar, recibo lo siguiente:

1
2
119
119

Si escribo por ej. ocho bytes en lugar de dos, 119 se agrega ocho veces a los datos reales. Si escribo solo un byte, solo se transmite un byte, por lo que todo funciona correctamente.

El número 119 es independiente del valor de los bytes y de la velocidad en baudios.

Si agrego una instrucción sleep entre los comandos write (aproximadamente 50 ms), el problema no se produce.

¿Alguien ha tenido un problema similar o alguna idea de dónde podría ubicarse el problema?

    
pregunta Yogu

1 respuesta

5

La forma de diagnosticar este tipo de problemas es reducirlos a la mitad. ¿De quién es la culpa? ¿El C-Control o el PC? Si podemos ver los datos reales enviados en el cable, podemos decir dónde se encuentra la falla.

Comience enviando un carácter simple, fácilmente identificable, una y otra vez. Me gusta usar el que se usa como ejemplo en la página RS232 de Wikipedia porque puede ver fácilmente cuál es la forma de onda. se supone que tiene que ver como.

Ahoranecesitarásunosciloscopio.Sinopuedepagaruno,lerecomiendoelanalizador Saleae Logic . No es tan caro, y le ahorrará literalmente días de su vida. Mire la forma de onda en el bus y verifique que coincida con la forma de onda que expc. Comprueba si hay personajes maliciosos transmitidos después.

Suponiendo que todo se ve bien, entonces el problema está en algún lugar de la PC. Si aparecen los 119 caracteres maliciosos, sabrá que el problema está en C-Control

    
respondido por el Rocketmagnet

Lea otras preguntas en las etiquetas