Documente Academic
Documente Profesional
Documente Cultură
USB
ELECTRNICA / HARDWARE
En la primer pantalla puedes cargar el nombre del producto que ests desarrollando
No cambies los nmeros de la segunda pantalla, utiliza los que aparecen de muestra
Como a este sistema lo estamos preparando para manejar y operar el receptor multibanda NeoTeo,
los datos que le agregaremos estarn en coincidencia con esta aplicacin. De all surgen los
nombres que ves en las imgenes. Aqu, en esta pequea gua, slo te daremos un ejemplo prctico
para que te vayas familiarizando con el sistema y sus pequeos secretos para lograr una conexin
exitosa. Las pantallas que comiencen a aparecer son las que ves en imagen; t les colocars el
nombre de la aplicacin que ms desees. Lo que NO debes cambiar en la segunda pantalla son los
nmeros deVendor ID y Product ID. Estos nmeros son asignados por el organismo que regula la
autenticidad de los productos USB donde puedes comprar por U$S 4mil una membresa anual con
nmeros otorgados exclusivamente a tu desarrollo. Por lo tanto, nuestro consejo es que utilices los
nmeros de muestra que provee la aplicacin para los proyectos domsticos que realices.
En la pantalla siguiente puedes seleccionar el lugar donde guardars los archivos que se cargarn
en dos carpetas individuales: una para el programa base del microcontrolador y otra para el
software de aplicacin que utilizars en el ordenador. Siempre trata de buscar una locacin de
nombre corto que se encuentre cercana al rbol raz del disco duro porque con nombres extensos
el compilador puede generar errores al armar los programas. Debajo de la seleccin del PIC,
tienes un casillero para habilitar la generacin automtica de un programa manejado con
interrupciones que mantengan viva la conexin USB durante todo el tiempo que ests conectado.
Como puedes ver, no tendrs 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
cdigo; t slo debes esperar a que termine su trabajo sin errores.
Una vez que hayas realizado estos cinco sencillos pasos, tendrs los programas listos para
comenzar a trabajar. Lo primero que debes hacer es definir el tipo de hardware que
utilizars alrededor del microcontrolador seleccionado y en funcin de l organizar todo el resto de
la aplicacin. Es decir, en este caso, slo colocaremos un pulsador y un LED como componentes
adicionales y un LCD de 16 caracteres y dos lneas. Adems de definir el hardware que utilizars,
tambin aqu se define la idea bsica del software que crears para utilizar y controlar tu
aplicacin desde el ordenador. Para nosotros es importante poder controlar de manera autnoma el
dispositivo que hemos ideado con el PIC y poder hacerlo a travs del ordenador, si es que lo
deseamos. En este ltimo caso, al conectarlo al ordenador porttil, los mandos en el hardware
dejarn de funcionar y el LCD nos indicar que estamos conectados al ordenador y podremos as
operar el hardware directamente a travs del puerto USB.
El circuito
En el circuito podemos ver claramente definidos los sectores ms 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 seal de 5 volts
provenientes desde el ordenador a travs del conector USB. Muchos desarrollos basan su
alimentacin en esta tensin que extraen desde el conector. Un ejemplo de esto es el mecanismo de
la carga de bateras de muchos MPX (MP3, MP4, MP5, etc.) o de algn GPS. Los quemadores de
PICs suelen extraer alimentacin desde este puerto y muchas otras aplicaciones tambin lo hacen.
Debes tener en cuenta que esta salida de tensin tiene un mximo posible de 500 miliamperes; si te
excedes de este consumo, puedes daar la salida del puerto. En muchas oportunidades bastar con
reponer un resistor fusible en el motherboard, pero te aconsejamos no jugar con esta suerte.
Adems, debes recordar que en la tercera pantalla del EasyHID USB Wizard, por default,
esta corrientese limita a 50 mA. Este pequeo valor ser suficiente para extraer de all la informacin
que le daremos al programa del PIC para indicarle que nos estamos conectando al ordenador. Pero
antes de escribir siquiera una lnea de cdigo de programa, debemos grabar el PIC con el firmware
que nos gener elEasyHID (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
generacin del cdigo, al menos, en el correspondiente al microcontrolador.
Es por esto que con el simple agregado de una lnea de cdigo puedes esquivar esta atadura y salir
del lazo. Para esto vamos a utilizar la tensin de entrada de 5Volts que trae el puerto USB,
ingresando a travs de R6 y R5 a RC0. Si RC0 no detecta tensin 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 funcin tal como hacemos con
cualquier otro microcontrolador. Dentro de ese lazo cerrado que utilizaremos para realizar una
actividad autnoma, podremos escribir/leer una memoria EEPROM, interpretar un teclado, manejar
un display LCD y cualquier otra cosa a la que ya estemos acostumbrados.
De esta forma, cuando encendamos nuestro dispositivo, apenas caiga en la instruccin de verificar la
insercin en el puerto USB, ser enviado fuera de ese lazo cerrado y pasar a funcionar de manera
autnoma. Nosotros hemos decidido mostrar este funcionamiento en el display LCD con el mensaje
alusivo correspondiente. Es en esta seccin del programa creada por nosotros mismos en la que
delinearemos el funcionamiento autnomo del desarrollo. Aqu decidiremos qu har por s sola
nuestra creacin. Para el caso de muestra que nos convoca, slo encenderemos y apagaremos un
LED con un pulsador. Pero t puedes expandir la aplicacin a un sistema de adquisicin de datos
para aplicaciones de campo que guarde en una tarjeta SD o en memorias EEPROM de gran
capacidad datos que despus 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 sbado. Tambin puedes construir un Holter Cardaco para
monitorear pacientes con insuficienciacardiovascular. O lo que tu imaginacin sea capaz de lograr.
La condicin de funcionamiento de este sistema dual se basa en la colocacin 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 ocurrirn dos cosas: por un lado, el programa puede seguir siendo operado
desde su teclado nativo (en nuestro ejemplo, un solo botn) o no. En nuestro ejemplo, el botn deja
de funcionar; pasa a interesarnos el trabajo a travs del ordenador. Y por el otro lado, ya debes ir
preparando algunas lneas de programa para el software que hayas seleccionado. Nosotros hemos
optado por una aplicacin 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 instruccin de PORTC.0). Luego vemos un botn que se encargar de prender y apagar el LED
en el dispositivo y un crculo de color que emula esta accin, tal como sucede en el equipo mientras
es controlado en forma remota. Por ltimo, un pequeo texto que cambia de Encendido a
Apagado acompaando la accin del LED.
Tal como se poda ver en el circuito, hemos conectado al LED en PORTC.1 y al botn en
PORTC.2. La aplicacin es sencilla pero intenta ser didctica 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 diseos puedan tener aplicaciones exitosas, efectivas y prcticas, sobre
todo, en el mundo de los ordenadores porttiles.
Volviendo a la programacin del microcontrolador, que es la ms compleja, debemos seguir
aclarando puntos difciles dentro de la rutina del servicio USB. Entre las cuestiones que suelen
traernos dolores de cabeza estn los buffers y su ubicacin o numeracin dentro del PIC respecto a
la numeracin que llevarn en el software dentro del ordenador. En Visual Basic, la posicin 0 no se
puede emplear ya que se la utiliza para el reporte del dispositivo, tal como lo expresa el cdigo
generado: first byte is the report ID, e.g. BufferIn(0) the other bytes are the data from the
microcontrolller Por lo tanto, la enumeracin debe iniciarse desde el 1 hasta el 8 y esto
corresponder dentro del PIC en posiciones de Buffer que irn 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 expndelo utilizando otros
botones, otros LEDs, en fin, otros recursos para ampliar las prestaciones del dispositivo remoto
desde el ordenador.
Observa que adems tienes dos lazos cerrados que si el programa del PIC cae all dentro se
cuelga y no sale ms 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 rpidamente para sacarlo de esa situacin.
Por eso te entregamos los programas completos. Para que puedas experimentar a partir de un
modelo que sabemos que funciona. Ahora depende de tu imaginacin y tu creacin. Esto recin
comienza, amigo. Proton eEasyHID lograron hacerlo muy fcil, ahora la conectividad USB est en
tus manos.
Download :Soft para el PIC y el Ordenador
'****************************************************************
'* Name
: USBNeoTeo.BAS <NOMBRE DEL DESARROLLO>
*
'* Author : Mario G. Sacco
*
'* Notice : Copyright (c) 2009
*
'*
: All Rights Reserved
*
'* Date
: 13/11/2009
*
'
'
'
'
Cls
Clear
A= 0:B = 0
GoSub AttachToUSB
'
'
'
'
'
'
'
'
*****************************************************************
*****************************************************************
* LAZO PRINCIPAL DEL PROGRAMA MIENTRAS SE EST CONECTADO A USB; *
* RECUERDA QUE DEBES MANTENER LA CONEXIN "VIVA" CON LLAMADOS
*
* CONSTANTES A LAS RUTINAS USBPoll, USBIn or USBOut CADA ALGUNOS*
* MILISEGUNDOS O MS
*
*****************************************************************
*****************************************************************
ProgramLoop:
Print At 1,1,"
Print At 2,1,"
Conectado
al bus USB
USBBuffer[0] = 0
USBBuffer[1] = LED
GoSub DoUSBOut
DelayMS 1
GoSub DoUSBIn
B = USBBuffer[2]
If B = 0 Then
GoTo ProgramLoop
Else
Toggle LED
End If
GoTo ProgramLoop
' ************************************************************
' *
RUTINA DE RECEPCIN DE DATOS
*
' ************************************************************
DoUSBIn:
If PORTC.0 = 0 Then GoTo FUERA 'CONTROLO SI SE DESCONECT DE USB
USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
Return
' ************************************************************
' *
RUTINA DE TRANSMISIN DE DATOS
*
' ************************************************************
DoUSBOut:
If PORTC.0 = 0 Then GoTo FUERA '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 FUERA 'CONTROLO SI SE DESCONECT DE USB
Repeat
USBPoll
Until PP0 = ATTACHED_STATE
Return
'******************************************************************************
'******************************************************************************
'**
PROGRAMA QUE SE DESARROLLA DE FORMA AUTNOMA
**
'******************************************************************************
'******************************************************************************
FUERA:
'RUTINA FUERA DEL CONTACTO USB
Cls
'LIMPIO LA PANTALLA AL INICIAR
FUERA2:
'COMIENZO LAZO CERRADO HASTA
'VOLVER A CONECTAR A USB
Print At 1,1,"
AUTONOMO "
'PUEDO IMPRIMIR
Print At 2,1,"
SIN USB
"
'UN TEXTO EJEMPLO
If LED = 1 Then
'CONTROLAR EL ESTADO DE UNA VARIABLE
Print At 1,14,"LED"
'ESCRIBIR SEGN EL ESTADO
Print At 2,14,"ON "
'DE DICHA VARIABLE
Else
Print At 1,14,"LED"
Print At 2,14,"OFF"
EndIf
'SINO
'ESCRIBIR OTRO TEXTO
'FINALIZO LA RUTINA DE CONTROL
For A = 1 To 500
DelayMS 1
Next
Print At 1,1,"
Print At 2,1,"
If LED =
Print At
Print At
Else
Print At
Print At
EndIf
'BORRO EL LCD
'INTERROGO EL ESTADO DEL LED
'Y LO EXPONGO EN EL LCD
1,14,"LED"
2,14,"OFF"
For A = 1 To 500
DelayMS 1
Next
VISUAL
constants
WM_HID_EVENT = WM_APP + 200
NOTIFY_PLUGGED = 1
NOTIFY_UNPLUGGED = 2
NOTIFY_CHANGED = 3
NOTIFY_READ = 4
End Function