SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
UNIVERSIDAD MODELO 
                                   ESCUELA DE INGENIERÍA 

                                MAESTRÍA EN MECATRÓNICA 

 

 

 

 

Transferencia y procesamiento de datos a alta velocidad, mediante el uso de MATLAB, el puerto 
                            USB 2.0 y PIC18F2455 de Microchip™  

 

 

                                         PRESENTA: 

 

                              ING. GABRIEL JESÚS POOL BALAM 

 

 

 

                                     PARA LA MATERIA: 

                                   DISEÑO MECATRÓNICO 

                                               

                                         PROFESOR: 

                                DR. ALEJO MOSSO VAZQUEZ 

                                               

 

                                                    

                                                       MÉRIDA, YUCATÁN A 4 DE JULIO DE 2009 
 




Agradecimientos: 

 

Al  Centro  de  Investigación  científica  de 
Yucatán  A.  C.  (www.cicy.mx  )  sobre  todo  al 
departamento           de      Instrumentación 
representado  por  Ing.  Leonardo  Gus 
Peltinovich  por  su  apoyo  para  la  realización 
de éste trabajo. 

                                     JUNIO 2009 




     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 2 / 15 
 




RESUMEN                                               caracterización como paso previo al diseño o 
                                                      selección de su controlador. 
         MATLAB  ("matrix  laboratory")  es  un 
software  de  computación  y  desarrollo  de          INTRODUCCIÓN 
aplicaciones,  diseñado  para  llevar  a  cabo 
proyectos      que       impliquen        cálculos          Hoy  en  día,  la  miniaturización  de 
matemáticos  de  nivel  elevado  y  su                componentes  electrónicos,  la  disminución 
representación    gráfica.  MATLAB  integra           de su consumo de corriente y el tamaño de 
análisis  numérico,  cálculo  matricial,  proceso     los      semiconductores,         permite       la 
de  señal  y  visualización  gráfica  en  un          construcción  de  circuitos  más  complejos, 
entorno  tal  que  los  problemas  y  sus             inteligentes  y  eficientes.  No  ha  sido  la 
soluciones son expresados del mismo modo              excepción  con  el  microcontrolador,  ya  que 
en que se escribirían, sin necesidad de hacer         éste  se  ha  desarrollado  notablemente,  al 
uso de la programación tradicional. MATLAB            punto de hacer más grande sus capacidades 
es  capaz  de  manejar  librerías  y  dll’s  de       de  comunicación,  memoria,  circuitos  de 
diferentes dispositivos instalados en la PC.          apoyo  adicionales  (ADC,  oscilador  interno, 
                                                      puertos,  etc.).  Dichos  microcontroladores, 
         Microchip™  proporciona  en  su              requieren  de  muy  poco  componentes  de 
página web los drivers y archivos necesarios          soporte  externo  para  implementarse  y  sus 
para  establecer  la  comunicación  por  puerto       tecnologías  se  han  perfeccionado,  de  tal 
USB  con  la  familia  del  PIC18F2455.  A  través    manera,  que  casi  no  fallan.  Algunos 
de ellos se puede efectuar transacciones de           fabricantes  tal  como  Microchip,  se 
hasta  64  bytes  por  paquete  cada                  preocupan  en  desarrollar  las  herramientas 
milisegundo,  por  cada  túnel  abierto.  El  PIC     para su programación, tales como lenguajes 
es  programado  mediante  “PCWH  Compiler             de  alto  nivel  para  compilar  el  programa    y 
de  CCS”,  versión  3.246.  Los  descriptores         programadores  económicos  para  descargar 
utilizados  para  la  comunicación  USB  están        el  programa  en  el  chip.  Debido  a  éstas 
basados  en  los  archivos  que  contiene  el         herramientas,  éste  chip  se  ha  vuelto  muy 
propio compilador.                                    popular  al  grado  que  se  proponen  como 
                                                      materias a cursar en las escuelas. 
         En este trabajo se muestra que, con 
estas herramientas y manipulando el archivo                Por otro lado, ya no basta con tener un 
mpusbapi.dll,  se  puede  transferir  datos  a        chip  inteligente  que  funcione  de  manera 
alta  velocidad  del  PIC18F2455  a  la  PC  de       autónoma,  ahora  se  requiere  que  trabajen 
manera  bidireccional,  con  la  finalidad  de        en conjunto con la PC especialmente donde 
procesarlos       matemáticamente           y/o       se requieren importar datos de eventos muy 
graficarlos. Un ejemplo de esta aplicación se         rápidos  como  por  ejemplo:    El  arranque  de 
muestra  en  este  trabajo,  y  consiste  en  la      un motor (velocidad con respecto al tiempo) 
obtención  de    curvas  de  arranque  de             que  tiene  una  duración  aproximada  de  1 
motores  de  CD  sin  carga,  a  efectos  de  su      décima  de  segundo.  Esto  se  puede  lograr 
                                                      con el desarrollo de un software como Visual 



     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 3 / 15 
 




Basic,  Visual  C,  C++,  ó  cualquier  otro                
paquete  de  preferencia  gráfico  para  hacer 
más  fácil  la  interfaz  de  usuario.                      
Desafortunadamente,  cuando  se  requieren                  
procesar  matemáticamente  éstos  datos 
(graficarlos,  aplicar  operaciones  de                     
estadística,  procesar  con  filtros  digitales, 
                                                            
etc.), se vuelve literalmente imposible.  
                                                            
      Con MATLAB se resuelve ese problema, 
pero existe un detalle, el hecho de importar                                     
los  datos  en  tiempo  real  con  alguna  tarjeta 
de  adquisición  de  datos  requiere                             Fig. 1 Topología del BUS 
compatibilidad con éste programa sin contar 
                                                           El hub es un elemento plug and play en 
adicionalmente con los recursos económicos 
                                                      la  estructura  USB  (Figura  2)  y  es  un 
para  la  compra  de  ésta  tarjeta. 
                                                      concentrador  al  cual,  se  le  pueden  agregar 
Afortunadamente  MATLAB  ha  evolucionado 
                                                      más dispositivos USB, incluyendo otro hub. 
al  grado  de  que  se  puede  conectar  casi  con 
cualquier  dispositivo,  y  su  manejo  es                  La  velocidad  de  transferencia  depende 
relativamente  fácil  e  incluye  una  ayuda  en      de  la  velocidad  del  HUB  que  se  esté 
línea.                                                utilizando.  Ver  figura  3.  Las  velocidades 
                                                      típicas  son:    480Mb  /s  en  high  speed, 
     La  finalidad  de  éste  trabajo  es             12Mb/s full‐speed y 1.5Mb/s en Low‐speed. 
desarrollar  una  comunicación  entre  un                    
micro  controlador  y  éste  software  para  el 
                                                            
tratamiento  de  datos  de  manera  más 
económica  y  sin  algún  software  ejecutable              
que sirva de intermediario.  
                                                            
ANTECEDENTES 
                                                            
1. LA ARQUITECTURA DEL PUERTO USB 
                                                                        Fig. 2 HUB USB 
     A  pesar  de  que  el  puerto  USB  nos 
ofrece  más  ventajas  que  sus  predecesores,              
su  complejidad  para  implementarlo  es 
                                                            
enorme,  ya  que  su  funcionamiento  está 
basado en  protocolos de software.                          

    Sólo puede haber un Host en el bus que                 Fig. 3 Múltiple velocidad en un BUS 
maneja  a  todos  los  componentes 
conectados como se indica en la figura 1. 



     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 4 / 15 
 




     El cable que típicamente es usado no es             Estos  protocolos  se  le  llaman 
largo, debido a la velocidad de transferencia        descriptores  y  sirve  para  informarle  al  host 
y tiene la estructura mostrada en la figura 4.       todo  lo  necesario  para  que  pueda 
Sus  terminales  son  del  tipo  diferencial  y      administrarlo.  
consta de 4 hilos. 
                                                          Recordemos  que  los  PICs  de  la  serie 
                                                     18Fxx5x    tienen    tres     modos        de 
                                                     funcionamiento: 
 
                                                          1.       USB  Human  Interface  Device 
               Fig. 4 Cable USB                                    (HID):  Velocidad  Baja,  no 
     La  arquitectura  USB  comprende  cuatro                      requiere driver. 
tipos básicos de transferencia de datos:                  2.       USB  Communication  Device 
•  Control  Transfers:    Es  usado  para                          Class  (CDC):  Velocidad  Media, 
configurar un dispositivo al momento de que                        requiere  driver.  Crea  un  Puerto 
se  conecta.  Los  datos  entregados  pueden                       Serie Virtual. 
perderse. 
                                                          3.       USB  Custom  Driver:  Velocidad 
•  Bulk  Data  Transfers:  Entrega  el  dato  por                  Alta,  requiere  driver.  Este  es  el 
volumen, el ancho de banda puede variar. Es                        modo  que  usa  WinUSB  (para 
usado  en  escáner  ó  cámaras.  La  ráfaga  de                    windows  vista)  y  el  mpusbapi 
datos es secuencial. 
                                                                   (windows 2000 y posterior). 
 
•  Interrupt  Data  Transfers:  Used  for  timely             Dentro  de  los  protocolos  hay  que 
but  reliable  delivery  of  data,  for  example,    especificar el tipo de transferencia de datos 
characters  or  coordinates  with  human‐            a usar (endpoints), VID&PID, nombre y serie 
perceptible  echo  or  feedback  response            del  producto  que  se  conecta  para  que  el 
characteristics.                                     host  identifique  al  driver  y  pueda  instalarlo 
                                                     con el fin de que el dispositivo pueda formar 
•  Isochronous  Data  Transfers:  Occupy  a          las  “pipes”  ó  túneles  para  su  comunicación 
prenegotiated  amount  of  USB  bandwidth            con el host (ver figura 5). 
with  a  prenegotiated  delivery  latency.  (Also     
called streaming real time transfers).                      
 
      Aunque  el  PIC  no  puede  funcionar                
como  host,  ya  que  se  requiere  de  una  gran 
capacidad  de  manejo  de  datos  para                     
administrar  a  cada  componente  del  BUS,  es 
                                                           
suficiente  que  se  pueda  administrar  como 
un  “device”,  para  esto  se  requiere                    
“memorizarle”    los  protocolos  necesarios 
para enlazarse al host.                                   Fig 5. Flujo de comunicación USB 




     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 5 / 15 
 




2. LA MPUSBAPI.DLL DE MICROCHIP                         DLL,  ésto  permite  que  MPUSBRead, 
                                                        MPUSBWrite  y  MPUSBReadInt  tengan  un 
     Para  una  mayor  facilidad  de  desarrollo        valor de time‐out. 
de  aplicaciones  basadas  en  el  bus  USB,             Nota: el valor del time‐out no tiene sentido 
Microchip ha creado un archivo dll en el que            en una pipe síncrona.  
proporciona  las  funciones  de  acceso  al              
puerto  USB  con  un  microcontrolador  de  la          instance:  Input:  Un  número  de  dispositivo 
familia  PIC18Fxx5x.  Para  un  funcionamiento          para  abrir.  Normalmente,  se  utiliza  primero 
correcto, se necesita el driver mchpusb.sys.            la  llamada  de  MPUSBGetDeviceCount  para 
                                                        saber cuantos dispositivos hay.  
     Este  driver  sirve  tanto  para  Visual  Basic     
como para Visual C, entre otros.                                 Es importante entender que el driver 
                                                        lo  comparten  distintos  dispositivos.  El 
     Revisando ejemplos, y la ayuda que trae            número            devuelto          por         el 
