Hola gente, soy nuevo en el foro y estoy acá porque ya no se a quien mas recurrir!
Una empresa me encargo un proyecto USB, yo les dije que no tenia ni idea sobre el tema a lo que me contestaron que no importaba, que querían que lo haga yo, que averigüe... ja!
No quiero molestarlos con todo el resto del programa porque es largo y solo tengo problemas en la transmisión. El tema es el siguiente, con un PIC18F4550 y un xtal de 20Mhz, necesito transmitir 250KB en un segundo, que son repetidas mediciones de una plancha de 48x48 sensores, que ya están guardadas en la memoria del micro. Para probar la TX con la PC me base en el proyecto de
http://picmania.garcia-cuervo.net/usb_3_cdctransfers.php, el cual me anduvo sin problemas... excepto que solo lograba transmitir al rededor de 50kb en un segundo... demasiado lento para lo que necesito.
El programa lo hice en CCS y utilice el hyperterminal para recibir el los datos en la pc. Como podrán ver en el cogido a continuación, mi idea fue mostrar los datos en forma de tabla, 48 columnas, 48 filas y transmitir 50 veces la plancha, que es mas o menos lo que necesito. Una vez que envio las 50 planchas hace titilar un led que se encuentra en el PIN C0.
El circuito es TAN SIMPLE COMO ESO, transmite por USB y en el pin C0 hay un led, nada mas.
Este fue el codigo que utilice, basado en el proyecto de picmania:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include ".\include\usb_cdc.h"
void main() {
BYTE columna,fila,plancha;
output_high(PIN_C0);
delay_ms(300);
usb_cdc_init();
usb_init();
while(!usb_cdc_connected()) {}
output_low(PIN_C0);
while (TRUE) {
for(plancha=1;plancha<=50;++plancha){
for(columna=1; columna<=48;++columna){
printf(usb_cdc_putc, "\r\n");
for(fila=1; fila<=48; ++fila) {
printf(usb_cdc_putc, "%2x" fila);
printf(usb_cdc_putc, " ");
}
}printf(usb_cdc_putc, "\r\n\n Plancha: ");
printf(usb_cdc_putc, "%2x" plancha );
printf(usb_cdc_putc, "\r\n");
}
while (TRUE)
{output_toggle(PIN_C0);
delay_ms(500);}
}
}
Estaria muy agradecido si me pudieran ayudar con este problema!
Saludos!
Facundo