jueves, 20 de octubre de 2016

Comunicacion USB HID proyecto ECO con PIC18F2550 usando la tarjeta Power2550 (proyecto completo)

Proyectos avanzados usando PIC18F2550: Bus USB.



Antes que nada los invito a unirse a mi grupo Programando PICs en facebook

donde encontraran mucha informacion y a los mejores expertos en programacion de microcontroladores PIC de habla hispana.


En este articulo vamos a explicar como realizar sencilla y fácilmente una transferencia de datos utilizando para ello el bus USB para lo cual tenemos implementado el protocolo HID.

El Bus Serie universal (USB) es una de las interfaces más comunes utilizadas hoy en día en  productos electrónicos de consumo, como ordenadores, cámaras, GPS, MP3, juegos, módems, impresoras y escáners, solo por  nombrar algunos pocos. 



El Bus USB fue desarrollado originalmente por Compaq, Microsoft, Intel y NEC, y más tarde también por  Hewlett-Packard, Lucent, y Philips. Estas empresas formaron eventualmente nonprofit corporation USB Implementers Forum Inc. para organizar el desarrollo y la publicación de las especificaciones USB. 

Para este proyecto vamos a necesitar:

-Placa entrenadora Open Hardware Power2550 la cual desarrolle para trabajar con el PIC18F2550 mas facilmente.








Diseño de un circuito de comunicacion USB con PIC18F2550


-Programador PIC capas de grabar la memoria del PIC18F2550


-Software Mikroc para generar el archivo ejecutable




Ahora solo necesitan instalar un Bootloader, para ello deberan grabar el siguiente programa en el micro: USB HID Bootloader 20mhz.rar  para programar el micro usen cualquier programador de PIC, es mejor que sea en uno que tenga base zif, por que todavia no se han dado detalles de como hacerlo por ICSP, no lo hagan NO RESPONDO OK!!

Una vez instalado el bootloader deberemos conectar sin alimentación al puerto USB para probar que funcione bien, si el computador emite el sonido característico de conexión USB y no muestra mensajes raros, luego de unos segundos volverá a sonar indicando que se desconecto, eso es normal, ahora puedes cargar un programa de pruebas que es led blink, el cual lo puedes descargar del siguiente link:


Ahora que tienes el primer programa, necesitas el software para cargarlo, para ello puedes usar el siguiente software:


Como usar el mikrobootloader?


Para realizar mas programas deberas usar el siguiente programa:


Una vez cargado el programa USB HID Bootloader 20mhz.rar  en el micro vamos a crear un codigo de ejemplo para probar como funciona la comunicacion USB HID con la tarjeta POWER2550 

Esquema de comunicacion USB



El código de clase de dispositivo de clase HID es "0x03, esta clase se utiliza para dispositivos controlados por humanos, como el teclado, ratón, joystick y así sucesivamente.

La ventaja de los dispositivos HID es que, no requieren la instalación de los controladores, en la mayoría de los sistemas operativos modernos, es detectado el dispositivo sin ningún problema.

MikroC PRO for PIC proporciona la libreria USB HID que hacen que hace fácil que un host en este caso un PC pueda comunicarse con un dispositivo USB.


Descriptores.

Cuando un dispositivo es conectado al bus USB, el HOST utiliza la dirección 0 para pedir información básica del dispositivo. A continuación, el HOST le asigna una dirección única al dispositivo. Después de que el HOST solicita y recibe más información sobre el dispositivo, como el nombre del fabricante, las capacidades, y el ID de producto, entonces comienza la comunicacion.
Todos los dispositivos USB tienen una jerarquía de descriptores que describen diversas características del dispositivo como el ID de fabricante, la versión del dispositivo, la versión de USB que soporta, que tipo de dispositivo es, sus requisitos de potencia, y así sucesivamente. Los descriptores USB más comunes son:

  • Device descriptors
  • Configuration descriptors
  • Interface descriptors
  • HID descriptors
  • Endpoint descriptors
El protocolo USB HID permite que un PC reconosca un dispositivo HID USB conectado a el sin necesidad de crear un driver, esto es lo mismo como cuando se conecta un mouse óptico USB o un teclado USB y no es necesario instalar controladores para ello. El sistema operativo Windows cargará los controladores necesarios, todo lo que se necesita es que programa que va a controlar el dispositivo desde el PC tenga la informacion del dispositivo como Vendor ID (VID), identificador de producto (PID), nombre del Fabricante etc.

Creacion del archivo con los descriptores en MikroC.


Para crear el archivo de descriptores en mikroC, abra su proyecto mikroC vaya al menú Tools y haga click en HID Terminal  a continuación haga click en la solapa y llene los datos como se ve a continuacion:

Creando el archivo de descriptores.

Explicacion de cada uno de los parametros:

VID (vendor ID) and PID (product ID): Cada dispositivo USB debe tener un conjunto único de códigos PID y VID.

Input and Output data length:  Este es el tamaño de los buffers de entrada y salida. el valor predeterminado es de 64 caracteres.

Vendor Name and Product Name: aquí se pone el nombre del vendedor y el del producto.

Bus power:  Marcar esta opción para dar permiso al PIC que se energise desde el PC.

Seleccione el lenguaje usado: Mikroc en este caso

Haga click en Save descriptor  y guardelo en el lugar deseado, en nuestro ejemplo, vamos a guardarlo en el mismo directorio que el proyecto y se puede guardar con el nombre que quiera en este caso sera USBdsc.c por defecto.

Ahora solo queda escribir el codigo e incluir el archivo de descriptores para que pueda funcionar a continuacion el codigo:



unsigned char readbuff[64] absolute 0x500; unsigned char writebuff[64] absolute 0x540; #include "USBdsc.c" char cnt; char kk; void interrupt(){ USB_Interrupt_Proc(); // USB servicing is done inside the interrupt } void main(void){ ADCON1 |= 0x0F; // Configure all ports with analog function as digital CMCON |= 7; // Disable comparators TRISC.B2=0; PORTC.B2=0; HID_Enable(&readbuff,&writebuff); // Enable HID communication while(1){ while(!HID_Read()); for(cnt=0;cnt<64;cnt++) { writebuff[cnt]=readbuff[cnt]; } while(!HID_Write(&writebuff,64)); } }








Para compilar este codigo y cargarlo con el bootloader debes usar la siguiente  configuración, para acceder a ella te vas a project--> edit project: 





Ahora compilas el proyecto y luego lo subes al micro usando el microbootloader:



Para establecer comunicacion ahora puedes usar la herramienta HID Terminal que viene incluida en Mikroc Tools-->Hid terminal



Selecciona usb hid library  ahora tiene un software terminal para hacer pruebas para recibir enviar datos.

 


No hay comentarios:

Publicar un comentario