Autor Tema: Se cuelga 16F877A con RS232  (Leído 1998 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado maritov

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 121
Se cuelga 16F877A con RS232
« en: 02 de Enero de 2008, 15:52:04 »
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:
Código: [Seleccionar]
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
Código: [Seleccionar]
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.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Se cuelga 16F877A con RS232
« Respuesta #1 en: 02 de Enero de 2008, 16:04:31 »
Tu intencion es buena, pero tu codigo esta muy desprolijo (posiblemente a fuerza de probar y cambiar).

Cuando declaras el puerto de salida de el PIC que oficia a HUB, pones:

Citar
#use rs232(baud=9600,parity=N,xmit=PIN_A5,rcv=PIN_A5,bits=8,stream=salida)

Si miras bien declaras el mismo pin como TX y RX...
No se si es tu problema, pero no esta bien...

Ademas envias la variable cadena_2, mientras que cuando colectas la informacion del puerto 2 la llamas cadena2, ese si puede ser un problema, pero el compilador deberia habertelo advertido...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Se cuelga 16F877A con RS232
« Respuesta #2 en: 03 de Enero de 2008, 05:15:42 »
Hola maritov!

A lo mejor esto te sirve de algo:

http://www.todopic.com.ar/foros/index.php?topic=19026.msg134941#msg134941


Un saludo desde Alicante.


 

anything