incluida sobre el manejo de la dll se verifica          MPUSBGetDeviceCount tiene que ser igual o 
que el modo de abrir la pipe es el siguiente:           menor  que  el  número  de  todos  los 
                                                        dispositivos  actualmente  conectados  y 
     Primero  se  identifica  si  hay  un               usando  el  driver  genérico.  Ejemplo:  Si  hay 
dispositivo  con  el  nombre  VID&PID                   tres  dispositivos  con  los  siguientes  PID_VID 
conectado a la PC con la instrucción:                   conectados:  
      (*MPUSBGetDeviceCount)(PCHAR                                
pVID_PID )                                                 Dispositivo tipo 0, VID 0x04d8, PID 0x0001 
                                                           Dispositivo tipo 1, VID 0x04d8, PID 0x0002 
La  variable  pVID&PID,  es  una  entrada  de              Dispositivo tipo 2, VID 0x04d8, PID 0x0003  
cadena de caracteres que da como resultado               
el  número  de  dispositivos  conectados  al            y  el  dispositivo  que  nos  interesa  tiene 
Host,  que  tienen  asignado  el  mismo                 VID=0x04d8           y       PID=0x0002         el 
pVID&PID.                                               MPUSBGetDeviceCount  devolverá  un  ‘1’.  Al 
                                                        llamar  la  función  tiene  que  haber  un 
      Seguidamente  con  la  instrucción                mecanismo que intente llamar MPUSOpen() 
(*MPUSBOpen)                                            desde  0  hasta  MAX_NUM_MPUSB_DEV.  Se 
(DWORD instance,           // Input                     tiene  que  contar  el  número  de  llamadas 
                                                        exitosas.  Cuando  este  número  sea  igual  al 
PCHAR pVID_PID,            // Input                     número                  devuelto              por 
                                                        MPUSBGetDeviceCount,  hay  que  dejar  de 
PCHAR pEP,                     // Input                 hacer  las  llamadas  porque  no  puede  haber 
                                                        más dispositivos con el mismo VID_PID.  
DWORD dwDir,              // Input 
                                                         
                                                        pVID_PID:  Input:  String  que  contiene  el 
DWORD  dwReserved);    //  Input  <Future 
                                                        PID&VID del dispositivo objetivo. El formato 
Use>                                                    es  “vid_xxxx&pid_yyyy”.  Donde  xxxx  es  el 
                                                        valor del VID y el yyyy el del PID, los dos en 
Esta  instrucción  devuelve  el  acceso  al  pipe 
                                                        hexadecimal. Ejemplo: Si un dispositivo tiene 
del Endpoint con el VID_PID asignado. Todas 
                                                        un VID=0x04d8 y un PID=0x000b, el string de 
las  pipes  se  abren  con  el  atributo 
                                                        entrada es: “vid_0x04d8&pid_0x000b”.  
FILE_FLAG_OVERLAPPED  contenida  en  la 
                                                         



      Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 6 / 15 
 




pEP:  Input:  String  con  el  número  del              Como  tercer  procedimiento,  se  lee  el  dato 
Endpoint  que  se  va  a  abrir.  El  formato  es       aplicando  el  número  de  pipe  asignado  por 
“MCHP_EPz”               o         “MCHP_EPz”        medio de la instrucción: (*MPUSBRead) 
dependiendo del lenguaje de programación. 
Donde  z  es  el  número  del  Endpoint  en              (HANDLE handle,                    // Input 
decimal. Ejemplo:  
“MCHP_EP1”  o  “MCHP_EP1”  Este                      PVOID pData,                        // Output 
argumento puede ser NULL (nulo) para crear 
lazos  con  Endpoints  de  funciones  no                DWORD dwLen,                        // Input 
específicas.  Las  funciones  específicas  que 
utilizan  éste  parámetro  son:  MPUSBRead,             PDWORD pLength,                     // Output 
MPUSBWrite, MPUSBReadInt.  
                                                        DWORD dwMilliseconds);              // Input 
Nota:  Para  utilizar  MPUSBReadInt(),  el 
formato  de  pEP  tiene  que  ser                        
“MCHP_EPz_ASYNC”. Esta opción sólo está               handle: Input: Identifica la pipe del Endpoint 
disponible para un Endpoint interrupción IN.            que  se  va  a  leer.  La  pipe  unida  tiene  que 
La pipe de datos abierta con “_ASYNC” debe              crearse con el atributo de acceso MP_READ. 
almacenar  datos  con  el  intervalo                    En  conclusión,  “handle”  es  el  número  de 
especificado  en  el  Endpoint  descriptor  con         pipe  que  nos  arrojó  la  instrucción  anterior 
un  máximo  de  100  recepciones.  Cualquier            con dwDir=1. 
otro  dato  recibido  después  de  llenar  el            
buffer del driver se ignora. La aplicación del          pData: Output: Puntero al buffer que recibe 
usuario  tiene  que  llamar  MPUSBReadInt()  a          el dato leído de la pipe. El formato del dato 
menudo sin superar el máximo de 100.                    es  un  arreglo  de  N  bytes,  donde  N  es  el 
                                                        número de bytes que maneja el “device” en 
dwDir: Especifica la dirección del Endpoint:            el arreglo que envía a la PC, generalmente se 
    MP_READ:  para  MPUSBRead  y                        declara al inicio del programa en el PIC. 
MPUSBReadInt                                             
   MP_Write: para MPUSBWrite                            dwLen: Input: Especifica el número de bytes 
                                                        que se espera leer de la pipe.  
Se  abre  un  pipe  a  la  vez  (hay  que  usar  dos     
                                                        pLenght:  Output:  Puntero  al  número  de 
veces ésta instrucción), con dwDir=1 se abre 
                                                        bytes  leídos.  MPUSBRead  pone  este  valor  a 
la  pipe  para  leer  y  con  dwDir=0  se  abre  la     cero  antes  de  cualquier  lectura  o  de 
pipe para escribir al PIC, el resultado que nos         chequear un error.  
arroja ésta instrucción es el número de pipe             
que nos asigna el sistema operativo.                    dwMilliseconds: Input: Especifica el intervalo 
                                                        de  time‐out  en  milisegundos.  La  función 
dwReserved:  No  asignado  por  el  momento,            vuelve  si  transcurre  el  intervalo  aunque  no 
el valor por omisión es cero.                           se      complete         la     operación.       Si 
                                                        dwMilliseconds=0, la función comprueba los 
                                                        datos de la pipe y vuelve inmediatamente. Si 
El  formato  típico  de  la  instrucción  es:           dwMilliseconds  es  infinito,  el  intervalo  de 
MPUSBOpen(0, vid_pid, out_pipe, dwDir, 0)               time‐out nunca termina.  
                                                         



     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 7 / 15 
 




El  formato  típico  de  la  instrucción  es:          dwMilliseconds=0, la función comprueba los 
MPUSBRead(myInPipe,              VarPtr(s(0)),         datos de la pipe y vuelve inmediatamente. Si 
DatosDeseados, Datos, 1000)                            dwMilliseconds  es  infinito,  el  intervalo  de 
                                                       time‐out nunca termina.  
        Para  enviar  los  datos  al  PIC  se  hace     
