TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: conquercl en 10 de Mayo de 2012, 19:23:32
-
Estimados amigos del foro, es mi primera vez aqui y debo decir que la información y ayuda publicada en este sitio me ha servido de mucho en mi incursión en en este mundo y después de buscar por 3 días una solución a mi problema es que me he visto en la obligación de molestarlos.
El problema es la recepción de datos por una UART por software a 115K200. Estoy usando el PIC en BulkMode y mis parametros de configuración en CCS es el siguiente
#include <18F4550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,PUT
#use delay(clock=48000000)
#use rs232(baud=115200, force_sw, parity=N, bits=8, xmit=PIN_A0, rcv=PIN_A1, stream=DEBUG)
#use rs232(baud=115200, force_sw, parity=N, bits=8, xmit=PIN_D3, rcv=PIN_D4, timeout=50, stream=GPS1,ERRORS,DISABLE_INTS)
#use rs232(baud=115200, parity=N, bits=8, xmit=PIN_C6, rcv=PIN_C7, timeout=250, stream=GPS2,ERRORS,DISABLE_INTS)
La recepcion la probe a 9600 y funciona correctamente pero los perifericos estan configurados a 115000 y no tengo posibilidad de cambiarlos.
Espero su ayuda.
Saludos,
-
Como sabes que no los puedes poner en 96000 ??
Es solo cambiar Baud=115200 a Baud=9600 y pruebas...
-
Los stream GPS1 y GPS2 son dispositivos externos de los que necesito información y son estos los que están configurados a 115200.
-
Veo que el stream 1 pertenece al GPS1 y es por software, esa es la que falla, no??
El otro GPS recibe en el puerto fisico y es por hardware, por lo tanto no debiera tener problemas...
Yo lo que haria es conectar el pin de recepcion en B0 o B1 que normalmente son de interrupcion externa, y recibes los datos del GPS utilizando la interrupcion.
Es bastante dificil utilizar un puerto de comunicacion por software a 115200 baudios y que funcione bien la recepcion, ya que esa recepcion se hace por polling y con dos puertos mas, tambien a 115000 baudios, creo que es imposible que te funcione.
Las tramas del GPS son bastante largas en muchos casos, y por polling del puerto una vez que el muestreo del bit cayo fuera por cualquier demora, ya no hay retorno y se pierde en el mejor de los casos...