in ,

Thug lifeThug life

Conecta tus proyectos al puerto USB

El puerto serie y el puerto paralelo ya quedaron atrás. Con la superpoblación de ordenadores portátiles, el espacio de acción de los enlaces por puerto serie comienza a reducirse. Lo mismo ocurre con las conexiones por puerto paralelo. Ya ni siquiera los ordenadores de mesa traen un puerto de este tipo utilizado antiguamente para las impresoras. Hoy todo trae conectividad USB. El mouse, el teclado, la impresora multifunción, el teléfono móvil, el pen drive, el disco duro portátil, el Blu-ray Player, el módem, el router, todo se conecta a través de un puerto USB. En este artículo veremos la manera más sencilla de realizar un circuito con un microcontrolador, encender y apagar un LED desde nuestro ordenador portátil, en una aplicación hecha por ti mismo a través del puerto USB. Conéctate.

Las antiguas conexiones de puerto serie o paralelo permitían velocidades de transferencia de datos de hasta 115 kbps., mientras que una conexión USB 1.1 alcanza los 1.2 Mbps. y una USB 2.0 logra 480 Mbps. Sin contar con la sencillez que supone utilizar un único tipo de conector para todos los periféricos necesarios, la posibilidad de conectar y desconectar sin tener que reiniciar el ordenador a cada cambio de equipo es una ventaja que ha llevado al trabajo móvil hasta su máximo potencial. Disponer de instrumentos de campo o de equipos portátiles que permitan monitorear el clima en el lugar de los hechos es, gracias al ordenador móvil, un avance que complementado con la practicidad de los puertos USB se ha ganado la preferencia de la mayoría de los usuarios. Es hora entonces que comiences a transitar el camino de las aplicaciones basadas en conectividad USB.

El programa Proton Development Suite posee entre sus herramientas más importantes la que conocemos como EasyHID USB Wizard. Esta prestación se encarga de manera automática de generar los programas necesarios para poder utilizar los microcontroladores de la línea PIC 18F2455, 18F2550, 18F4455 y 18F4550, que será el que utilizaremos para nuestro ejemplo. El código para el PIC, lo genera tanto para Pic Basic Pro como para Proton, mientras que para el ordenador, se encarga de generar el código en Borland Delphi, Visual C++ y Visual Basic. Por supuesto que todos estos parámetros se pueden seleccionar mientras se avanza en la preparación del software. En apenas muy pocos pasos, ya podemos tener una aplicación HID USB lista para comenzar a cargarla de código. Tanto desde el Microcode Studio Plus como desde Proton Development Suite, al iniciar la aplicación, nos encontraremos con pantallas a las que les iremos cargando los datos que el sistema nos vaya pidiendo.

Como a este sistema lo estamos preparando para manejar y operar el receptor multibanda NeoTeo, los datos que le agregaremos estarán en coincidencia con esta aplicación. De allí surgen los nombres que ves en las imágenes. Aquí, en esta pequeña guía, sólo te daremos un ejemplo práctico para que te vayas familiarizando con el sistema y sus pequeños secretos para lograr una conexión exitosa. Las pantallas que comiencen a aparecer son las que ves en imagen; tú les colocarás el nombre de la aplicación que más desees. Lo que NO debes cambiar en la segunda pantalla son los números de Vendor ID y Product ID. Estos números son asignados por el organismo que regula la autenticidad de los productos USB donde puedes comprar por U$S 4mil una membresía anual con números otorgados exclusivamente a tu desarrollo. Por lo tanto, nuestro consejo es que utilices los números de muestra que provee la aplicación para los proyectos domésticos que realices.

Luego avanzas a la pantalla que te permite ajustar los valores de tiempo en que el ordenador controlará la existencia de la conexión USB (Polling). Este punto es muy importante porque el ordenador interrogará por el enlace y, si no lo encuentra (Atached), te expulsará la conexión y quedarás inactivo (Dettached). Esta acción de comprobación puede ser realizada en forma constante mediante una interrupción con un Timer (TMR1) del microcontrolador o a través de un programa organizado y estructurado de manera apropiada dentro del PIC. El tamaño de los Buffers de entrada y salida quedará en 8 bytes. Hasta que no logres tener buena práctica en la realización de esta clase de aplicaciones, te recomendamos utilizar siempre los valores indicados por default. Son más que suficientes para las aplicaciones a nivel inicial como la que haremos en esta entrega.

En la pantalla siguiente puedes seleccionar el lugar donde guardarás los archivos que se cargarán en dos carpetas individuales: una para el programa base del microcontrolador y otra para el software de aplicación que utilizarás en el ordenador. Siempre trata de buscar una locación de nombre corto que se encuentre cercana al árbol raíz del disco duro porque con nombres extensos el compilador puede generar errores al armar los programas. Debajo de la selección del PIC, tienes un casillero para habilitar la generación automática de un programa manejado con interrupciones que mantengan “viva” la conexión USB durante todo el tiempo que estés conectado. Como puedes ver, no tendrás que preocuparte por realizar un programa con los tiempos bien ajustados. Listo, eso es todo. A la siguiente pantalla, el sistema comenzará a organizar y armar el código; tú sólo debes esperar a que termine su trabajo sin errores.

EasyHID hará su trabajo y tú esperarás el resultado listo para usar

Una vez que hayas realizado estos cinco sencillos pasos, tendrás los programas listos para comenzar a trabajar. Lo primero que debes hacer es definir el tipo de hardware que utilizarás alrededor del microcontrolador seleccionado y en función de él organizar todo el resto de la aplicación. Es decir, en este caso, sólo colocaremos un pulsador y un LED como componentes adicionales y un LCD de 16 caracteres y dos líneas. Además de definir el hardware que utilizarás, también aquí se define la idea básica del software que crearás para utilizar y controlar tu aplicación desde el ordenador. Para nosotros es importante poder controlar de manera autónoma el dispositivo que hemos ideado con el PIC y poder hacerlo a través del ordenador, si es que lo deseamos. En este último caso, al conectarlo al ordenador portátil, los mandos en el hardware dejarán de funcionar y el LCD nos indicará que estamos conectados al ordenador y podremos así operar el hardware directamente a través del puerto USB.

El circuito
En el circuito podemos ver claramente definidos los sectores más importantes del desarrollo: el PIC 18F4550, al centro de la imagen, el display LCD 16X2, el conector USB, el conector ICSP para poder programar el PIC en forma serial y sin necesidad de extraerlo del proyecto, el cristal de 20Mhz, el pulsador, el LED que elegimos de color verde y, por último, el ingreso de la señal de 5 volts provenientes desde el ordenador a través del conector USB. Muchos desarrollos basan su alimentación en esta tensión que extraen desde el conector. Un ejemplo de esto es el mecanismo de la carga de baterías de muchos MPX (MP3, MP4, MP5, etc.) o de algún GPS. Los quemadores de PICs suelen extraer alimentación desde este puerto y muchas otras aplicaciones también lo hacen. Debes tener en cuenta que esta salida de tensión tiene un máximo posible de 500 miliamperes; si te excedes de este consumo, puedes dañar la salida del puerto. En muchas oportunidades bastará con reponer un resistor fusible en el motherboard, pero te aconsejamos no jugar con esta suerte.

