TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jorgejg en 09 de Septiembre de 2011, 14:56:55
-
Mi programa envia a la pc lo que recibe de la pc, pero no puedo recibir bien, el codigo reducido:
char LeerBuffer[64];// almaceno lo que llega de la pc
en el RSI_H:
if(mUSBUSARTIsTxTrfReady())
if(getsUSBUSART(LeerBuffer,3))//leo 3 caracteres
{Aux1.Byte_recibido_USB=1;}//avisa al lazo en el main que ha llegado algo de la pc
en el lazo del main:
while(1)
{
Tareas();
ProcessIO();
if (Aux1.Byte_recibido_USB==1)
{
Aux1.Byte_recibido_USB=0;
if(mUSBUSARTIsTxTrfReady()) // Verifica que pueda enviar
{putUSBUSART(LeerBuffer,3);}//enviar 3 caracteres
que esta mal en este codigo?
recibo parttes de caracteres menos lo que envio de forma completa
-
las velocidades del pic y del pc estan sincronizadas? Te lo comento porque si el pc tiene 9600 y el pic 115000 es normal que recibas cosas raras, debes poner todo a la misma velocidad.
-
Estoy enviando por USB por medio de CDC no se supone que no deberia importar el baud?
-
pero estas usando cdc que emula un puerto com en el pc no?
Segun he visto en un ejemplo de microchip se configura la velocidad, por lo cual si puede importar
aqui lo he visto:
RCSTA = 0x90; // Single Character RX
SPBRG = 0x71;
SPBRGH = 0x02; // 0x0271 for 48MHz -> 19200 baud
BAUDCON = 0x08; // BRG16 = 1
-
En mi programa mando una cadena fija al inicio acabo de probar en recibir a distintas velocidades en la PC y siempre recibe bien, yo creo que la transmisión fisica del canal es puramente USB pero se le hace creer a la PC que es una comunicación serial cuando en realidad no lo es, sino mas bien es comunicación USB.
Basicamente mi problema es enviar (por USB CDC en C18 ) un arreglo de caracteres que he recibido de la PC (via USB) como un eco pero no me funciona bien.
Seguiré posteando algunas otras pruebas que realize.
-
pero estas usando cdc que emula un puerto com en el pc no?
Segun he visto en un ejemplo de microchip se configura la velocidad, por lo cual si puede importar
aqui lo he visto:
RCSTA = 0x90; // Single Character RX
SPBRG = 0x71;
SPBRGH = 0x02; // 0x0271 for 48MHz -> 19200 baud
BAUDCON = 0x08; // BRG16 = 1
:shock:
Eso es para configurar el módulo EUART!
La configuración del baudrate, en windows, se puede hacer en las propiedades del driver.
Probaste el ejemplo básico que trae Microchip? Viendo que funciona ese, armas tu proyecto en base a eso. Me parece que es lo más fácil en tu caso.
Saludos!
-
pero estas usando cdc que emula un puerto com en el pc no?
Segun he visto en un ejemplo de microchip se configura la velocidad, por lo cual si puede importar
aqui lo he visto:
RCSTA = 0x90; // Single Character RX
SPBRG = 0x71;
SPBRGH = 0x02; // 0x0271 for 48MHz -> 19200 baud
BAUDCON = 0x08; // BRG16 = 1
:shock:
Eso es para configurar el módulo EUART!
La configuración del baudrate, en windows, se puede hacer en las propiedades del driver.
Probaste el ejemplo básico que trae Microchip? Viendo que funciona ese, armas tu proyecto en base a eso. Me parece que es lo más fácil en tu caso.
Saludos!
pues viene en el ejemplo de microchip: USB Device - CDC - Serial Emulator supongo que sera para usar usb y usart, de todas formas en varios ejemplos pone que para cdc emulado para serial deben tener el mismo baud rate.