Integración de PIC18F2455 con LabVIEW 8.2 con mpusbapi.dll

March 29, 2018 | Author: Alberto Peraza | Category: Computer Program, Microcontroller, Pointer (Computer Programming), Computer Hardware, Software


Comments



Description

UNIVERSIDAD MODELOESCUELA DE INGENIERÍA MAESTRÍA EN MECATRÓNICA         Integración de PIC18F2455 de Microchip™ con LabVIEW™ 8.2 de National Instruments™ con MPUSBAPI.DLL     PRESENTAN:    ING. JULIO ALEJANDRO LUGO JIMÉNEZ          PARA LA MATERIA:  SENSORES Y ACTUADORES    PROFESOR:  MC. PEDRO NAJERA GARCIA            MÉRIDA, YUCATÁN A 28 DE JUNIO DE 2008  ING. GABRIEL JESÚS POOL BALAM    (www.  Leonardo  Gus  Peltinovich  por  su  apoyo  para  la  realización  de éste trabajo.  Agradecimientos:    Al  Centro  de  Investigación  científica  de  Yucatán  A.2 de National Instruments™ 2 / 18  .mx  )  sobre  todo  al  departamento  de  Instrumentación  representado  por  Ing.  C.cicy.  JUNIO 2008  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.   circuitos  de  apoyo  adicionales  (ADC.  orientada  a  la  interacción y trabajo exclusivo con productos  del  fabricante.  y/o  acción  de  control  sobre  el  mundo  físico  requiere  tradicionalmente  de  una  tarjeta  de  adquisición  de  datos  que  por  lo  general  es  limitada  en  hardware.  el  tiempo  para  aprender  y  dominar  estos  paquetes  es  muy  largo.  requieren  de  muy  poco  componentes  de  soporte  externo  para  implementarse  y  sus  tecnologías  se  han  perfeccionado. Esto se puede lograr con el desarrollo de  un software como Visual Basic.  Por otro lado.  No  ha  sido  la  excepción  con  el  microcontrolador.  National  Instruments  desarrolló  un  paquete  para  la  implementación  de  una  interfaz  con  conectividad  a  sus  tarjetas  de  adquisición  (que  vende  por  separado).  control  de  decisiones.  Existe  una  gran  variedad  de  tarjetas  y  su  costo  varía  de  acuerdo  a  sus  capacidades. C++.  INTRODUCCIÓN  Hoy  en  día.  al  punto  de  hacer  más  grande  sus  capacidades  de  comunicación.  control  de  decisiones.  ya  que  éste  se  ha  desarrollado  notablemente.  guardar  datos  en  disco.  Por  lo  que.  se  preocupan  en  desarrollar  las  herramientas  para  su  programación. permite la construcción de  circuitos  más  complejos.  tales  como  lenguajes  de  alto  nivel  para  compilar  el  programa    y  programadores  económicos  para  descargar  el  programa  en  el  chip. ya no basta con tener un  chip  inteligente  que  funcione  de  manera  autónoma.  El  software fue evolucionando al grado de que  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  ahora  se  requiere  que  trabajen  en conjunto con la PC para el monitoreo local  y  remoto  (internet  o  intranet).).  Conforme  el  software  se  fue  volviendo  popular  muchos  fabricantes  de  hardware  desarrollaron  tarjetas  compatibles  con  éste  software.  inteligentes  y  eficientes.  etc.  guardar  datos  en  disco.  etc.  Debido  a  éstas  herramientas.  que  casi  no  fallan.  ó  cualquier  otro  paquete  de  preferencia  gráfico  para  hacer  más  fácil  la  interfaz  de  usuario.  un  software  que  administre  los  datos  en  la  PC  para  el  monitoreo  local  y  remoto.  Algunos  fabricantes  tal  como  Microchip.  éste  chip  se  ha  vuelto  muy  popular  al  grado  que  se  proponen  como  materias a cursar en las escuelas.  RESUMEN  El  diseño  de  un  sistema  de  monitoreo  de  variables  como  presión.  temperatura. Visual C.  oscilador  interno.  En  éste  desarrollo  se  fusiona  lo  mejor  de  ambos  mundos:  Un  microcontrolador  con  puerto  USB  de  Microchip  y  un  software  de  desarrollo  LabVIEW de Nacional Instruments. la disminución de  su consumo  de corriente  y el tamaño  de los  semiconductores.. Algunos fabricantes  ofrecen  soluciones  a  medias:  poderoso  hardware  con  un  software  pobre  que  no  cumple  con  nuestro  requerimiento  ó  hardware básico al que se requieren agregar  módulos  adicionales  para  adaptarlo  a  nuestra  necesidad  y  con  software  muy  completo.  y  un  conocimiento  amplio  sobre  el  software  de  desarrollo.  etc.  graficar.  velocidad.  etc.2 de National Instruments™ 3 / 18  .  puertos.  Dichos  microcontroladores.  de  tal  manera.  sin  contar  la  gran  cantidad  de  tiempo a invertir en la implementación de la  solución más apropiada.  la  miniaturización  de  componentes electrónicos.  memoria.  Desafortunadamente.  graficar.     Fig.    •  Interrupt  Data  Transfers:  Used  for  timely  but  reliable  delivery  of  data. debido a la velocidad de transferencia  y tiene la estructura mostrada en la figura 4.2 de National Instruments™ 4 / 18  .  Los  datos  entregados  pueden  perderse.  characters  or  coordinates  with  human‐ Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. 4 Cable USB  La  arquitectura  USB  comprende  cuatro  tipos básicos de transferencia de datos:  •  Control  Transfers:    Es  usado  para  configurar un dispositivo al momento de que  se  conecta. 2 HUB USB        Fig.  Ver  figura  3.    •  Bulk  Data  Transfers:  Entrega  el  dato  por  volumen.5Mb/s en Low‐speed.  La  velocidad  de  transferencia  depende  de  la  velocidad  del  HUB  que  se  esté  utilizando. 12Mb/s  full‐speed y 1.                Fig. 1 Topología del BUS  El hub es un elemento plug and play en  la  estructura  USB  (Figura  2)  y  es  un  concentrador  al  cual.  ANTECEDENTES  1.              Fig.  su  complejidad  para implementarlo es enorme. 3 Múltiple velocidad en un BUS  El cable que típicamente es usado no es  largo.  ya  que  su  funcionamiento  está  basado  en   protocolos de software.  Sus  terminales  son  del  tipo  diferencial  y  consta de 4 hilos.  Las  velocidades  típicas son:  480Mb /s en high speed.  for  example.  se  le  pueden  agregar  más dispositivos USB. el ancho de banda puede variar. Es  usado  en  escáner  ó  cámaras.  La  ráfaga  de  datos es secuencial.  Sólo puede haber un Host en el bus que  maneja a todos los componentes conectados  como se indica en la figura 1. incluyendo otro hub. LA ARQUITECTURA DEL PUERTO USB  A pesar de que el puerto USB nos ofrece  más  ventajas  que  sus  predecesores.  se  puede  conectar  casi  con  cualquier  dispositivo.  y  su  manejo  es  muy  fácil  e  incluye una ayuda en línea.     •  Isochronous  Data  Transfers:  Occupy  a  prenegotiated  amount  of  USB  bandwidth  with  a  prenegotiated  delivery  latency.  perceptible  echo  or  feedback  response  characteristics.  Este  es  el  modo  que  usa  WinUSB  (para  windows  vista)  y  el  mpusbapi  (windows 2000 y posterior).            Fig 5.   Recordemos  que  los  PICs  de  la  serie  18Fxx5x  tienen  tres  modos  de  funcionamiento:  1.  no  requiere driver.   Estos  protocolos  se  le  llaman  descriptores  y  sirve  para  informarle  al  host  todo  lo  necesario  para  que  pueda  administrarlo.  es  suficiente que se pueda administrar como un  “device”.  requiere  driver.    2.  Microchip ha creado un archivo dll en el que  proporciona  las  funciones  de  acceso  al  puerto  USB  con  un  microcontrolador  de  la  familia  PIC18Fxx5x. USB  Human  Interface  Device  (HID):  Velocidad  Baja.  VID&PID. entre otros.sys. es una entrada de  cadena  de  caracteres  que  da  como  resultado  el  número  de  dispositivos  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.   Dentro  de  los  protocolos  hay  que  especificar el tipo de transferencia de datos a  Revisando  ejemplos.  para  esto  se  requiere  “memorizarle”    los  protocolos  necesarios  para enlazarse al host.  nombre  y  serie  del producto que se conecta para que el host  identifique al driver y pueda instalarlo con el  fin  de  que  el  dispositivo  pueda  formar  las  “pipes”  ó  túneles  para  su  comunicación  con  el host (ver figura 5).2 de National Instruments™ 5 / 18  .  Crea  un  Puerto  Serie Virtual. se necesita el driver mchpusb.  USB  Custom  Driver:  Velocidad  Alta.  usar  (endpoints).  requiere  driver.  Para  un  funcionamiento  correcto. LA MPUSBAPI.  (Also  called streaming real time transfers).  ya  que  se  requiere  de  una  gran  capacidad  de  manejo  de  datos  para  administrar  a  cada  componente  del  BUS.     Este  driver  sirve  tanto  para  Visual  Basic  como para Visual C. 3.DLL DE MICROCHIP  Para  una  mayor  facilidad  de  desarrollo  de  aplicaciones  basadas  en  el  bus  USB.  USB  Communication  Device  Class  (CDC):  Velocidad  Media.    Aunque el PIC no puede funcionar como  host.  y  la  ayuda  que  trae incluida sobre el manejo de la dll se  verifica que el modo de abrir la pipe es el  siguiente:     Primero  se  identifica  si  hay  un  dispositivo  con  el  nombre  VID&PID  conectado a la PC con la instrucción:   (*MPUSBGetDeviceCount)(PCHAR  pVID_PID )    La variable pVID&PID. Flujo de comunicación USB  2.  La aplicación del usuario  tiene que llamar MPUSBReadInt() a  menudo  sin superar el máximo de 100.  Cualquier  otro dato recibido después de llenar el buffer  del driver se ignora. PID 0x0002   Dispositivo tipo 2.            // Input  PCHAR pEP. los dos en  hexadecimal.  El  formato  es  “\\MCHP_EPz” o “\MCHP_EPz” dependiendo  del lenguaje de programación. VID 0x04d8.     Es importante entender que el driver  lo  comparten  distintos  dispositivos.  se  utiliza  primero  la  llamada  de  MPUSBGetDeviceCount  para  saber cuantos dispositivos hay. PID 0x0003     y  el  dispositivo  que  nos  interesa  tiene  VID=0x04d8  y  PID=0x0002  el  MPUSBGetDeviceCount  devolverá  un  ‘1’. PID 0x0001   Dispositivo tipo 1. Ejemplo:   “\\MCHP_EP1”  o  “\MCHP_EP1”  Este  argumento puede ser NULL (nulo) para crear  lazos  con  Endpoints  de  funciones  no  específicas.  hay  que  dejar  de  hacer  las  llamadas  porque  no  puede  haber  más dispositivos con el mismo VID_PID.  Se  tiene  que  contar  el  número  de  llamadas  exitosas. VID 0x04d8.           // Input  PCHAR pVID_PID. MPUSBReadInt.     pEP:  Input:  String  con  el  número  del  Endpoint  que  se  va  a  abrir.  MPUSBWrite.  Cuando  este  número  sea  igual  al  número  devuelto  por  MPUSBGetDeviceCount.  El  formato  es  “vid_xxxx&pid_yyyy”. VID 0x04d8.  Ejemplo:  Si  hay  tres  dispositivos  con  los  siguientes  PID_VID  conectados:      Dispositivo tipo 0.  // Input <Future Use>  Esta  instrucción  devuelve  el  acceso  al  pipe  del Endpoint con el VID_PID asignado.  Normalmente.     Seguidamente  con  la  instrucción  (*MPUSBOpen)  (DWORD instance.                     // Input  DWORD dwDir.     pVID_PID:  Input:  String  que  contiene  el  PID&VID  del  dispositivo  objetivo. Todas  las  pipes  se  abren  con  el  atributo  FILE_FLAG_OVERLAPPED  contenida  en  la  DLL.     instance:  Input:  Un  número  de  dispositivo  para  abrir. Ejemplo: Si un dispositivo tiene  un VID=0x04d8 y un PID=0x000b.  MPUSBWrite  y  MPUSBReadInt  tengan  un  valor de time‐out.  Las  funciones  específicas  que  utilizan  éste  parámetro  son:  MPUSBRead.  conectados  al  Host.  Donde  xxxx  es  el  valor del VID y el yyyy el del PID.  La pipe de datos abierta con “_ASYNC” debe  almacenar  datos  con  el  intervalo  especificado  en  el  Endpoint  descriptor  con  un  máximo  de  100  recepciones. Esta opción sólo está  disponible para un Endpoint interrupción IN.              // Input  DWORD dwReserved).2 de National Instruments™ 6 / 18  .     dwDir: Especifica la dirección del Endpoint:   Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  que  tienen  asignado  el mismo pVID&PID.  El  número  devuelto  por  el  MPUSBGetDeviceCount tiene que ser igual o  menor  que  el  número  de  todos  los  dispositivos  actualmente  conectados  y  usando  el  driver  genérico. el string de  entrada es: “vid_0x04d8&pid_0x000b”.   Nota: el valor del time‐out no tiene sentido  en una pipe síncrona.     Nota:  Para  utilizar  MPUSBReadInt().  el  formato  de  pEP  tiene  que  ser  “\\MCHP_EPz_ASYNC”.  ésto  permite  que  MPUSBRead. Donde z es el  número del Endpoint en decimal.  Al  llamar  la  función  tiene  que  haber  un  mecanismo  que  intente  llamar  MPUSOpen()  desde  0  hasta  MAX_NUM_MPUSB_DEV.      DWORD dwLen. vid_pid.           // Input  // Output  // Input  // Output  // Input  generalmente  se  declara  al  inicio  del  programa en el PIC.     pLenght:  Output:  Puntero  al  número  de  bytes leídos.     handle:  Input:  Identifica  la  pipe  del  Endpoint  que  se  va  a  leer.   PVOID pData.  el  intervalo  de  time‐out  nunca  termina.     El  formato  típico  de  la  instrucción  es:  MPUSBRead(myInPipe.  Si  dwMilliseconds  es  infinito.  En  conclusión. con dwDir=1 se abre  la  pipe  para  leer  y  con  dwDir=0  se  abre  la  pipe para escribir al PIC. “handle” es el  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.    pData:  Output:  Puntero  al  buffer  que  recibe  el  dato  leído  de  la  pipe.  La  pipe  unida  tiene que crearse con el atributo de acceso  MP_READ.  Si  dwMilliseconds=0.   PDWORD pLength.     DWORD dwLen.  se  lee  el  dato  aplicando  el  número  de  pipe  asignado  por  medio de la instrucción: (*MPUSBRead)   (HANDLE handle.  DatosDeseados.   // Input  // Input  // Input    // Output  // Input  DWORD dwMilliseconds). donde N  es  el  número  de  bytes  que  maneja  el  “device”  en  el  arreglo  que  envía  a  la  PC.  DWORD dwMilliseconds). La pipe unida  tiene que crearse con el atributo de acceso  MP_WRITE.     handle:  Input:  Identifica  la  pipe  del  Endpoint que se va a escribir.  El  formato  del dato es un arreglo de N bytes.    dwLen:  Input:  Especifica  el  número  de  bytes que se espera leer de la pipe.  “handle”  es  el  número  de  pipe  que  nos  arrojó  la  instrucción anterior con dwDir=1.    MP_READ:  para  MPUSBRead  y  MPUSBReadInt    MP_Write: para MPUSBWrite     Se  abre  un  pipe  a  la  vez  (hay  que  usar  dos  veces ésta instrucción).     dwMilliseconds:  Input:  Especifica  el  intervalo  de  time‐out  en  milisegundos.  VarPtr(s(0)). 0)  Como  tercer  procedimiento.  el valor por omisión es cero.   PDWORD pLength.  La  función  vuelve  si  transcurre  el  intervalo  aunque  no  se  complete  la  operación.   PVOID pData. out_pipe.2 de National Instruments™ 7 / 18  .  la  función  comprueba  los  datos  de  la  pipe  y  vuelve  inmediatamente.   dwReserved:  No  asignado  por  el  momento. MPUSBRead pone este valor a  cero  antes  de  cualquier  lectura  o  de  chequear un error. el resultado que nos  arroja ésta instrucción es el número de pipe  que nos asigna el sistema operativo. dwDir. Datos. 1000)   Para  enviar  los  datos  al  PIC  se  hace  de  la  misma  manera  con  la  instrucción:  (*MPUSBWrite)  (HANDLE handle.  En conclusión.     El  formato  típico  de  la  instrucción  es:  MPUSBOpen(0.   el  intervalo  de  time‐out  nunca  termina.  La  función  vuelve  si  transcurre  el  intervalo  aunque  no  se  complete  la  operación.     El  formato  típico  de  la  instrucción  es:  MPUSBWrite(myOutPipe.     dwLen: Input: Especifica el número de bytes  que hay que leer de la pipe. Para  cerrarlos  basta  ejecutar  la  instrucción:  (*MPUSBClose)(HANDLE  handle).  la  función  comprueba  los  datos  de  la  pipe  y  vuelve inmediatamente. éstas son:  MPUSBGETDLLVERSION(VOID)     Lee el nivel de revisión del MPUSAPI.  Si  dwMilliseconds=0.  MPUSBRead  pone  este  valor  a  cero  antes  de  cualquier  lectura  o  de  chequear un error.  el  intervalo  de  time‐out  nunca  termina.  1000)   Por  ultimo. DWMILLISECONDS)     handle: Input: Identifica la pipe del Endpoint  que  se  va  a  leer.  DWLEN.  la  función  comprueba  los  datos  de  la  pipe  y  vuelve  inmediatamente.     pLenght: Output: Puntero que proporciona  el  número  de  bytes  que  se  escriben  al  llamar  esta  función.     pData: Output: Puntero al buffer que recibe  el dato leído de la pipe. Si dwMilliseconds es  infinito.  La  función  vuelve si transcurre el intervalo aunque no se  complete  la  operación.  bytes.     dwMilliseconds: Input: Especifica el intervalo  de  time‐out  en  milisegundos.  de  donde  handle:  Input:  Identifica  la  pipe  del  Endpoint que se va a cerrar.  La  pipe  unida  tiene  que  crearse con el atributo de acceso MP_READ.  no  realiza nada con el puerto USB. Esta  función  devuelve la versión del código de la  dll  en  formato  hexadecimal  de  32bits.  PLENGTH.  pero  es  necesario conocerlos.  Si  dwMilliseconds  es  infinito.    pData:  Input:  Puntero  al  buffer  que  contiene los datos que se van a escribir en  la  pipe.  MPUSBWrite  pone  este valor a cero antes de cualquier lectura  o de chequear un error.     Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  porque  después  de  usarlos  caducan. donde N es el número de bytes  que  maneja  el  “device”  en  el  arreglo  que  recibe de la PC. generalmente se declara al  inicio del programa en el PIC.  El  formato  del  dato  es  un  arreglo  de N bytes.  VarPtr(bytes).  ya no es posible leer / escribir de nuevo.     dwMilliseconds:  Input:  Especifica  el  intervalo  de  time‐out  en  milisegundos.     El  formato  típico  de  la  instrucción  es:  MPUSBGetDLLVersion()  MPUSBREADINT(HANDLE.2 de National Instruments™ 8 / 18  .  se  requiere  cerrar  las  pipes.  Si  dwMilliseconds=0.     pLenght:  Output:  Puntero  al  número  de  bytes  leídos.  VarPtr(SendData(0)).  PDATA.  número  de  pipe  que  nos  arrojó  la  instrucción anterior con dwDir=0.   El formato típico de la instrucción es: MPUSBClose (myOutPipe)    Existen  otras  dos  instrucciones  que  no  se  implementaron  en  éste  desarrollo.dll.    dwLen:  Input:  Especifica  el  número  de  bytes que se van a escribir en la pipe.   VarPtr(SendData(0)). NO funciona si es llamada con  el formato de STDLIB.  OBJETIVO  El  objetivo  principal  del  presente  trabajo  es   integrar  el  software  de  LabVIEW  con  el  PIC18F2455  de  Microchip  con  el  fin  de  diseñar  una  tarjeta  de  adquisición  de  datos  ajustada  a  la  necesidad  personalizada  de  cada desarrollo.  se  comentan  las  pequeñas  variaciones  que  existen  al  declarar  estas  variables  en  los  distintos  lenguajes.  el  mismo  compilador  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  en  la  PC  se  descarga  el  driver  que  nos  proporciona Microchip en su página web.  incorporadas  en  el  lenguaje  C  del  programa  CCS  para  PICS.  También. Enlace de MATLAB al PIC.  3.  Para  lograr  el  enlace  a  USB  se  utilizaron  las  funciones  USB.  El  formato  típico  de  la  instrucción  es:  MPUSBReadInt(myOutPipe. Pruebas finales y correcciones.  2.  VarPtr(bytes). MPUSReadInt ‐si   Interrupt OUT‐MPUSBWrite     si   Bulk IN           MPUSBRead    si   Bulk OUT       MPUSWrite    si   Isochronous IN‐MPUSBRead     no   Isochronous OUT‐MPUSBWrite    no     Interrupt: tipo interrupción   Isochronous: tipo síncrono     Nota:  “Input”  y  “output”  se  refiere  a  los  parámetros  designados  en  las  llamadas  a  estas  funciones.     Tipo           Función  ¿Aplicable time‐out?   Interrupt IN‐MPUSRead.  1000)     TIPOS DE TRANSFERENCIAS SOPORTADO POR  ESTAS INSTRUCCIONES    En este apartado se recomienda que función  utilizar  dependiendo  del  tipo  de  transferencia.  que  son  lo  opuesto  a  los  sentidos  comunes  desde  la  perspectiva  de  una aplicación haciendo llamadas.  dichas  funciones  están  preparadas  para  que  el microcontrolador sea reconocido como un  dispositivo  personalizado  usando  los  descriptores  que  incluye  el  mismo  lenguaje.  DECLARACIÓN DE CONSTANTES Y VARIABLES     Aquí  aparecen  las  constantes  y  variables  que  el  fabricante  recomienda  usar.  Todas  son  optativas. Enlace a la PC mediante USB.    1.2 de National Instruments™ 9 / 18  . ENLACE A LA PC MEDIANTE USB.  dejando  la  elección  al  programador.  se estableció la cantidad de datos a 64 bytes  (8 bits por byte) de envío y recepción hacia la  PC.  Esta dll se llama de acuerdo a la convención  del lenguaje C. Por  parte  del  Hardware.  bytes.  OBJETIVOS PARTICULARES  1.     MPUS_FAIL=0   MPUSB_SUCCESS=1   MP_WRITE=0   MP_READ=1   MAX_NUM_MPUSB_DEV=127   vid_pid= “vid_04d8&pid_0011”   En Visual Basic:   out_pipe= “\MCHP_EPx”   in_pipe= “\MCHP_EPy”     En C y Delphi:   out_pipe= “\\MCHP_EPx”   in_pipe= “\\MCHP_EPy”   Siendo x e y números del Endpoint por los  que se van a realizar las transmisiones. 246  ó  posterior.  etc. Conecte el PIC como se muestra en el  diagrama  esquemático  al  final  del  documento.  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.com ) Asegúrese de  obtener  la  versión  más  actual. display genéricos de dos líneas  y  gráficos. en caso de haber  caducado  busque  en  la  sección  Design    Aplication  Design  Center    Wired  Conectivity    USB    Software/Tools      <<  MCHPFSUSB  Framework  v2.  Pruebas  finales  y  correcciones en éste documento.       //vendor  id  (0x04D8  is  Microchip)  0x0B.0x00.h    (  donde  se  instaló  el  compilador  de  CCS  )  que  es  el  descriptor del USB  ubicado en su PC. La DLL que proporciona Microchip se  puede descargar desde su sitio web. Verifique  que  la  configuración  del  PLL  corresponda  a  la  Frecuencia  del  Xtal que utiliza. Abra  el  archivo  C:\Archivos  de  programa\PICC\Drivers\usb_desc_sc ope.    4.  (www. Compile el programa y grábelo en el  PIC. etc.microchip.  primero  escoja  el  PIC  que  utilice  PIC18F2455/2550/4455/4550  en  la  sección  #include  al  inicio  del  programa. Antes  de  compilar  el    código  de  programa <<daq.  2. Ejemplo:  PLL1 … para Xtal de 4Mhz  PLL2 … para Xtal de 8 Mhz  PLL3 … para Xtal de 12 Mhz  PLL4 … para Xtal de 20 Mhz.0x00.c>> adjunto en éste  archivo  comprimido  con  PCWH  Compiler  de  CCS  versión  3.4  >>  ó  simplemente  teclee  “usb  software/tools”  en  la  ventanita de búsqueda y déle un clic  en  el  botón  “site  search”.  usb.  NOTA  IMPORTANTE:  De  no  completar  éstos pasos la PC NO detectará al PIC    Configurando el Software    1.      //product id  0x01.  avance  hasta  la  sección  start  device  descriptors  (aprox en la linea 132) y  reemplace  los  valores  del  vendor  id.  3.   el  product  id  y  el  device  release  number  como  sigue  (  puede  copiar   las tres líneas siguiente y pegar en el  archivo  del  descriptor  <<usb_desc_scope.h>> ) :    0xD8.    Configurando el Hardware    1.2 de National Instruments™ 10 / 18  .  I2C.  En  la  dirección web que se menciona en la  bibliografía se descarga el driver (link  de acceso directo).0x04.  trae  en  la  ayuda  un  diagrama  esquemático  para  conectar  al  PIC  dispositivos  adicionales  como teclado.  el  puerto  serie.  Si  tiene  dudas  sobre  la  descarga  del  driver  consulte  el  apartado  3.  //device release number  5.                             Fig.  NOTA:  Si  Ud.  al  darle  click  lleva  directamente  al  driver.  2.  sólo  proporcione  la  dirección  donde  fue  descomprimido  el  driver  (la  misma  dirección  del  paso  anterior). Este ejecutable trae  muchos  ejemplos  de  aplicación.2 de National Instruments™ 11 / 18  . Ejecute  el  driver  descargado  en  el  paso  anterior  e  instale  en  la  dirección  que  trae  ya  predeterminada.  Olvida  ó  no  sustituye  correctamente  en  el  descriptor  las  3  líneas  que  se  comentan en el código del programa.  en  cuanto  le  solicite  los  driver.  éste  no  reconocerá  el  driver.  entre  ellos  trae  el  driver  que  queda  ubicado en:  "C:\MICROCHIP SOLUTIONS\USB  TOOLS\MCHPUSB CUSTOM  DRIVER\MCHPUSB DRIVER\  RELEASE\ "  3.  el  compilador  CCS  compilará  correctamente  pero  al  conectarse  el  PIC  en  la  PC.    En  el  mismo paquete incluye ejemplos que  incluyen  el  programa  fuente  para  la  compresión de su uso. Instale  el  hardware  a  la  PC  de  manera  similar  al  que  se  instala  un  dispositivo  USB  que  adquiere  en  el  mercado:  conecte  al  dispositivo  a  la  PC.  el  cual.  generalmente  el  acceso  a  la  página  queda en los primeros resultados de  la  búsqueda. 6  Instalación del PIC en la PC                    Fig.  7  En  propiedades  del  PIC  instalado  en la PC se observa el número de PID&VID  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  Si  todo  es  correcto  debemos  de  observar  en  el  administrador  de  dispositivos  un  nuevo  hardware  que  se agregó tal como se muestra en la  figura  6.   Hacer  un  ejecutable  y  llamarlo  con  la  función “system exec vi”  b. 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).    Siguiendo  los  pasos  descritos  en  la  sección de antecedentes de éste documento.  etc.  Sólo  basta  investigar  un  poco  en  la  red  para  ver  los  resultados  (Consulte la bibliografía de éste documento).  En  este  desarrollo  se  utilizó    el  tercer  método  parar  manipular la librería de una manera directa y  sin intermediarios.  Para  iniciar  con  la  implementación  del  código.  se  puede  mostrar  mensajes.  escoja  la  opción  blank  VI  y  en  la  barra  de  menús  déle  un  click  al  menú  de  window   Show block diagram.  Entre  las  ventajas  que  nos  ofrece  el  labVIEW  podemos  mencionar:  el  ambiente  gráfico  muy  amigable.  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.  En  el  mismo  paquete  que  se  descarga  de  la  red  obtenemos  instrucciones  y  ejemplos  en  C++  que muestran como manipular el driver y los  parámetros  requeridos  para  aplicarlo. guardarlos en un archivo.  Para  la  implementación  de  los  métodos  anteriores  el  LabVIEW  8. En  propiedades  del  dispositivo  instalado  se  puede  observar  el  número PID&VID que se configuró en  el  PIC  tal  como  se  muestra  en  la  figura 7. Elaborar un programa en C y cargarlo en la  instrucción “Code Interface Node”  c.2  ofrece  una  ayuda  en línea.  aún  no  es  suficiente  la  información.  Sin  embargo.  mover  un  detector  de  nivel. habilitar  un  indicador. En los tres casos  se  manipula  la  misma  librería.  con  el  fin  de  visualizar  la  ocurrencia  de  los eventos.  Comentarios Adicionales  Todo  esto  se  desarrolló  basándose  en  ejemplos que el compilador trae incluidos en  la  carpeta  de  “examples”..2 de National Instruments™ 12 / 18  .  4.  Manipular  directamente  la  dll  con  la  instrucción “Call Library Function Node”  Los  tres  métodos  nos  ofrecen  ventajas  de  acuerdo  al  nivel  de  lenguaje  de  programación que se tenga.   Por  parte  de  LabVIEW  es  necesario  conocer  qué función es más fácil de implementar:   Existen tres métodos:  a.  graficar  los  datos  obtenidos.  El código del programa del PIC se encuentra  al  final  del  documento  con  sus  respectivos  comentarios.  primero  inicie  el  programa  de  LabVIEW.  2.  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.        Para  hacer  la  conexión  con  LabVIEW  simplemente  se  “tradujeron”  las  instrucciones  al  lenguaje  gráfico  y  se  acondicionaron las variables para que la DLL   pueda reconocerlo.  Cabe  aclarar  que  los  diseños  en  USB  con  PIC  día  a  día  se  van  incrementando.  Para poder iniciar el enlace con el PIC es  necesario  que  se  haya  concluido  satisfactoriamente la instalación del paquete  de  drivers  de  Microchip. ENLACE  DEL  LABVIEW  AL  PIC  PARA  EL CONTROL Y MONITOREO. la cual permite saber al instante qué  es  lo  que  se  requiere  para  la  interconexión  de  los  módulos.  Configuración de parámetros de la  Función Call Library Function Node.  en  la  misma  ventana  de  la  figura  9  presione  la  flecha  de  menú  en  el  campo  Function  Name  (que  apunta  hacia  abajo)  y  escoja  la  función   MPUSBGetDeviceCount como se muestra en  la  figura  10.  y  la  misma  función  proporciona una salida en formato numérico.  Formato:  long _MPUSBGetDeviceCount(CStr vid_pid)  De donde:   vid_pid  = vid_04d8&pid_000b   Para  iniciar  la  programación  en  LabVIEW se requiere estar en la ventana del  block diagram de LabVIEW presione el botón  derecho  del  mouse  y  en  el  menú  que  sale  a  continuación  presione  los  siguientes  submenús  connectivity    libraries  &  executables    y  déle  un  click  a  Call  Library  Function  Node  y  se  mostrará  un  pequeño  bloque como se muestra en la figura 8.  en  éste  caso  el  PID&VID  que  se  quiere  llamar  es  vid_04d8&pid_000b. Déle  doble  clic  en  la  parte  amarilla  y  saldrá  un  menú  de  configuración  como  se  muestra  en  la figura 9. Al presionar la  flecha  de  menú  en  el  campo  de  Function  Name  (que  apunta  hacia  abajo)  podrá  observar  TODAS  las  funciones  que  la  dll  admite. Presione la carpeta y proporcione  la  dirección  donde  se  instaló  la  dll  de  Microchip  (Si  Ud  lo  instaló  en  la  dirección  sugerida  anteriormente  queda  en  “C:\Microchip  Solutions\USB  Tools\MCHPUSB  Custom  Driver\Mpusbapi\Dll\Borland_C”  e  inmediatamente cargará la dll.  las  instrucciones  que  se  requieren  implementar  tienen  la  siguiente  secuencia  y  formato en LabVIEW son:  a.      Fig.  En  los  campos  que  aparecerán  a  continuación  llénelos  como  sigue:  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  seguidamente  presione  la  pestaña “parameters” en la parte superior de  la  ventana  y  aparecerá  otro  menú  como  se  muestra  en  la  figura  11. Función Call Library Function Node  vista en el block diagram              Fig. 9. 8.  Identificar  el  número  de  dispositivos  conectados  con  el  PID&VID  y  ubicar  el  que  corresponde  al  hardware  de    su  desarrollo.  solamente  tiene  que  anexar  las  variables y acondicionar el tipo de entrada.  según  las  instrucciones  de  uso  del  mpusbapi.    Conociendo  esto  pasos.   Recuerde que se va a implementar la  primera  instrucción  MPUSBGetDeviceCount  el  cual  nos  proporciona  como  resultado  el  número  de  dispositivos  conectados  a  la  PC  con  el  PID&VID  que  se  va  a  llamar.dll  tenemos  que  declararla  como  string.2 de National Instruments™ 13 / 18  .  presione el botón OK y la función ya  está configurada.  Minimun  size:  se  sugiere  dejar  la  que  trae  de  manera  predeterminada  (en  blanco).  Configurando  la  función  MPUSBGetDeviceCount de mpusbapi.  MPUSBRead  ó  MPUSBClose)  presione  la  pestaña  de  parámeters  y  deje  el  parámetro  Function  Name  con  los  valores  que  trae  de  manera  predeterminada  y  sólo  agregue  los  demás  parámetros  que  necesita  la  dll  de  manera similar a lo descrito anteriormente y  quedará implementada su función.                Fig.  presione  el  menú del campo Function Name y seleccione  la  función  a  utilizar  (MPUSBWrite.2 de National Instruments™ 14 / 18  .dll      Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. se requiere  configurar de igual manera que la instrucción  que se acaba de explicar.  Data  type:  Use  el  que  trae  de  manera  predeterminada.dll                Fig. String Format: se sugiere dejar la  que trae de manera predeterminada (C string  Pointer).  sólo  hay  que  tener  en  cuenta  lo  siguiente:    Para  la  función  MPUSBOpen.  que  traen una leyenda Long al inicio. para los que traen  la  leyenda  Void  al  inicio  se  configura  de  la  siguiente manera:  Llame a la Función Call Library Function Node  y  escríbale  la  dirección  de  la  dll.    Ahora  cree  una  constante.  Name:  use  el  que  trae  de  manera  predeterminada  ó  un  nombre  que  pueda  identificar  fácilmente  a  la  variable  type:  Presione  la  flecha  de  opciones  y  seleccione  numeric.  10.  10  Configurando  la  función  de  salida  de  MPUSBGetDeviceCount de mpusbapi.  escriba  vid_04d8&pid_000b en su interior y conecte  al  pin  marcado  PID&VID  del  bloque  que  acaba  de  configurar  y  el  resultado  que  nos  proporcione  ésta  función  ya  está  lista  para  usarse!!!    Los demás parámetros se configuran  de  manera  similar  a  lo  descrito  anteriormente  es  importante  llegar  hasta  el  paso  (f).  presione  el  botón  marcado como +  y se agregará otra variable  a configurar como sigue:  Name: Ponga el nombre que Ud desee en el  campo  Name  (se  sugiere  un  nombre  que  pueda  identificar  fácilmente  a  la  variable)  type: string.   long   dwReserved)   De donde:  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  Formato:  long  _MPUSBOpen(long  instance. 13).   Los  marcados  con  *  son  del  tipo  variable  numérica  con  Data  type:  unsigned  32  bits  integer  y    Pass:  seleccionado  a  Pointer  to  value.  Abra  la  pipe  para  escribir  (si  no  desea  escribir puede omitir éste paso).  long  dwDir.  long  dwDir.   Y  los  marcados  con  unsigned  char  *  son  arreglos  de  1X64  bytes  de  8  bits  (vector)  y  configurados  con  Type:  Array. 12 Funciones de mpusbapi.dll declaradas  como Void              Fig.  vid_pid    =  “vid_04d8&pid_000b”. Dimensions: 1.  dwDir = 0. dwReserved = 0.  b.   Long del tipo numérica.  Abra  la  pipe  para  leer  (si  no  desea  leer  puede omitir éste paso).  Data  Type:  unsigned 8 bits integer.  long   dwReserved)                Fig.              Fig.  CStr  VID_PID.  Formato:  long  _MPUSBOpen(long  instance. 13 Configuración del arreglo de 1X64  bytes de 8 bits que se envia/recibe del PIC  desde LabVIEW    Cstr son variables del tipo String.  CStr  EP.  Minimun  size:  seleccione  la  variable  asignada  a  la  longitud  del  arreglo  a  enviar  /  recibir.dll  IMPORTANTE:  Para  marcados como:  los  parámetros   instance  =  0.  EP  =  “\MCHP_EP1”.  CStr  VID_PID.  11  Agregando  parámetros  de  la  función   MPUSBGetDeviceCount de mpusbapi.  CStr  EP.  c.2 de National Instruments™ 15 / 18  . Array  Format:  Array  Data  Pointer.  es  el  dato  que  se envía  y/o recibe del PIC (fig.  long dwlen.  data  =  es  la  información que envía el PIC en un vector de  64  bytes.  los  datos  pueden  fluir  las  veces  que  sea  necesario  de  un  sentido  a  otro  y  manipularlos como se desee. dwMiliseconds = 200.  una  vez  con  dwDir=1  para  abrir  la  pipe  para  leer  y  con  dwDir=0  para  abrir  la  pipe  para  escribir  al  PIC.   El  código  implementado  en  labVIEW  <<DAQ.  Asegúrese  que  la  dll  quede  instalado en:   C:\Archivos de programa \Microchip  Solutions\USB Tools\MCHPUSB Custom  Driver\Mpusbapi\Dll  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.   De donde:   Handle  =  Número  que  porporciona  como  resultado  de  la  instrucción  MPUSBOpen  con  dwDir = 1  Recuerde  que  se  debe  abrir  una  “pipe”  a  la  vez (hay que usar dos veces ésta instrucción).com.  e.  unsigned  char  *data.  éstos  caducan.  Lea  los  datos  de  la  pipe  (solamente  si  la  pipe está abierta) Formato:  void  _MPUSBRead(long  Handle.   De donde:  Handle  =  Número  obtenido  como  resultado  de la instrucción MPUSBOpen con dwDir = 0  Y para la última “pipe”.2 de National Instruments™ 16 / 18  .  f. lugojim@gmail.  De donde:   instance  =  0. long  dwMilliseconds)  De donde:  Handle  =  Número  obtenido  como  resultado  de la instrucción MPUSBOpen con dwDir = 1. ambas hay que cerrarlas. long *length.com    Una  vez  enlazado  con  el  PIC.  Cierre  la(s)  pipe(s)  abierta(s). Formato:  void _MPUSBClose(long Handle).  dwDir = 1. dwReserved = 0. unsigned  char *data.  vid_pid    =  “vid_04d8&pid_000b”.  long  dwlen. dwlen = 64.vi  >>  puede  solicitarlo  a  los  siguientes  correos  electrónicos:  gpoolb@hotmail.  el  resultado  que  nos  arroja  ésta  instrucción  es  el  número  de  pipe  que  nos asigna el sistema operativo.  Formato:  void _MPUSBClose(long Handle).  data  =  es  la  información  que  se  envía  al  PIC  en un vector de 64 bytes. ya que se tiene  el completo control del software del PIC (por  parte del Compilador C) y en la PC (por parte  del  LabVIEW).  Recordemos  que  si se abren 2 pipes. length  = 64.  dwlen  =  64.  EP  =  “\MCHP_EP1”.  long  dwMilliseconds)   De donde:  Handle  corresponde  al  Número  que  se  obtiene  como  resultado  de  la  instrucción  MPUSBOpen  con  dwDir  =  0.  length  =  64.  d.  Escriba  los  datos  de  la  pipe  (solamente  si  la pipe está abierta) Formato::   void _MPUSBWrite(long Handle.  long  *length.   No  olvide  seguir  la  secuencia  de  apertura  y  cierre  de  la  “pipe”  con  una  “structura”  del  tipo  “Flat  sequence”  para  su  ejecución  en  secuencia.  ya  que  una  vez  usados.  dwMiliseconds = 200.   al  darle  click  lleva  directamente al driver.pdf  www.  BIBLIOGRAFÍA  http://www.usb.  ya  que  si  no  es  configurado  correctamente.  En  la  dirección  web  que  se  menciona  en  la  bibliografía se descarga el driver.ar/foros/index.  La  DLL  que  proporciona  Microchip  se  puede  descargar  desde  su  sitio  web. ya que.  generalmente  el  acceso  a  la  página  queda  en  los  primeros  resultados  de  la  búsqueda.  http://www.iespana. es importante verificar  que  el  driver  de  Microchip  quede  en  C:\  del  disco duro ya que se tomará como referencia  para el llamado de la dll y que el archivo que  se  descargó  sea  el  que  está  llamado   Microchip  MCHPFSUSB  v2.mx búsqueda “PIC USB”.  Asegurese de obtener la versión más actual.garcia‐ cuervo.  no  funcionará.1 ó simplemente  teclee  “usb  software/tools”  en  la  ventanita  de búsqueda y déle un clic en el botón “site  search”.2 de National Instruments™ 17 / 18  .google.  en  la  siguiente dirección:   "C:\ MICROCHIP SOLUTIONS\USB  TOOLS\MCHPUSB CUSTOM  DRIVER\MCHPUSB DRIVER\MCHPUSB  DRIVER RELEASE NOTES.  Para el enlace con la PC por USB es muy  importante  conectar  el  capacitor  (C4)  de  0.do=Bookmark  http://picmania.com/index.  el  driver  que  proporciona  Microchip  no  lo  reconocerá  y  en  consecuencia.0.  es  importante  considerar  el  valor  del  VID  &  PID.org/developers/docs/  http://slalen.es/programacion/datos /MPUSBApi.  si se omite generará un error al momento del  enlace. Pruebas finales y correcciones.  el  cual.  Se  recomienda  verificar  el  archivo  que  nos  proporciona  Microchip  en  el  driver.  3.  Por lo que respecta al descriptor del USB.1  Installer  (la  última versión). en caso de  haber caducado busque en la sección  Design    Aplication  Design  Center    Wired  Conectivity    USB    Software/Tools    MCHPFSUSB Framework v2. También es muy importante habilitar  el  fusible  VREGEN  para  que  Vusb  sea  activado.1uF como se indica en el diagrama.php  Driver de microchip:  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  Es  importante  considerar  la  función  del  PLL  del  PIC  ya  que  de  acuerdo  al  valor  de  la  frecuencia  del  cristal  depende  el  valor  de  la  multiplicación de la frecuencia del reloj para  generar los 48Mhz necesarios para el USB.com.todopic.hobbypic.com/  http://www.php ?topic=13418.HTM"   Ahí  se  proporciona  información  sobre  la  compatibilidad  en  sistemas  operativos  y  ejemplos desarrollados.  Para  esto  no  olvide  sustituir  en  el  descriptor  las  3  líneas  que se comentan en el código del programa  que se anexa en éste documento.com.  En  caso  de  que  el  LabVIEW  genere  error  al  ejecutar el programa.  En el mismo paquete  incluye  ejemplos  que  incluyen  el  programa  fuente para la compresión de su uso. 2 de National Instruments™ 18 / 18  .microchip.zip  Asegúrese que el archivo sea el que tiene por  nombre MCHPFSUSB Framework v2.  http://www.com/downloads/en/D eviceDoc/Microchip%20MCHPFSUSB%20v2.com/stellent/idcplg?I dcService=SS_GET_PAGE&nodeId=2651&par am=en534494  Descarga directa :  http://ww1.1  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.microchip.1 %20Installer. 5 4 3 2 1 SALIDAS D +5V +5V D1 R1 10K R2 10K R1 10K R2 10K R2 10K R2 10K 20 C5 0.2 Size A Date: 5 4 3 RA5 X1 12 MHz B A Document Number DAQ Monday.1uF 1 2 3 4 10 B 19 8 9 USB RA0 RA1 RA2 RA3 RA4 J3 POWER SUPPLY +5V 4 3 2 1 C2 2200uF C1 1000uF +12V C7 22pF C8 22pF S1 SW S1 SW S1 SW S1 SW S1 SW S1 SW ENTRADAS A Diseñado por: Ing. July 07.com Title Integración de PIC18F2455 con LabVIEW 8.1uF R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 D2 D3 D4 D5 D6 D7 D8 D RA0 RA1 RA2 RA3 RA4 RA5 +5V C 2 3 4 5 6 7 R6 10K R7 100 11 1 +5V S1 SW RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 21 22 23 24 25 26 27 28 RA0 RA1 RA2 RA3 RA4/T0CKI/C1OUT/RCV RC6/TX/CK RA5/SS RC7/RX/DT/SDO RC0/T1OSO/T13CKI MCLR/VPP/RE3 RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 OSC1/CLKI U2 PIC18F2455 RC2 RC1 VDD RB0 RB1 RB2 RB3 RB4 RB5 RB6 17 18 13 12 J1 RB7 C J4 1 2 3 4 5 ICSP OSC2/CLKO/RA6 RC4/D-/VM RC5/D+/VP VUSB GND GND 15 16 14 C4 0.com y Julio Lugo. lugojim@gmail. 2008 2 Rev 01 Sheet 1 1 of 1 . Gabriel Pool. gpoolb@hotmail.
Copyright © 2024 DOKUMEN.SITE Inc.