Por el momento tengo la placa montada similar a esta:
Este es el programa:
#include <18F2550.h>#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=48000000)//frecuencia del reloj
#include ".\libreria\usb_cdc.h"
#rom int 0xf00000={1,2,3,4}
void main() {
int8 x;// declra una variable tipo numeros enteros dentro de la foncion main.
set_tris_b(0x00);//pone como salida todo el puerto b
set_tris_a(0xfd); //configura varios pines del puerto a como entrada ( los del usb y otros mas)
output_b(0x00);//
usb_cdc_init(); // Configuramos al puerto virtual.
usb_init(); // Inicializamos el stack USB.
while(!usb_cdc_connected()) {} // espera a detectar una transmisión de la PC (Set_Line_Coding) por el usb
do{
usb_task();//
if (usb_enumerated())
{ // Espera a que el dispositivo sea enumerado por el host.
if(usb_cdc_kbhit())
{ // En espera de nuevos caracteres en el buffer de recepción.
x=usb_cdc_getc();// guarda en una variable 'X' el valos que manda el pc
output_b(x);//envia por el puerto b (el puerto b no va al usb,va a los motores.
}
}
//dentro del bucle principal las demas tareas
}while (TRUE); //
}
Igualmente he editado los archivos necesarios
[SourceDisksNames]
[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_04D8&PID_0001 /// se edita : vendor : 04D8 y el id 0001 " yo quise el 0001"[/b]
;------------------------------------------------------------------------------
; Windows 2000/XP Sections
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; String Definitions
;------------------------------------------------------------------------------
[Strings]
MCHP="Prueba CDC" // modificable
MFGNAME="Prueba CDC"// modificable
DESCRIPTION="DISPOSITIVO USB_CDC" // nombre
SERVICE="driver de emulacion de puerto serial// modificable"
y el picUSB_CDC.h
0x10,0x01, //usb version in bcd ==2,3
0x02, //class code. 0x02=Communication Device Class ==4
0x00, //subclass code ==5
0x00, //protocol code ==6
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES ==7
08,0x04, //vendor id (0x04D8 is Microchip)
0x01,0x00, //product id yo quise el 0001 nota : es el mismo vendor y id de el driver que modificaron
// RR2 cambiado para 0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ?) ==8,9
// compatibilidad con .inf 0x33,0x00, //product id ==10,11
// de Microchip
y
8, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'C',0,
'D',0, // modificable
'C',0,[/b]
//string 2 --> nombre del dispositivo
14, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'P',0,
'R',0,
'U',0,
'E',0,
'B',0,
'A',0, // modificable
};
Esto es lo que ocurreLa compilación no da ningun error, la programacion es correcta.
A partir de este momento debería iniciarse el administrados de dispositivos cada vez que conectemos el pic a cualquier ordenador, sin embargo no ocurre.
Muchas gracias,estoy desesperado...