Autor Tema: USB-HID Teclado  (Leído 20506 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
USB-HID Teclado
« en: 21 de Abril de 2008, 13:34:20 »
Hola muchachos del foro.

Necesito su valiosa ayuda.

Estoy trabajando el programa del manejo del pic para conectarlo al puerto USB en configuracion HID emulando un teclado (el programa es del gran RedRaven). La configuracion es exitosa y corre bien, pero me encontre con lo siguiente: si envio la cadena "hhooolllaaa" al pc desde el pic, veo con sorpresa que en el editor de texto abierto en donde recibo el dato, se escribe "hola", y yo estaba esperando la palabra completa tal y como la habia enviado!!! :(.

No se porque no escribe los caracteres si estan repetidos, por ejemplo si envio "1000" solo aparece "10". Intente enviar 5 bytes en el mismo array de transmision, es decir llenando los espacios del vector tx_msg[3:7] y  ahi si aparecen bien, pero me genera problemas en otros caracteres, se desaparecen algunos en los envios.

El codigo es el siguiente:
Código: [Seleccionar]

#include <18F2550.h>
#device adc = 10
#fuses XT,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,FCMEN,PUT
#use delay(clock=4M)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,bits=8, parity=N)

#include <ctype.h>

#DEFINE USB_HID_DEVICE  TRUE

#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT    //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_TX_SIZE 8

#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT    //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_RX_SIZE 8

#include <pic18_usb.h>
#include "kbd_HID.h" //USB Configuration and Device descriptors for this UBS device
#include "usb.c" //handles usb setup tokens and get descriptor reports


#define LED1    PIN_B0
#define LED2 PIN_B1
#define shift 0x02
#define ctrl 0x01
#define alt 0x04

#define LED_ON  output_high
#define LED_OFF output_low

int8 rx_msg[USB_EP1_RX_SIZE];
int8 tx_msg[8]={2,0,0,0,0,0,0,0};
char data_p[20]="holllaaaa";

int1 data_rx_ok=0;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int8 char_2_usb_kbd_code(char c)
{
    int8 ic=0;

if(isalnum(c))
{
if(isdigit(c))
{
tx_msg[1] = 0x00;
if(c=='0')
return (0x27);
else
{
ic = c-0x13;
return (ic);
}
}

if(islower(c))
{
tx_msg[1] = 0x00;
ic = c-0x5d;
return (ic);
}
else
{
tx_msg[1] = shift;
ic = c-0x3d;
return (ic);
}
}

else
{
switch (c)
{
case '!' : ic=0x1e; tx_msg[1]=shift; break;
case '@' : ic=0x1f; tx_msg[1]=shift; break;
case '#' : ic=0x20; tx_msg[1]=shift; break;
case '$' : ic=0x21; tx_msg[1]=shift; break;
case '%' : ic=0x22; tx_msg[1]=shift; break;
case '^' : ic=0x23; tx_msg[1]=shift; break;
case '&' : ic=0x24; tx_msg[1]=shift; break;
case '*' : ic=0x25; tx_msg[1]=shift; break;
case '(' : ic=0x26; tx_msg[1]=shift; break;
case ')' : ic=0x27; tx_msg[1]=shift; break;
case '\n': ic=0x28; tx_msg[1]= 0x00; break;//INTRO
case 0x1b: ic=0x29; tx_msg[1]= 0x00; break;//ESC
case 0x08: ic=0x2a; tx_msg[1]= 0x00; break;//BCKP
case 0x09: ic=0x2b; tx_msg[1]= 0x00; break;//TAB
case ' ' : ic=0x2c; tx_msg[1]= 0x00; break;//SPACE
case '-' : ic=0x2d; tx_msg[1]= 0x00; break;
case '=' : ic=0x2e; tx_msg[1]= 0x00; break;
case '[' : ic=0x2f; tx_msg[1]= 0x00; break;
case ']' : ic=0x30; tx_msg[1]= 0x00; break;
case 0x5c: ic=0x31; tx_msg[1]= 0x00; break;
case '_' : ic=0x2d; tx_msg[1]=shift; break;
case '+' : ic=0x2e; tx_msg[1]=shift; break;
case '{' : ic=0x2f; tx_msg[1]=shift; break;
case '}' : ic=0x30; tx_msg[1]=shift; break;
case '|' : ic=0x31; tx_msg[1]=shift; break;
case ';' : ic=0x33; tx_msg[1]= 0x00; break;
case 0x27: ic=0x34; tx_msg[1]= 0x00; break;
case 0x60: ic=0x35; tx_msg[1]= 0x00; break;
case ',' : ic=0x36; tx_msg[1]= 0x00; break;
case '.' : ic=0x37; tx_msg[1]= 0x00; break;
case '/' : ic=0x38; tx_msg[1]= 0x00; break;
case ':' : ic=0x33; tx_msg[1]=shift; break;
case '"' : ic=0x34; tx_msg[1]=shift; break;
case '~' : ic=0x35; tx_msg[1]=shift; break;
case '<' : ic=0x36; tx_msg[1]=shift; break;
case '>' : ic=0x37; tx_msg[1]=shift; break;
case '?' : ic=0x38; tx_msg[1]=shift; break;
default  : ic=0x00; tx_msg[1]= 0x00; break;

}
return (ic);
}



}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// usb_keyboard_task()
//
// Sends a packet of keyboard data.  The protocol was specified in the HID
// report descriptor (see usb_desc_kbmouse.h), and is:
//     tx_msg[0]   = HID report id (2)
//     tx_msg[1]   = modifier (an 8bit bitmap of shift, tab, alt keypress) (0x01=ctrl, 0x02=shift, 0x04=alt)
//     tx_msg[2]   = const 0
//     tx_msg[3:7] = an array of held down keys.  a=4, b=5, etc.
//                   if msg[2:7]={0} then no keys are held down
//
//     rx_msg[1] = HID report id (2)
//     rx_msg[0] = 5bit bitmap of led status
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void usb_keyboard_task(char data)
{
tx_msg[3] = char_2_usb_kbd_code(data);
usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void usb_rx_task(void)
{

   if (usb_kbhit(1))
      usb_get_packet(1, rx_msg, sizeof(rx_msg));
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************** programa principal ********************************************/
void main()
{
int8 i = 0;

LED_ON(LED2);
LED_OFF(LED1);

usb_init();
    usb_task();
    usb_wait_for_enumeration();
delay_ms(1000);
data_rx_ok = true;
    while (TRUE)
  {
usb_task();
LED_OFF(LED2);
if (usb_enumerated())
{
LED_ON(LED1);
LED_OFF(LED2);
if(data_rx_ok)
{
data_rx_ok = false;
for(i=0;i<19;i++)
{
    usb_keyboard_task(data_p[i]);
delay_ms(30);
}
// inicbuff();
}

   
    }
    }
}

Lo que hace el programa es enviar una sola vez el dato data_p. La funcion char_2_usb_kbd_code me pasa de ascii a ps/2. Cambie el cristal a 20MHz para trabajarlo a HS y tampoco me dio resultado.

La configuracion del USB esta bien, ya que simula bien y la he montado y tambien todo corre bien.

Gracias por la ayuda de antemano.
El papel lo aguanta todo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: USB-HID Teclado
« Respuesta #1 en: 21 de Abril de 2008, 14:38:01 »
El programa parece estar bien.
No se si CCS ya lo hará al asignar la cadena,pero yo inicializaría a cero todo el array data_p para asegurarte de que no se envían cosas raras después de haber enviado los caracteres...o mejor modifica los límites del FOR para no enviar datos inútiles.

¿Probaste a intercalar un paquete con los bytes 3:7 a 0 entre caracteres iguales?
« Última modificación: 21 de Abril de 2008, 14:40:15 por Modulay »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #2 en: 21 de Abril de 2008, 16:19:59 »
Gracias por contestar Modulay.

Si, despues del envio del dato correspondiente, colocaba a cero el registro tx_msg[3] y volvia a enviar el dato (en el programa tengo asignado enviar "null" si se envia cero) pero igual, no acepta los caracteres repetidos.

Cuando envio datos en los registros tx_msg[3:7], si los muestra, el problema es que en otros envios de strings mas largos no funciona bien, se come ciertos caracteres, y ademas no puedo controlar si es mayuscula o minuscula o simbolo, ya que en la misma transmicion va un mismo tx_msg[2] quien controla el "shift", asi que no podria enviar "$2000", me saldria "42000" :(.

Segui los pasos del envio con el debbuger del Proteus 7.2 SP2 y lo probe con caracteres distintos ("hola") y con caracteres iguales ("hollllaaaa") y el proceso que sigue me parecio el mismo....no se si de pronto se me fue la atencion y no me percate de algun detalle....de pronto si :mrgreen:

Por eso decidi enviar solo una vez el string, pero vaya sorpresa que me he llevado al ver que no envia los caracteres repetidos :shock:.
El papel lo aguanta todo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: USB-HID Teclado
« Respuesta #3 en: 22 de Abril de 2008, 05:54:30 »
Citar
Cuando envio datos en los registros tx_msg[3:7], si los muestra, el problema es que en otros envios de strings mas largos no funciona bien, se come ciertos caracteres, y ademas no puedo controlar si es mayuscula o minuscula o simbolo, ya que en la misma transmicion va un mismo tx_msg[2] quien controla el "shift", asi que no podria enviar "$2000", me saldria "42000"

¿Quieres decir que si envías los caracteres uno a uno sin hacer uso de bucles ni strings te funciona bien incluso con caracteres repetidos?
Para activar el shift,se supone que tienes que poner a 1 el bit 1 de tx_msg[2]...no logro deducir de tu explicación si es así como lo estás haciendo.

Puedes hacer uso de un monitor usb para comprobar las transferencias,te será de ayuda

http://www.usblyzer.com/

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #4 en: 22 de Abril de 2008, 13:32:36 »
Hola.

El envio, con 5 bytes al mismo tiempo lo hago asi:
Código: [Seleccionar]

for(i=0;i<19;i=i+5)
{
    usb_keyboard_task(data_p[i], data_p[i+1], data_p[i+2], data_p[i+3], data_p[i+4]);
delay_ms(30);
}

y la funcion de envio cambia de la siguiente manera:

Código: [Seleccionar]
void usb_keyboard_task(char data1, char data2, char data3, char data4, char data5)
{
tx_msg[3] = char_2_usb_kbd_code(data1);
tx_msg[4] = char_2_usb_kbd_code(data2);
tx_msg[5] = char_2_usb_kbd_code(data3);
tx_msg[6] = char_2_usb_kbd_code(data4);
tx_msg[7] = char_2_usb_kbd_code(data5);
usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);

}

El problema alli es que si tx_msg[3] = 'A', debo enviar "shift" para que salga mayuscula, pero como se envian varios caracteres, y la funcion de ascii a ps/2 cambia el tx_msg[1] en funcion del caracter leido, pues enviara el correspondiente al leido en el ultimo caracter (data5).

Enviando de esa manera si lee los digitos repetidos, pero se pierde control sobre cada caracter (si es mayuscula o minuscula u otro simbolo).

El debugger si lo he hecho con el proteus, y me parece que es el mismo procedimiento para caracteres diferentes que para iguales, sigue la misma ruta.

Los bucles si los uso siempre para enviar el string (uso el for) y lo que hago es cargar el string al tx_msg[3] para enviar dato a dato o cargar de tx_msg[3] al tx_msg[7] para enviar de 5 bytes en 5 bytes solo que ahi me toma la configuracion del tx_msg[1] del ultimo caracter cargado.
El papel lo aguanta todo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: USB-HID Teclado
« Respuesta #5 en: 22 de Abril de 2008, 14:19:37 »
Raro raro,la verdad.
Cuando he aludido a enviar los caracteres uno a uno me refería estrictamente a eso,a enviar un caracter por paquete,a lo bestia,sin bucles.

usb_keyboard_task(data_p[0]);
usb_keyboard_task(data_p[1]);
usb_keyboard_task(data_p[2]);
usb_keyboard_task(data_p[3]);
usb_keyboard_task(data_p[4]);
...
...

Probarlo así,en función de como se comporte, puede servir para deducir si el fallo está en algún escondido rincón del programa o es cosa de las especificaciones HID.Aunque ya digo que no le veo fallo al programa.

Por cierto,yo le tengo más simpatía a la función usb_puts() que a usb_put_packet().Quizá es sólo manía,pero me ha ido mejor con la primera.
« Última modificación: 22 de Abril de 2008, 14:23:18 por Modulay »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #6 en: 22 de Abril de 2008, 17:24:38 »
ok, voy a probar enviarlo como me recomiendas a ver que encuentro en el debugger, aunque eso es casi lo mismo que el for cierto? pero a veces ocurren cosillas por ahi :mrgreen:

Voy a revisar el usb_puts() a ver como me va, pero me sigue pareciendo raro que no diferencie los caracteres cierto??? :shock:

Por un momento pense que para enviar teclas iguales habria que esperar un tiempo mas largo (justo el que uno debe esperar cuando deja una tecla presionada y comienzan a salir los caracteres repetidos)....pero no se como hacerlo!!!!! :D

Voy a revisar con lo que me recomiendas y ya posteo el resultado

Gracias
El papel lo aguanta todo

Desconectado gabimelgar

  • PIC10
  • *
  • Mensajes: 11
Re: USB-HID Teclado
« Respuesta #7 en: 01 de Julio de 2008, 18:08:33 »
Hola Gente del foro!
Soy nuevo en el foro y primero que nada quiero agradecerles a todos porq me ha sido de gran utilidad todo lo q aqui he encontrado. Espero poder aportar tambien algunas cosillas utiles  :mrgreen:
El problema que tengo es el siguiente:
Necesito comunicar un pic (18f4550) con la pc a travez de usb (hasta aqui todo genial, lo he logrado gracias a este ejemplo del famosisimo amigo RedPic http://www.todopic.com.ar/foros/index.php?topic=13418.0;do=Bookmark)
Lo que sucede es que de esta forma el pic me responde, solo si yo le pido algo, pero no he podido lograr que el pic por ejemplo emule un teclado, es decir que cuando el pic "lo decide" puede enviar un dato al pc y este lo escuche instantaneamente (a no ser q ponga un while infinito en la aplicacion hecha en delphi con un MPUSBRead todo el tiempo, cosa que no me parece para nada optimo).
Es por eso que intenté emular un HID (un teclado mas precisamente) utilizando este otro ejemplo: http://picmania.garcia-cuervo.net/USB_2_HIDTransfers.php
Pero cuando conecto el pic, me pide los drivers para el "USB keyboard by RedPic" cosa que no he podido solucionar, ya que no se que drivers ponerle.
Lo mismo me pasa con los ejemplos de HID que trae el CCS, me pide unos drivers cuando conecto el pic, y no se donde conseguirlos.
Ya instalé los drivers de microchip para USB, intenté toqueteando un poco el usb_kbd_HID.h, pero sigo sin conseguir nada.. lo mas curiosos es que lo conecté al pc de un amigo que tiene instalado el windows Vista (yo tengo el XP) y reconocio el "USB keyboard by RedPic" perfectamente, sin instalar nada..
Alguien puede darme una mano con esto? que es lo que tengo que hacer para poder emular un teclado generico comun y corriente sin que me pida ningun tipo de drivers? o en su defecto, donde consigo los drivers para el dichoso "USB keyboard by RedPic"? estoy algo perdido y ya no se me ocurre que mas tocar.
Les doy las gracias a todos de antemano!
Saludos!
Gabi

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #8 en: 01 de Julio de 2008, 18:14:21 »
Hola.

Cuando usas la configuracion HID para conectar al PC (tipo teclado), no te debe pedir ningun driver .... el PC lo reconoce como un dispositivo HID generico. Si usas la configuracion CDC si hay que instalar el driver, el CCS lo tiene en la carpeta dirvers ... debes tener cuidado en el valor del PID y el VID para que se nstale correctamente  y ya.

Saludos
El papel lo aguanta todo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: USB-HID Teclado
« Respuesta #9 en: 01 de Julio de 2008, 18:16:00 »
Es la primera noticia que tengo de que el proyecto USB-HID que hice que pida un driver  :shock: :shock: :shock:

Yo tengo Windows XP y funciona a la primera, lo reconoce y no pide nada de nada. No se que podrá ser.

En el artículo que mencionas, EL USB DESENCADENADO : HID USB lo digo unas cuantas veces: No necesita driver alguno. Y así me ha funcionado siempre.

 
« Última modificación: 01 de Julio de 2008, 18:21:08 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado gabimelgar

  • PIC10
  • *
  • Mensajes: 11
Re: USB-HID Teclado
« Respuesta #10 en: 01 de Julio de 2008, 18:37:22 »
Uau!! no puedo creer lo rapido q respondieron! muchisimas gracias por eso!
Respecto a los drivers leí casi 10 veces el  EL USB DESENCADENADO : HID USB y como vos decis RedPic, en ningun lado habla de drivers, es por eso que estoy seguro que algo mal estoy haciendo...
Con respecto a lo q MLO_ dice, creo q puede venir por ahi.. no he tocado el valor de PID y VID del .h lo he dejado tal cual está, tendria que cambiar algo de eso? de donde saco los valores q corresponderian?
Gracias de nuevo!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #11 en: 01 de Julio de 2008, 21:21:23 »
Hola.

El VID y el PID solo se usan si estas usando la configuracion CDC (Comunication Device Class), pero el ejemplo del gran Diego es HID, asi que no necesita esos valores, los archivos que se usan son otros.

De todas maneras, esos valores estan en el driver y deben coincidir con los del firmware del PIC, si no no podras utilizar el COM virtual que se genera cuando se usa CDC.

Saludos
El papel lo aguanta todo

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: USB-HID Teclado
« Respuesta #12 en: 29 de Julio de 2008, 19:16:21 »
Hola!.

Estoy intentando usar el HID, y tambien como guia tengo el gran ejemplo del Maestro RedPic.  Estoy intentando simularlo con el Proteus, y el compu lo detecta, y esperando que no pida driver...NOP Windows saca la ventana de instalar driver, le doybuscar automaticamente y nunca lo encuentra, asi que no pude ni probarlo..  :(

Alguien ya intento por simulacion?, hay que hacer algo raro al proteus?.

SALUDOS!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: USB-HID Teclado
« Respuesta #13 en: 30 de Julio de 2008, 19:19:27 »
Hola PicMouse

Cuando probe por primera vez el HID tipo teclado me toco "guiar" al Proteus para seleccionar el controldador generico para teclado, y una vez lo hice, funciono sin problemas de ahi en adelante.

Saludos
El papel lo aguanta todo

Desconectado adrianjpc

  • PIC10
  • *
  • Mensajes: 10
    • uElectronika
Re: USB-HID Teclado
« Respuesta #14 en: 12 de Abril de 2010, 19:01:36 »
hola MLO__ yo tambien estoy trabajando con el protocolo USB hid de tipo teclado, pero tengo el mismo problema que tu tienes y no lo eh solocionado
al paracer es por utilizar cadenas, tiempos mal medidos, windows no captura bien la onformacion, etc..

tengo el siguiente codigo :

#include <18F4550.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#DEFINE USB_HID_DEVICE  TRUE
#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT   //Turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   //Turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_TX_SIZE 8
#define USB_EP1_RX_SIZE 8

#include <pic18_usb.h>                           //Microchip PIC18Fxx5x Hardware soportada por CCS's PIC USB driver
#include <.\include\usb_kbd_HID.h>    //USB Configuration and Device descriptors for this UBS device
#include <usb.c>                                 //handles usb setup tokens and get descriptor reports
#include <ctype.h>

#byte portb=0x06
#define LED1    PIN_D0
#define LED2    PIN_D1

#define LED_ON  output_high
#define LED_OFF output_low

int8 rx_msg[USB_EP1_RX_SIZE];
int8 tx_msg[8]={2,0,0,0,0,0,0,0};
char envia[10]={0,0,0,0,0,0,0,0,0,0};//40(return)

void show8nums(unsigned int32 num)
{
   char numch[1];
   int j;
   if (num<m)
   {
   int j;
     for( j=0;j<=7;j++)
      { 
          numch[0]=num%10;
         
             if(numch[0]==0)
             {
                 envia[8-j]=39;
             }
              else
              {
                 envia[8-j]=numch[0]-1+30;
              }
         delay_ms(10);         
         num=num/10;
       
      }
     
   }
 }

void usb_rx_task(void){

   if (usb_kbhit(1)){
      usb_get_packet(1, rx_msg, sizeof(rx_msg));
   }
}


void main() {
   int8 i;
   init();                              //inicializamos el USB
   usb_task();                    //habilita periferico usb e interrupciones
   usb_wait_for_enumeration();     //esperamos hasta que el dispositivo usb sea configurado por el host
   
   LED_ON(LED2);
   LED_OFF(LED1);
   i=0;
   
   if (usb_enumerated())
   {
     usb_rx_task();
     delay_ms(1000);
     LED_ON(LED1);
     LED_OFF(LED2);
     tx_msg[3]=0; //clear
     tx_msg[4]=0;// clear;
     tx_msg[5]=0;// clear;
     tx_msg[6]=0;// clear;
     tx_msg[7]=0;// clear;
     usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);

      show8nums(11223344); //numero que se tiene que enviar
               
 
             while(i<=10){
             
              tx_msg[7]=envia[ i ];
              usb_puts(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);
              delay_ms(60);
              i+=1;
             }
     
      i=0;
      LED_ON(LED2);
      LED_OFF(LED1);
    }
 }



Al conectar el dispositivo a la computadora solo me aparece 1234. ya eh intentado de todoo y no eh podido resolverlo   :5]
« Última modificación: 12 de Abril de 2010, 19:05:09 por adrianjpc »


 

anything