El circuito propuesto con conexión USB utilizando el PIC 18F4550

Además, debes recordar que en la tercera pantalla del EasyHID USB Wizard, por default, esta corriente se limita a 50 mA. Este pequeño valor será suficiente para extraer de allí la información que le daremos al programa del PIC para indicarle que nos estamos conectando al ordenador. Pero antes de escribir siquiera una línea de código de programa, debemos grabar el PIC con el firmware que nos generó el EasyHID (previo compilarlo y obtener el .HEX). Luego de grabarlo, procederemos a conectarlo al ordenador para que éste lo reconozca como un nuevo dispositivo HID (Human Interface Device) y para que estemos seguros de que no hayan existido errores en la generación del código, al menos, en el correspondiente al microcontrolador.

El nombre del producto seleccionado en la primera imagen deberá aparecer al conectar el dispositivo avisando que ha encontrado un nuevo hardware. Luego de esto veremos el mensaje que indica que se trata de un dispositivo de interfaz humana USB. Si todo marcha correcto, finalizará la instalación indicando que el dispositivo se ha instalado con éxito y que funciona correctamente. Si todo es así, dentro de Configuración > Panel de Control > Sistema > Hardware > Administrador de Dispositivos, encontrarás una imagen como la que puedes ver a la derecha. Esto es válido para el SO XP. Importante: No intentes ponerte a jugar queriendo insertar y extraer varias veces el conector del ordenador ya que el dispositivo creado se identificará una vez y, para que el ordenador vuelva a reconocerlo, debes reiniciarlo o apagarlo y volver a conectarlo (a tu proyecto). Esto es debido a la estructura del programa que ya veremos cómo funciona y qué parámetros podremos aprender a dominar y manejar a gusto.

El programa dentro del PIC, en el código que genera EasyHID, tiene una lógica muy sencilla pero a la vez muy rígida y al principio complicada de entender. Pero una vez que comprendes el mecanismo de trabajo, tus desarrollos se harán realidad en pocos minutos. La rutina se basa en interrogar, en primera instancia, si el dispositivo está conectado al puerto USB. Si no lo está, queda en un bucle infinito del que no sale hasta detectar la conexión o hasta que se reinicia el PIC. Esto sucede en la última parte donde vemos la etiqueta AttachToUSB. Como puedes ver, allí se repite en un lazo infinito hasta que (UNTIL) el registro interno del PIC detecte la conexión al puerto USB. Para ser claro: si antes de esto pensabas poner un destellador, un blinker, un reproductor de MP3 o lo que se te ocurra dentro de tu PIC, debes saber que hasta que no lo conectes a un puerto USB, el código del programa quedará muerto en ese lazo.

Salir del AttachToUSB nos permitirá tener un diseño autónomo y a la vez operable por USB

Es por esto que con el simple agregado de una línea de código puedes esquivar esta atadura y salir del lazo. Para esto vamos a utilizar la tensión de entrada de 5Volts que trae el puerto USB, ingresando a través de R6 y R5 a RC0. Si RC0 no detecta tensión de entrada, deberá sacarnos del bucle y llevarnos hacia otro lugar del programa “que agregaremos nosotros” donde no sea necesario estar conectado a un puerto USB y donde podamos realizar cualquier función tal como hacemos con cualquier otro microcontrolador. Dentro de ese lazo cerrado que utilizaremos para realizar una actividad autónoma, podremos escribir/leer una memoria EEPROM, interpretar un teclado, manejar un display LCD y cualquier otra cosa a la que ya estemos acostumbrados.

Controlando la presencia de tensión en RC0, sabremos si debemos salir o quedarnos en el lazo USB

De esta forma, cuando encendamos nuestro dispositivo, apenas caiga en la instrucción de verificar la inserción en el puerto USB, será enviado “fuera” de ese lazo cerrado y pasará a funcionar de manera autónoma. Nosotros hemos decidido mostrar este funcionamiento en el display LCD con el mensaje alusivo correspondiente. Es en esta sección del programa creada por nosotros mismos en la que delinearemos el funcionamiento autónomo del desarrollo. Aquí decidiremos qué hará por sí sola nuestra creación. Para el caso de muestra que nos convoca, sólo encenderemos y apagaremos un LED con un pulsador. Pero tú puedes expandir la aplicación a un sistema de adquisición de datos para aplicaciones de campo que guarde en una tarjeta SD o en memorias EEPROM de gran capacidad datos que después pueden ser analizados en laboratorio. O lo que sea. Nosotros, por ejemplo, utilizaremos esta base para controlar nuestro receptor de VHF-UHF que venimos entregando por secciones cada sábado. También puedes construir un Holter Cardíaco para monitorear pacientes con insuficiencia cardiovascular. O lo que tu imaginación sea capaz de lograr.

La condición de funcionamiento de este sistema “dual” se basa en la colocación – en la mayor parte que sea posible – de la rutina que detecte que el USB se ha conectado, es decir, que RC0 se vuelve igual a uno. Aquí ocurrirán dos cosas: por un lado, el programa puede seguir siendo operado desde su teclado nativo (en nuestro ejemplo, un solo botón) o no. En nuestro ejemplo, el botón deja de funcionar; pasa a interesarnos el trabajo a través del ordenador. Y por el otro lado, ya debes ir preparando algunas líneas de programa para el software que hayas seleccionado. Nosotros hemos optado por una aplicación en VB6 que nos muestra varias cosas: por ejemplo, que el sistema se conecta y se desconecta del puerto de manera efectiva y sin inconvenientes (funcionamiento óptimo de la instrucción de PORTC.0). Luego vemos un botón que se encargará de prender y apagar el LED en el dispositivo y un círculo de color que emula esta acción, tal como sucede en el equipo mientras es controlado en forma remota. Por último, un pequeño texto que cambia de “Encendido” a “Apagado” acompañando la acción del LED.

Aspecto de la aplicación que te brindamos para que puedas comenzar a experimentar

Tal como se podía ver en el circuito, hemos conectado al LED en PORTC.1 y al botón en PORTC.2. La aplicación es sencilla pero intenta ser didáctica para que comiences a hacer tus primeros pasos en el manejo del puerto USB. Debes tener conciencia que dominar este puerto es la llave de salida para que tus diseños puedan tener aplicaciones exitosas, efectivas y prácticas, sobre todo, en el mundo de los ordenadores portátiles.

Volviendo a la programación del microcontrolador, que es la más compleja, debemos seguir aclarando puntos difíciles dentro de la rutina del servicio USB. Entre las cuestiones que suelen traernos dolores de cabeza están los “buffers” y su ubicación o numeración dentro del PIC respecto a la numeración que llevarán en el software dentro del ordenador. En Visual Basic, la posición 0 no se puede emplear ya que se la utiliza para el reporte del dispositivo, tal como lo expresa el código generado: … first byte is the report ID, e.g. BufferIn(0) the other bytes are the data from the microcontrolller… Por lo tanto, la enumeración debe iniciarse desde el 1 hasta el 8 y esto corresponderá dentro del PIC en posiciones de Buffer que irán del 0 al 7. Es decir, que lo que en el PIC sea USBBuffer[2] y sea un dato para transmitir, en VB6 será BufferIn(3). Compara entre los listados de los programas que te entregamos, observa este detalle y expándelo utilizando otros botones, otros LEDs, en fin, otros recursos para ampliar las prestaciones del dispositivo remoto desde el ordenador.

