Integración de PIC18F2455 con LabVIEW 8.2 con mpusbapi



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    y  un  conocimiento  amplio  sobre  el  software  de  desarrollo.  la  miniaturización  de  componentes electrónicos.  Por otro lado.  un  software  que  administre  los  datos  en  la  PC  para  el  monitoreo  local  y  remoto.  RESUMEN  El  diseño  de  un  sistema  de  monitoreo  de  variables  como  presión.  Por  lo  que.  velocidad.  tales  como  lenguajes  de  alto  nivel  para  compilar  el  programa    y  programadores  económicos  para  descargar  el  programa  en  el  chip.)..  Debido  a  éstas  herramientas.  graficar.  Dichos  microcontroladores.  de  tal  manera.  No  ha  sido  la  excepción  con  el  microcontrolador.  Existe  una  gran  variedad  de  tarjetas  y  su  costo  varía  de  acuerdo  a  sus  capacidades. Esto se puede lograr con el desarrollo de  un software como Visual Basic.2 de National Instruments™ 2 / 15  .  ó  cualquier  otro  paquete  de  preferencia  gráfico  para  hacer  más  fácil  la  interfaz  de  usuario.  que  casi  no  fallan.  Algunos  fabricantes  tal  como  Microchip. 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.  guardar  datos  en  disco.  etc. la disminución de  su consumo  de corriente  y el tamaño  de los  semiconductores.  etc.  ya  que  éste  se  ha  desarrollado  notablemente.  inteligentes  y  eficientes.  orientada  a  la  interacción y trabajo exclusivo con productos  del  fabricante.  Desafortunadamente. ya no basta con tener un  chip  inteligente  que  funcione  de  manera  autónoma.  requieren  de  muy  poco  componentes  de  soporte  externo  para  implementarse  y  sus  tecnologías  se  han  perfeccionado.  etc.  control  de  decisiones.  circuitos  de  apoyo  adicionales  (ADC.  puertos.  INTRODUCCIÓN  Hoy  en  día.  memoria.  graficar.  guardar  datos  en  disco.  El  software fue evolucionando al grado de que  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  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.  control  de  decisiones.  ahora  se  requiere  que  trabajen  en conjunto con la PC para el monitoreo local  y  remoto  (internet  o  intranet).  éste  chip  se  ha  vuelto  muy  popular  al  grado  que  se  proponen  como  materias a cursar en las escuelas.  se  preocupan  en  desarrollar  las  herramientas  para  su  programación.  Conforme  el  software  se  fue  volviendo  popular  muchos  fabricantes  de  hardware  desarrollaron  tarjetas  compatibles  con  éste  software. permite la construcción de  circuitos  más  complejos.  sin  contar  la  gran  cantidad  de  tiempo a invertir en la implementación de la  solución más apropiada. Visual C.  National  Instruments  desarrolló  un  paquete  para  la  implementación  de  una  interfaz  con  conectividad  a  sus  tarjetas  de  adquisición  (que  vende  por  separado).  el  tiempo  para  aprender  y  dominar  estos  paquetes  es  muy  largo. C++.  etc.  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.  al  punto  de  hacer  más  grande  sus  capacidades  de  comunicación.  temperatura.  oscilador  interno.  incluyendo otro hub. Es  usado  en  escáner  ó  cámaras.  su  complejidad  para implementarlo es enorme.  La  velocidad  de  transferencia  depende  de  la  velocidad  del  HUB  que  se  esté  utilizando.  Sólo puede haber un Host en el bus que  maneja a todos los componentes conectados  como se indica en la figura 1.  ANTECEDENTES  1. 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.  Los  datos  entregados  pueden  perderse. 12Mb/s  full‐speed y 1.  Ver  figura  3.    •  Interrupt  Data  Transfers:  Used  for  timely  but  reliable  delivery  of  data.  La  ráfaga  de  datos es secuencial.                Fig.  se  puede  conectar  casi  con  cualquier  dispositivo. LA ARQUITECTURA DEL PUERTO USB  A pesar de que el puerto USB nos ofrece  más  ventajas  que  sus  predecesores.2 de National Instruments™ 3 / 15  . el ancho de banda puede variar. 2 HUB USB        Fig.5Mb/s en Low‐speed.              Fig.  Sus  terminales  son  del  tipo  diferencial  y  consta de 4 hilos. 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.  y  su  manejo  es  muy  fácil  e  incluye una ayuda en línea. 3 Múltiple velocidad en un BUS  El cable que típicamente es usado no es  largo.    •  Bulk  Data  Transfers:  Entrega  el  dato  por  volumen.  se  le  pueden  agregar  más dispositivos USB. debido a la velocidad de transferencia  y tiene la estructura mostrada en la figura 4.  for  example.  Las  velocidades  típicas son:  480Mb /s en high speed.    Fig.  characters  or  coordinates  with  human‐ Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  ya  que  su  funcionamiento  está  basado  en   protocolos de software.  Flujo de comunicación USB  2.  no  requiere driver.sys.2 de National Instruments™ 4 / 15  .  es  suficiente que se pueda administrar como un  “device”.  Para  un  funcionamiento  correcto.    •  Isochronous  Data  Transfers:  Occupy  a  prenegotiated  amount  of  USB  bandwidth  with  a  prenegotiated  delivery  latency. 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. 3.  requiere  driver. entre otros.  Este  es  el  modo  que  usa  WinUSB  (para  windows  vista)  y  el  mpusbapi  (windows 2000 y posterior).  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).            Fig 5.  VID&PID. LA MPUSBAPI.    2.  ya  que  se  requiere  de  una  gran  capacidad  de  manejo  de  datos  para  administrar  a  cada  componente  del  BUS.  perceptible  echo  or  feedback  response  characteristics.  (Also  called streaming real time transfers).  usar  (endpoints). se necesita el driver mchpusb.  USB  Communication  Device  Class  (CDC):  Velocidad  Media.   Dentro  de  los  protocolos  hay  que  especificar el tipo de transferencia de datos a  Revisando  ejemplos.  Microchip ha creado un archivo dll en el que  proporciona  las  funciones  de  acceso  al  puerto  USB  con  un  microcontrolador  de  la  familia  PIC18Fxx5x.  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.  USB  Custom  Driver:  Velocidad  Alta.     Este  driver  sirve  tanto  para  Visual  Basic  como para Visual C.    Aunque el PIC no puede funcionar como  host.   Estos  protocolos  se  le  llaman  descriptores  y  sirve  para  informarle  al  host  todo  lo  necesario  para  que  pueda  administrarlo.   Recordemos  que  los  PICs  de  la  serie  18Fxx5x  tienen  tres  modos  de  funcionamiento:  1. USB  Human  Interface  Device  (HID):  Velocidad  Baja.  para  esto  se  requiere  “memorizarle”    los  protocolos  necesarios  para enlazarse al host.  Crea  un  Puerto  Serie Virtual.  requiere  driver.DLL DE MICROCHIP  Para  una  mayor  facilidad  de  desarrollo  de  aplicaciones  basadas  en  el  bus  USB.  el string de  entrada es: “vid_0x04d8&pid_0x000b”. Ejemplo: Si un dispositivo tiene  un VID=0x04d8 y un PID=0x000b. VID 0x04d8. PID 0x0003     y  el  dispositivo  que  nos  interesa  tiene  VID=0x04d8  y  PID=0x0002  el  MPUSBGetDeviceCount  devolverá  un  ‘1’.2 de National Instruments™ 5 / 15  .  Normalmente.     pEP:  Input:  String  con  el  número  del  Endpoint  que  se  va  a  abrir. PID 0x0002   Dispositivo tipo 2.  ésto  permite  que  MPUSBRead.  Donde  xxxx  es  el  valor del VID y el yyyy el del PID.   Nota: el valor del time‐out no tiene sentido  en una pipe síncrona.     instance:  Input:  Un  número  de  dispositivo  para  abrir.  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  formato  es  “\\MCHP_EPz” o “\MCHP_EPz” dependiendo  del lenguaje de programación.  // Input <Future Use>  Esta  instrucción  devuelve  el  acceso  al  pipe  del Endpoint con el VID_PID asignado. Ejemplo:   “\\MCHP_EP1”  o  “\MCHP_EP1”  Este  argumento puede ser NULL (nulo) para crear  lazos  con  Endpoints  de  funciones  no  específicas.     Nota:  Para  utilizar  MPUSBReadInt().  se  utiliza  primero  la  llamada  de  MPUSBGetDeviceCount  para  saber cuantos dispositivos hay.  hay  que  dejar  de  hacer  las  llamadas  porque  no  puede  haber  más dispositivos con el mismo VID_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.  Cualquier  otro dato recibido después de llenar el buffer  del driver se ignora.  Las  funciones  específicas  que  utilizan  éste  parámetro  son:  MPUSBRead.              // Input  DWORD dwReserved). los dos en  hexadecimal.  Se  tiene  que  contar  el  número  de  llamadas  exitosas.  Cuando  este  número  sea  igual  al  número  devuelto  por  MPUSBGetDeviceCount. Esta opción sólo está  disponible para un Endpoint interrupción IN.  el  formato  de  pEP  tiene  que  ser  “\\MCHP_EPz_ASYNC”. VID 0x04d8.  MPUSBWrite  y  MPUSBReadInt  tengan  un  valor de time‐out. VID 0x04d8. MPUSBReadInt. La aplicación del usuario  tiene que llamar MPUSBReadInt() a  menudo  sin superar el máximo de 100.            // Input  PCHAR pEP.  MPUSBWrite.  Ejemplo:  Si  hay  tres  dispositivos  con  los  siguientes  PID_VID  conectados:      Dispositivo tipo 0.     dwDir: Especifica la dirección del Endpoint:   Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Donde z es el  número del Endpoint en decimal.     Seguidamente  con  la  instrucción  (*MPUSBOpen)  (DWORD instance.     pVID_PID:  Input:  String  que  contiene  el  PID&VID  del  dispositivo  objetivo.           // Input  PCHAR pVID_PID.  conectados  al  Host.     Es importante entender que el driver  lo  comparten  distintos  dispositivos.  que  tienen  asignado  el mismo pVID&PID.  Al  llamar  la  función  tiene  que  haber  un  mecanismo  que  intente  llamar  MPUSOpen()  desde  0  hasta  MAX_NUM_MPUSB_DEV.  El  formato  es  “vid_xxxx&pid_yyyy”.                     // Input  DWORD dwDir. Todas  las  pipes  se  abren  con  el  atributo  FILE_FLAG_OVERLAPPED  contenida  en  la  DLL. PID 0x0001   Dispositivo tipo 1.   “handle”  es  el  número  de  pipe  que  nos  arrojó  la  instrucción anterior con dwDir=1. 0)  Como  tercer  procedimiento.    dwLen:  Input:  Especifica  el  número  de  bytes que se espera leer de la pipe.  La  función  vuelve  si  transcurre  el  intervalo  aunque  no  se  complete  la  operación. Datos.   // Input  // Input  // Input    // Output  // Input  DWORD dwMilliseconds).  En  conclusión.     handle:  Input:  Identifica  la  pipe  del  Endpoint  que  se  va  a  leer. out_pipe. con dwDir=1 se abre  la  pipe  para  leer  y  con  dwDir=0  se  abre  la  pipe para escribir al PIC.  VarPtr(s(0)).  En conclusión. vid_pid. dwDir.     pLenght:  Output:  Puntero  al  número  de  bytes leídos.           // Input  // Output  // Input  // Output  // Input  generalmente  se  declara  al  inicio  del  programa en el PIC.   PDWORD pLength.     DWORD dwLen.  se  lee  el  dato  aplicando  el  número  de  pipe  asignado  por  medio de la instrucción: (*MPUSBRead)   (HANDLE handle.  Si  dwMilliseconds=0.   PVOID pData.    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).  DWORD dwMilliseconds).  La  pipe  unida  tiene que crearse con el atributo de acceso  MP_READ. MPUSBRead pone este valor a  cero  antes  de  cualquier  lectura  o  de  chequear un error.     dwMilliseconds:  Input:  Especifica  el  intervalo  de  time‐out  en  milisegundos.2 de National Instruments™ 6 / 15  .     El  formato  típico  de  la  instrucción  es:  MPUSBOpen(0.   PDWORD pLength.     DWORD dwLen. La pipe unida  tiene que crearse con el atributo de acceso  MP_WRITE.  Si  dwMilliseconds  es  infinito.  DatosDeseados.     El  formato  típico  de  la  instrucción  es:  MPUSBRead(myInPipe.  el  intervalo  de  time‐out  nunca  termina.  la  función  comprueba  los  datos  de  la  pipe  y  vuelve  inmediatamente. donde N  es  el  número  de  bytes  que  maneja  el  “device”  en  el  arreglo  que  envía  a  la  PC.     handle:  Input:  Identifica  la  pipe  del  Endpoint que se va a escribir.    pData:  Output:  Puntero  al  buffer  que  recibe  el  dato  leído  de  la  pipe.  El  formato  del dato es un arreglo de N bytes. “handle” es el  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. 1000)   Para  enviar  los  datos  al  PIC  se  hace  de  la  misma  manera  con  la  instrucción:  (*MPUSBWrite)  (HANDLE handle.   PVOID pData. el resultado que nos  arroja ésta instrucción es el número de pipe  que nos asigna el sistema operativo.   dwReserved:  No  asignado  por  el  momento.  el valor por omisión es cero.   PDATA. éstas son:  MPUSBGETDLLVERSION(VOID)     Lee el nivel de revisión del MPUSAPI.2 de National Instruments™ 7 / 15  .  La  pipe  unida  tiene  que  crearse con el atributo de acceso MP_READ.  MPUSBRead  pone  este  valor  a  cero  antes  de  cualquier  lectura  o  de  chequear un error.dll. Esta  función  devuelve la versión del código de la  dll  en  formato  hexadecimal  de  32bits.  el  intervalo  de  time‐out  nunca  termina.     Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  la  función  comprueba  los  datos  de  la  pipe  y  vuelve  inmediatamente. Para  cerrarlos  basta  ejecutar  la  instrucción:  (*MPUSBClose)(HANDLE  handle).  Si  dwMilliseconds=0.  el  intervalo  de  time‐out  nunca  termina. Si dwMilliseconds es  infinito.  VarPtr(bytes).  número  de  pipe  que  nos  arrojó  la  instrucción anterior con dwDir=0.  DWLEN.  bytes.     pLenght:  Output:  Puntero  al  número  de  bytes  leídos.  se  requiere  cerrar  las  pipes. DWMILLISECONDS)     handle: Input: Identifica la pipe del Endpoint  que  se  va  a  leer.  no  realiza nada con el puerto USB. generalmente se declara al  inicio del programa en el PIC.     dwMilliseconds:  Input:  Especifica  el  intervalo  de  time‐out  en  milisegundos. donde N es el número de bytes  que  maneja  el  “device”  en  el  arreglo  que  recibe de la PC.     pLenght: Output: Puntero que proporciona  el  número  de  bytes  que  se  escriben  al  llamar  esta  función.  El  formato  del  dato  es  un  arreglo  de N bytes.  pero  es  necesario conocerlos.   El formato típico de la instrucción es: MPUSBClose (myOutPipe)    Existen  otras  dos  instrucciones  que  no  se  implementaron  en  éste  desarrollo.     El  formato  típico  de  la  instrucción  es:  MPUSBWrite(myOutPipe.  VarPtr(SendData(0)).  MPUSBWrite  pone  este valor a cero antes de cualquier lectura  o de chequear un error.  La  función  vuelve si transcurre el intervalo aunque no se  complete  la  operación.     pData: Output: Puntero al buffer que recibe  el dato leído de la pipe.    pData:  Input:  Puntero  al  buffer  que  contiene los datos que se van a escribir en  la  pipe.  de  donde  handle:  Input:  Identifica  la  pipe  del  Endpoint que se va a cerrar.     dwLen: Input: Especifica el número de bytes  que hay que leer de la pipe.  Si  dwMilliseconds=0.  La  función  vuelve  si  transcurre  el  intervalo  aunque  no  se  complete  la  operación.  Si  dwMilliseconds  es  infinito.  1000)   Por  ultimo.  ya no es posible leer / escribir de nuevo.  porque  después  de  usarlos  caducan.     dwMilliseconds: Input: Especifica el intervalo  de  time‐out  en  milisegundos.  PLENGTH.  la  función  comprueba  los  datos  de  la  pipe  y  vuelve inmediatamente.    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()  MPUSBREADINT(HANDLE.   Esta dll se llama de acuerdo a la convención  del lenguaje C. Enlace a la PC mediante USB.  Para  lograr  el  enlace  a  USB  se  utilizaron  las  funciones  USB.     Tipo           Función  ¿Aplicable time‐out?   Interrupt IN‐MPUSRead.  VarPtr(bytes).  dejando  la  elección  al  programador.     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. Pruebas finales y correcciones.  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.  bytes.  1000)     TIPOS DE TRANSFERENCIAS SOPORTADO POR  ESTAS INSTRUCCIONES    En este apartado se recomienda que función  utilizar  dependiendo  del  tipo  de  transferencia.  en  la  PC  se  descarga  el  driver  que  nos  proporciona  Microchip  en  su  págína  web.  se  comentan  las  pequeñas  variaciones  que  existen  al  declarar  estas  variables  en  los  distintos  lenguajes. 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.  VarPtr(SendData(0)).  También. NO funciona si es llamada con  el formato de STDLIB.  se estableció la cantidad de datos a 64 bytes  (8 bits por byte) de envío y recepción hacia la  PC.  OBJETIVOS PARTICULARES  1.2 de National Instruments™ 8 / 15  .  dichas  funciones  están  preparadas  para  que  el microcontrolador sea reconocido como un  dispositivo  personalizado  usando  los  descriptores  que  incluye  el  mismo  lenguaje.  3.  Todas  son  optativas.  incorporadas  en  el  lenguaje  C  del  programa  CCS  para  PICS.  que  son  lo  opuesto  a  los  sentidos  comunes  desde  la  perspectiva  de  una aplicación haciendo llamadas.    1.  DECLARACIÓN DE CONSTANTES Y VARIABLES     Aquí  aparecen  las  constantes  y  variables  que  el  fabricante  recomienda  usar. Enlace de LabVIEW al PIC. ENLACE A LA PC MEDIANTE USB.  Si  tiene  dudas  sobre  la  descarga  consulte  el  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  El  formato  típico  de  la  instrucción  es:  MPUSBReadInt(myOutPipe.  2.  etc.  display  genéricos  de  dos  líneas  y  gráficos.  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. usb.  el  mismo  compilador  trae  en  la  ayuda  un  diagrama  esquemático  para  conectar  al  PIC  dispositivos  adicionales  como  teclado.  Una  vez  configurado  el  hardware.  modificando  los  descriptores para que se puedan hacer                             Fig.  apartado 3.  en  cuanto  le  solicite  los  driver.  Se  sugiere  que  al  descomprimir  el  archivo  del  driver  se  instale  en  C:\Archivos  de  Programa\  para  que  el  driver  quede  en:  C:\Archivos  de  Programa\  Microchip  Solutions\USB  Tools\MCHPUSB  Custom  Driver\MCHPUSB  Driver\Release  ya  que  al  ejecutar la aplicación del LabVIEW se tomará  como referencia ésa dirección. Pruebas finales y correcciones en  éste documento.  sólo  proporcione  la  dirección  donde  fue descomprimido el driver.   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.  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. para esto no olvide sustituir en el  descriptor  las  3  líneas  que  se  comentan  en  el código del programa que se anexa al final  de éste documento.  el  puerto serie.2 de National Instruments™ 9 / 15  .  se  programó  el  PIC.  Por  parte  del  Hardware. I2C. 6  Instalación del PIC en la PC                    Fig.  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. 2 de National Instruments™ 10 / 15  .  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.    Siguiendo  los  pasos  descritos  en  la  sección de antecedentes de éste documento. Todo  esto  basándose  en  ejemplos  que  el  compilador  trae  incluidos  en  la  carpeta  de  “examples”.  Para poder iniciar el enlace con el PIC es  necesario  que  se  haya  concluido  satisfactoriamente la instalación del paquete  de  drivers  de  Microchip. habilitar  un  indicador.  Para  la  implementación  de  los  métodos  anteriores  el  LabVIEW  8.  etc.  escoja  la  opción  blank  VI  y  en  la  barra  de  menús  déle  un  click  al  menú  de  window   Show block diagram..  Para  iniciar  con  la  implementación  del  código. el VID&PID.  con  el  fin  de  visualizar  la  ocurrencia  de  los eventos. En los tres casos  se  manipula  la  misma  librería.  aún  no  es  suficiente  la  información.  se  puede  mostrar  mensajes. 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. guardarlos en un archivo.2  ofrece  una  ayuda  en línea.  No  olvide  sustituir  en  el  descriptor  usb_desc_scope.  Sólo basta investigar un poco en la red para  ver los resultados (Consulte la bibliografía de  éste documento).  las  instrucciones  que  se  requieren  implementar  tienen  la  siguiente  secuencia  y  formato en LabVIEW son:  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  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.  Sin  embargo.  mover  un  detector  de  nivel. Elaborar un programa en C y cargarlo en la  instrucción “Code Interface Node”  c.  2.h  las  3  líneas  que  se  comentan  en  el  código  del programa. Cabe aclarar que los diseños en  USB con PIC día a día se van incrementando. 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).  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.  graficar  los  datos  obtenidos.  En  este  desarrollo  se  utilizó    el  tercer  método  parar  manipular la librería de una manera directa y  sin intermediarios.  transacciones de 64 bytes. El código del programa del  PIC se encuentra al final del documento con  sus  respectivos  comentarios.  primero  inicie  el  programa  de  LabVIEW.        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.  Entre  las  ventajas  que  nos  ofrece  el  labVIEW  podemos  mencionar:  el  ambiente  gráfico  muy  amigable.   Por  parte  de  LabVIEW  es  necesario  conocer  qué función es más fácil de implementar:   Existen tres métodos:  a.  Hacer  un  ejecutable  y  llamarlo  con  la  función “system exec vi”  b.   Conociendo  esto  pasos. Función Call Library Function Node  vista en el block diagram              Fig.dll  tenemos  que  declararla  como  string.  según  las  instrucciones  de  uso  del  mpusbapi.  Data  type:  Use  el  que  trae  de  manera  predeterminada.  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.  presione  el  botón  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Déle  doble  clic  en  la  parte  amarilla  y  saldrá  un  menú  de  configuración  como  se  muestra  en  la figura 9.  y  la  misma  función  proporciona una salida en formato numérico. 9. 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:\Archivos  de  programa\Microchip  Solutions\USB  Tools\MCHPUSB  Custom  Driver\Mpusbapi\Dll\Borland_C”  e  inmediatamente cargará la dll.    Fig.  en  éste  caso  el  PID&VID  que  se  quiere  llamar  es  vid_04d8&pid_000b. 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. Configuración de parámetros de la  Función Call Library Function Node.  En  los  campos  que  aparecerán  a  continuación  llénelos  como  sigue:  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.2 de National Instruments™ 11 / 15  .  a.   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.  Identificar  el  número  de  dispositivos  conectados  con  el  PID&VID  y  ubicar  el  que  corresponde  al  hardware  de    su  desarrollo. 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.  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.  solamente  tiene  que  anexar  las  variables y acondicionar el tipo de entrada.   que  traen una leyenda Long al inicio.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. String Format: se sugiere dejar la  que trae de manera predeterminada (C string  Pointer).dll              Fig.    Ahora  cree  una  constante.  presione  el  menú del campo Function Name y seleccione  la  función  a  utilizar  (MPUSBWrite.  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).2 de National Instruments™ 12 / 15  . presione el botón OK y la función ya  está configurada.  10.  Minimun  size:  se  sugiere  dejar  la  que  trae  de  manera  predeterminada  (en  blanco).  10  Configurando  la  función  de  salida  de  MPUSBGetDeviceCount de mpusbapi.  Configurando  la  función  MPUSBGetDeviceCount de mpusbapi.  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.              Fig.  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. 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.  11  Agregando  parámetros  de  la  función   MPUSBGetDeviceCount de mpusbapi.dll              Fig.  sólo  hay  que  tener  en  cuenta  lo  siguiente:    Para  la  función  MPUSBOpen.   CStr  VID_PID.  long  dwDir.  Formato:  long  _MPUSBOpen(long  instance.  long  dwMilliseconds)   De donde:  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Dimensions: 1.  dwDir = 1.  vid_pid    =  “vid_04d8&pid_000b”.  Abra  la  pipe  para  leer  (si  no  desea  leer  puede omitir éste paso).  long  dwlen.  es  el  dato  que  se envía  y/o recibe del PIC (fig.   Long del tipo numérica. dwReserved = 0.  d.  vid_pid    =  “vid_04d8&pid_000b”.  b.   Los  marcados  con  *  son  del  tipo  variable  numérica  con  Data  type:  unsigned  32  bits  integer  y    Pass:  seleccionado  a  Pointer  to  value.  IMPORTANTE:  Para  marcados como:  los  parámetros              Cstr son variables del tipo String. 13 Configuración del arreglo de 1X64  bytes de 8 bits que se envia/recibe del PIC  desde LabVIEW    De donde:   instance  =  0.   Y  los  marcados  con  unsigned  char  *  son  arreglos  de  1X64  bytes  de  8  bits  (vector)  y  configurados  con  Type:  Array.  CStr  EP.  Abra  la  pipe  para  escribir  (si  no  desea  escribir puede omitir éste paso).2 de National Instruments™ 13 / 15  .  long  *length.  Formato:  long  _MPUSBOpen(long  instance.  unsigned  char  *data.  Data  Type:  unsigned 8 bits integer. 12 Funciones de mpusbapi. 13).  Lea  los  datos  de  la  pipe  (solamente  si  la  pipe está abierta) Formato:  void  _MPUSBRead(long  Handle. Array  Format:  Array  Data  Pointer.  c.  dwDir = 0.  CStr  VID_PID.  long   dwReserved)   De donde:   instance  =  0.dll declaradas  como Void              Fig.  long   dwReserved)    Fig.  Minimun  size:  seleccione  la  variable  asignada  a  la  longitud  del  arreglo  a  enviar  /  recibir.  EP  =  “\MCHP_EP1”.  EP  =  “\MCHP_EP1”. dwReserved = 0.  long  dwDir.  CStr  EP.   Asegúrese  que  la  dll  quede  instalado en:   C:\Archivos de programa \Microchip  Solutions\USB Tools\MCHPUSB Custom  Driver\Mpusbapi\Dll  3.2 de National Instruments™ 14 / 15  .com    Una  vez  enlazado  con  el  PIC.  data  =  es  la  información que envía el PIC en un vector de  64  bytes.vi  >>  puede  solicitarlo  a  los  siguientes  correos  electrónicos:  gpoolb@hotmail. long  dwMilliseconds)  De donde:  Handle  =  Número  obtenido  como  resultado  de la instrucción MPUSBOpen con dwDir = 1.  éstos  caducan.  Escriba  los  datos  de  la  pipe  (solamente  si  la pipe está abierta) Formato::   void _MPUSBWrite(long Handle.com. También es muy importante habilitar  el  fusible  VREGEN  para  que  Vusb  sea  activado.  e.  una  vez  con  dwDir=1  para  abrir  la  pipe  para  leer  y  con  dwDir=0  para  abrir  la  pipe  para  escribir  al  PIC.   De donde:  Handle  =  Número  obtenido  como  resultado  de la instrucción MPUSBOpen con dwDir = 0  Y para la última “pipe”.  f.1uF como se indica en el diagrama.  length  =  64.  Recordemos  que  si se abren 2 pipes. Pruebas finales y correcciones. ya que se tiene  el completo control del software del PIC (por  parte del Compilador C) y en la PC (por parte  del  LabVIEW).  dwMiliseconds = 200.  Para el enlace con la PC por USB es muy  importante  conectar  el  capacitor  (C4)  de  0. Formato:  void _MPUSBClose(long Handle).  data  =  es  la  información  que  se  envía  al  PIC  en un vector de 64 bytes. length  = 64.  si se omite generará un error al momento del  enlace.  Formato:  void _MPUSBClose(long Handle).  dwlen  =  64.   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. dwlen = 64.  Handle  corresponde  al  Número  que  se  obtiene  como  resultado  de  la  instrucción  MPUSBOpen  con  dwDir  =  0.  el  resultado  que  nos  arroja  ésta  instrucción  es  el  número  de  pipe  que  nos asigna el sistema operativo.  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  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. long dwlen. ya que.  Cierre  la(s)  pipe(s)  abierta(s). unsigned  char *data. dwMiliseconds = 200. ambas hay que cerrarlas.   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). lugojim@gmail.  ya  que  una  vez  usados. long *length.  los  datos  pueden  fluir  las  veces  que  sea  necesario  de  un  sentido  a  otro  y  manipularlos como se desee.   El  código  implementado  en  labVIEW  <<DAQ. php ?topic=13418.1  Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.  Por lo que respecta al descriptor del USB.com.1 %20Installer.zip  Asegúrese que el archivo sea el que tiene por  nombre MCHPFSUSB Framework v2.  al  darle  click  lleva  directamente al driver.microchip.microchip.  es  importante  considerar  el  valor  del  VID  &  PID.garcia‐ cuervo.0.  no  funcionará.hobbypic.iespana.com/index.  multiplicación de la frecuencia del reloj para  generar los 48Mhz necesarios para el USB.  En  la  dirección  web  que  se  menciona  en  la  bibliografía se descarga el driver.  el  cual.google.com/stellent/idcplg?I dcService=SS_GET_PAGE&nodeId=2651&par am=en534494  Descarga directa :  http://ww1.  generalmente  el  acceso  a  la  página  queda  en  los  primeros  resultados  de  la  búsqueda.com/  http://www.HTM"   Ahí  se  proporciona  información  sobre  la  compatibilidad  en  sistemas  operativos  y  ejemplos desarrollados. es importante verificar  que  el  driver  de  Microchip  quede  en  C:\Archivos  de  Programa\  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. en caso de  haber caducado busque en la sección  Design    Aplication  Design  Center    Wired  Conectivity    USB    Software/Tools    MCHPFSUSB Framework v2.ar/foros/index.2 de National Instruments™ 15 / 15  .  Se  recomienda  verificar  el  archivo  que  nos  proporciona  Microchip  en  el  driver.  La  DLL  que  proporciona  Microchip  se  puede  descargar  desde  su  sitio  web.do=Bookmark  http://picmania.php  Driver de microchip:  http://www.1 ó simplemente  teclee  “usb  software/tools”  en  la  ventanita  de búsqueda y déle un clic en el botón “site  search”.es/programacion/datos /MPUSBApi.pdf  www.  el  driver  que  proporciona  Microchip  no  lo  reconocerá  y  en  consecuencia.  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.todopic.1 Installer (la última versión).  Asegurese de obtener la versión más actual.  http://www.  en  la  siguiente dirección:   "C:\ ARCHIVOS DE PROGRAMA\MICROCHIP  SOLUTIONS\USB TOOLS\MCHPUSB CUSTOM  DRIVER\MCHPUSB DRIVER\MCHPUSB  DRIVER RELEASE NOTES.com/downloads/en/D eviceDoc/Microchip%20MCHPFSUSB%20v2.usb.  ya  que  si  no  es  configurado  correctamente.  BIBLIOGRAFÍA  http://www.  En el mismo paquete  incluye  ejemplos  que  incluyen  el  programa  fuente para la compresión de su uso.mx búsqueda “PIC USB”.  En  caso  de  que  el  LabVIEW  genere  error  al  ejecutar el programa.com.org/developers/docs/  http://slalen. h> //#device ADC=10 //Descomente ésta opción en caso de usar el ADC a 10bits #fuses HSPLL.c //// //// //// //// Este ejemplo muestra como desarrollar un sencillo dispositivo //// //// USB con el PIC18F2550 (para la serie 18Fxx5x) //// //// los drivers que se requiere para éste dispositivo son los que //// //// proporciona Microchip en su pagina web.C. //// //// //// //// Al aplicar energia al PIC se enciende el LED en RB6 y hasta //// //// que el dispositivo halla sido configurado por la PC via puerto //// //// USB se encende el Led en RB7. saldrá el asistente //// //// para la instalación del driver.NODEBUG. Julio Lugo para proyecto de //// //// materia Sensores y Actuadores impartida por el profesor //// //// M. xmit=PIN_C6.NOPROTECT. Gabriel Pool y Ing.h for more information // ///////////////////////////////////////////////////////////////////////////// #define USB_HID_DEVICE directivas HID #define USB_EP1_TX_ENABLE bulk/interrupt transfers #define USB_EP1_RX_ENABLE bulk/interrupt transfers #define USB_EP1_TX_SIZE endpoint 1 buffer FALSE USB_ENABLE_BULK USB_ENABLE_BULK 64 Página 1 //deshabilitamos el uso de las //turn on EP1(EndPoint1) for IN //turn on EP1(EndPoint1) for OUT //size to allocate for the tx . rcv=PIN_C7) ///////////////////////////////////////////////////////////////////////////// // // CCS Library dynamic defines.DAQ Código de programa ///////////////////////////////////////////////////////////////////////// //// DAQ. Se instala el driver //// //// que nos proporciona Microchip.VREGEN.PLL3.com //// //// //// ///////////////////////////////////////////////////////////////////////// #include <18F2455.MCLR.CPUDIV1.com //// //// y lugojim@gmail. México) en Junio 2008 //// //// Este programa es de uso libre siempre y cuando que contenga //// //// esta leyenda y nos agradaría recibir las mejoras que Ud //// //// amablemente nos envie a estos correos: [email protected] #use delay(clock=48000000) #use rs232(baud=9600.227 //// //// Este programa fue desarrollado para estimular el uso del //// //// puerto USB y desarrollar tarjetas de adquisición económicas //// //// por Ing.USBDIV. For dynamic configuration of the CCS Library // for your application several defines need to be made. y se basan en protocolo //// //// USB_ENABLE_BULK su XTAL es de 12Mhz. Pedro Nájera //// //// (Universidad Modelo en Mérida. Yucatán.NOWDT. See the comments // at usb. //// //// Sólo si la PC le envia un dato al PIC éste enviará el dato del //// //// puerto A //// //// //// ///////////////////////////////////////////////////////////////////////// //// //// //// Realizado con el compilador CCS PCWH 3. //// //// //// //// //// //// Cuando el dispositivo sea conectado al PC. El PIC muestra el dato que le //// //// envia la PC en el vector [0] e inmediatamente el PIC le //// //// responde con el valor del puerto A almacenado en el vector [1].NOLVP. EL DISPOSITIVO NO SERA RECONOCIDO POR EL DRIVER.0x04.DAQ #define USB_EP1_RX_SIZE endpoint 1 buffer 64 //size to allocate for the rx ///////////////////////////////////////////////////////////////////////////// // // If you are using a USB connection sense pin. // (connection sense should look like this: // 100k // VBUS-----+----/\/\/\/\/\----. define it here.0x00.(I/O PIN ON PIC) // | // +----/\/\/\/\/\-----GND // 100k // (where VBUS is pin1 of the USB connector) // ///////////////////////////////////////////////////////////////////////////// //#define USB_CON_SENSE_PIN PIN_B2 //CCS 18F4550 development kit has optional conection sense pin ///////////////////////////////////////////////////////////////////////////// // // Include the CCS USB Libraries. 0x0B.h lo siguiente: 0xD8.c> descriptor reports //Microchip PIC18Fxx5x Hardware layer for CCS's //descriptors del Pic USB //handles usb setup tokens and get ///////////////////////////////////////////////////////////////////////////// /* IMPORTANTE: No olvidar sustituir en la sección start device descriptors (aprox en la linea 132) al descriptor ubicado en C:\Archivos de programa\PICC\Drivers\usb_desc_scope. 0x01. comment out this line.h> PIC USB driver #include <usb_desc_scope. See the comments at the top of these // files for more information // ///////////////////////////////////////////////////////////////////////////// #include <pic18_usb. Without connection // sense you will not know if the device gets disconnected.h> #include <usb.******** */ ///////////////////////////////////////////////////////////////////////////// #define #define #define #define LEDV LEDR LED_ON LED_OFF PIN_B6 PIN_B7 output_high output_low // Registro de control de E/S del // Registro de control de E/S del // // // // Página 2 Registro Registro Registro Registro del puerto del puerto de control del modulo A B del ADC comparador #BYTE TRISA puerto A #BYTE TRISB puerto B #BYTE PORTA #BYTE PORTB #BYTE ADCON1 #BYTE CMCON = 0x0F92 = 0x0F93 = 0x0F80 = 0x0F81 = 0x0FC1 = 0x0FB4 .0x00. //vendor id (0x04D8 is Microchip) //product id //device release number **********DE LO CONTRARIO. If you are // not using connection sense. USB_DTS_TOGGLE). LED_ON(LEDR). entradas TRISB = 0x00. establecer contacto con la PC TRISA = 0x0FF. entradas digitales CMCON = 0x07. salidas ADCON1 = 0x0F. // cojemos el paquete de tamaño 8bytes del EP1 y almacenamos en dato portb = dato[0]. 64. sea configurado por el host LED_OFF(LEDV).DAQ int8 dato[64]. //y enviamos el mismo paquete de tamaño 64bytes del EP1 al PC } } } } //encendemos led en RB6 para // inicializamos el USB // habilita periferico usb e // esperamos hasta que el PicUSB // encendemos led en RB7 al // Se declara el puerto A como // Se declara el puerto B como // Se configura al ADC para // Se configuran los comparadores // si el Pic está configurado via Página 3 . // Se muestra al byte completo en el puerto B dato[1] = porta. // Se lee el puerto A y se almacena en el vector usb_put_packet(1. dato. interrupciones usb_wait_for_enumeration(). 64). usb_init(). para entradas digitales while (TRUE) { if(usb_enumerated()) USB { if (usb_kbhit(1)) // si el endpoint de salida contiene datos del host { usb_get_packet(1. usb_task(). dato. void main(void) { LED_ON(LEDV). indicar presencia de energia LED_OFF(LEDR). July 07.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. Gabriel Pool.com y Julio Lugo.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. [email protected] 4 3 2 1 SALIDAS D +5V +5V D1 R1 10K R2 10K R1 10K R2 10K R2 10K R2 10K 20 C5 0. [email protected] Size A Date: 5 4 3 RA5 X1 12 MHz B A Document Number DAQ Monday. 2008 2 Rev 01 Sheet 1 1 of 1 .com Title Integración de PIC18F2455 con LabVIEW 8.
Copyright © 2024 DOKUMEN.SITE Inc.