de  la  misma  manera  con  la  instrucción:           El  formato  típico  de  la  instrucción  es: 
(*MPUSBWrite)                                          MPUSBWrite(myOutPipe, 
                                                       VarPtr(SendData(0)),  bytes,  VarPtr(bytes), 
(HANDLE handle,            // Input                    1000)  

PVOID pData,               // Input                             Por  ultimo,  se  requiere  cerrar  las 
                                                       pipes,  porque  después  de  usarlos  caducan, 
DWORD dwLen,               // Input 
                                                       ya  no  es  posible  leer  /  escribir  de  nuevo. 
PDWORD pLength,                     // Output          Para  cerrarlos  basta  ejecutar  la  instrucción: 
                                                       (*MPUSBClose)(HANDLE  handle);  de  donde 
DWORD dwMilliseconds);              // Input           handle: Input: Identifica la pipe del Endpoint 
                                                       que se va a cerrar.  
handle: Input: Identifica la pipe del Endpoint 
que se va a escribir. La pipe unida tiene que          El  formato  típico  de  la  instrucción  es: 
crearse  con  el  atributo  de  acceso                 MPUSBClose (myOutPipe) 
MP_WRITE.  En  conclusión,  “handle”  es  el                    
número de pipe que nos arrojó la instrucción 
anterior con dwDir=0.                                  Existen  otras  dos  instrucciones  que  no  se 
                                                       implementaron  en  éste  desarrollo,  pero  es 
pData: Input: Puntero al buffer que contiene 
                                                       necesario conocerlos, éstas son: 
los datos que se van a escribir en la pipe. El 
formato  del  dato  es  un  arreglo  de  N  bytes,     MPUSBGETDLLVERSION(VOID)  
donde N es el número de bytes que maneja                
el “device” en el arreglo que recibe de la PC,         Lee el nivel de revisión del MPUSAPI.dll. Esta 
generalmente  se  declara  al  inicio  del             función  devuelve la versión del código de la 
programa en el PIC.                                    dll  en  formato  hexadecimal  de  32bits,  no 
                                                       realiza nada con el puerto USB.  
dwLen: Input: Especifica el número de bytes             
que se van a escribir en la pipe.                      El  formato  típico  de  la  instrucción  es: 
 
                                                       MPUSBGetDLLVersion() 
pLenght:  Output:  Puntero  que  proporciona 
el número de bytes que se escriben al llamar 
                                                       MPUSBREADINT(HANDLE,  PDATA,  DWLEN, 
esta función. MPUSBWrite pone este valor a 
                                                       PLENGTH, DWMILLISECONDS)  
cero  antes  de  cualquier  lectura  o  de 
                                                        
chequear un error.  
                                                       handle: Input: Identifica la pipe del Endpoint 
 
                                                       que  se  va  a  leer.  La  pipe  unida  tiene  que 
dwMilliseconds: Input: Especifica el intervalo 
                                                       crearse con el atributo de acceso MP_READ.  
de  time‐out  en  milisegundos.  La  función 
                                                        
vuelve  si  transcurre  el  intervalo  aunque  no 
                                                       pData: Output: Puntero al buffer que recibe 
se     complete         la      operación.      Si 
                                                       el dato leído de la pipe.  



     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 8 / 15 
 




                                                       sentidos  comunes  desde  la  perspectiva  de 
dwLen: Input: Especifica el número de bytes            una aplicación haciendo llamadas. 
que hay que leer de la pipe.  
                                                       DECLARACIÓN DE CONSTANTES Y VARIABLES  
pLenght:  Output:  Puntero  al  número  de              
bytes  leídos.  MPUSBRead  pone  este  valor  a        Aquí aparecen las constantes y variables que 
cero  antes  de  cualquier  lectura  o  de             el  fabricante  recomienda  usar.  Todas  son 
chequear un error.                                     optativas,  dejando  la  elección  al 
                                                       programador.  También,  se  comentan  las 
dwMilliseconds: Input: Especifica el intervalo         pequeñas variaciones que existen al declarar 
de  time‐out  en  milisegundos.  La  función           estas variables en los distintos lenguajes.  
vuelve  si  transcurre  el  intervalo  aunque  no       
se      complete        la      operación.       Si    MPUS_FAIL=0  
dwMilliseconds=0, la función comprueba los             MPUSB_SUCCESS=1  
datos de la pipe y vuelve inmediatamente. Si           MP_WRITE=0  
dwMilliseconds  es  infinito,  el  intervalo  de       MP_READ=1  
time‐out nunca termina.                                MAX_NUM_MPUSB_DEV=127  
                                                       vid_pid= “vid_04d8&pid_0011”  
El  formato  típico  de  la  instrucción  es:          En Visual Basic:  
MPUSBReadInt(myOutPipe,                                out_pipe= “MCHP_EPx”  
VarPtr(SendData(0)),  bytes,  VarPtr(bytes),           in_pipe= “MCHP_EPy”  
1000)                                                   
                                                       En C y Delphi:  
TIPOS  DE  TRANSFERENCIAS  SOPORTADO                   out_pipe= “MCHP_EPx”  
POR ESTAS INSTRUCCIONES                                in_pipe= “MCHP_EPy”  
                                                       Siendo  x  e  y  números  del  Endpoint  por  los 
En este apartado se recomienda que función             que se van a realizar las transmisiones. 
utilizar  dependiendo  del  tipo  de 
transferencia.                                         Esta dll se llama de acuerdo a la convención 
                                                       del  lenguaje  C,  NO  funciona  si  es  llamada 
Tipo           Función  ¿Aplicable time‐out?           con el formato de STDLIB. 
Interrupt IN‐MPUSRead, MPUSReadInt ‐si  
Interrupt OUT‐MPUSBWrite                    si         OBJETIVO 
Bulk IN           MPUSBRead                 si  
Bulk OUT       MPUSWrite                    si         El  objetivo  principal  del  presente  trabajo  es  
Isochronous IN‐MPUSBRead                    no         integrar  el  software  de  MATLAB  con  el 
Isochronous OUT‐MPUSBWrite                  no  
                                                       PIC18F2455  de  Microchip  con  el  fin  de 
 
Interrupt: tipo interrupción                           diseñar  una  tarjeta  de  adquisición  de  datos 
Isochronous: tipo síncrono                             ajustada  a  la  necesidad  personalizada  de 
                                                       cada desarrollo. 
Nota:  “Input”  y  “output”  se  refiere  a  los 
parámetros  designados  en  las  llamadas  a            
estas  funciones,  que  son  lo  opuesto  a  los 
                                                        




     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 9 / 15 
 




OBJETIVOS PARTICULARES                                          en  la  sección  #include  al  inicio  del 
                                                                programa. 
    1. Enlace a la PC mediante USB. 
    2. Enlace de MATLAB al PIC.                             3. Verifique  que  la  configuración  del 
    3. Pruebas finales y correcciones.                         PLL  corresponda  a  la  Frecuencia  del 
                                                               Xtal que utiliza. Ejemplo: 
    1. ENLACE A LA PC MEDIANTE USB. 
                                                                PLL1 … para Xtal de 4Mhz 
     Para lograr el enlace a USB se utilizaron 
                                                                PLL2 … para Xtal de 8 Mhz 
las  funciones  USB,  incorporadas  en  el 
lenguaje  C  del  programa  CCS  para  PICS,                    PLL3 … para Xtal de 12 Mhz 
dichas funciones están preparadas para que 
                                                                PLL4 … para Xtal de 20 Mhz, etc. 
el microcontrolador sea reconocido como un 
dispositivo  personalizado  usando  los                  
descriptores  que incluye el mismo lenguaje,                4. Abra  el  archivo  C:Archivos  de 
se estableció la cantidad de datos a 64 bytes                  programaPICCDriversusb_desc_sc
(8  bits  por  byte)  de  envío  y  recepción  hacia           ope.h    (  donde  se  instaló  el 
                                                               compilador  de  CCS  )  que  es  el 
la PC, en la PC se descarga el driver que nos 
                                                               descriptor  del  USB    ubicado  en  su 
proporciona  Microchip  en  su  página  web.                   PC,  avance  hasta  la  sección  start 
Por  parte  del  Hardware,  el  mismo                          device descriptors  (aprox en la linea 
compilador  trae  en  la  ayuda  un  diagrama                  132)  y  reemplace  los  valores  del 
esquemático  para  conectar  al  PIC                           vendor  id,    el  product  id  y  el  device 
dispositivos  adicionales  como  teclado,                      release number como sigue ( puede 
                                                               copiar    las  tres  líneas  siguiente  y 
display genéricos de dos líneas y gráficos, el 
                                                               pegar  en  el  archivo  del  descriptor 
puerto  serie,  usb,  I2C,  etc.  Si  tiene  dudas 
                                                               <<usb_desc_scope.h>> ) : 
sobre  la  descarga  del  driver  consulte  el                  
apartado  3.  Pruebas  finales  y  correcciones 
en éste documento.                                              0xD8,0x04,    //vendor id (0x04D8 is 
                                                                Microchip) 
    Configurando el Hardware 
                                                                0x0B,0x00,      //product id 
    1. Conecte  el  PIC  como  se  muestra  en 
       el diagrama esquemático al final del                     0x01,0x00,  //device release number 
       documento. 
                                                            5. Compile el programa y grábelo en el 
    2. Antes  de  compilar  el    código  de                   PIC (Asegúrese de que antes de abrir 
                                                               el  archivo  a  compilar  presione  el 
       programa <<daq.c>> adjunto en éste 
                                                               botón  “inicio”  (ubicado  en  la  parte 
       archivo  comprimido  con  PCWH 
                                                               superior izquierda)   “Close all” del 
       Compiler  de  CCS  versión  3.246  ó                    compilador). 
       posterior, primero escoja el PIC que 
       utilice  PIC18F2455/2550/4455/4550                   NOTA  IMPORTANTE:  De  no  completar 
                                                            éstos pasos la PC NO detectará al PIC 



    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 10 / 15 
 




    Configurando el Software                              dispositivo  USB  que  adquiere  en  el 
                                                          mercado:  conecte  al  dispositivo  a  la 
    1. La DLL que proporciona Microchip se 
                                                          PC,  en  cuanto  le  solicite  los  driver, 
       puede descargar desde su sitio web. 
                                                          sólo proporcione la dirección donde 
       (www.microchip.com ) Asegúrese de 
                                                          fue  descomprimido  el  driver  (la 
       obtener la versión más actual. En la 
                                                          misma  dirección  del  paso  anterior). 
       dirección  web  que  se  menciona  en 
                                                          Si  todo  es  correcto  debemos  de 
       la  bibliografía  se  descarga  el  driver 
                                                          observar  en  el  administrador  de 
       (link  de  acceso  directo),  en  caso  de 
                                                          dispositivos un nuevo hardware que 
       haber  caducado  busque  en  la 
                                                          se agregó tal como se muestra en la 
       sección  Aplication  and  markets     
                                                          figura  6.  NOTA:  Si  Ud.  Olvida  ó  no 
        USB       MCHPFSUSB FrameworK                     sustituye  correctamente  en  el 
        Software/Tools    <<    Microchip                 descriptor  las  3  líneas  que  se 
        Application  Libraries  v2010‐02‐09               comentan  en  el  código  del 
        >>  ó  simplemente  teclee  “usb                  programa,  el  compilador  CCS 
        software/tools”  en  la  ventanita  de            compilará  correctamente  pero  al 
        búsqueda y déle un  clic en el botón              conectarse  el  PIC  en  la  PC,  éste  no 
        “site  search”,  generalmente  el                 reconocerá el driver. 
        acceso  a  la  página  queda  en  los 
        primeros resultados de la búsqueda,            
        el  cual,  al  darle  click  lleva 
                                                       
        directamente al driver.  En el mismo 
        paquete  incluye  ejemplos  que                
        incluyen  el  programa  fuente  para  la 
        compresión de su uso.                          

    2. Ejecute  el  driver  descargado  en  el         
       paso  anterior  e  instale  en  la 
                                                       
       dirección        que         trae       ya 
       predeterminada.  Este  ejecutable               
       trae muchos ejemplos de aplicación, 
       entre  ellos  trae  el  driver  que  queda      
       ubicado en:                                     
        "C:MICROCHIP SOLUTIONSUSB                    
        TOOLSMCHPUSB CUSTOM 
        DRIVERMCHPUSB DRIVER                         
        RELEASE " 
                                                       
    3. Instale  el  hardware  a  la  PC  de 
                                                      Fig. 6  Instalación del PIC en la PC 
       manera  similar  al  que  se  instala  un 



    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 11 / 15 
 




    4. En  propiedades  del  dispositivo                 satisfactoriamente la instalación del paquete 
       instalado  se  puede  observar  el                de  drivers  de  Microchip.  En  el  mismo 
       número  PID&VID  que  se  configuró               paquete  que  se  descarga  de  la  red 
                                                         obtenemos instrucciones y ejemplos en C++ 
       en  el  PIC  tal  como  se  muestra  en  la 
                                                         que muestran como manipular el driver y los 
       figura 7.                                         parámetros  requeridos  para  aplicarlo.  Sin 
                                                         embargo,  aún  no  es  suficiente  la 
     
                                                         información,  porque  la  dificultad  está  en 
                                                         identificar  el  tipo  de  variable  que  acepta 
                                                         cada  software  de  desarrollo  y  que  también 
                                                         sea aceptada por la DLL. Por lo que de nuevo 
                                                         se  sugiere  consultar  las  notas  de 
                                                         aplicaciones  de  Microchip  y  ejemplos 
                                                         publicados  en  la  web  (con  cualquier 
                                                         software de desarrollo).   
                                                          
                                                               Para  hacer  la  conexión  con  MATLAB 
                                                         simplemente se “copiaron” las instrucciones 
                                                         al  lenguaje  de  matlab  y  se  acondicionaron 
                                                         las  variables  para  que  la  DLL    pueda 
                                                         reconocerlo.  

                                                             NOTA:  Adjunto  a  este  archivo 
                                                         comprimido  se  encuentra  el  código  de 
    Fig.  7  En  propiedades  del  PIC  instalado        MATLAB usb.m que es un demo de cómo el 
en la PC se observa el número de PID&VID                 programa  envía  y  recibe  datos  del  PIC,  los 
                                                         archivos  _mpusbapi.c  y  mpusbapi.dll  son 
    Comentarios Adicionales                              necesarios  para  la  ejecución  en  MATLAB  y 
                                                         deben  de  estar  en  la  misma  carpeta  que  el 
     Todo  esto  se  desarrolló  basándose  en           archivo usb.m 
ejemplos que el compilador trae incluidos en 
la  carpeta  de  “examples”.  Cabe  aclarar  que             Seguidamente se explica el desarrollo de 
                                                         la  comunicación.  Primero  es  necesario 
los  diseños  en  USB  con  PIC  día  a  día  se  van 
                                                         conocer qué función de MATLAB es más fácil 
incrementando.  Sólo  basta  investigar  un              de implementar:  
poco  en  la  red  para  ver  los  resultados 
(Consulte  la  bibliografía  de  éste                    Existen varios métodos, el que se utilizó fue: 
documento). El código del programa del PIC 
                                                         a.  Manipular  directamente  la  dll  con  la 
se encuentra al final del documento con sus 
                                                         instrucción “Loadlibrary” 
respectivos comentarios.  
                                                            Ya  que  se  manipula  la  librería  de  una 
    2. ENLACE  DEL  MATLAB  AL  PIC  PARA 
                                                         manera directa y sin intermediarios.  
       TRANSFERENCIA DE DATOS. 

   Para poder iniciar el enlace con el PIC es 
necesario  que  se  haya  concluido 



    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 12 / 15 
 




    Para  iniciar  con  la  implementación  del        vid_pid_norm = libpointer('int8Ptr', 
código,  primero  inicie  el  programa  de            [uint8('vid_04d8&pid_000b') 0]);  
MATLAB                                                 
                                                      d. Seguidamente abra la pipe para leer (si no 
    Siguiendo  los  pasos  descritos  en  la          desea leer puede omitir éste paso). 
sección  de  antecedentes  de  éste 
                                                      Formato: 
documento,  las  instrucciones  que  se 
requieren  implementar  tienen  la  siguiente         [my_out_pipe]         =       calllib('libreria', 
secuencia y formato en MATLAB son:                    'MPUSBOpen',uint8  (0),  vid_pid_norm, 
                                                      out_pipe, uint8(0), uint8 (0)); 
     a.    Primero  copie  los  archivos  
                                                       De donde: 
