TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: seba85 en 11 de Julio de 2014, 02:09:41
-
Hola espero que alguien me pueda responder esta duda y me sepa explicar!
Estoy trabajando con un dsPIC33FJ128, hice una aplicación en Visual en la cual le envió por USB 22 bytes con información cada cierto tiempo. Uso un MCP2200 para la comunicación USB entre la USAR dspic y la PC. El problema es que estaba recibiendo cualquier cosa entonces decidí mandar dos bytes al inicio como bandera para saber que cuando llegan, lo que siguen son los 22 bytes de información. Pero no se me enganchaba la aplicación aveces recibía los dos bytes de bandera de inicio y aveces no por lo que descartaba la trama. Entonces cambie la aplicación para ver todo lo que me llegaba, entonces vi que siempre se me repiten 3 bytes mas al final de la trama 15, 145 y 0 (en decimal) y daba que una vez cada tanto al ser impar la cantidad de bytes se volvía a enganchar la aplicación. Ahora de donde salen esos tres bytes si no los manda el dspic ni me los genera la aplicación?? sera alguna configuración de la UART que los envía, o el MCP2200??? Si a alguien le a pasado agradecería que me explicara por que?
Saludos!
-
Hola, he usado el MCP2200 en el pasado. Pese a que sinceramente NO es de mi agrado en absoluto, nunca me pasó recibir caracteres de más. Y dudo seriamente que la configuración del MCP2200 permita hacer algo de eso.
Estás seguro que estás trabajando con los tiempos correctos configurados en el MCP2200 y en el dspic? Porque si están a distinto baudrate te pueden ingresar valores erróneos.
Enviá sólo un byte con el dsPIC. Podrías intentar hacer un loop del 0 al 255, enviando uno a la vez cada 1000mS. Y ver si se los datos llegan correctamente, y siempre se te adjuntan esos 3 bytes adicionales.
Saludos!
-
has mirado con un osciloscopio o analizador logico??
-
Gracias por responder!
Mire con el osciloscopio y si estaba mandando esos 3 bytes, así que revise el código después de haberlo revisado 20 veces y encontré el problema. Como voy probando el programa en bloques y tengo parte en assembler y parte en C se me paso un GO TO que me mandaba a otro lado del código que seguí mandando otras cosas por la UART y ahí se me hacia el enrollo... jejeje Siempre lo digo cuando no sale algo hay que consultarlo con la almohada... :lol:
Saludos!