Hola a todos!
Tengo un problema que me trae de cabeza a ver que os parece:
Configuro un puerto del 18f2550 por software a 187500 baudios y además utilizo las librerias de CCS para el uso del USB.
Me he dado cuenta que los bytes enviados por el puerto no viajan a 187500 sino que se reduce la velocidad a menos de 180000 mirado con un osciloscopio.
Y aqui viene lo curioso del tema: Esto pasa si utilizo si declaro variables grandes en el codigo, si no lo hago la velocidad de transmision es correcta. Y si no cargo las librerias del usb tambien funciona correctamente. Raro no?
Os pego el código:
----------------------------------------
#include <18F2550.h>
#fuses HSPLL,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN,CPD,CPB
#use delay(clock=48000000)
#use standard_io(c)
#use fast_io(b)
#include <usb_cdc.h>
#include <pic18_usb.h>
char datos[128];
void main()
{
#use rs232(baud=187500,xmit=pin_c1,stop=1,parity=e,stream=com_sw)
do
{
fputc(0x93,com_sw);
delay_ms(1000);
}
while (true);
}
-------------------------
Este código ralentiza la salida de datos, ahora bien cambiamos "char datos[128] por "char [10]" la velocidad de transmision es correcta.
No le veo ni pies ni cabeza, pensaba que igual al activar el USB la gestion de rutinas del usb por interrupción ralentizaría los delays que generara el compilador para realizar el puerto serie por software, pero como veis no he activado el USB en el código, solo he cargado las librerias.
Que tiene que ver la cantidad de ram ocupada con la velocidad de transmision?
Gracias de antemano y un saludo.