You are on page 1of 12

UNIVERSIDAD PRIVADA DEL VALLE

SERVICIOS DE LABORATORIO
ASIGNATURA: DISEO DE SISTEMAS DIGITALES
PRACTICA N 5
COMUNICACIN USB CON PIC DE GAMA ALTA
OBJETIVOS

Realizara en breadboard desarrollo del circuito la implementacin del


puerto USB.
Desarrollar el firmware o programa que configure el modulo USB del PIC.
Desarrollar la aplicacin de escritorio que servir de interfaz de
comunicacin entre el usuario y el microcontrolador.
Diseara e implementara una interface en la PC para la transmisin de
datos por USB.

MARCO TEORICO
DEFINICIONES SOBRE CONCEPTOS DEL ESTNDAR USB
El que venga de utilizar interfaces de comunicacin ms simples como RS-232 se
encuentra que en la comunicacin USB aparecen una serie de trminos nuevos
como: endpoint, pipes, transacciones, clases, Enumeracin, descriptores etc. que
al principio pueden resultar difciles de entender, voy a intentar dar una explicacin
personalizada de dichos conceptos. Quien quiera una explicacin ms rigurosa
puede leer la bibliografa citada al final del artculo.
Interfaz fsica
La interfaz fsica est formada por cuatro hilos dos para la alimentacin 5v (Rojo)
GND (Negro) y dos para datos D+ (verde) y D- (Blanco) Lo del signo + y - es
porque es una seal diferencial cuyo valor depende de la velocidad del bus (3,3v
para low-speed y 400mV para high-speed).
Los conectores se les denomina de tipo A y de tipo B, una imagen de dichos
conectores la tenis aqu.
Nota: la fuente de la imagen est en la direccin URL.
Velocidades del Bus
Hay que decir que el Host es el que controla la velocidad en la que circulan los
datos en el bus USB y que al ser un bus compartido, la velocidad real depender
de la cantidad de dispositivos que tengamos conectados a l en un momento

determinado (mximo 127 incluyendo al Host). Por tanto, los datos siguientes son
solo tericos y de referencia.
Low speed: 1,5 Mbps. Soportado por las especificaciones 1.1, 2.0 y 3.0. Es la
velocidad utilizada por dispositivos como teclados, ratones, joystick, etc.
Full speed: 12 Mbps. Soportado por USB 1.1, USB 2.0 y USB 3.0. Un ejemplo
donde se utilizan estas velocidades es en transmisiones de audio.
High speed: 480 Mbps. Solo USB 2.0 y USB 3.0. Ejemplo transmisiones de video.
Super speed: 5Gbps solo soportado en dispositivos USB 3.0, y como he dicho
antes no conozco ningn microcontrolador que soporte esta especificacin.
Transferencias
Una transferencia se puede definir como el conjunto global de los datos que
forman una comunicacin USB, una transferencia est formada a su vez por una o
varias transacciones que a su vez estn formadas por diferentes paquetes de
datos que contienen las tramas de una comunicacin USB.
No existe un formato nico de transferencia, la especificacin USB permite cuatro
tipos de transferencias:
Control: se utilizan para configurar y enviar comandos, por ejemplo, en la
enumeracin del dispositivo, ms adelante veremos lo que es esto.
Bulk (masivas): se utilizan cuando se precisa una transferencia de datos grande,
es el tipo ms rpido de transferencia, sin embargo, no hay garanta de que los
datos se transmitan en un tiempo determinado (no garantizada la latencia). S que
hay verificacin de que los datos se han transmitido con xito ya que dispone de
sistema de correccin de errores (CRC), esta transferencia solo la pueden utilizar
dispositivos que soporten velocidades Full y High Speed. Este tipo de
transferencia es utilizada por dispositivos como, por ejemplo: discos duros, pen
drivers, escner, impresoras, etc.
Iscronas: Es usada en dispositivos que transmiten seales de audio y de vdeo
en tiempo real. Se garantiza una tasa de velocidad de transmisin determinada
(latencia asegurada). Si no fuera as, por ejemplo, en una transmisin de voz el
audio se oira entrecortado. No contempla la correccin de errores, si en un
archivo de sonido se pierde un BIT, no es importante su recuperacin. Para usar
este tipo de transferencia es necesario que los dispositivos soporten velocidades
Full Speed.

