Teclado USB con 18F2450, no funciona en MSDOS.

#1
Tengo un teclado USB emulado con un PIC18f2450 y me funciona perfecto en Windows, pero cuando lo intento usar en MSDOS no detecta ninguna tecla, en cambio tengo otro teclado usb de la marca logitech y si funciona perfecto en MSDOS y en Windows, pero el micro solo en windows, alguien sabe a que se debe, ya intente de todo, copie el descriptor del logitech y solo consegui enumerarlo, pero me sigue sin leer las teclas, alguna idea?
 
#3
Pues, debe de haber algo especial en la bios para que detecto los paquetes de datos, nose si tenga que ver la velocidad, al descriptor de modifique:

Código:
 //interface descriptor 1 (MOUSE)
         USB_DESC_INTERFACE_LEN, //length of descriptor      =9
         USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04)       =10
         0x00, //number defining this interface (IF we had more than one interface)    ==11
         0x00, //alternate setting     ==12
         1, //number of endpoints for this interface  //13
         0x03, //class code, 03 = HID     ==14
         0x01, //subclass code //boot     ==15    <---le cambie a 1 que es boot
         0x01, //protocol code       ==16    <----y el protocolo a 1 que es keyboard
         0x00, //index of string descriptor for interface      ==17
con ese codigo logre que la bios lo enumerara, pero no logro enviarle la cadena de datos. Utilizo la siguiente rutina pero no genera ningun caracter en pantalla:

Código:
void usb_keyboard_task(void) {
   //static char Char_Tx;
   //disable_interrupts(global); 
   if(hay_dato==1){
      hay_dato=0;
      tx_msg[3]=dato;
      usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);
      delay_ms(5);
                  }
   else{

      tx_msg[3]=0;
      usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);
      delay_ms(5);
       }
  // enable_interrupts(global);
}
Si alguien tiene alguna sugerencia se los agradeceria..
 
#6
Tal vez si lo configuro en modo low speed, ya que el micro esta en full speed, pero no se como alguien sabe?
ya que cuando agrego esta linea:

Código:
#DEFINE USB_USE_FULL_SPEED FALSE
No me enumera windows el teclado. Como lo podre configurar en low speed?
 

Temas similares

Arriba