Sunteți pe pagina 1din 0

EJEMPLO CON C#

A continuacin se ofrece una gua rpida para implementar una conexin va USB de un PIC18F
con un equipo Windows XP o Windows 7, funcionando bajo un programa compilado con Visual C#
2008 y la librera mpusbapi.dll otorgada por Microchip.


Requerimientos de software:

- Visual C#2008 Express Edition
http://www.microsoft.com/express/Downloads/

- CCS Compiler
http://www.ccsinfo.com/

- Enumerador USB de Palitroquez
http://www.todopic.com.ar/foros/index.php?topic=20047.0

- Paquete de archivos de ejemplo
http://www.4shared.com/file/135989408/7c8ce97a/Santiago_USB.html



Creando la aplicacin bajo Visual C#2008

- Crear un nuevo proyecto
- Seleccionar Windows Forms Application
- Guardar el proyecto nuevo
- Copiar los archivos mpusbapi.dll y PicUSBAPI.cs a la carpeta del proyecto
- En el explorador de soluciones dar click derecho y elegir Agregar, Elemento Existente
- Agregar los archivos mpusbapi.dll y PicUSBAPI.cs
- En el cdigo de la ventana principal (Form1.cs) copiar el nombre que viene en namespace
- Abrir el archivo PicUSBAPI.cs y en namespace reemplazar el nombre con el copiado. Esto vincula
los archivos .cs en el mismo proyecto.
- El cdigo de la librera mpusbapi.dll contiene apuntadores que a c#no le gusta compilar. Permitir
la compilacin del cdigo unsafe, ir a Proyecto, Propiedades, Generar, Permitir cdigo no seguro.
Debes activar esta opcin en modo Debug y Release si piensas compilar el programa para que
corra sin tener Visual C#instalado (modo release).

Para enviar datos al PIC debers usar el mtodo:
private void SendPacket(byte* SendData, DWORD SendLength)

Para recibir datos desde el PIC deber usarse el mtodo:
private void ReceivePacket(byte* ReceiveData, DWORD *ReceiveLength)

En el archivo PicUSBAPI.cs el compaero J1M de Hobbypic implement ejemplos de datos que se
envan y reciben hacia el PIC. Dales una checada y vers que es fcil implementar tus propios
mtodos. Es recomendable que los implementes en la misma clase PicUSBAPI.

Cuando el PIC es conectado a la PC se reporta con Windows con varios datos, pero sobresalen dos,
el Vendor ID y el Product ID. El VID y PID de nuestro PIC contendr los datos 04D8h y 0011h
respectivamente, segn se ve en el archivo PicUSBAPI.cs. Es recomendable no cambiar el Vendor
ID ya que Microchip permite el uso de este ID de forma gratuita. Si se utiliza un VID diferente, hay
que registrarlo en www.usb.org y pedir permiso para emplearlo. El PID puede ser modificado sin
problema alguno. Ambas modificaciones han de hacerse en la variable vid_pid_norm del archivo.

Posteriormente en el cdigo de la ventana principal (Form1.cs) hay que instanciar un objeto de la
clase PicUSBAPI para poder hacer los envos y recepciones hacia el PIC. La instancia se hace de
forma sencilla:

//Instancia un objeto de la clase PicUSBAPI
PicUSBAPI usbapi =new PicUSBAPI();

Para llamar mtodos de la clase PicUSBAPI solo los aplicas sobre el objeto creado:

//Ordena al PIC que ponga su puerto B a 0x00
usbapi.Puerto(0x00);



Creando el programa del PIC18F2550 en CCS

El programa del pic se compone de dos archivos, el .c que es el principal y usb_desc_scope.h que
es un archivo cabecera generado por el software de Pedro Palitroquez, el Enumerador USB.

Para generar este archivo hay que ejecutar el software de Palitroquez e introducir los datos con los
que queremos que el PIC se presente ante Windows. El VID deber permanecer como 04D8h
como habamos mencionado anteriormente y el PID deber coincidir con el ingresado en
PicUSBAPI.cs de VC#.

Todos los dems datos puedes personalizarlos a tu gusto, incluso puedes agregar un icono
personalizado para que aparezca en el administrador de dispositivos representando a tu PIC.



El archivo usb_desc_scope.h deber guardarse en la misma carpeta en donde guardes el archivo
principal .c que se cargar en el pic. El archivo mchpusb.inf deber guardarse en la carpeta Driver
Windows junto con el icono que hayas elegido. Es el que ayudar a Windows a reconocer al PIC18
como parte del hardware de la PC.

Una vez teniendo el archivo .inf y el archivo .h generados hay que compilar la aplicacin para el
PIC. Puedes usar el archivo PicUSB.c como ejemplo. Hay que incluir los archivos siguientes en la
compilacin:

#include <pic18_usb.h>//Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include "usb_desc_scope.h" //Configuracin del USB por Enumerador Palitroquez
#include <usb.c>//handles usb setup tokens and get descriptor reports

Es importante poner con comillas "usb_desc_scope.h" ya que si se pone con <>incluir el ejemplo
de CCS en vez de nuestro driver personalizado.

La descripcin de las funciones USB es como sigue:

usb_init(); //inicializa el USB
usb_task(); //habilita perifrico usb e interrupciones
usb_wait_for_enumeration(); //espera hasta que el PicUSB sea configurado por Windows
usb_enumerated(); //Entrega un 1 si el pic ya fue detectado por Windows
usb_kbhit(1); //Vale 1 si el endpoint de recepcin contiene datos del host
usb_get_packet(1, recibe, 3); //toma el paquete de tamao 3bytes del EP1 y almacena en recibe
usb_put_packet(1, envia, 1, USB_DTS_TOGGLE); //enva el paquete de tamao 1byte del EP1 a la
PC

Una vez que hayas editado tu programa puedes compilarlo. Graba tu pic con tu programador
favorito y conecta las terminales como sigue.





El diagrama est basado en el empleado por J1M en Hobbypic, pero solo muestra las conexiones
bsicas del PIC, t debers conectar los dispositivos que hayas incluido en tu programa en CCS. En
el programa de ejemplo PicUSB.c se emple un display BCD de nodo comn conectado al puerto
B y un potencimetro conectado a RA0.

Las terminales del ejemplo para el nodo comn han de conectarse de la siguiente forma:

RB0 - a
RB1 - b
RB2 - c
RB3 - d
RB4 - e
RB5 - f
RB6 - g
RB7 - punto (que indica cuando el pic ya fue detectado por Windows)

El voltaje de alimentacin podr ser entregado completamente por el puerto USB y debers limitar
el consumo del pic y su circuitera extra a 100mA. Si requieres ms corriente de alimentacin
debers modificar la siguiente lnea en el archivo usb_desc_scope.h.
0x32, //maximum bus power required (maximum milliamperes/2) (0x32 =100mA)


Conexin al puerto USB e instalacin del driver con Windows XP

Al conectar por primera vez el PIC, Windows pedir que se instalen los drivers. Solo hay que
apuntarle la ruta de la carpeta Driver Windows del paquete de ejemplo o la ruta en la que se
guard el .inf generado con el Enumerador


Instalacin bajo Windows 7
Afortunadamente el driver que el Enumerador de Palitroquez genera es compatible al 100%con
Windows 7. Incluso el icono predeterminado que se muestra en Windows XP y no se mostraba en
Windows Vista ya se muestra en Windows 7.
A continuacin se muestra una serie de imgenes que detallan la instalacin del driver bajo
Windows 7.

S-ar putea să vă placă și