interrupcin: latencia asegurada y verificacin de que los datos se han transmitido


con xito, Se utiliza en dispositivos como: Teclados, Mouse, Sensores, Pantallas
tctiles, y dispositivos que no requieran mucho ancho de banda.
Los dispositivos usan uno o ms tipos de transferencia, la de control es utilizada
siempre por todos los dispositivos en el proceso de enumeracin. Si se utiliza otra
transferencia habr que hacerlo en funcin
del tipo y cantidad de datos a transmitir.
En qu consiste la Enumeracin?
El Host es el encargado de detectar cualquier dispositivo que se conecta al bus.
Cuando un dispositivo es detectado el Host necesita obtener informacin sobre el,
a este proceso es al que se le llama enumeracin. Esta informacin que necesita
el Host se encuentra definida en el dispositivo en los llamados descriptores. Los
descriptores son datos que se guardan en la memoria no voltil del PIC y
contienen la siguiente informacin: El ID del vendedor (VID) y del producto (PID),
consumo de corriente del dispositivo, tipo de transferencia que se va a utilizar,
endpoint utilizados, versin USB soportada, clase utilizada, etc.
El VID (Vendor ID) y el PIC (Product ID) son dos nmeros de 16 bits
representados en Hexadecimal, si utilizamos la clase CDC (Communications
Device Class) de CCS para la comunicacin USB estos valores los podemos
modificar en el archivo "usb_desc_cdc.h" y segn el sistema operativo instalado
en el Host deberemos modificarlos tambin en el archivo .inf, pero esto lo veremos
ms adelante.
Realmente el modificar estos valores solo es til si queremos distribuir nuestro
producto comercialmente, en ese caso existe una organizacin llamada USB
Implementers Forum que se encarga de proporcionarnos previo pago
correspondiente (creo que unos 1500 $) un VID valido para que nuestro dispositivo
conviva sin problemas con el resto de dispositivos USB del mercado, adems
tendremos derecho a poner el logo USB en nuestro producto certificando de esta
manera que ha pasado los controles pertinentes y cumple con el estndar USB.
Todo esto es similar al proceso que se sigue a la hora de obtener una direccin
MAC en una tarjeta de red.
Si esto no estuviera regulado tal y como est y cada dispositivo tuviera el VID y
PID que quisiera, cuando coincidieran en un mismo sistema dos nmeros iguales
se presentara un conflicto hardware y ambos dispositivos dejaran de funcionar.
Seguiremos con las definiciones de conceptos un poco abstractos...

Qu es un endpoint?
Los endpoint son simplemente buffer de memoria RAM que son utilizados para el
envo y recepcin de datos o comandos de control durante una comunicacin
USB. cada endpoint puede ser de entrada o salida de datos o bidireccional, el
endpoint 0 est reservado para comandos de control, el proceso de enumeracin
se realiza a travs del endpoint nmero 0. Este concepto solo se aplica al
dispositivo, en el host existen tambin buffer para el envo y recepcin de datos,
pero no se les denomina con este nombre.
Qu es un Pipe o Tubera?
Es una conexin lgica entre un endpoint y el software del controlador del host
que se produce tras el proceso de enumeracin. Los Pipes se usan mucho en
Sistemas Operativos como UNIX/LINUX para enlazar la salida de un proceso con
la entrada de otro, en este caso el concepto es el mismo.
Qu es una clase?
Una clase es un modelo o plantilla que describe el estado y el comportamiento de
los objetos que la comparten. La clase provee de propiedades y mtodos
(funciones) reutilizables por los objetos o miembros que comparten la clase. Esta
definicin general de clase utilizada en la programacin orientada a objetos creo
que es la mejor para definir este concepto utilizado en USB. La especificacin
USB provee de propiedades y funciones que pueden ser utilizadas por los
dispositivos que tengan caractersticas similares. Por ejemplo, un teclado y un
ratn por sus caractersticas pertenecern a la misma clase la llamada Human
Interface Device (HID), pues bien, si yo diseo el firmware de un dispositivo con
las especificaciones que me exige esta clase podr beneficiarme de esas
propiedades y funciones comunes a la clase, una ventaja de utilizar esta clase por
ejemplo es que no se necesita instalar ningn driver para el dispositivo ya que el
sistema operativo utilizar uno genrico para todos.
La especificacin USB provee de muchas clases para facilitar la vida al
desarrollador de dispositivos, puedes ver una informacin ms precisa de las
clases disponibles aqu.
Las clases ms utilizadas con Microcontroladores son:
HID (Human Interface Device): ejemplos de dispositivos que utilizan esta clase
como hemos dicho ya son: teclados, ratones, pantallas tctiles, joystick, etc.
Velocidad low-speed (64 KB/s de velocidad mxima), tipos de transferencias
soportadas: de control y de Interrupcin. Una caracterstica interesante al utilizar
esta clase es que no se necesita instalar un driver especifico en el Sistema

