Amigos, les cuento brevemente en lo que me he metido: Estoy desarrollando un adquisidor de 2 canales utilizando los ADC. Para esto utilizo 3 micros ( uno por cada canal y otro que concentra a estos últimos y envia la info a la PC ). En cuanto a comunicación entre micro-micro y micro-pc utilizo RS232, con aislacion optica de por medio. Esta es una imagen aclaratoria...
Ahora bien, todo funciona, simulado en proteus. Pero hay
dos problemas:
1º- (El que hace al título del post)Aqui me hago una pregunta: ¿Qué ocurriria si se corta uno o todos los canales (simulado con un switch en el archivo de PROTEUS)? Y suerte que me la hice!!. Cuando esto sucede el micro que hace de HUB
se cuelga. Esto lo veo gracias a los leds testigo que puse. (ver simulacion, por ahi no soy muy claro).
2º- (Algo extraño!!)Como el micro-hub recibe 2 palabras (una por cada canal), luego las debe concatenar para luego enviar una única. Pensé en usar algo asi antes de mandar a la PC:
sprintf(cad_sal,"%s%s\r",cadena1,cadena_2);
donde cadena1 y cadena2 son strings que recibe el HUB y la idea es concatenarlos en cad_sal (otro string) para enviar a la PC una unica cadena. El tema es que si hago
sprintf no funciona...ahora por casualidad si hago
fprintf (salida, "%s",cadena1);
sí funciona...de hecho es lo que estoy utilizando. Pero lo que me tiene mal es que no se por que sí funciona esto y no lo anterior que creo es lo más logico.
Espero me puedan dar una mano en el problema que por cierto me tiene sudando bastante en este verano sin aire acondicionado.
Adjunto un
archivo comprimido con los codigos (hay codigos para cada PIC CANALx que son iguales entre si y otro codigo para PIC-HUB)
Saludos amigos!!!
PD: lo he probado tanto en proteus y en la realidad y hace lo mismo en ambas pruebas.