Observa que además tienes dos lazos cerrados que si el programa del PIC cae allí dentro se “cuelga” y no sale más hasta que lo reinicies. Estos puntos son los momentos en los que entrega los datos al bus desde el buffer (DoUSBOut) o aquellas instancias en las que solicita los datos cargados dentro del buffer (DoUSBIn). Si en cualquiera de los casos no encuentra valores, se quedará allí esperando que lleguen y tú debes advertirlo rápidamente para sacarlo de esa situación. Por eso te entregamos los programas completos. Para que puedas experimentar a partir de un modelo que sabemos que funciona. Ahora depende de tu imaginación y tu creación. Esto recién comienza, amigo. Proton e EasyHID lograron hacerlo muy fácil, ahora la conectividad USB está en tus manos.

Reportar

¿Qué te pareció?

Escrito por Mario

113 Comments

Leave a Reply
  1. Hola Mario:

    Este articulo esta mas que espectacular, es muy descrestador, es algo que te abre la imaginacion a crear miles de cosas, es increible. De verdad es genial que estos articulos tengan tanto nivel, muchas gracias por esto Mario.
    Bueno, pues creo que sobra decirlo es creo que redundante, pero la version del programa Proton Development Suite y la que posee la aplicacion EasyHID USB Wizard, es la que es necesario comprarla en la pagina de Proton, cierto?, porque las versiones con las que hemos venido trabajando es la que es limitada, creo que es asi, si me equivoco porfavor corrigeme.
    Pero bueno muchachos, si queremos hacer algo tan espectacular como lo hizo Mario, y muchas mas cosas mas, es logico y casi que necesario tener una version del Proton Suite, no todo puede ser regalado, es el trabajo de muchas personas, y vale la pena pagar un dinero por ese trabajo, la gente que desarrollo los programas tambien come, se viste, se enferma, asi que bueno es lo minimo.
    Por mi parte voy a adquirir esta version de Proton Suite, ya que Mario hizo el esfuerzo, nosotros que lo seguimos, tambien sigamoslo.

    Un abrazo desde Colombia, y de nuevo gracias mario y gracias NeoTeo

    • Hola Yesbond !

      Gracias por estar siempre amigo !
      Me alegra que te haya gustado el artículo. Es el comienzo de un largo camino. Es una aplicación sencilla con sólo un LED y un pulsador, pero vale a los efectos de "animarse y empezar"

      Saludos cordiales !
      Un abrazo !

    • #1 Pues si pero ya sabes que el software debe ser gratis
      completamente gratiss y aun mas si es poderoso
      por eso los internautas pelean por un software glp
      lo malo fue crear negocio por eso eso es un error.

  2. Jajaja, que bueno que leo el artículo!!! De hecho ésto me va a sacar del apuro que tengo para poder presentar mi proyecto para las Residencias Profesionales!!! Gracias, equipo de NeoTeo!!! Hasta pronto!!! 😀

      • Què tal, tus pics son los que mas dan miedo!!! los Perritos son inofensivos, en cambio, los pics me han hecho pasar cada desvelada….!! jajaja, Gracias!!! 😀

  3. Hola Mario, Muchos aplausos y felicitaciones por este nuevo articulo de electrónica, tengo una pregunta para este caso el voltaje que suministra la fuente no se puede suministrar desde la misma USB,? lo que pienso es que se le podría colocar una batería recargable para trabajar autónomo y que reciba la energía directamente del pc cuando no lo este haciendo autónomo.
    Gracias.

    • Hola sistecno !

      Claro que se puede realizar una aplicación así. De hecho así trabajan los MP3, MP4, etc., que poseen baterías recargables en su interior (iPhone inclusive). En algún momento tal vez se nos ocurra algún gadget con ese método, claro que sí !
      Debes recordar las limitaciones de corriente que puede entregar un ordenador y que explicamos en el artículo.

      Saludos !

    • buenas noches me parece muy buena la pagina y con esto empese a programar mi micro controlador pero tengo una falla quisiera que me explicaran el por que, aqui les dejo el programa es algo simple esta echo en PBP sobre MPLAB, lo hice viendo el programa que postearon ustedes con el que em genero el easy HID:
      esta es la parte dle codigo q me genera el error

      entradaUSB:

      if portb.0 = 0 then desconexion ‘CONTROLO SI SE DESCONECTÓ DE USB

      USBIn 1, USBBuffer,USBBufferSizeRX , entradaUSB: ‘ leer datos si esta disponible

      Return

      me dice este error:
      C:PROYECTOS PIC BASICUSB2.BAS ERROR Line 47: Parameter #3 must be a variable

      el USBBufferSizeRX lo declare arriba como unas contante de valor 8

    • buenas amigos, realize mi codigo en PBP montado en MPLAB tomando como ejemplo el codigo posteado aqui y el q me arroja EASY HID:
      pero me da un error en la linea de enviar y transmitir por USB

      yo declaro mis bufer de esta manera:
      ‘****************************************************************
      USBBufferSizeMax con 8 ‘ maximum buffer size
      USBBufferSizeTX con 8 ‘ input
      USBBufferSizeRX con 8 ‘ output

      USBBuffer Var Byte[USBBufferSizeMax]
      ‘****************************************************************
      y esta es la linea de recibir datos:
      ‘****************************************************************
      entradaUSB:

      if portb.0 = 0 then desconexion ‘CONTROLO SI SE DESCONECTÓ DE USB
      USBIn 1, USBBuffer,USBBufferSizeRX , entradaUSB:
      Return
      ‘***************************************************************
      de esta forma me genera un error que me dic asi:
      ****************************************************************
      C:PROYECTOS PIC BASICUSB2.BAS ERROR Line 48: Parameter #3 must be a variable.Halting build on first failure as requested.
      ****************************************************************
      es decir, que en el parametro debe ser una variable:
      el parametro 3 es USBBufferSizeRX que arriba lo declare como una contante. ok ahy me suena el error que es una constante no una variable, pero cuando creo una variable y la coloco en el parametro 3 de USBin me dic el siguiente error:
      *****************************************************************
      ERROR: Macro USBIN?CBBL not found in macro file.Halting build on first failure as requested
      *****************************************************************
      que carajo quiere decir ese error
      aqui esta como quedo la rutina de recibir:
      ‘****************************************************************
      entradaUSB:
      USBBufferCount = USBBufferSizeRX ‘convierto RX en una variable Byte
      if portb.0 = 0 then desconexion ‘CONTROLO SI SE DESCONECTÓ DE USB
      USBIn 1, USBBuffer,USBBufferCount , entradaUSB:
      Return
      ‘****************************************************************
      por favor necesito ayuda, si pueden ayudarme escribanme a mi correo
      carlospayne4@hotmail.com

    • buenas amigos, realize mi codigo en PBP montado en MPLAB tomando como ejemplo el codigo posteado aqui y el q me arroja EASY HID:
      pero me da un error en la linea de enviar y transmitir por USB

      yo declaro mis bufer de esta manera:
      ‘****************************************************************
      USBBufferSizeMax con 8 ‘ maximum buffer size
      USBBufferSizeTX con 8 ‘ input
      USBBufferSizeRX con 8 ‘ output

      USBBuffer Var Byte[USBBufferSizeMax]
      ‘****************************************************************
      y esta es la linea de recibir datos:
      ‘****************************************************************
      entradaUSB:

      if portb.0 = 0 then desconexion ‘CONTROLO SI SE DESCONECTÓ DE USB
      USBIn 1, USBBuffer,USBBufferSizeRX , entradaUSB:
      Return
      ‘***************************************************************
      de esta forma me genera un error que me dic asi:
      ****************************************************************
      C:PROYECTOS PIC BASICUSB2.BAS ERROR Line 48: Parameter #3 must be a variable.Halting build on first failure as requested.
      ****************************************************************
      es decir, que en el parametro debe ser una variable:
      el parametro 3 es USBBufferSizeRX que arriba lo declare como una contante. ok ahy me suena el error que es una constante no una variable, pero cuando creo una variable y la coloco en el parametro 3 de USBin me dic el siguiente error:
      *****************************************************************
      ERROR: Macro USBIN?CBBL not found in macro file.Halting build on first failure as requested
      *****************************************************************
      que carajo quiere decir ese error
      aqui esta como quedo la rutina de recibir:
      ‘****************************************************************
      entradaUSB:
      USBBufferCount = USBBufferSizeRX ‘convierto RX en una variable Byte
      if portb.0 = 0 then desconexion ‘CONTROLO SI SE DESCONECTÓ DE USB
      USBIn 1, USBBuffer,USBBufferCount , entradaUSB:
      Return
      ‘****************************************************************
      necesito ayuda, escribanme a carlospayne4@hotmail.com se le agradeceria mucho

  4. Utilizar easyhid es buena idea pero no es lo adecuado, ya que limita a usar ese programa y sus limitaciones, es darle una capa de abstraccion mas a usb, pero es una buena forma de hacer el hola mundo o getting started, pero hasta ahi nomas. uno debe saber la teoria del puerto usb, clase cdc, hid, la calse hid es la mas dura, pero con la que mas se aprende sobre sistemas operativos, diseño de driver, kernel, eventos, etc. Lo fue para mi, con la clase cdc, recomendaria utilizar mpusbapi o si nueva version de microchip, se ha trabajdo bastante eso para los pic, Easyhid abstrae esa capa, que es algo que los informaticos ven en su carrera, ojo los informaticos, no los de ingeneria de sistemas, que saben mas de de otras cosas que de informatica y programacion, en general.
    De todas formas es bueno que se divulgen bastante de USB, Mario ultimamente hace bastante laboro, analogica y digital, seria bueno que mande un aritculo sobre como soldar componentes bga, que son los smd mas utilizados en equipos con micros de 200Mhz, el rutado y tambien seria bueno.

    Gracias,
    Ritos Universidad Nacional de Ingenieria

    • #4 Hola Neoteo, ¿serian tam amables de actualizar los programas a por lo menos VB express? me interesa lo de USB pero no tengo VB5

  5. Me encanta esta pagina por estos articulos de electronica ya que estoy estudiando la carrera de ingenieria en electronica y aca aprendo mucho.

    Pregunta: Yo no tengo puerto serial en mi computadora y el grabador que hize para mi pic16f84 utiliza el puerto serial por lo que tuve que comprar un adaptador de RS-232 a USB. Mi pregunta es si no hay la posibilidad de diseñar un grabador para este PIC (que sea ojala compatible con pics de mayores prestaciones) pero que sea USB directamente???

    De antemano gracias!

  6. hola, muy bueno el articulo, pero si quieren tengo un proyecto armado con pic 18f4550 programado en Con el CCS pic c compiler y sobre windows con .net y winusb y hasta con libusb sobre linux, lo hicimos para una feria de ciencias del cole y esta todo andando, usa el metodo de trasnferencia bulk.

    • Hola roger !

      Felicitaciones por el trabajo! Suena muy interesante por cierto.
      Seguramente haya muchos amigos que nos visitan que han hecho sus experiencias y conocen muy bien el tema USB, pero también deben comprender que hay gente que recién está aprendiendo a encender un LED y para ellos hay que tener un espacio de iniciación.

      Lamentablemente no trabajo con C ni con .net pero nunca es tarde para aprender ! Tal vez algún día nos larguemos y podamos compartir experiencias ! :))

      Saludos cordiales, Gracias por estar con nosotros !

    • HOLA amigo roger, ACABO DE TOPARME CON LA PAG y lei tu comentario, me parece muy interesante porque justamente tengo que hacer un proyecto con usb y el pic 18f4550 si puedieras enviarme toda tu informacion te lo agradeceria, muchisimo, por que me falta mucho por aprender
      ,mi correo es carlo_romang@hotmail.com
      de ante mano muchas gracias

  7. Me inicie con los micros de Freescale y en PC con el lenguaje JAVA

    Creo que seria una buena opción crear artículos para este otro Micro, pues el mundo no solo puede ser PIC y no solo Visual BASIC

    • Hola cdr

      Me has hecho acordar a un gran maestro que una vez dijo "… no sólo del hombre vive el pan …" .
      Mientras leía tu comentario me hice la imagen en la cabeza de la frase "… no sólo de PICs y VB vive el mundo …"

      Fíjate que Arduino está pegando muy fuerte ahora entre los que recién se inician, y sin embargo a mí me siguen gustando los PICs !
      Es una cuestión de gustos, costumbres, conocimientos (no hablo de cantidad), practicidad, popularidad y cantidad de material disponible. Microchip es una fuente de información y soporte muy importante y eso ayuda mucho a inclinar la balanza.

      Como dije en otro comentario: Tal vez algún día nos decidamos a dar el paso y comencemos a compartir experiencias por este medio.

      Saludos !

      • La gente usa freescale porque en la U les toco algun profesor snob que se quiere diferenciar del resto y los pic les parecen aburridos (son algo asi como los emos de los micros… auch).

        ¿Que pasa despues? Los que aprendieron en freescale terminan aterrizando en pic por precio, fuentes de informacion y porque son mejores ja ja ja.

        PIC RULES FOREVER !!! Los hombres son solo realmente hombres cuando programan pics. Freescale es para nenas.

      • Qué demonios tiene de nena un Freescale? La arquitectura S08 es infinitamente superior a la arquitectura PIC. Los PIC solo son populares precisamente por que son fáciles de usar y no tienen otras ventajas. Los Freescale son tan fáciles de usar como un PIC, simplemente no están tan metidos en las universidades, salvo las de Guadalajara. Si preguntaras en las universidades de Guadalajara, verías que todo mundo sabe usar Freescale y más bien los PICs son lo menos comunes.

  8. Genial amigo x esto es por lo que decidi estudiar la Ing en Electronica, y gracias a todos tus aportes me alienta a seguir en esto y poder desarrollarme en esto de la forma que tu lo haces gracias.

    • Gracias a tí tekenen por participar y hacerte presente con el comentario. Es muy importante para nosotros las ideas, comentarios y votos que ustedes emiten porque es el feedback que tenemos para saber si estamos haciendo bien las cosas.

      Saludos ! Éxitos en tu carrera !

  9. Hola mario
    tal y como dice almejandro muchos no tenemos puerto rs-232
    no abria posibilidad de que hicieras un articulo de un programador
    de pics usb

    gracias por tu atecion y por conpartir tus conocimientos con todos
    saludos!!

    • Hola crackzar !
      Hacía mucho que no te leía …

      En el comentario de Almejandro dejé un par de direcciones de programadores USB.
      Espero que te sean útiles.

      Gracias amigo !
      Saludos !

  10. ammm…. acabo de enterarme de q es un puerto serial…. quizas es porque soy de la generacion nueva, quizas porque nunca he tenido impresora, pero a esa solo la habia visto en mi ordenador viejo, y no sabia para q servia… XD

  11. por fin, adios maldito puerto serial, maldito puerto paralelo, tuve 4 semestres de electronica, y en su vida, los profesores enseñaron algo util para conectar los PICs y nuestros proyectos de circuitos, Gracias esto es util como el fuego, como la luz, como las drogas, por fin voy a ir a callar unas vocas (a todos esos flojos que no quisieron enseñarme ago como esto)

  12. Saludos. Simplemente Excelente tutorial, ojalá hubiera estado disponible hace unos años cuando comencé a experimentar con USB y PICS, una muy buena aplicación para escribir el firmware, y en C, es MikroC, de mikroelectronica, tienen una version gratuita, que es muy util como apra empezar a curiosear, y también tienen versión en Basic, y Pascal.
    Aqui les dejo un video que hice alguna vez, donde enviaba los datos de los tres ejes de un ADXL330, a un PIC18F2550, y por el USB a una aplicación en Visual Basic, donde mostraba la gráfica de los tres ejes.
    http://www.youtube.com/watch?v=vUz8NT7enXQ

    De nuewvo, excelente artículo. Aprovéchenlo!!!

    • Hola markus !

      Qué bueno esto que comentas y el video que nos muestras! Es un claro ejemplo que con estudio, esfuerzo e investigación se pueden lograr cosas muy interesantes y útiles, partiendo de un sencillo tutorial que enseñe a encender y apagar un LED.

      A mí también me pasa a veces que me preguno porqué no habrá existido tal o cual cosa cuando comencé a hacer mis primeros trabajos. Todos tenemos un inicio y si podemos ayudar a que a otros les sea mas llano el camino, mejor.

      Gracias makus ! Saludos a Nano !

      • Gracias a vos Mario, excelente trabajo!
        Un libro que me ayudo mucho con los PICs, y que realmente recomiendo, es del auto Dogan Ibrahim, y se llama "Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC18F Series"..y como su titulo indica, arranca desde la base del funcionamiento del PIC, el lenguaje y uso de MikroC, uso de LCDs, RS232, USB, almacenamiento de datos en Tarjetas SD, y hasta un poco de RTOS. Muy util.

  13. Mario, sos GROSO, me agrada que hagas parte de los comentarios, para que fluya el conocimiento a través de la retroalimentación y compartir las experiencias que hemos tenido y felicitaciones por tus articulos, cada uno supera el anterior.

    • Hola Maurinho !

      Está bueno que ustedes sepan que yo soy uno más del grupo y que podemos charlar y compartir experiencias entre todos, como tú dices. Es más fácil y agradable trabajar cuando sabés y sentís que te acompañan. Es muy feo que te tiren la info y te hagan sentir que deberás arraglártelas como puedas, ya que nadie te ayudará.

      Por eso estamos acá con Uds. ! Gracias por tus comentarios ! :))
      Saludos !

  14. Excelente articulo, sobretodo para los que empezamos en el mundo de la electronica. Hace poco hice un cañoncito de aire que disparaba una bolita y variaba el angulo de inclinación, todo controlado por puerto paralelo, porque francamente la utilizacion del puerto USB se me hacia muy dificil. Pero ahora con este ejemplo creo que prodre adaptarlo al puerto USB.

    Muchas gracias Mario.

    • ¡Qué bueno aCruzK!

      Sería formidable que nos muestres un video de eso cuando lo logres.

      Gracias a vós por estar con nosotros y hacerte presente.

      Saludos !

  15. Wow muy buena aplicacion, ojala la hubiera tenido cuando me encontre haciendo mi proyecto para salir del bachillerato un teclado MIDI USB, pero en ese entonces, y aun hay muy poca documentacion en español, me toco lidiar mucho, tanto en el soft, para la conexion usb, como para el midi, ademas de que sierta parte del esquematico me fallaba, pero pude darme cuenta del error gracias a mucho tiempo de analisis y un poco de ayuda de proteus. Si habia tenido la oportunidad de usar HID, pero mejor opte por usar la altisima velocidad del usb 2.0 a 48mbps que nunca lo use, pero a esa velocidad se conecto XD, es todo un show comprender que plls necesitas, hay tengo todavia los fuentes por si alguien se interesa, solo que yo programe en Visual C++ con la MFC, y con el compilador para PICS CCS.

  16. Saludos desde Ecuador,
    Felicitaciones por el articulo, bueno de verdad.
    Yo tambien he logrado hacer esto hace tiempo, pero tenia una intriga hace tiempo…
    Alguien a podido implementar un bluetooth a nivel de circuito??? que permita la transferencia por este protocolo???
    Hay muchos articulos de control de circuitos por señales de radio pero ninguno por bluetooth alguien me puede alarar esta duda?

    • Saludos naielox,
      Hace un tiempo realicé un desarrollo trnansmitiendo datos a través de un enlace Bluetooth, utilizando un integrado de National Semiconductors, el LMX9838. El mismo te da la posibilidad de crear un enlace serial inalambrico con cualquier dispositivo, ya sea un celular o PC con capacidad de Bluetooth.
      En la página de National hay mucha info disponible, asi como recomendaciones de diseño, ejemplos de aplicacion, y todo el protocolo para establecer el enlace e interpretar los datos.
      Exitos.-

  17. Grande Mario. Como siempre rogaría tener un día de 36 hs. para hacer todos los proyectos que posteas. Sos un capo. En cuanto pueda le meto mano al proyecto de la radio.
    Un sincero saludo.
    Jukinch

  18. que buen tema, tengo ya algunos meses por aqui viendo los articulos de neo teo pero generalmente no hago comentarios, solo que este articulo no podia dejarlo pasar sin un comentario al respecto…gracias por estos temas tan importantes y me voy a probarlo…

  19. Hola Mario, la verdad, sos un genio!!! muchas gracias por toda la info que posteaste..

    como otros que escribieron, yo también estudio ing. electronica, y me vino muy bien este tutorial.. hacia ya un tiempo que con un amigo queríamos mandar datos por usb y no encontramos nada entendible..
    como manejo mejor pascal, preferí delphi y no visual basic..
    y mirando tu ejemplo, modifique uno nuevo y logré, en el simulador proteus, que todo ande de 10..
    el problema es llevar eso a la realidad.. tengo el pic, el programador (upp628), el hex generado y grabado en el pic.. (18f4550)
    pero no se bien por que al xp no le gusta nada y no me lo reconoce..
    seguire luchando e intentando que ande, porque veo tu ejemplo y quiero sentir esa satisfacción que te da que las cosas anden en la práctica..
    bueno, desde ya un abrazo y mil gracias de nuevo por compartir conocimientos!!

  20. Perdòn, Mario, tengo algunas dudas, espero me puedas ayudar. mi correo es drahreg13@gmail.com, agregame al messenger o mandame tu correo.
    Es acerca de los puertos en el 18f4550. No hayo el RC3. lo que pasa es que quiero conectar no solo uno, sino 4 leds y 2 motorcitos, ya hice las modificaciones en el VB, pero quisiera que me ayudaras un poco.

    Gracias y hasta pronto!!! 😀

  21. Hola Mario, como estas? Soy bastante novato en la electronica y consulto seguido en Neoteo aunque recién me registré. Tengo un problemón! La imagen donde está el circuito sale un poco borroza y no alcanzo a distinguir qué componentes se usan. Me podrias pasar la lista de componentes por e-mail? Saludos muchas gracias y sigan así!!!

  22. Hola, estube tratando de compilar en proton el codigo y me sale un error. que dice cannotfind USB descriptor file RECEPTOR2DESC.INC, que podra ser esto? por favor. gracias mi correo es uagav@yahoo.es

  23. hola soy nuevo en esto de la programacion. quisiera saber si me puedes guiar en un proyecto para la universidad; dejame explicarte. tengo que hacer un programa algo asi como una base de datos para un centro medico con los siguientes 2 requerimientos: tengo que desplegar en un lcd el nombre del enfermo la medicina y la hora a la que debe tomarse la medicina mediante una alarma (todo esto esta almacenado en una base de datos) en el caso de que tenga que quedarse hospitalizado; en caso contrario tengo que grabarle la formula medica en una targeta sincard.
    gracias
    este es mi correo si alguien me puede ayudar hhurtado651@hotmail.com

  24. oyeee donde pued conseguir el pic… en mexico?,,, y en caso dado,,, alguien podría hacerme ese proyecto y enviarlo, y si es asi,,, cuanto me cobrarian 🙂 saludos

  25. Muy bueno el material hermano, pero una pregunta, para el pic no hay que tener una plaqueta programadora para mandarle las intrucciones?

  26. hola Mario

    te cuento estoy llevando el curso de arquitectura de computadoras, y me pidieron un proyecto basicamente para usar el puerto serial, pero como los puertos USB tienen muchas mas ventajas… busque acerca del tema y me encontre con este impresionante articulo.

    algunas cosas no me quedan claras acerca del funcionamiento y coneccion, me tomare mas tiempo para lograr entender esta aplicacion.. y ojala no tener inconvenientes.. caso contrario desearia q me brindes un poco de ayuda 😛

    muchas gracias por el aporte… me elimino barreras 😛

    estudiante ing. sistemas UNMSM – Peru

  27. Mario, me interesó mucho tu artículo, de manera que salí corriendo a Cika a comprar las cosas.
    Lllegué a casa y comencé a armar todo.
    alimento el protoboard y funciona todo correctamente pero al enchufar el usb la pc no reconoce el dispositivo. Se te ocurre qué podría hacer para que funcione?
    Sds, Diego

  28. hola mario…queria dejarte el comentario de tu excelente trabajo la verdad lo admiro…dentras de eso hay mucho esfuerzo…dedicacion…lo sabemos loq trabajamos cone lectronica…mucho se dice pero poco se hace y aqui s e ve mucho trabajo y ganas d e compartirlo…FELICITACIONES !!!!!…

  29. mira queria comentarte q estoy trabajando en un intercomunicador bazado en telefonos tdma q ya s e dejarond e husar…tu trabajo me inspiro mucho y la parte de usb me dio muchas ideas,basicamente el pll un ma1015(buscar como uma1015) de philips es una marabilla y encontralo montado enuna placa con todas las cosas y el demodulador fue una bendicion muy poco hay q modificar ademas tambien tien coneccion iic mi idea es husar tambien el lcd del mismo telefono y el teclado tambien,con partes de programas de teclado para pics…bueno mucha s gracias por tu tiempo….

  30. Espero y lean esto ya que es una publicación del 2009 si pudieran desirme los componentes del proyecto es que no se distinguen y un manual paso a paso se que este esta muy claro pero soy nuevo en esto porfavor de antemano se les agradece

  31. Acabo de encontrar su pagina, y estoy asombrado de la cantidad y la calidad de la información, este proyecto con el puerto USB es lo mejor que he encontrado en toda la red.
    muchas gracias, continúen con su esfuerzo que lo están haciendo excelente.
    Fernando A.

  32. thank you! I like this news, I also have information to share, here is my message.we sale 60%-80% discount
    tiffany or Abercrombie
    moncler or christian louboutin or cheap christian louboutin christian louboutin shoes
    air max or air jordan or air max shoes or
    air jordan shoes or nike air max or cheap air max or cheap air jordan or links of london or UGGアグ or ugg or mbt or mbt or mbt or mbt or mbt or links of londons or cheap links of london or Links of London Jewelery or Links of London Jewellery or tiffany & co or tiffany Jewelry or cheap tiffany Jewelry or tiffany Jewellery or Abercrombie fitch or Abercrombie & fitch or cheap Abercrombie or Abercrombie fitch clothing
    Abercrombie Fitch Women Dresses
    Abercrombie Women Dresses
    Abercrombie Fitch Women Hoodies
    Abercrombie Women Hoodies
    Abercrombie Fitch Women Jeans
    Abercrombie Women Jeans
    Abercrombie Fitch Women Jeans Shorts
    Abercrombie Women Jeans Shorts
    Abercrombie Fitch Women Knit Tanks cami
    AAbercrombie Women Knit Tanks cami
    Abercrombie Fitch Women Pants
    Abercrombie Women Pants shoes、clothing、Jewellery、bag、Watchs。

  33. Hola a todos este articulo sobre usb esta muy bueno pero tengo una pregunta estoy desarrollando una aplicacion en visual utilizando la configuracion usb pero tengo un problema con el metodo publico onRead que es el metodo que permite leer el bufferin o sea los datos de entrada que bienen del micro al pc, resulta que estoy haciendo una validacion dentro del metodo onRead donde hago la siguiente sentencia:

    textbox.text = BufferIn(2) //capturo el dato que viene del micro

    //Hago la siguiente condicion
    if textbox1.text = 1 then
    contador = contador + 1
    textbox2.text = contador
    end if

    Entonces la cuestion es la siguiente cada vez que el programa tiene que validar si el valor es uno el tiene que ejecutar una sentencia de conteo ese valor de contador se lo asigno a una caja de texto pero resulta que cada vez que el valor es uno el se queda contando y lo que se quiere es que lea uno y me cuente una vez y ya estoy con ese problemilla entonces pido el favor haber si ustedes me pueden ayudar con eso para saber que tengo que hacer agradezco cualquier ayuda o colaboracion al respecto mil gracias por su atencion

    Cordialmente
    Fabio Jesus Cortes Ariza
    e-mail: fabiojcortes@yahoo.com, cortes.fabio@gmail.com
    Colombia

  34. hola quisiera saber cual es la lista de material que utilizaste para hacer esto para poder tener lo basico para poder desarrollar mi proyecto escolar basado con lo que nos mostraste

  35. Hola soy nuevo en esto de los pics, pero esta idea es realmente inspiradora asi que fui directo a la tienda de electronica y arme el proyecto, tengo puerto serial, pero no se exactamente como conectarlo para poder progrmar el pic, haber si me ayudas porque no se a que se refiere ICSP si es algun cable estandar o si tengo que armar algo adicional. Gracias

  36. Soy novato en este campo de los pics, sin embargo esta pagina me parece super interesante, felicitaciones a los productores.

    Queria hacer una observacion, en el diagrama del circuito el cristal es de 20 Mhz, y en el programa del pic esta a 48 Mhz, quiria saber que implicación tiene en cuanto a la programacion, o sí es un simple error de transcripción. gracias de antemano

  37. Hola que tal impresionante tutorial, fijate que trato de desarrollar una aplicacion solamente de prueba y me he encontrado con un obstaculo, no puedo enviar y recibir datos al mismo tiempo, tengo que enviar un dato desde la PC al pic, para que el pic me pueda devolver un dato de lo contrario el pic de forma autonoma no me envia nada al pic, no se si el problema se encuentre en el pic o en la PC, trabajo sobre visual basic 6 y Proton, me seria muy util un concejo o ayuda, saludos excelente proyecto.

  38. HOLA, oye…baje el programa: Proton Development Suite y el EasyHID USB Wizard….pero cuando intento configurar el easyHID, en la ultima ventana no me deja poner nada en las opciones de: USB DEVICE COMPILER y en la opción de APPLICATION COMPILER…entonces cuando le doy NEXT…en lugar de salir verde en CHEKING FOR GENERATION ERRORS, sale rojo en la de GENERATION ERRORS….y no me crea el programa de seado…:s….podrías decirme cual es mi error aquí??

  39. Mario, gracias por ilustrarnos de una manera desinteresada, he armado la placa siguiendo tus pasos y despues de algunos tropiezos. viene la alegria, funciona perfectamente, he logrado medir voltajes con el pic y verlos en mi laptop. muchas gracias.

  40. Estimado Mario:

    Estoy desarrollando tu ejemplo pero no logro que Windows me reconozca al PIC ni que el micro opere adecuadamente. He tratado de configurar los bits del PIC pero no obtengo buenos resultados. Estoy usando una LCD de 4×16 y la pantalla permanece con dos líneas en obscuro y windows siempre me dice que no se reconoce al dispositivo. Si pudieras pasarte algunas pistas de como resolver esto te lo agradezco infinitamente. Si requieres que te proporcione mi código, te lo puedo enviar sin problema.

    Saludos

  41. Amigo Mario:
    Gracias por tu ayuda he hecho con exito tu placa para controlar un led
    y funciona ok,
    He querido utilizar tu proyecto para modificarlo y controlar 6 leds pero ha sido imposible. llevo varias semanas en esto, te pido ayuda para hacerlo. a lo mejor publicas uno que seria de mucha utilidad para nosotros, de antemano gracias por tu ayuda, quedamos a la espera.

    Cperez

  42. Hola Mario

    Tu trabajo es muy bueno y en verdad abre la imaginacion para elaborar todo tipo de trabajos. Tengo una duda. Quiero programar un PIC con un programa basado al que hicistes. Pero aparentemente no me lo detecta la PC. Tengo WinXP, uso el VB6, el Proton IDE y pues un programador JDM, creo que esto último puede ser el error. ¿Puedes ayudarme? a ver cual será el motivo del problema. Y tengo una pregunta ¿Cual programador usastes?

    Atte: Luis

  43. Hola, interesante proyecto, tengo una duda, como calculaste el valor de 220 ohms, o en que te basaste para este valor de las resistencias que van en las lineas de D+ y D-. Gracias

  44. gracias por el aporte soy nuevo en esto no se nada de eelctronica…pero pues me interesa aprender….estoy aciendo un proyecto.con el cual pueda apagar una television Lg LCD por medio de la pc…el programa lo estoy aciendo en visual basic 2008..no se si me pudieran pasar un idea de como hacer lo…gracias

  45. Hola. Necesito hacer mediante usb que accionando un switch, la pc lo reconozca como que apreté una tecla del teclado o un click de mouse. Si alguien me puede ayudar.
    Muchas gracias.
    Saludos

  46. Primero que todo mil gracias por contestar Carlos. Hice lo que explican arriba. Supongo que logré la conexión (todavía no compré el pic). Ahora lo que no se es qué poner en el buffer del usb para que la PC lo reconozca como si hubiese apretado una tecla o un click de mouse. Capaz es una simple instrucción, pero es la primera vez que programo y no tengo ni idea.

  47. Hice esto. Supongo que me falta únicamente llenar lo de ProgramLoop

    ‘SELECCIONAMOS EL PIC Y LA FRECUENCIA DE TRABAJO (48Mhz PARA USB)
    Device = 18F4550
    Xtal = 48

    ‘ESTA FILA LA GENERA EL MISMO "EASYHID USB WIZARD" Y LA COLOCA
    ‘JUNTO A ESTE ARCHIVO .BAS DONDE TRABAJAREMOS LA APLICACIÓN
    ‘(EN LA MISMA CARPETA)
    USB_Descriptor = "switchludanicDESC.inc"

    ‘ Vamos a utilizar una interrupción para mantener viva la conexión
    USB
    ‘ Entonces deshabilitamos auto polling con los comandos USBIn y
    USBOut
    USBIN_AUTO_POLL = OFF
    USBOUT_AUTO_POLL = OFF

    ‘LOS TAMAÑOS DEL BUFFER USB
    Symbol USBBufferSizeMax = 8
    Symbol USBBufferSizeTX = 8
    Symbol USBBufferSizeRX = 8
    Dim USBBuffer[USBBufferSizeMax] As Byte

    ‘VARIABLES AGREGADAS
    Symbol LED = PORTC.1 ‘LED SE VÁ A LLAMAR LA SALIDA DE
    PORTC.1
    Symbol LED1 = PORTC.2 ‘LED1 SE VÁ A LLAMAR LA SALIDA DE
    PORTC.2
    Symbol LED2 = PORTC.3 ‘LED2 SE VÁ A LLAMAR LA SALIDA DE
    PORTC.3
    Symbol SW = PORTC.4 ‘SW SE VÁ A LLAMAR LA SALIDA DE
    PORTC.4
    Symbol PLUG = PORTC.5 ‘PLUG SE VÁ A LLAMAR LA SALIDA DE
    PORTC.5
    Dim SWUSB As Bit ‘ESTADO DEL SWITCH (APAGADO O
    ENCENDIDO)
    Dim A As Word ‘VARIABLE MULTIFUNCIÓN
    Dim B As Bit ‘VARIABLE BIESTADO EN LA QUE RECIBO
    EL BOTÓN
    ‘PARA PRENDER Y APAGAR EL SWITCH

    ‘REGISTROS Y BANDERAS
    Dim PP0 As Byte System ‘ REGISTRO DENTRO DEL PIC USBPOLL
    STATUS
    Symbol CARRY_FLAG = STATUS.0 ‘ EN ESTADO ALTO SI EL PIC NO TIENE
    EL CONTROL SOBRE EL BUFFER
    Symbol ATTACHED_STATE = 6 ‘ SI USB ESTÁ CONECTADO
    Symbol TRNIF = UIR.3 ‘ BAJA SI EL USB ESTÁ OCUPADO
    Dim TIMER1 As TMR1L.Word ‘ access 16 bits of TMR1

    A= 0:B = 0 ‘PONGO LAS VARIABLES A CERO

    ‘ Uso una interrupción para mantener la conexión USB viva.
    Symbol TimerPreload = $A23F ‘ aprox 2ms.
    On_Hardware_Interrupt GoTo USBServiceInterrupt
    GoTo ProgramStart

    ‘ ************************************************************
    ‘ * the USB interrupt service routine maintains the *
    ‘ * connection to the bus – without this routine, a *
    ‘ * call to USBPoll, USBIn or USBOut must be made *
    ‘ * every couple of milliseconds or so *
    ‘ ************************************************************
    USBServiceInterrupt:
    ‘ no sondear el USB si está ocupado.
    btfss TRNIF
    bra ExitInterrupt

    ‘ Sondear la interface USB.
    Call (Check@BusStatus)
    Call (Driver@Service)

    ‘ Borrar la bandera de interrupción y salir.
    ExitInterrupt:
    bcf PIR1,0
    TIMER1 = TimerPreload
    retfie fast

    ‘ ************************************************************
    ‘ * LAZO PRINCIPAL DEL PROGRAMA *
    ‘ ************************************************************

    ProgramStart:
    GoSub AttachToUSB

    Toggle LED1 ‘CAMBIO EL ESTADO DEL LED1

    ‘ Inicializa el timer de interrupción.
    TIMER1 = TimerPreload
    T1CON = %10000001
    PIE1 = %00000001 ‘ activa la interrupción por
    desborde TMR1
    INTCON = %11000000 ‘ activa las interrupciones
    globales y periféricas.

    ProgramLoop:

    USBBuffer[0] = 0 ‘EL PRIMER BYTE ES DE REPORTE DE
    CONEXIÓN
    USBBuffer[1] = SW ‘EL SEGUNDO BYTE SERÁ EL ESTADO
    DEL SWITCH

    GoSub DoUSBOut ‘TRANSMITO LO ALMACENADO EN EL
    BUFFER
    DelayMS 1 ‘DOY UN TIEMPO DE DEMORA

    GoTo ProgramLoop ‘CIERRO EL LAZO DESPUÉS DE TODO EL
    TRABAJO

    ‘ ************************************************************
    ‘ * RUTINA DE TRANSMISIÓN DE DATOS *
    ‘ ************************************************************
    DoUSBOut:
    If PORTC.0 = 0 Then GoTo PlugMono ‘CONTROLO SI SE DESCONECTÓ DE
    USB
    USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
    Return

    ‘ ************************************************************
    ‘ * ESPERA HASTA QUE EL USB SE CONECTE *
    ‘ ************************************************************
    AttachToUSB:
    If PORTC.0 = 0 Then GoTo PlugMono ‘CONTROLO SI SE DESCONECTÓ DE
    USB
    Repeat
    USBPoll
    Until PP0 = ATTACHED_STATE
    Return

  48. amigos soy nuevo en Visual, me descargue visual basic 2008. pero no como abrir el proyecto que trae esta pagina. no se como habrir el form y el codigo… porfavor ayudenme

  49. necesito informacion:
    estoy elaborando un proyecto para diseñar una tarjeta electronica que controle varias cargas o motpres pero necesito que me indique en mi lapto las diferentes condiciones de trabajo de cada carga como por ejemplo temperaturas de trabajo,presiones de compresores, consumo en amperios de cada uno es posible hacerlo en visual basic? y como? la placa o tarjeta electronica la estoy diseñando con picaxe.

    saludos
    german

  50. Hola a todos

    me interesa las aplicaciones que se pueden lograr con este compilador "proton" e buscado el instalador y ninguno me funciona correctamente.
    si alguno de ustedes me puede ayudar, se lo agradecería mucho.

    gracias.

  51. AYUDA…

    Tengo el PROTON IDE y estoy compilando esto pero no lo hace a la velocidad adecuada, demora mas de 500ms.

    Device 18F2550
    XTAL 4
    TRISA =0x00

    inicio:
    PORTA.1=1
    DelayMS 500
    PORTA.1=0
    DelayMS 500
    GoTo inicio

  52. Está super bueno, pero busco algo mas simple y que se me ha hecho imposible de encontrar, solo quiero prender y apagar el led atravez de mi pc, con el mismo pic y con usb… no quiero que comunique por un display ni nada de eso, quiero solamente un circuito lo mas sencillo posible….si me puedes ayudar te lo agradeceria bastante.

  53. metete tu vida complicada y tus pics de mierda que mas bien parecn un monton de espaguetti por ese culo
    yo se como sacar frecuencias por usb directamente don comandos dos o hasta basic
    y tambien encender o apagar cosas directamente por alli
    pasando por regular voltaje en el mismo con solo 3 o 4 lineas cagadas de comando
    a quien le interesan las pic_
    lamers de mierda

  54. Exelente aporte desde hace ya rato sigo sus publicaciones y siempre me sorprende con algo nuevo no soy un experto en picS pero ya me esta llamando la atencion esto que haces, exito para todos

  55. Saludos a todos 🙂
    Mario solo queria agradecerte ya que hace tiempo queria comunicar mis proyectos con la pc y viceversa, y este post me a ayudado mucho, lastima que ese pic no lo vendan en mi ciudad y tardara en llegar de fabrica solo queda esperar jajaja

  56. Hola a todos, Antes de nada felicidades por el proyecto.
    He estado montando el proyecto, y el led se enciende y apaga si pulso, pero no consigo que la LCD funcione y en el dibujo esquema no se ve claro cual es el pinout.
    Alguien podría confirmarme el pinout de la LCD.

    LCD —————– PIC ( pin)
    ________________________________

    RS —————— 36
    R/W —————– a MASA
    E ——————- 35

    Muchísimas gracias

  57. hola compa… esta interesante la comunicacion….
    me gustaria hacerla pero manjeo los pic 16f ..si se l puede hacer…

    y seria bueno que realies un tuto completo que muestre desde donde se descargan los programas hasta programarlos
    esto lo digo por que no he usado visual, y el nuevo programa que dices

    se te felicita !!!

  58. amigo una pregunta tengo un proyecto en proteus de una calculadora y lo tengo que acer en fisico como ago para pasarle la infomarcion al PIC18F4520 mocricontroller espero su respuesta que tengo que usar para hacer eso

  59. HOLA AMIGOS, SABEN TRATO DE HACER EL PROYECTO PERO ESTOY USANDO UN PIC 18LF4550 Y NO ME FUNCIONA EL RECONOCIMIENTO A LA PC, TALVEZ SEA POR EL MODELO DE PIC, ?QUE GRABADOR ME RECOMIENDAN PARA ESTA CLASE DE PIC?

  60. mario he cargado el sofware de muestra en mi microcontrolador estoy utilizando el master prog como programador y al cargar el archivo hex me sale un aviso de que faltan los bits de configuracion como puedi solucionar este problema podrias ayudarme

  61. Exelente proyecto, desde aqui Republica Dominicana estoy siguiente los proyectos Neoteo, sobre todo estoy usando este actualmente para conectarlo al proyecto Receptor multibanda.

Responder a Philip13 Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

La luna tiene una cantidad considerable de agua (NASA)

¿DVD que dura 1000 años?