Operativo, se utiliza uno estndar que ya est incluido en el sistema. En el S.O


Windows la aplicacin de escritorio accede al dispositivo con ayuda de las APIS
win32. En Linux veremos cmo utilizar esta clase en un futuro ejemplo.
MSD (Mass Storage Device Class): Como su propio nombre indica para
dispositivos de almacenamiento masivo como discos duros, memorias flash,
cmaras digitales, dispositivos pticos externos como lectores y grabadoras de CD
y DVD, etc. Esta clase se puede utilizar solo en dispositivos que soporten
velocidades Full y High Speed. El tipo de transferencias utilizadas es Bulk o una
combinacin formada por transferencias del tipo Control, Bulk y Interrupt.
Microchip tiene notas de aplicacin sobre esta clase como la AN1003, CCS
tambin implementa ejemplos sobre esta clase. No se necesita la instalacin de
un driver especfico, se utilizan drivers genricos instalados ya en los Sistemas
Operativos, en Windows se utiliza el driver llamado usbstor.sys ubicado en
C:\Windows\Sistem32\drivers.
CDC (Communications Device Class): Un ejemplo de dispositivo que utiliza esta
clase son los Modems, en este primer ejemplo utilizaremos esta clase para
comunicar nuestro PIC18F4550 con la aplicacin de escritorio que realizaremos
con un IDE multiplataforma, que nos permitir ejecutar la aplicacin en diferentes
sistemas operativos, concretamente en Windows, Linux y MAC. La velocidad
mxima al utilizar esta clase ser de 80 kBytes/s y el tipo de transferencias
soportadas son del tipo interrupcin y Bulk. Utiliza tambin driver estndar
incluidos ya en el sistema operativo, segn el sistema operativo utilizado precisar
o no de la instalacin del archivo .INF, cuando utilizamos esta clase en el PC nos
crear un puerto serie virtual y la comunicacin entre el dispositivo y la aplicacin
de escritorio se har a travs de el al igual que se hara con un puerto serie fsico,
esto supone una gran ventaja a la hora de disear la aplicacin de escritorio, ya
que cualquier IDE de programacin sea del lenguaje que sea, dispone de un
componente o librera que permite el acceso al puerto serie fcilmente.
Existe una clase genrica llamada "Custom Class" que se utiliza cuando el
dispositivo no se asemeja a las caractersticas de ninguno de los miembros
pertenecientes a otras clases. un ejemplo de dispositivo que utiliza esta clase es el
ICD2 o ICD3 de Microchip.
Si el firmware de nuestro dispositivo no cumple con las especificaciones de alguna
de las clases que se beneficia del uso de drivers genricos instalados ya en el
sistema operativo no queda otra que disear un driver para nuestro dispositivo,
sino el dispositivo no ser reconocido por el PC, disear un driver desde cero es
muy complicado ya que se requiere profundos conocimientos tanto de la
arquitectura del PC como del Sistema Operativo que tenga instalado.

Afortunadamente ya hay drivers personalizados que podemos utilizar en nuestros


