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
 
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.
 
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????
 
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.
 
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__
 
Atrás
Arriba