Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/04/2013 #1


No funciona el comando printf por usb CDC en PIC
Buenas a todos!!!!,

Estoy conectando un pic por usb en clase CDC, casi todo bien, cuando recibo un byte por el comando usb_cdc_getc(), este lo recibe bien y el dato es procesado, cuando envio un dato por usb_cdc_putc(dato), tambien funciona bien. Ahora necesito enviar una cadena a la computadora, el cual utilizo la funcion printf(usb_cdc_putc, "Hola"); , (puse la cadena "Hola" porque no funcionaba una variable cuando convertia con sprintf), el programa en que recibo es el "hercules", puerto serial configurado 9600baudios, sin paridad. Lo que llega a este programa es el primer byte correspondiente a "H", vuelvo a mandar la orden de envio y tambien llega solo "H", y asi, de vez en cuando llega completo "Hola", o a veces incompleto como "Ho"
Cual puede ser el error?
Les agradezco de antemano
24/04/2013 #2

Avatar de Saint_

hola chococoandres, no creo que el problema sea el programa en el pic mas me parese un problema del sofware de la PC, francamente no conosco ese software Hercules, pero por que no pruebas con el hyperterminal que tiene windows.
29/04/2013 #3


hola Saint_, gracias por la recomendacion pero ya lo probe con hyperterminal y con el serial que viene con el compilador csc, todos da igual.
Pero al hacer la prueba varias veces observe que si solo hago printf a usb en la funcion principal main(), esta impresion esta bien, no falla, pero cuando lo hago dentro de alguna interrupcion, ya sea externa o por cambio de estado en el puerto b (las que estoy utilizando), esta impresion falla, no es completa y a veces de una sola letra, el mismo caso del inicio, alguna idea????
29/04/2013 #4

Avatar de Saint_

hola, chococoandres, te comento que si el printf(cdc_putc," ", ); te funciona mal en una rurina diferente de el main() y asumiendo que no hay ningun error en la programacion, puede ser el compilador el que se este "rayando", alguna vez me paso que cuando queria utilizar un puerto serie por software avia veces que no se activaban las interrupciones, no recuperava los datos correctamente y demas, eso con el compilador CCS tambien me paso algunas cosas similares con el MIKROC pro PIC, asi que lo unico que hice fue cambiar la estuctura de mi programa.
06/05/2013 #5


si, tienes razon, ahora haciendo varias y varias pruebas el printf() para usb no funciona en las interrupciones, pero si las quito en estas si funciona bien en el main(), lo unico que queda es reordenar el programa, pero si o si necesito que se manden datos mediante las interrupciones, lo que hice fue utilizar la funcion usb_cdc_putc(dato) dentro de las interrupciones, inicialmente no daba igual que el printf, pero le aumente un delay dentro de esta funcion y ya funciona, no como el printf obviamente porque le tengo que mandar la cadena dato por dato pero con esto me quedo conforme, muchas gracias Saint__
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.