proyectos, algunos de ellos son los siguientes:
Naturalmente el que proporciona Microchip: para la utilizacin de este driver
Microchip nos proporciona los siguientes archivos:
mchpusb.sys es el driver en s y solo est disponible en formato binario.
mchpusb.ini este archivo contiene informacin del driver y es requerido por el
sistema operativo para que cuando se conecta por primera vez el dispositivo al PC
este sepa que driver tiene que asignarle. El S.O tambin obtiene informacin de
este archivo para configurar correctamente el dispositivo. Es un archivo de texto
que se puede editar y modificar algunas cosas en l, como los valores del VID y
PID que deben de coincidir con los definidos en los descriptores del dispositivo,
tambin se pueden modificar algunas cadenas de texto que se mostraran como
informacin del dispositivo una vez instalado el driver en el S.O, lo dems mejor
no tocarlo sino queremos que nuestro dispositivo deje de funcionar.
La DLL mpusbapi: una dll es una capa software que en este caso facilita por medio
de funciones la comunicacin entre la aplicacin de escritorio y el driver del
dispositivo. Esta dll est compilada con el compilador de Borland C++ Builder 6.
Microchip facilita su cdigo fuente, por lo que hay dos formas de utilizarla. Si
utilizamos el mismo IDE de Borland para crear nuestra aplicacin de escritorio,
simplemente tendremos que aadir la librera (el archivo mpusbapi.lib) a nuestro
proyecto como una librera ms (ojo la extensin tiene que ser .lib!), si utilizamos
otro compilador diferente deberemos de compilar de nuevo las fuentes de la
librera para obtener una nueva versin del archivo mpusbapi.lib que sea
compatible con el compilador utilizado. La otra opcin de utilizacin de la librera
es aadirla a nuestro proyecto de forma dinmica, para ello solo se necesita el
archivo con extensin .dll (mpusbapi.dll) proporcionado tambin por Microchip, de
esta forma si utilizamos un compilador diferente como los que nos proporciona
Microsoft en su plataforma .NET u otros como LabVIEW, Matlab, RealBAsic, etc.
No tendremos que modificar el cdigo fuente de la DLL, simplemente la
utilizaremos importando las funciones pblicas de la DLL desde nuestra aplicacin
de escritorio. Microchip proporciona ejemplos de ambas formas. Como veis todo
esto del USB da pie a realizar las cosas de diferentes formas, ms adelante en
otro ejemplo veremos ests dos posibilidades. Pero por qu utilizar esta opcin y
no utilizar siempre las clases CDC, MSD o HID que a priori parece ms fcil su
utilizacin? Simplemente porque utilizando un driver personalizado en vez de los
genricos que proporciona Windows obtenemos una comunicacin USB ms
verstil y con mayores prestaciones. Por ejemplo, en cuanto a velocidad podremos
alcanzar velocidades de hasta 1MB/s frente a los 64 KB/s de la clase HID y los 80

kBytes/s de la clase CDC, adems el driver de Microchip soporta todos los tipos
de transferencia (Control, Iscronas, Interrup y Bulk), cosa que no ocurre igual si
utilizamos las otras clases como ya hemos visto.

En su ltima versin este driver est soportado por los siguientes sistemas
operativos: Windows 2000, Windows Server 2003, Windows XP, Windows XP 64,
Windows
Vista,
Windows
Vista
64
y
Windows
7
Nota importante: cuando utilizamos el driver personalizado de Microchip los datos
se transmiten en raw (crudo) y la aplicacin de escritorio intercambia informacin
con el PIC directamente a travs de los enpoints utilizados por este, en este caso
se usa un protocolo de comunicacin que a priori no est definido. Es importante
que copiemos del archivo .INF el valor del campo definido como GUI (Global
Unique Identifier), que es un nmero que sirve para que la aplicacin pueda
acceder al dispositivo, luego accederemos a la dll desde el IDE que hallamos
elegido para desarrollar la aplicacin de escritorio editaremos las
propiedades y funciones pblicas de la dll buscando un campo que se llame GUI
(o algo as) y si no coincide tendremos que pegar hay ese nmero, si no lo
hacemos no se podr crear la tubera de conexin (pipe) entre nuestra aplicacin y
el driver.
Cuando utilizamos la clase CDC esto no es necesario ya que la comunicacin est
definida a travs del puerto serie virtual creado y la informacin se transmite por
defecto en forma de caracteres ASCII al igual que un puerto serie fsico.
Otros drivers que podemos utilizar para nuestro PIC 18fx550 son:
WinUSB: es el driver genrico para USB que propone utilizar Microsoft cuando
nuestro dispositivo no puede ser manejado directamente por los drivers que ya
incluye por defecto en su sistema operativo. Para ello al igual que Microchip
proporciona los siguientes archivos: Winusb.sys, Winusb.ini y la librera dinmica
Winusb.dll que al igual que la dll de Microchip nos proporciona una serie de
funciones pblicas para acceder fcilmente al driver y a las APIs win32 de
Windows desde nuestra aplicacin de escritorio.
Toda la informacin que proporcionada Microsoft sobre este driver la podis
encontrar en el siguiente enlace.
libUSB: Es un driver de cdigo abierto con licencia GNU, se puede instalar en
mltiples sistemas operativos como LInux, MAC y otros, incluyendo Windows a