_mpusbapi.c  y  mpusbapi.dll  en  la  misma 
carpeta  de  trabajo  (  se  obtienen  de  la          vid_pid_norm     =     libpointer('int8Ptr', 
descarga  del  driver  en  la  página  de             [uint8('vid_04d8&pid_000b') 0]); 
microchip  ("Microchip  MCHPFSUSB  v2.4 
                                                      out_pipe     =     libpointer             ('int8Ptr', 
Installer.zip")),  al  instalarse  queda  ubicado     [uint8('MCHP_EP1') 0]); 
en  X:Microchip  SolutionsUSB  Tools 
MCHPUSB                  Custom            Driver    e.  Siguiendo  con  la  secuencia,  abra  la  pipe 
MpusbapiDllBorland_C,  en  caso  de                 para  escribir  (si  no  desea  escribir  puede 
descargar  una  version  de  driver  más              omitir éste paso). 
reciente,  reemplace  éstos  archivos  por  los 
                                                      Formato: 
más nuevos. 
                                                      [my_in_pipe] = calllib('libreria', 
b.    Se  abre  el  editor  de  MATLAB  y 
                                                      'MPUSBOpen',uint8 (0), vid_pid_norm, 
comenzamos  cargando  la  librería  en 
                                                      in_pipe, uint8 (1), uint8 (0)); 
memoria. 
                                                      De donde: 
     Formato: 
                                                      vid_pid_norm      =     libpointer('int8Ptr', 
     loadlibrary mpusbapi _mpusbapi.h alias 
                                                      [uint8('vid_04d8&pid_000b') 0]); 
librería 
                                                      in_pipe     =     libpointer              ('int8Ptr', 
c.   Luego  se  identifica  el  número  de            [uint8('MCHP_EP1') 0]); 
     dispositivos conectados con el PID&VID 
     y  ubicar  el  que  corresponde  al              f.  Lea  los  datos  de  la  pipe  (solamente  si  la 
     hardware de  su desarrollo.  
                                                      pipe está abierta) Formato: 
 
Formato: 
                                                      [aa,bb,data_in,dd]      =    calllib('libreria', 
 
                                                      'MPUSBRead',my_in_pipe,               data_in, 
[conectado] = calllib ('libreria', 
                                                      uint8(64), uint8(64), uint8(10));  
'MPUSBGetDeviceCount', vid_pid_norm)  
                                                       De donde: 
De donde: 



     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 13 / 15 
 




data_in = eye(1,64,'uint8');                                   En caso de perderse la comunicación 
                                                      con el PIC (  en casos donde el programa en 
g. Escriba los datos de la pipe (solamente si         MATLAB  genere  errores  por  cuestiones 
la pipe está abierta) Formato::                       ajenas  a  la  comunicación)  desinstale  del 
                                                      dispositivo  “Microchip  Custom  USB  Device” 
calllib('libreria',           'MPUSBWrite', 
                                                      desde  el  administrador  de  dispositivos, 
my_out_pipe,         data_out,    uint8(64), 
                                                      desconecte el PIC del puerto USB, descargue 
uint8(64), uint8(10)); 
                                                      la librería de memoria desde el MATLAB con 
De donde:                                             “unloadlibrary librería” en la línea de
                                                      comandos de MATLAB y resetee el PIC.
data_out = eye(1,64,'uint8');                         Conecte de nuevo el PIC al puerto USB de
                                                      su computadora y con eso es suficiente para
h. Cierre la(s) pipe(s) abierta(s), cada vez que      restaurar las comunicaciones entre MATLAB
finalice  el  programa,  ya  que  si  quedan          y el PIC.
abiertas windows  genera errores y se pierde 
                                                      3. Pruebas finales y correcciones. 
la comunicación. 
                                                           Antes  de  compilar  el  programa  y 
Formato: 
                                                      grabarlo  en  el  PIC  es  necesario  asegurarse 
calllib('libreria',              'MPUSBClose',        de  que  antes  de  abrir  el  archivo  a  compilar 
                                                      presione  el  botón  “inicio”  del  mismo 
my_in_pipe); 
                                                      compilador  (ubicado  en  la  parte  superior 
calllib('libreria',              'MPUSBClose',        izquierda)    “Close  all”  .  De  no  hacer  esto 
                                                      es posible que se compile el archivo anterior 
my_out_pipe); 
                                                      con el que Ud haya trabajado. 
IMPORTANTE:                                                Para el enlace con la PC por USB es muy 
                                                      importante  conectar  el  capacitor  (C4)  de 
          Al  terminar  el  programa  descargue 
                                                      0.1uF como se indica en el diagrama, ya que, 
la  librería  de  memoria,  ya  que  no  se  puede 
                                                      si  se  omite  generará  un  error  al  momento 
cargar más de una vez. 
                                                      del  enlace.  También  es  muy  importante 
Formato:                                              habilitar  el  fusible  VREGEN  para  que  Vusb 
                                                      sea activado. 
unloadlibrary librería; 
                                                         Cuidar de no invertir las terminales D‐ y 
                                                      D+  del  conector  USB  a  la  hora  de 
        Una  vez  enlazado  con  el  PIC,  los        implementar el Hardware. 
datos  pueden  fluir  las  veces  que  sea 
necesario  de  un  sentido  a  otro  y                    Es  importante  considerar  la  función  del 
manipularlos como se desee, ya que se tiene           PLL del PIC ya que de acuerdo al valor de la 
el completo control del software del PIC (por         frecuencia del cristal depende el valor de la 
parte del Compilador C) y en la PC (por parte         multiplicación de la frecuencia del reloj para 
de MATLAB).                                           generar los 48Mhz necesarios para el USB. 




    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 14 / 15 
 




    Por  lo  que  respecta  al  descriptor  del          http://picmania.garcia‐
USB,  es  importante  considerar  el  valor  del         cuervo.com/index.php 
VID  &  PID,  ya  que  si  no  es  configurado 
correctamente,  el  driver  que  proporciona             Driver de microchip: 
Microchip  no  lo  reconocerá  y  en                     Microchip Application Libraries v2010‐02‐09  
consecuencia,  no  funcionará.  Para  esto  no 
olvide  sustituir  en  el  descriptor  las  3  líneas    http://ww1.microchip.com/downloads/en/d
que se comentan en el código del programa                evicedoc/MCHP_App_%20Lib%20v2010_02_
que se anexa en éste documento.                          09_Installer.zip 

     La  DLL  que  proporciona  Microchip  se            Asegúrese que el archivo sea el más actual. 
puede  descargar  desde  su  sitio  web. 
Asegúrese de obtener la versión más actual. 
En  el  mismo  paquete  incluye  ejemplos  que 
incluyen  el  programa  fuente  para  la 
compresión de su uso. 

Se  recomienda  verificar  el  archivo  que  nos 
proporciona  Microchip  en  el  driver,  en  la 
siguiente dirección: 

 "C:MICROCHIP SOLUTIONSUSB 
TOOLSMCHPUSB CUSTOM 
DRIVERMCHPUSB DRIVER MCHPUSB 
DRIVER RELEASE NOTES.HTM" 

 Ahí  se  proporciona  información  sobre  la 
compatibilidad  en  sistemas  operativos  y 
ejemplos desarrollados. 

BIBLIOGRAFÍA 

http://www.usb.org/developers/docs/ 

http://slalen.iespana.es/programacion/dato
s/MPUSBApi.pdf 

www.google.com.mx búsqueda “PIC USB”. 

http://www.hobbypic.com/ 

http://www.todopic.com.ar/foros/index.php
?topic=13418.0;do=Bookmark 




    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 15 / 15 
5                                              4                                                                  3                                                    2                                                                  1




                                                                                                                                                                                                              SALIDAS
                                                                                                              +5V
D                                                                                                                                                                                                                                                                                                  D
                                                 +5V
                                                                                                                                                                            D1              D2                D3           D4            D5              D6            D7          D8

                                  R1       R2          R1        R2    R2        R2
                                  10K      10K         10K       10K   10K       10K                                                    C5
                                                                                                                                        0.1uF




                                                                                                                   20
                                                                                                                                                                                R4          R5                R4            R5            R4             R5            R4          R5
                                                                                  2                                                                                             150         150               150           150           150            150           150         150




                                                                                                                           VDD
               RA0                                                                     RA0
               RA1                                                                3    RA1
               RA2                                                                4    RA2
               RA3                                                                5    RA3




                                                                                                                                                                  RB0



                                                                                                                                                                                 RB1



                                                                                                                                                                                               RB2



                                                                                                                                                                                                                RB3



                                                                                                                                                                                                                              RB4



                                                                                                                                                                                                                                              RB5



                                                                                                                                                                                                                                                            RB6



                                                                                                                                                                                                                                                                        RB7
               RA4                                                                6    RA4/T0CKI/C1OUT/RCV
               RA5                                                                7    RA5/SS            RC6/TX/CK                              17
                                                                                                     RC7/RX/DT/SDO                              18
                                   +5V     R6           R7                       11
                                           10K          100                            RC0/T1OSO/T13CKI
C                                                                                 1                                                             13                                                                         Entrada del                                                             C
                                                                                       MCLR/VPP/RE3                                       RC2
                                                                                                                                                                                                                           cable USB
                                                                       RB0       21    RB0/INT                                            RC1   12
                        +5V                            S1                        22                       U2                                                                                                                        _
                                                                       RB1             RB1
                                                       SW                        23                       PIC18F2455
    J4                                                                 RB2             RB2
                                                                       RB3       24                                                                          J1
                                                                                       RB3
               1                                                       RB4       25    RB4                                                                   1                                                                J1-USB




                                                                                                                                                                  USB
                                                                                                           OSC2/CLKO/RA6
               2                                                       RB5       26    RB5                                        RC4/D-/VM     15           2
                                                                                 27                                                             16                                                                      1
               3
                                                                                 28
                                                                                       RB6                                        RC5/D+/VP                  3                                                  D+          + + 2 GND
               4                                                                       RB7                                                                   4                                                          3   + + 4
                                                                                              OSC1/CLKI
                                                                                                                                                14                                                              D-
               5                                                       RB6                                                              VUSB         C4                                                                 Vista Inferior
                                                                       RB7
                                                                                                                                                     0.1uF




                                                                                                                                    GND
                                                                                                                                    GND
    ICSP
                                                                                                          10



                                                                                                                                   19
                                                                                              9




B
                                                                                                                                   8                                                                                                                                                               B
                                                                                                                           X1
                                                                                                                           12 MHz




                                                                                                                                                                           RA0



                                                                                                                                                                                         RA1



                                                                                                                                                                                                          RA2



                                                                                                                                                                                                                        RA3



                                                                                                                                                                                                                                        RA4



                                                                                                                                                                                                                                                      RA5
                   J3                                                                  C7                                        C8
                                           +5V    +12V                                 22pF                                      22pF
    POWER SUPPLY




                                                                                                                                                                                       S1                S1           S1            S1              S1            S1
                   4                                                                                                                                                                   SW                SW           SW            SW              SW            SW
                   3
                   2
                   1
                                  C2
                                  2200uF                     C1                                                                                                                                                       ENTRADAS
                                                             1000uF



A                                                                                                                                                                                      Diseñado por: Ing. Gabriel Pool, gpoolb@hotmail.com                                                         A
                                                                                                                                                                        Title
                                                                                                                                                                                       Integración de PIC18F2455 con MATLAB

                                                                                                                                                                        Size           Document Number                                                                                      Rev
                                                                                                                                                                          A            DAQ                                                                                                    01

                                                                                                                                                                        Date:            Thursday, July 02, 2009                                    Sheet          1          of        1
                              5                                              4                                                                  3                                                    2                                                                  1

Weitere ähnliche Inhalte

Was ist angesagt?

Uso básico de MPLAB
Uso básico de MPLABUso básico de MPLAB
Uso básico de MPLABAmuva
 
Terceraunidad 130504124039-phpapp02
Terceraunidad 130504124039-phpapp02Terceraunidad 130504124039-phpapp02
Terceraunidad 130504124039-phpapp02Maryfer' Ortega
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84AÁngel Acaymo M. G.
 
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...Domitho Ibarra
 
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...Kareen's Maldonado
 
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...carolina peña
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensambladorluisbeltran861
 
Cargadores y ligadores
Cargadores y ligadoresCargadores y ligadores
Cargadores y ligadoresperlallamas
 

Was ist angesagt? (17)

Uso básico de MPLAB
Uso básico de MPLABUso básico de MPLAB
Uso básico de MPLAB
 
Terceraunidad 130504124039-phpapp02
Terceraunidad 130504124039-phpapp02Terceraunidad 130504124039-phpapp02
Terceraunidad 130504124039-phpapp02
 
Tercera unidad
Tercera unidadTercera unidad
Tercera unidad
 
Tercera unidad ;3
Tercera unidad ;3Tercera unidad ;3
Tercera unidad ;3
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84A
 
Brandon software
Brandon softwareBrandon software
Brandon software
 
como programar un pic
como  programar un piccomo  programar un pic
como programar un pic
 
Presentación3
Presentación3Presentación3
Presentación3
 
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...
3 unidad.Poner a punto el programa mediante el uso de un editor de lenguaje d...
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...
3 ponerapuntoelprogramamedianteelusodeuneditordelenguajedeprogramacinestructu...
 
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...
3. poner a punto el programa mediante el uso de un editor de lenguaje de prog...
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensamblador
 
Cargadores y ligadores
Cargadores y ligadoresCargadores y ligadores
Cargadores y ligadores
 
Programación de microcontroladores
Programación de microcontroladoresProgramación de microcontroladores
Programación de microcontroladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 

Andere mochten auch

Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesCarlos Tovar
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresDidier Tec
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladorestecautind
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Miguel Angel Corona Lòpez
 
Capitulo II- Marco Teórico
Capitulo II- Marco TeóricoCapitulo II- Marco Teórico
Capitulo II- Marco TeóricoEvelin Peña
 

Andere mochten auch (8)

Labview & pic
Labview & picLabview & pic
Labview & pic
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicaciones
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladores
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Capitulo II- Marco Teórico
Capitulo II- Marco TeóricoCapitulo II- Marco Teórico
Capitulo II- Marco Teórico
 

Ähnlich wie comunicacion pic - usb

Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]magaly jasmin
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]magaly jasmin
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]magaly jasmin
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]magaly jasmin
 
