Me contesto yo solo con respecto a la comunicación cdc sobre usb utilizando el proton IDE, ya que logre un primer "avance" sobre este tema, aquí dejo mi código, que bien sirve como primera prueba para los que estamos iniciando, lo único que hace es abrir el puerto: leer lo que se teclea y en el momento de presionar "enter", lo recibe el microcontrolador y regresa exactamente lo mismo a la computadora.
Yo personalmente utilizo el programa del "serial comunicator" incluido en el proton, y no se requiere mas que compilar y grabar el .HEX en el microcontrolador.
Código:
'****************************************************************
'* Name : USBSERIE.BAS *
'* Author : Miguel Angel Borbolla Bonomi *
'* Notice : Copyright (c) 2012 CIBERTLAN *
'* : All Rights Reserved *
'* Date : 01/06/2012 *
'* Version : 1.0 *
'* Notes : SE INTENTA COMUNICACION SERIAL VIA USB *
'* : *
'****************************************************************
Device = 18F2550
Xtal = 48
USB_Descriptor = "CDCDesc.INC" ' Carga el descriptor de la clase CDC (Puerto COM virtual)
Dim PP0 As Byte System ' VARIABLE QUE CONTIENE ESTADO del USBPOLL.
Dim Buffer As String *20' Declaramos (sobradamente) un buffer de 20 bytes. (Max.=64 bytes)
DelayMS 500 ' Damos tiempo para inicializarse.
Clear ' Pone a cero toda la memoria RAM del PIC antes de comenzar.
All_Digital = On
Repeat
USBPoll ' EN ESTE BUCLE ESPERAMOS A QUE EL MICRO SEA RECONOCIDO POR WINDOWS
Until PP0=6
Inicio:
Repeat
USBIn 3, Buffer,Auto ' EN ESTE BUCLE SE LLENA EL BUFFER HASTA QUE DEMOS "ENTER"
Until STATUS.0 = 0' EN LA CONSOLA DE "serial comunicator"
Repeat
USBOut 3, Buffer,Auto ' EN ESTE BUCLE SE ENVIA EL BUFFER A LA CONSOLA DE "serial comunicator"
Until STATUS.0=0
GoTo Inicio
Ojala sirva a los demás para comprobar que tanto el hardware como el software, funciona bien, ya después iremos investigando mas al respecto.
Las conclusiones que saco y de por que no me funcionaba el codigo que comparto mas arriba en otro post, es que se debe mantener un constante "monitoreo" del USBPOLL a no mas de cada 5US. Ya que si no se pierde la comunicacion.
Aquí dejo la nota obtenida del manual del propio proton:
Notes for 18F devices
The method used for USB on the 18F devices is a polled method, meaning that no interrupt is
working in the background. However, this does mean that either a USBpoll, USBin, or USBout
command needs to be executed approximately every 10ms for HID and 5ms for CDC or the
USB interface connection will be lost.
Saludos y buen dia