travs de su versin libusb-win32. Toda la informacin de este driver lo tenis en la


pgina del proyecto. Adems, existen ejemplos ya hechos para utilizar con
diferentes lenguajes y entornos de programacin como: Java, Python, Ruby, .NET,
etc.
Bueno y con esto se acaba la pequea introduccin sobre USB enfocada a los
PIC, la mayora de datos y valores numricos de esta informacin adems de los
datasheets est sacada de apuntes y notas tomadas por m en las diferentes
presentaciones y seminarios de Microchip a los que he podido asistir a lo largo del
tiempo que estoy con esto de los PICs, por lo que no descarto que pueda haber
algn error, de vosotros depende el verificar dichos datos y si encontris algn
error sera bueno para todos que lo comentarais en el foro.
PROCEDIMIENTO
PARTE 5.1
Disear e implementar la comunicacin entre un PIC 18F4550 y una aplicacin de
escritorio, utilizando un entorno de programacin Multiplataforma, que nos permita
ejecutar la aplicacin en diferentes sistemas operativos.

CODIGO
#include <18F4550.h>
#device ADC=10

#fuses
xt,hs,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,V
REGEN,PUT
#use delay(clock=48000000)
#define USB_CON_SENSE_PIN PIN_C0
#include <usb_cdc.h>
#include <lcd.c>
int a;
char c;
int p,q;
void main() {
setup_adc_ports(an0); //Selecciona el puerto a realizar la conversion
setup_adc(adc_clock_internal); //Selecciona el reloj de conversion
set_adc_channel(0); //Selecciona el canal de conversion
usb_cdc_init();
usb_init();
while(1){
usb_task();
if(usb_enumerated())
{
if(usb_cdc_kbhit())
{
c=usb_cdc_getc();
if(c=='3'){
printf(usb_cdc_putc,"presione 1 para ver voltaje del puerto 0\n\r");
}
if(c=='1')
{
inicio:
q = read_adc();
//Lectura canal0
p = (q*(0.48875));
//Conversin a voltios;
delay_ms(500);
printf(usb_cdc_putc,"\r voltaje en A0= %d",p);
goto inicio;
}
}
}
}
}

SIMULACION
R1
180

R2

D1
LED-BIGY

10k

RV1
50%

U1

1k

2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

18

RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD

VUSB

RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP

15
16
17
23
24
25
26

J1
1
3
2
4

VCC
D+
DGND
USBCONN

19
20
21
22
27
28
29
30
8
9
10
1

PIC18F4550

CUESTIONARIO.
1. Cmo se define la velocidad de transmisin de los bits en la
comunicacin USB?
R.
La arquitectura USB consta de 4 tipos bsicos de transferencia:

1 Control Transfers: se usa para configurar un dispositivo al momento de que se conecte.


2 Bulk Data Transfers: entrega el dato por volumen, el ancho de banda puede variar.
3 Interrupt Data Tranfers: se usa para la entrega a tiempo del dato
4 Isochronous Data Transfers: Ocupar una cantidad predeterminada negociada de ancho
de banda USB con una latencia de entrega antes de negociar.
Una vez visto los 4 tipos bsicos de transferencia USB se procede analizar los 3 tipos de
funcionamientos de los pic 18Fxxx:

1 USB Human Interface Device (HID): Velocidad Baja, no requiere driver.