Computación básica. Tecnologías de Información
Computación básica. Tecnologías de InformaciónComputación básica. Tecnologías de Información
Computación básica. Tecnologías de Informaciónssusere538f7
 
Del 80 88 al pentium
Del 80 88 al pentiumDel 80 88 al pentium
Del 80 88 al pentiumIVAN Quinga
 
Informe de proyecto final de control discreto
Informe de proyecto final de control discretoInforme de proyecto final de control discreto
Informe de proyecto final de control discretoSamuel Guiza Jerez
 
Tablón de anuncios por web y móvil
Tablón de anuncios por web y móvilTablón de anuncios por web y móvil
Tablón de anuncios por web y móvileduar2
 
Ofelia sistemas operativos
Ofelia sistemas operativosOfelia sistemas operativos
Ofelia sistemas operativosofeliatlv289
 
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...Alex Carrión
 
Trabajo de Mecanizados
Trabajo de MecanizadosTrabajo de Mecanizados
Trabajo de Mecanizadosanariverob
 

Ähnlich wie comunicacion pic - usb (20)

Alux descripcion
Alux descripcionAlux descripcion
Alux descripcion
 
Power point usb
Power point usbPower point usb
Power point usb
 
Presentacion predefensa
Presentacion predefensaPresentacion predefensa
Presentacion predefensa
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]
 
Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]Taller Individual Redes[1][1][1]
Taller Individual Redes[1][1][1]
 
Computación básica. Tecnologías de Información
Computación básica. Tecnologías de InformaciónComputación básica. Tecnologías de Información
Computación básica. Tecnologías de Información
 
Del 80 88 al pentium
Del 80 88 al pentiumDel 80 88 al pentium
Del 80 88 al pentium
 
Informe de proyecto final de control discreto
Informe de proyecto final de control discretoInforme de proyecto final de control discreto
Informe de proyecto final de control discreto
 
Tablón de anuncios por web y móvil
Tablón de anuncios por web y móvilTablón de anuncios por web y móvil
Tablón de anuncios por web y móvil
 
Ofelia sistemas operativos
Ofelia sistemas operativosOfelia sistemas operativos
Ofelia sistemas operativos
 
Correccion Taller
Correccion TallerCorreccion Taller
Correccion Taller
 
Còmo actualizar su PC
Còmo actualizar su PCCòmo actualizar su PC
Còmo actualizar su PC
 
Simulador de soporte tecnico
Simulador  de soporte tecnicoSimulador  de soporte tecnico
Simulador de soporte tecnico
 
Carlos Hector Usb
Carlos Hector UsbCarlos Hector Usb
Carlos Hector Usb
 
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...
Diseño e Implementación de una Plataforma E-Learning para la Materia de Tecno...
 
3. guia sistemas modelo osi y tcp
3. guia sistemas modelo osi y tcp3. guia sistemas modelo osi y tcp
3. guia sistemas modelo osi y tcp
 
Proyecto de inovacion 3° ok
Proyecto de inovacion 3° okProyecto de inovacion 3° ok
Proyecto de inovacion 3° ok
 
Trabajo de Mecanizados
Trabajo de MecanizadosTrabajo de Mecanizados
Trabajo de Mecanizados
 

Kürzlich hochgeladen

1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...JoseMartinMalpartida1
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...Ars Erótica
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 

Kürzlich hochgeladen (20)

1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 

