Hola!
Os pongo en situación, he hecho un pequeño trasto mediante el cuál:
- Conecto el PC al PIC mediante Bluetooth.
- Conecto el PC al PIC mediante USB CDC
Qué hago?
- Abro los puertos COM de Bluetooth y USB CDC con el hyperterminal.
- Escribo un dato en el COM del BlueTooth y el PIC automáticamente lo envía, mediante una interrupción, al COM del USB.
El código que hace eso: (un extracto de un programa más grande)
#INT_RDA
void rda_isr(void)
{
temp=0;
temp=fgetc(blue);
printf(usb_cdc_putc,"%c",temp);
}
La variable 'temp' es un char. Y 'blue' es el string para el COM del Bluetooth, ya que tengo por ahí también un 485.
El problema es que obtengo esto:
Hasta donde he llegado al analizar el problema:
Puedo enviar un carácter como máximo 2 veces, la tercera vez que lo envío pasa lo que se ve en la imagen, y a continuación ocurre una de cada dos veces. Me he imaginado que era un problema con los bits... y este es el código binario de los caracteres ascii:
q: 01110001
±: 11110001
Como veis la diferencia entre ambos caracteres es un bit, y no que falte, sino que se añade. Eso me ocurre siempre y con cualquier carácter. Se os ocurre cual puede ser el problema?
Gracias y un saludo!