2 USB Communication Device Class (CDC): Velocidad Media, requiere driver. Crea un
Puerto Serie Virtual.
3 USB Custom Driver: Velocidad Alta, requiere driver. Este es el modo que usa WinUSB.
MPUSBAPI.DLL DE MICROCHIP:
Microchip ha creado un archivo dll en el que proporciona las funciones de acceso al puerto
USB con un micro controlador de la familia PIC18Fxx5x. Para un funcionamiento correcto,
se necesita el driver mchpusb.sys.
Dentro de los protocolos hay que especificar el tipo de transferencia de datos a usar
(endpoints), VID&PID, nombre y serie del producto que se conecta para que el host
identifique al driver y pueda instalarlo con el fin de que el dispositivo pueda formar las
pipes tneles para su comunicacin con el host.
pVID_PID (Input): String que contiene el PID&VID del dispositivo objetivo. El formato es
vid_xxxx&pid_yyyy. Donde xxxx es el valor del VID y el yyyy el del PID, los dos en
hexadecimal. Ejemplo: Si un dispositivo tiene un VID=0x04d8 y un PID=0x000b, el string
de entrada es: vid_0x04d8&pid_0x000b.
PEP (Input): String con el nmero del Endpoint que se va a abrir. El formato es
\\MCHP_EPz o \MCHP_EPz dependiendo del lenguaje de programacin. Donde z es el
nmero del Endpoint en decimal. Ejemplo: \\MCHP_EP1 o \MCHP_EP1 Este
argumento puede ser NULL (nulo) para crear lazos con Endpoints de funciones no
especficas. Las funciones especficas que utilizan ste parmetro son: MPUSBRead,
MPUSBWrite, MPUSBReadInt.
Handle (Input): Identifica el pipe del Endpoint que se va a leer. El pipe unido tiene que
crearse con el atributo de acceso MP_READ. En conclusin, handle es el nmero de
pipe que nos arroj la instruccin anterior con dwDir=1.
pData (Output): Puntero al buffer que recibe el dato ledo de la pipe. El formato del dato es
un arreglo de N bytes, donde N es el nmero de bytes que maneja el device en el arreglo
que enva a la PC, generalmente se declara al inicio del programa en el PIC.
dwLen (Input): Especifica el nmero de bytes que se espera leer de la pipe.
pLenght (Output): Puntero al nmero de bytes ledos. MPUSBRead pone este valor a cero
antes de cualquier lectura o de chequear un error.
dwMilliseconds (Input): Especifica el intervalo de timeout en milisegundos. La funcin
vuelve si transcurre el intervalo aunque no se complete la operacin. Si dwMilliseconds=0,

la funcin comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es


infinito, el intervalo de timeout nunca termina.

2. Comentar las complejidades y virtudes de la comunicacin por medio del


puerto USB que se va a aplicar durante el desarrollo de esta la prctica.
R. La complejidad fue poder enlazar el usb directamente con la computadora, ya
que se necesitaba de un capacitor de compensacin del cual no se tenia
informacin previa, luego de esto las virtudes de realizar este tipo de
comunicacin es que ya no se necesita de un circuito auxiliar para realizar la
comunicacin entre el PIC y la PC siendo muchsimo ms fcil la instalacin del
cableado de conexin.

CONCLUSIONES

En el presente laboratorio vimos las complejidades y virtudes de la


conexin USB mediante un Pic de gama alta como lo es el 18F4550.
Logramos establecer la comunicacin directa entre el pic y la PC para
intercambiar los datos adecuados mediante una aplicacin de escritorio
configurada correctamente.
Se demostr que la conexin directa por USB es ms fcil de implementar y
adems requiere de menos dispositivos conectados al circuito lo que
incluso reduce el consumo de corriente del mismo.

BIBLIOGRAFIA
http://picmania.net/usb_3_cdctransfers.php
http://www.electroensaimada.com/i2c.html
http://www.wikiteka.com/apuntes/configuracion-del-modulo-usb-en-el-pic18f4550/
http://www.aquihayapuntes.com/indice-practicas-pic-en-c/comunicacion-usbpic18f4550-utilizando-la-clase-cdc.html?start=1

You might also like