OK, pues entonces para tenerlo todo más ordenadito vuelvo a escribir la solución (espero, jejeje), al problema del bloqueo USB que alguno parece tener.
Y ya sabeis, alumnos míos, cualquier duda que tengais la preguntáis por aquí o por email, ¿ok?
Eso sí, no trasteéis demasiado que teneis exámenes!!!
------------------------------------------------------------------------------------------
hola, qué tal!
Me ha comentado recientemente uno mis "alumnos" (jejeje) que ha tenido problemas para comunicarse por USB con la placa.
La razón es que los archivos de ejemplo que puse utilizan a propósito el menor número de rutinas posibles para establecer la comunicacion USB-SERIAL, de modo que por lo que veo algunos de vosotros puede tener problemas cuando os conectais, sobre todo si no cerrais después de cada uso esta comunicación (boton disconnect del terminal de jaledit).
Como ya os dije en la clase y en el tutorial, lo ideal si quereis empezar cualquier proyecto es mirar los ejemplos que vienen con el archivo jallib-pack-2.4m-0.5.0.zip, que están en la carpeta samples y hechos por personas mayores; los ejemplos que nos interesan tienen de nombre 18f4550***.jal, pudiendo ver ejemplos de USB-Serial, ADC, PWM... para nuestro micro (eso si, acordaos de incluir la directiva que añade el bootloader o no os funcionará en nuestra placa!)
En cualquier caso para hacerlo más sencillito os comento una cosa que podeis hacer para evitar problemas a la hora de conectarse por el protocolo USB-serie:
Justo después de haber inicializado la comunicacion con usb_serial_init() debemos incluir la siguiente condicion;
while(usb_cdc_line_status()==0) loop
end loop
que viene a decir "mientras no esté configurado el USB, sigo esperando"
O sea, en cada ejemplo que tengamos de usb, justo debajo de:
usb_serial_init()
ponemos
while(usb_cdc_line_status()==0) loop
end loop
y ya os resolvería estos problemas a quien los tuviera.
Esto es ya más friki, pero me parece (no tengo forma de comprobarlo) que lo que se consigue obligando a que espere es evitar que las rutinas de configuracion del protocolo (fundamentalmente asignacion de direcciones y proceso de handshake) se vean interrumpidas por peticiones de lectura, que es lo que causa el bloqueo del protocolo CDC. También conseguimos evitar que nuestro buffer RAM USB del pic18f4550 esté lleno al inicio, evitando ver las palabrotas esas en forma de caracteres raros que salen a veces cuando lo conectais, y bueno, queda más limpito!
AGUR!!