comunicacion pic - usb

  • 1. UNIVERSIDAD MODELO  ESCUELA DE INGENIERÍA  MAESTRÍA EN MECATRÓNICA          Transferencia y procesamiento de datos a alta velocidad, mediante el uso de MATLAB, el puerto  USB 2.0 y PIC18F2455 de Microchip™       PRESENTA:    ING. GABRIEL JESÚS POOL BALAM        PARA LA MATERIA:  DISEÑO MECATRÓNICO    PROFESOR:  DR. ALEJO MOSSO VAZQUEZ            MÉRIDA, YUCATÁN A 4 DE JULIO DE 2009 
  • 2.   Agradecimientos:    Al  Centro  de  Investigación  científica  de  Yucatán  A.  C.  (www.cicy.mx  )  sobre  todo  al  departamento  de  Instrumentación  representado  por  Ing.  Leonardo  Gus  Peltinovich  por  su  apoyo  para  la  realización  de éste trabajo.  JUNIO 2009  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 2 / 15 
  • 3.   RESUMEN  caracterización como paso previo al diseño o  selección de su controlador.  MATLAB  ("matrix  laboratory")  es  un  software  de  computación  y  desarrollo  de  INTRODUCCIÓN  aplicaciones,  diseñado  para  llevar  a  cabo  proyectos  que  impliquen  cálculos  Hoy  en  día,  la  miniaturización  de  matemáticos  de  nivel  elevado  y  su  componentes  electrónicos,  la  disminución  representación    gráfica.  MATLAB  integra  de su consumo de corriente y el tamaño de  análisis  numérico,  cálculo  matricial,  proceso  los  semiconductores,  permite  la  de  señal  y  visualización  gráfica  en  un  construcción  de  circuitos  más  complejos,  entorno  tal  que  los  problemas  y  sus  inteligentes  y  eficientes.  No  ha  sido  la  soluciones son expresados del mismo modo  excepción  con  el  microcontrolador,  ya  que  en que se escribirían, sin necesidad de hacer  éste  se  ha  desarrollado  notablemente,  al  uso de la programación tradicional. MATLAB  punto de hacer más grande sus capacidades  es  capaz  de  manejar  librerías  y  dll’s  de  de  comunicación,  memoria,  circuitos  de  diferentes dispositivos instalados en la PC.  apoyo  adicionales  (ADC,  oscilador  interno,  puertos,  etc.).  Dichos  microcontroladores,  Microchip™  proporciona  en  su  requieren  de  muy  poco  componentes  de  página web los drivers y archivos necesarios  soporte  externo  para  implementarse  y  sus  para  establecer  la  comunicación  por  puerto  tecnologías  se  han  perfeccionado,  de  tal  USB  con  la  familia  del  PIC18F2455.  A  través  manera,  que  casi  no  fallan.  Algunos  de ellos se puede efectuar transacciones de  fabricantes  tal  como  Microchip,  se  hasta  64  bytes  por  paquete  cada  preocupan  en  desarrollar  las  herramientas  milisegundo,  por  cada  túnel  abierto.  El  PIC  para su programación, tales como lenguajes  es  programado  mediante  “PCWH  Compiler  de  alto  nivel  para  compilar  el  programa    y  de  CCS”,  versión  3.246.  Los  descriptores  programadores  económicos  para  descargar  utilizados  para  la  comunicación  USB  están  el  programa  en  el  chip.  Debido  a  éstas  basados  en  los  archivos  que  contiene  el  herramientas,  éste  chip  se  ha  vuelto  muy  propio compilador.  popular  al  grado  que  se  proponen  como  materias a cursar en las escuelas.  En este trabajo se muestra que, con  estas herramientas y manipulando el archivo  Por otro lado, ya no basta con tener un  mpusbapi.dll,  se  puede  transferir  datos  a  chip  inteligente  que  funcione  de  manera  alta  velocidad  del  PIC18F2455  a  la  PC  de  autónoma,  ahora  se  requiere  que  trabajen  manera  bidireccional,  con  la  finalidad  de  en conjunto con la PC especialmente donde  procesarlos  matemáticamente  y/o  se requieren importar datos de eventos muy  graficarlos. Un ejemplo de esta aplicación se  rápidos  como  por  ejemplo:    El  arranque  de  muestra  en  este  trabajo,  y  consiste  en  la  un motor (velocidad con respecto al tiempo)  obtención  de    curvas  de  arranque  de  que  tiene  una  duración  aproximada  de  1  motores  de  CD  sin  carga,  a  efectos  de  su  décima  de  segundo.  Esto  se  puede  lograr  con el desarrollo de un software como Visual  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 3 / 15 
  • 4.   Basic,  Visual  C,  C++,  ó  cualquier  otro    paquete  de  preferencia  gráfico  para  hacer  más  fácil  la  interfaz  de  usuario.    Desafortunadamente,  cuando  se  requieren    procesar  matemáticamente  éstos  datos  (graficarlos,  aplicar  operaciones  de    estadística,  procesar  con  filtros  digitales,    etc.), se vuelve literalmente imposible.     Con MATLAB se resuelve ese problema,  pero existe un detalle, el hecho de importar    los  datos  en  tiempo  real  con  alguna  tarjeta  de  adquisición  de  datos  requiere  Fig. 1 Topología del BUS  compatibilidad con éste programa sin contar  El hub es un elemento plug and play en  adicionalmente con los recursos económicos  la  estructura  USB  (Figura  2)  y  es  un  para  la  compra  de  ésta  tarjeta.  concentrador  al  cual,  se  le  pueden  agregar  Afortunadamente  MATLAB  ha  evolucionado  más dispositivos USB, incluyendo otro hub.  al  grado  de  que  se  puede  conectar  casi  con  cualquier  dispositivo,  y  su  manejo  es  La  velocidad  de  transferencia  depende  relativamente  fácil  e  incluye  una  ayuda  en  de  la  velocidad  del  HUB  que  se  esté  línea.  utilizando.  Ver  figura  3.  Las  velocidades  típicas  son:    480Mb  /s  en  high  speed,  La  finalidad  de  éste  trabajo  es  12Mb/s full‐speed y 1.5Mb/s en Low‐speed.  desarrollar  una  comunicación  entre  un    micro  controlador  y  éste  software  para  el    tratamiento  de  datos  de  manera  más  económica  y  sin  algún  software  ejecutable    que sirva de intermediario.     ANTECEDENTES    1. LA ARQUITECTURA DEL PUERTO USB  Fig. 2 HUB USB  A  pesar  de  que  el  puerto  USB  nos  ofrece  más  ventajas  que  sus  predecesores,    su  complejidad  para  implementarlo  es    enorme,  ya  que  su  funcionamiento  está  basado en  protocolos de software.    Sólo puede haber un Host en el bus que  Fig. 3 Múltiple velocidad en un BUS  maneja  a  todos  los  componentes  conectados como se indica en la figura 1.  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 4 / 15 
  • 5.   El cable que típicamente es usado no es  Estos  protocolos  se  le  llaman  largo, debido a la velocidad de transferencia  descriptores  y  sirve  para  informarle  al  host  y tiene la estructura mostrada en la figura 4.  todo  lo  necesario  para  que  pueda  Sus  terminales  son  del  tipo  diferencial  y  administrarlo.   consta de 4 hilos.  Recordemos  que  los  PICs  de  la  serie    18Fxx5x  tienen  tres  modos  de  funcionamiento:    1. USB  Human  Interface  Device  Fig. 4 Cable USB  (HID):  Velocidad  Baja,  no  La  arquitectura  USB  comprende  cuatro  requiere driver.  tipos básicos de transferencia de datos:  2. USB  Communication  Device  •  Control  Transfers:    Es  usado  para  Class  (CDC):  Velocidad  Media,  configurar un dispositivo al momento de que  requiere  driver.  Crea  un  Puerto  se  conecta.  Los  datos  entregados  pueden  Serie Virtual.  perderse.    3. USB  Custom  Driver:  Velocidad  •  Bulk  Data  Transfers:  Entrega  el  dato  por  Alta,  requiere  driver.  Este  es  el  volumen, el ancho de banda puede variar. Es  modo  que  usa  WinUSB  (para  usado  en  escáner  ó  cámaras.  La  ráfaga  de  windows  vista)  y  el  mpusbapi  datos es secuencial.  (windows 2000 y posterior).    •  Interrupt  Data  Transfers:  Used  for  timely    Dentro  de  los  protocolos  hay  que  but  reliable  delivery  of  data,  for  example,  especificar el tipo de transferencia de datos  characters  or  coordinates  with  human‐ a usar (endpoints), VID&PID, nombre y serie  perceptible  echo  or  feedback  response  del  producto  que  se  conecta  para  que  el  characteristics.  host  identifique  al  driver  y  pueda  instalarlo    con el fin de que el dispositivo pueda formar  •  Isochronous  Data  Transfers:  Occupy  a  las  “pipes”  ó  túneles  para  su  comunicación  prenegotiated  amount  of  USB  bandwidth  con el host (ver figura 5).  with  a  prenegotiated  delivery  latency.  (Also    called streaming real time transfers).      Aunque  el  PIC  no  puede  funcionar    como  host,  ya  que  se  requiere  de  una  gran  capacidad  de  manejo  de  datos  para    administrar  a  cada  componente  del  BUS,  es    suficiente  que  se  pueda  administrar  como  un  “device”,  para  esto  se  requiere    “memorizarle”    los  protocolos  necesarios  para enlazarse al host.   Fig 5. Flujo de comunicación USB  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 5 / 15 
  • 6.   2. LA MPUSBAPI.DLL DE MICROCHIP  DLL,  ésto  permite  que  MPUSBRead,  MPUSBWrite  y  MPUSBReadInt  tengan  un  Para  una  mayor  facilidad  de  desarrollo  valor de time‐out.  de  aplicaciones  basadas  en  el  bus  USB,   Nota: el valor del time‐out no tiene sentido  Microchip ha creado un archivo dll en el que  en una pipe síncrona.   proporciona  las  funciones  de  acceso  al    puerto  USB  con  un  microcontrolador  de  la  instance:  Input:  Un  número  de  dispositivo  familia  PIC18Fxx5x.  Para  un  funcionamiento  para  abrir.  Normalmente,  se  utiliza  primero  correcto, se necesita el driver mchpusb.sys.   la  llamada  de  MPUSBGetDeviceCount  para    saber cuantos dispositivos hay.   Este  driver  sirve  tanto  para  Visual  Basic    como para Visual C, entre otros.  Es importante entender que el driver    lo  comparten  distintos  dispositivos.  El  Revisando ejemplos, y la ayuda que trae  número  devuelto  por  el  incluida sobre el manejo de la dll se verifica  MPUSBGetDeviceCount tiene que ser igual o  que el modo de abrir la pipe es el siguiente:   menor  que  el  número  de  todos  los    dispositivos  actualmente  conectados  y  Primero  se  identifica  si  hay  un  usando  el  driver  genérico.  Ejemplo:  Si  hay  dispositivo  con  el  nombre  VID&PID  tres  dispositivos  con  los  siguientes  PID_VID  conectado a la PC con la instrucción:  conectados:    (*MPUSBGetDeviceCount)(PCHAR    pVID_PID )   Dispositivo tipo 0, VID 0x04d8, PID 0x0001     Dispositivo tipo 1, VID 0x04d8, PID 0x0002  La  variable  pVID&PID,  es  una  entrada  de   Dispositivo tipo 2, VID 0x04d8, PID 0x0003   cadena de caracteres que da como resultado    el  número  de  dispositivos  conectados  al  y  el  dispositivo  que  nos  interesa  tiene  Host,  que  tienen  asignado  el  mismo  VID=0x04d8  y  PID=0x0002  el  pVID&PID.  MPUSBGetDeviceCount  devolverá  un  ‘1’.  Al    llamar  la  función  tiene  que  haber  un   Seguidamente  con  la  instrucción  mecanismo que intente llamar MPUSOpen()  (*MPUSBOpen)  desde  0  hasta  MAX_NUM_MPUSB_DEV.  Se  (DWORD instance,           // Input  tiene  que  contar  el  número  de  llamadas  exitosas.  Cuando  este  número  sea  igual  al  PCHAR pVID_PID,            // Input  número  devuelto  por  MPUSBGetDeviceCount,  hay  que  dejar  de  PCHAR pEP,                     // Input  hacer  las  llamadas  porque  no  puede  haber  más dispositivos con el mismo VID_PID.   DWORD dwDir,              // Input    pVID_PID:  Input:  String  que  contiene  el  DWORD  dwReserved);    //  Input  <Future  PID&VID del dispositivo objetivo. El formato  Use>  es  “vid_xxxx&pid_yyyy”.  Donde  xxxx  es  el  valor del VID y el yyyy el del PID, los dos en  Esta  instrucción  devuelve  el  acceso  al  pipe  hexadecimal. Ejemplo: Si un dispositivo tiene  del Endpoint con el VID_PID asignado. Todas  un VID=0x04d8 y un PID=0x000b, el string de  las  pipes  se  abren  con  el  atributo  entrada es: “vid_0x04d8&pid_0x000b”.   FILE_FLAG_OVERLAPPED  contenida  en  la    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 6 / 15 
  • 7.   pEP:  Input:  String  con  el  número  del  Como  tercer  procedimiento,  se  lee  el  dato  Endpoint  que  se  va  a  abrir.  El  formato  es  aplicando  el  número  de  pipe  asignado  por  “MCHP_EPz”  o  “MCHP_EPz”  medio de la instrucción: (*MPUSBRead)  dependiendo del lenguaje de programación.  Donde  z  es  el  número  del  Endpoint  en   (HANDLE handle,     // Input  decimal. Ejemplo:   “MCHP_EP1”  o  “MCHP_EP1”  Este  PVOID pData,       // Output  argumento puede ser NULL (nulo) para crear  lazos  con  Endpoints  de  funciones  no  DWORD dwLen,     // Input  específicas.  Las  funciones  específicas  que  utilizan  éste  parámetro  son:  MPUSBRead,  PDWORD pLength,     // Output  MPUSBWrite, MPUSBReadInt.     DWORD dwMilliseconds);   // Input  Nota:  Para  utilizar  MPUSBReadInt(),  el  formato  de  pEP  tiene  que  ser    “MCHP_EPz_ASYNC”. Esta opción sólo está  handle: Input: Identifica la pipe del Endpoint  disponible para un Endpoint interrupción IN.  que  se  va  a  leer.  La  pipe  unida  tiene  que  La pipe de datos abierta con “_ASYNC” debe  crearse con el atributo de acceso MP_READ.  almacenar  datos  con  el  intervalo  En  conclusión,  “handle”  es  el  número  de  especificado  en  el  Endpoint  descriptor  con  pipe  que  nos  arrojó  la  instrucción  anterior  un  máximo  de  100  recepciones.  Cualquier  con dwDir=1.  otro  dato  recibido  después  de  llenar  el    buffer del driver se ignora. La aplicación del  pData: Output: Puntero al buffer que recibe  usuario  tiene  que  llamar  MPUSBReadInt()  a  el dato leído de la pipe. El formato del dato  menudo sin superar el máximo de 100.   es  un  arreglo  de  N  bytes,  donde  N  es  el    número de bytes que maneja el “device” en  dwDir: Especifica la dirección del Endpoint:   el arreglo que envía a la PC, generalmente se    MP_READ:  para  MPUSBRead  y  declara al inicio del programa en el PIC.  MPUSBReadInt      MP_Write: para MPUSBWrite   dwLen: Input: Especifica el número de bytes    que se espera leer de la pipe.   Se  abre  un  pipe  a  la  vez  (hay  que  usar  dos    pLenght:  Output:  Puntero  al  número  de  veces ésta instrucción), con dwDir=1 se abre  bytes  leídos.  MPUSBRead  pone  este  valor  a  la  pipe  para  leer  y  con  dwDir=0  se  abre  la  cero  antes  de  cualquier  lectura  o  de  pipe para escribir al PIC, el resultado que nos  chequear un error.   arroja ésta instrucción es el número de pipe    que nos asigna el sistema operativo.   dwMilliseconds: Input: Especifica el intervalo  de  time‐out  en  milisegundos.  La  función  dwReserved:  No  asignado  por  el  momento,  vuelve  si  transcurre  el  intervalo  aunque  no  el valor por omisión es cero.   se  complete  la  operación.  Si    dwMilliseconds=0, la función comprueba los  datos de la pipe y vuelve inmediatamente. Si  El  formato  típico  de  la  instrucción  es:  dwMilliseconds  es  infinito,  el  intervalo  de  MPUSBOpen(0, vid_pid, out_pipe, dwDir, 0)  time‐out nunca termina.     Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 7 / 15 
  • 8.   El  formato  típico  de  la  instrucción  es:  dwMilliseconds=0, la función comprueba los  MPUSBRead(myInPipe,  VarPtr(s(0)),  datos de la pipe y vuelve inmediatamente. Si  DatosDeseados, Datos, 1000)   dwMilliseconds  es  infinito,  el  intervalo  de  time‐out nunca termina.   Para  enviar  los  datos  al  PIC  se  hace    de  la  misma  manera  con  la  instrucción:  El  formato  típico  de  la  instrucción  es:  (*MPUSBWrite)  MPUSBWrite(myOutPipe,  VarPtr(SendData(0)),  bytes,  VarPtr(bytes),  (HANDLE handle,   // Input  1000)   PVOID pData,     // Input  Por  ultimo,  se  requiere  cerrar  las  pipes,  porque  después  de  usarlos  caducan,  DWORD dwLen,   // Input  ya  no  es  posible  leer  /  escribir  de  nuevo.  PDWORD pLength,     // Output  Para  cerrarlos  basta  ejecutar  la  instrucción:  (*MPUSBClose)(HANDLE  handle);  de  donde  DWORD dwMilliseconds);   // Input  handle: Input: Identifica la pipe del Endpoint  que se va a cerrar.   handle: Input: Identifica la pipe del Endpoint  que se va a escribir. La pipe unida tiene que  El  formato  típico  de  la  instrucción  es:  crearse  con  el  atributo  de  acceso  MPUSBClose (myOutPipe)  MP_WRITE.  En  conclusión,  “handle”  es  el    número de pipe que nos arrojó la instrucción  anterior con dwDir=0.  Existen  otras  dos  instrucciones  que  no  se    implementaron  en  éste  desarrollo,  pero  es  pData: Input: Puntero al buffer que contiene  necesario conocerlos, éstas son:  los datos que se van a escribir en la pipe. El  formato  del  dato  es  un  arreglo  de  N  bytes,  MPUSBGETDLLVERSION(VOID)   donde N es el número de bytes que maneja    el “device” en el arreglo que recibe de la PC,  Lee el nivel de revisión del MPUSAPI.dll. Esta  generalmente  se  declara  al  inicio  del  función  devuelve la versión del código de la  programa en el PIC.  dll  en  formato  hexadecimal  de  32bits,  no    realiza nada con el puerto USB.   dwLen: Input: Especifica el número de bytes    que se van a escribir en la pipe.   El  formato  típico  de  la  instrucción  es:    MPUSBGetDLLVersion()  pLenght:  Output:  Puntero  que  proporciona  el número de bytes que se escriben al llamar  MPUSBREADINT(HANDLE,  PDATA,  DWLEN,  esta función. MPUSBWrite pone este valor a  PLENGTH, DWMILLISECONDS)   cero  antes  de  cualquier  lectura  o  de    chequear un error.   handle: Input: Identifica la pipe del Endpoint    que  se  va  a  leer.  La  pipe  unida  tiene  que  dwMilliseconds: Input: Especifica el intervalo  crearse con el atributo de acceso MP_READ.   de  time‐out  en  milisegundos.  La  función    vuelve  si  transcurre  el  intervalo  aunque  no  pData: Output: Puntero al buffer que recibe  se  complete  la  operación.  Si  el dato leído de la pipe.   Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 8 / 15 
  • 9.     sentidos  comunes  desde  la  perspectiva  de  dwLen: Input: Especifica el número de bytes  una aplicación haciendo llamadas.  que hay que leer de la pipe.     DECLARACIÓN DE CONSTANTES Y VARIABLES   pLenght:  Output:  Puntero  al  número  de    bytes  leídos.  MPUSBRead  pone  este  valor  a  Aquí aparecen las constantes y variables que  cero  antes  de  cualquier  lectura  o  de  el  fabricante  recomienda  usar.  Todas  son  chequear un error.   optativas,  dejando  la  elección  al    programador.  También,  se  comentan  las  dwMilliseconds: Input: Especifica el intervalo  pequeñas variaciones que existen al declarar  de  time‐out  en  milisegundos.  La  función  estas variables en los distintos lenguajes.   vuelve  si  transcurre  el  intervalo  aunque  no    se  complete  la  operación.  Si  MPUS_FAIL=0   dwMilliseconds=0, la función comprueba los  MPUSB_SUCCESS=1   datos de la pipe y vuelve inmediatamente. Si  MP_WRITE=0   dwMilliseconds  es  infinito,  el  intervalo  de  MP_READ=1   time‐out nunca termina.   MAX_NUM_MPUSB_DEV=127     vid_pid= “vid_04d8&pid_0011”   El  formato  típico  de  la  instrucción  es:  En Visual Basic:   MPUSBReadInt(myOutPipe,  out_pipe= “MCHP_EPx”   VarPtr(SendData(0)),  bytes,  VarPtr(bytes),  in_pipe= “MCHP_EPy”   1000)       En C y Delphi:   TIPOS  DE  TRANSFERENCIAS  SOPORTADO  out_pipe= “MCHP_EPx”   POR ESTAS INSTRUCCIONES  in_pipe= “MCHP_EPy”     Siendo  x  e  y  números  del  Endpoint  por  los  En este apartado se recomienda que función  que se van a realizar las transmisiones.  utilizar  dependiendo  del  tipo  de  transferencia.   Esta dll se llama de acuerdo a la convención    del  lenguaje  C,  NO  funciona  si  es  llamada  Tipo           Función  ¿Aplicable time‐out?   con el formato de STDLIB.  Interrupt IN‐MPUSRead, MPUSReadInt ‐si   Interrupt OUT‐MPUSBWrite     si   OBJETIVO  Bulk IN           MPUSBRead    si   Bulk OUT       MPUSWrite    si   El  objetivo  principal  del  presente  trabajo  es   Isochronous IN‐MPUSBRead     no   integrar  el  software  de  MATLAB  con  el  Isochronous OUT‐MPUSBWrite    no   PIC18F2455  de  Microchip  con  el  fin  de    Interrupt: tipo interrupción   diseñar  una  tarjeta  de  adquisición  de  datos  Isochronous: tipo síncrono   ajustada  a  la  necesidad  personalizada  de    cada desarrollo.  Nota:  “Input”  y  “output”  se  refiere  a  los  parámetros  designados  en  las  llamadas  a    estas  funciones,  que  son  lo  opuesto  a  los    Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 9 / 15 
  • 10.   OBJETIVOS PARTICULARES  en  la  sección  #include  al  inicio  del  programa.  1. Enlace a la PC mediante USB.  2. Enlace de MATLAB al PIC.  3. Verifique  que  la  configuración  del  3. Pruebas finales y correcciones.  PLL  corresponda  a  la  Frecuencia  del    Xtal que utiliza. Ejemplo:  1. ENLACE A LA PC MEDIANTE USB.  PLL1 … para Xtal de 4Mhz  Para lograr el enlace a USB se utilizaron  PLL2 … para Xtal de 8 Mhz  las  funciones  USB,  incorporadas  en  el  lenguaje  C  del  programa  CCS  para  PICS,  PLL3 … para Xtal de 12 Mhz  dichas funciones están preparadas para que  PLL4 … para Xtal de 20 Mhz, etc.  el microcontrolador sea reconocido como un  dispositivo  personalizado  usando  los    descriptores  que incluye el mismo lenguaje,  4. Abra  el  archivo  C:Archivos  de  se estableció la cantidad de datos a 64 bytes  programaPICCDriversusb_desc_sc (8  bits  por  byte)  de  envío  y  recepción  hacia  ope.h    (  donde  se  instaló  el  compilador  de  CCS  )  que  es  el  la PC, en la PC se descarga el driver que nos  descriptor  del  USB    ubicado  en  su  proporciona  Microchip  en  su  página  web.  PC,  avance  hasta  la  sección  start  Por  parte  del  Hardware,  el  mismo  device descriptors  (aprox en la linea  compilador  trae  en  la  ayuda  un  diagrama  132)  y  reemplace  los  valores  del  esquemático  para  conectar  al  PIC  vendor  id,    el  product  id  y  el  device  dispositivos  adicionales  como  teclado,  release number como sigue ( puede  copiar    las  tres  líneas  siguiente  y  display genéricos de dos líneas y gráficos, el  pegar  en  el  archivo  del  descriptor  puerto  serie,  usb,  I2C,  etc.  Si  tiene  dudas  <<usb_desc_scope.h>> ) :  sobre  la  descarga  del  driver  consulte  el    apartado  3.  Pruebas  finales  y  correcciones  en éste documento.  0xD8,0x04,    //vendor id (0x04D8 is  Microchip)  Configurando el Hardware  0x0B,0x00,      //product id  1. Conecte  el  PIC  como  se  muestra  en  el diagrama esquemático al final del  0x01,0x00,  //device release number  documento.  5. Compile el programa y grábelo en el  2. Antes  de  compilar  el    código  de  PIC (Asegúrese de que antes de abrir  el  archivo  a  compilar  presione  el  programa <<daq.c>> adjunto en éste  botón  “inicio”  (ubicado  en  la  parte  archivo  comprimido  con  PCWH  superior izquierda)   “Close all” del  Compiler  de  CCS  versión  3.246  ó  compilador).  posterior, primero escoja el PIC que  utilice  PIC18F2455/2550/4455/4550  NOTA  IMPORTANTE:  De  no  completar  éstos pasos la PC NO detectará al PIC  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 10 / 15 
  • 11.   Configurando el Software  dispositivo  USB  que  adquiere  en  el  mercado:  conecte  al  dispositivo  a  la  1. La DLL que proporciona Microchip se  PC,  en  cuanto  le  solicite  los  driver,  puede descargar desde su sitio web.  sólo proporcione la dirección donde  (www.microchip.com ) Asegúrese de  fue  descomprimido  el  driver  (la  obtener la versión más actual. En la  misma  dirección  del  paso  anterior).  dirección  web  que  se  menciona  en  Si  todo  es  correcto  debemos  de  la  bibliografía  se  descarga  el  driver  observar  en  el  administrador  de  (link  de  acceso  directo),  en  caso  de  dispositivos un nuevo hardware que  haber  caducado  busque  en  la  se agregó tal como se muestra en la  sección  Aplication  and  markets      figura  6.  NOTA:  Si  Ud.  Olvida  ó  no  USB    MCHPFSUSB FrameworK    sustituye  correctamente  en  el  Software/Tools    <<    Microchip  descriptor  las  3  líneas  que  se  Application  Libraries  v2010‐02‐09   comentan  en  el  código  del  >>  ó  simplemente  teclee  “usb  programa,  el  compilador  CCS  software/tools”  en  la  ventanita  de  compilará  correctamente  pero  al  búsqueda y déle un  clic en el botón  conectarse  el  PIC  en  la  PC,  éste  no  “site  search”,  generalmente  el  reconocerá el driver.  acceso  a  la  página  queda  en  los  primeros resultados de la búsqueda,    el  cual,  al  darle  click  lleva    directamente al driver.  En el mismo  paquete  incluye  ejemplos  que    incluyen  el  programa  fuente  para  la  compresión de su uso.    2. Ejecute  el  driver  descargado  en  el    paso  anterior  e  instale  en  la    dirección  que  trae  ya  predeterminada.  Este  ejecutable    trae muchos ejemplos de aplicación,  entre  ellos  trae  el  driver  que  queda    ubicado en:    "C:MICROCHIP SOLUTIONSUSB    TOOLSMCHPUSB CUSTOM  DRIVERMCHPUSB DRIVER    RELEASE "    3. Instale  el  hardware  a  la  PC  de  Fig. 6  Instalación del PIC en la PC  manera  similar  al  que  se  instala  un  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 11 / 15 
  • 12.   4. En  propiedades  del  dispositivo  satisfactoriamente la instalación del paquete  instalado  se  puede  observar  el  de  drivers  de  Microchip.  En  el  mismo  número  PID&VID  que  se  configuró  paquete  que  se  descarga  de  la  red  obtenemos instrucciones y ejemplos en C++  en  el  PIC  tal  como  se  muestra  en  la  que muestran como manipular el driver y los  figura 7.  parámetros  requeridos  para  aplicarlo.  Sin  embargo,  aún  no  es  suficiente  la    información,  porque  la  dificultad  está  en    identificar  el  tipo  de  variable  que  acepta  cada  software  de  desarrollo  y  que  también    sea aceptada por la DLL. Por lo que de nuevo  se  sugiere  consultar  las  notas  de    aplicaciones  de  Microchip  y  ejemplos  publicados  en  la  web  (con  cualquier    software de desarrollo).        Para  hacer  la  conexión  con  MATLAB  simplemente se “copiaron” las instrucciones    al  lenguaje  de  matlab  y  se  acondicionaron  las  variables  para  que  la  DLL    pueda    reconocerlo.     NOTA:  Adjunto  a  este  archivo  comprimido  se  encuentra  el  código  de  Fig.  7  En  propiedades  del  PIC  instalado  MATLAB usb.m que es un demo de cómo el  en la PC se observa el número de PID&VID  programa  envía  y  recibe  datos  del  PIC,  los  archivos  _mpusbapi.c  y  mpusbapi.dll  son  Comentarios Adicionales  necesarios  para  la  ejecución  en  MATLAB  y  deben  de  estar  en  la  misma  carpeta  que  el  Todo  esto  se  desarrolló  basándose  en  archivo usb.m  ejemplos que el compilador trae incluidos en  la  carpeta  de  “examples”.  Cabe  aclarar  que  Seguidamente se explica el desarrollo de  la  comunicación.  Primero  es  necesario  los  diseños  en  USB  con  PIC  día  a  día  se  van  conocer qué función de MATLAB es más fácil  incrementando.  Sólo  basta  investigar  un  de implementar:   poco  en  la  red  para  ver  los  resultados  (Consulte  la  bibliografía  de  éste  Existen varios métodos, el que se utilizó fue:  documento). El código del programa del PIC  a.  Manipular  directamente  la  dll  con  la  se encuentra al final del documento con sus  instrucción “Loadlibrary”  respectivos comentarios.   Ya  que  se  manipula  la  librería  de  una  2. ENLACE  DEL  MATLAB  AL  PIC  PARA  manera directa y sin intermediarios.   TRANSFERENCIA DE DATOS.  Para poder iniciar el enlace con el PIC es  necesario  que  se  haya  concluido  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 12 / 15 
  • 13.   Para  iniciar  con  la  implementación  del   vid_pid_norm = libpointer('int8Ptr',  código,  primero  inicie  el  programa  de  [uint8('vid_04d8&pid_000b') 0]);   MATLAB    d. Seguidamente abra la pipe para leer (si no  Siguiendo  los  pasos  descritos  en  la  desea leer puede omitir éste paso).  sección  de  antecedentes  de  éste  Formato:  documento,  las  instrucciones  que  se  requieren  implementar  tienen  la  siguiente  [my_out_pipe]  =  calllib('libreria',  secuencia y formato en MATLAB son:  'MPUSBOpen',uint8  (0),  vid_pid_norm,  out_pipe, uint8(0), uint8 (0));  a.  Primero  copie  los  archivos    De donde:  _mpusbapi.c  y  mpusbapi.dll  en  la  misma  carpeta  de  trabajo  (  se  obtienen  de  la   vid_pid_norm  =  libpointer('int8Ptr',  descarga  del  driver  en  la  página  de  [uint8('vid_04d8&pid_000b') 0]);  microchip  ("Microchip  MCHPFSUSB  v2.4  out_pipe  =  libpointer  ('int8Ptr',  Installer.zip")),  al  instalarse  queda  ubicado  [uint8('MCHP_EP1') 0]);  en  X:Microchip  SolutionsUSB  Tools  MCHPUSB  Custom  Driver  e.  Siguiendo  con  la  secuencia,  abra  la  pipe  MpusbapiDllBorland_C,  en  caso  de  para  escribir  (si  no  desea  escribir  puede  descargar  una  version  de  driver  más  omitir éste paso).  reciente,  reemplace  éstos  archivos  por  los  Formato:  más nuevos.  [my_in_pipe] = calllib('libreria',  b.    Se  abre  el  editor  de  MATLAB  y  'MPUSBOpen',uint8 (0), vid_pid_norm,  comenzamos  cargando  la  librería  en  in_pipe, uint8 (1), uint8 (0));  memoria.  De donde:  Formato:  vid_pid_norm  =  libpointer('int8Ptr',  loadlibrary mpusbapi _mpusbapi.h alias  [uint8('vid_04d8&pid_000b') 0]);  librería  in_pipe  =  libpointer  ('int8Ptr',  c. Luego  se  identifica  el  número  de  [uint8('MCHP_EP1') 0]);  dispositivos conectados con el PID&VID  y  ubicar  el  que  corresponde  al  f.  Lea  los  datos  de  la  pipe  (solamente  si  la  hardware de  su desarrollo.   pipe está abierta) Formato:    Formato:  [aa,bb,data_in,dd]  =  calllib('libreria',    'MPUSBRead',my_in_pipe,  data_in,  [conectado] = calllib ('libreria',  uint8(64), uint8(64), uint8(10));   'MPUSBGetDeviceCount', vid_pid_norm)    De donde:  De donde:  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 13 / 15 
  • 14.   data_in = eye(1,64,'uint8');  En caso de perderse la comunicación  con el PIC (  en casos donde el programa en  g. Escriba los datos de la pipe (solamente si  MATLAB  genere  errores  por  cuestiones  la pipe está abierta) Formato::   ajenas  a  la  comunicación)  desinstale  del  dispositivo  “Microchip  Custom  USB  Device”  calllib('libreria',  'MPUSBWrite',  desde  el  administrador  de  dispositivos,  my_out_pipe,  data_out,  uint8(64),  desconecte el PIC del puerto USB, descargue  uint8(64), uint8(10));  la librería de memoria desde el MATLAB con  De donde:  “unloadlibrary librería” en la línea de comandos de MATLAB y resetee el PIC. data_out = eye(1,64,'uint8');  Conecte de nuevo el PIC al puerto USB de su computadora y con eso es suficiente para h. Cierre la(s) pipe(s) abierta(s), cada vez que  restaurar las comunicaciones entre MATLAB finalice  el  programa,  ya  que  si  quedan  y el PIC. abiertas windows  genera errores y se pierde  3. Pruebas finales y correcciones.  la comunicación.  Antes  de  compilar  el  programa  y  Formato:  grabarlo  en  el  PIC  es  necesario  asegurarse  calllib('libreria',  'MPUSBClose',  de  que  antes  de  abrir  el  archivo  a  compilar  presione  el  botón  “inicio”  del  mismo  my_in_pipe);  compilador  (ubicado  en  la  parte  superior  calllib('libreria',  'MPUSBClose',  izquierda)    “Close  all”  .  De  no  hacer  esto  es posible que se compile el archivo anterior  my_out_pipe);  con el que Ud haya trabajado.  IMPORTANTE:  Para el enlace con la PC por USB es muy  importante  conectar  el  capacitor  (C4)  de    Al  terminar  el  programa  descargue  0.1uF como se indica en el diagrama, ya que,  la  librería  de  memoria,  ya  que  no  se  puede  si  se  omite  generará  un  error  al  momento  cargar más de una vez.  del  enlace.  También  es  muy  importante  Formato:  habilitar  el  fusible  VREGEN  para  que  Vusb  sea activado.  unloadlibrary librería;    Cuidar de no invertir las terminales D‐ y  D+  del  conector  USB  a  la  hora  de  Una  vez  enlazado  con  el  PIC,  los  implementar el Hardware.  datos  pueden  fluir  las  veces  que  sea  necesario  de  un  sentido  a  otro  y  Es  importante  considerar  la  función  del  manipularlos como se desee, ya que se tiene  PLL del PIC ya que de acuerdo al valor de la  el completo control del software del PIC (por  frecuencia del cristal depende el valor de la  parte del Compilador C) y en la PC (por parte  multiplicación de la frecuencia del reloj para  de MATLAB).   generar los 48Mhz necesarios para el USB.  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 14 / 15 
  • 15.   Por  lo  que  respecta  al  descriptor  del  http://picmania.garcia‐ USB,  es  importante  considerar  el  valor  del  cuervo.com/index.php  VID  &  PID,  ya  que  si  no  es  configurado  correctamente,  el  driver  que  proporciona  Driver de microchip:  Microchip  no  lo  reconocerá  y  en  Microchip Application Libraries v2010‐02‐09   consecuencia,  no  funcionará.  Para  esto  no  olvide  sustituir  en  el  descriptor  las  3  líneas  http://ww1.microchip.com/downloads/en/d que se comentan en el código del programa  evicedoc/MCHP_App_%20Lib%20v2010_02_ que se anexa en éste documento.  09_Installer.zip  La  DLL  que  proporciona  Microchip  se  Asegúrese que el archivo sea el más actual.  puede  descargar  desde  su  sitio  web.  Asegúrese de obtener la versión más actual.  En  el  mismo  paquete  incluye  ejemplos  que  incluyen  el  programa  fuente  para  la  compresión de su uso.  Se  recomienda  verificar  el  archivo  que  nos  proporciona  Microchip  en  el  driver,  en  la  siguiente dirección:   "C:MICROCHIP SOLUTIONSUSB  TOOLSMCHPUSB CUSTOM  DRIVERMCHPUSB DRIVER MCHPUSB  DRIVER RELEASE NOTES.HTM"   Ahí  se  proporciona  información  sobre  la  compatibilidad  en  sistemas  operativos  y  ejemplos desarrollados.  BIBLIOGRAFÍA  http://www.usb.org/developers/docs/  http://slalen.iespana.es/programacion/dato s/MPUSBApi.pdf  www.google.com.mx búsqueda “PIC USB”.  http://www.hobbypic.com/  http://www.todopic.com.ar/foros/index.php ?topic=13418.0;do=Bookmark  Transferencia de datos entre MATLAB, el puerto USB 2.0 y PIC18F2455 de Microchip™ 15 / 15 
  • 16. 5 4 3 2 1 SALIDAS +5V D D +5V D1 D2 D3 D4 D5 D6 D7 D8 R1 R2 R1 R2 R2 R2 10K 10K 10K 10K 10K 10K C5 0.1uF 20 R4 R5 R4 R5 R4 R5 R4 R5 2 150 150 150 150 150 150 150 150 VDD RA0 RA0 RA1 3 RA1 RA2 4 RA2 RA3 5 RA3 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RA4 6 RA4/T0CKI/C1OUT/RCV RA5 7 RA5/SS RC6/TX/CK 17 RC7/RX/DT/SDO 18 +5V R6 R7 11 10K 100 RC0/T1OSO/T13CKI C 1 13 Entrada del C MCLR/VPP/RE3 RC2 cable USB RB0 21 RB0/INT RC1 12 +5V S1 22 U2 _ RB1 RB1 SW 23 PIC18F2455 J4 RB2 RB2 RB3 24 J1 RB3 1 RB4 25 RB4 1 J1-USB USB OSC2/CLKO/RA6 2 RB5 26 RB5 RC4/D-/VM 15 2 27 16 1 3 28 RB6 RC5/D+/VP 3 D+ + + 2 GND 4 RB7 4 3 + + 4 OSC1/CLKI 14 D- 5 RB6 VUSB C4 Vista Inferior RB7 0.1uF GND GND ICSP 10 19 9 B 8 B X1 12 MHz RA0 RA1 RA2 RA3 RA4 RA5 J3 C7 C8 +5V +12V 22pF 22pF POWER SUPPLY S1 S1 S1 S1 S1 S1 4 SW SW SW SW SW SW 3 2 1 C2 2200uF C1 ENTRADAS 1000uF A Diseñado por: Ing. Gabriel Pool, gpoolb@hotmail.com A Title Integración de PIC18F2455 con MATLAB Size Document Number Rev A DAQ 01 Date: Thursday, July 02, 2009 Sheet 1 of 1 5 4 3 2 1