Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW by Física Yohan Pérez-Moret
El presente artículo completo lo puedes encontrar en el siguiente link: Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW
Algunos de los materiales que utilizarán los puedes encontrar en nuestra tiena online Ferrustronix:
Resumen
Se presenta el desarrollo, simulación e implementación de la comunicación USB con un microcontrolador PIC18F4550 y LabVIEW. El código programado al microcontrolador PIC envía cíclicamente la lectura de su conversor análogo-digital (AD) y el estado del pin RA4 a una computadora personal a través del bus USB. El código del microcontrolador fue escrito en lenguaje C, con el compilador CCS 4.018. En LabVIEW 8.0 se generó el driver para el dispositivo USB y se diseñó un instrumento virtual (VI) para atender la comunicación.
El VI se encarga de graficar la lectura AD del PIC y a petición del usuario que lo opera de enviarle un valor de un byte, el cual es cargado en el puerto B del PIC. Se realiza la simulación utilizando Proteus 7.2 y el VI diseñado. Por último se muestra la implementación práctica en la placa de demostración PICDEM 2 plus, la cual fue modificada para la funcionalidad USB.
Introducción El bus serie universal o en sus siglas en inglés: USB, posee algunas características como son:
- Integridad de la señal por el uso de apantallamientos, drivers y receptores diferenciales.
- Los dispositivos USB de clase HID (Human Interface Device) son soportados por los sistemas operativos desde Windows Millennium en adelante.
- En dispositivos USB 2.0 se pueden transmitir datos a razón de 480 megabits por segundo.
- Los cables USB individuales pueden extenderse hasta 5 m de distancia y más con el uso de multiplexores de puertos o HUB.
- El bus USB puede suplir hasta 500 mA @ 5 V a cada uno de los dispositivos conectados, eliminando el uso de fuentes y cables externos en aplicaciones de baja potencia.
Esas características, por citar solo algunas, hacen del bus USB una opción útil en aplicaciones de instrumentación electrónica. Muchos fabricantes de microcontroladores programables como Microchip, están incluyendo un modulo USB en sus dispositivos. Facilitando el desarrollo de aplicaciones de instrumentación que aprovechen las capacidades USB.
Por otra parte, el soporte brindado por los fabricantes de computadoras personales (PC) a los puertos seriales RS232 y paralelos Centronics, de amplio uso entre los instrumentistas, cada vez es menor.
En la actualidad es común que una PC incluya solo un puerto serial RS-232, o ninguno en el caso de algunas portátiles, y sí varios puertos USB.
En el presente trabajo se presenta el uso del módulo USB que posee el microcontrolador PIC18F4550 (1) del fabricante Microchip y su atención utilizando LabVIEW 8.0.
Configuración del Reloj del PIC para el uso del módulo USB
El PIC18F4550 incluye un sistema de generación de reloj distinto a los microcontroladores de su misma gama. Ello para poder cumplir los requerimientos del USB en alta y baja velocidad. El PIC18F4550 incluye un sistema de prescalers y postscalers que garantizan la frecuencia del módulo USB en alta y baja velocidad a partir de diferentes valores de un oscilador primario. Sucede que el módulo USB solo acepta 6 MHz para el modo de baja velocidad o 48 MHz para alta velocidad, respectivamente. Por ello, el microcontrolador ofrece un juego de fusibles, que bien configurados, permiten lograr dichas velocidades a partir de otras frecuencias del reloj externo utilizado. En la sección 2.0 de la referencia (1) se dan los detalles sobre la configuración del reloj del módulo USB.
Cuando se diseña el código fuente para usar el módulo USB del PIC18F4550, en la línea que define la frecuencia del oscilador se debe incluir la frecuencia a usar en el núcleo del microcontrolador, que no necesariamente tiene que coincidir con la del oscilador utilizado.
Por ejemplo, en nuestro caso se empleó un oscilador activo de 4 MHz, no obstante, en la línea 39 del código fuente, ver anexo A, se definió otro valor de frecuencia: 24 MHz, el cual corresponde a la frecuencia a la que trabajará el núcleo del microcontrolador al ser activado el PLL multiplicador de frecuencia, necesario en este caso para generar la frecuencia correcta al módulo USB.
Luego, en la línea 40, se programaron los fusibles USBDIV, PLL y CPUDIV con valores tales que garanticen que a partir de los 4 MHz del oscilador externo, el módulo USB trabaje a la frecuencia de 48 MHz definida en la línea 39.
Es importante señalar también que para utilizar el módulo USB no cualquier valor de reloj es válido. En la sección 2.3 de la referencia (1) se muestra una tabla con las frecuencias y tipos de osciladores compatibles con el USB, relacionados con los valores de los fusibles de configuración USBDIV, PLL y CPUDIV. Una sección de esa tabla se reproduce en la Fig. 3.
Por ejemplo, si se dispone del oscilador HS de 24 MHz de la columna “Input Oscillator frecuency” de la Fig. 3, entonces las frecuencias posibles para el núcleo del microcontrolador serían 24 MHz, 12 MHz, 8 MHz y 6 MHz, según la columna “Microcontroller Clock Frecuency”. Suponiendo que escogemos la frecuencia de 8 MHz para el núcleo tendríamos que escribir las siguientes líneas de código en PICC:
#fuse delay(clock=8000000)
#fuses HS, NOWDT, NOPROTECT, NOLVP,
NODEBUG, USBDIV, PLL6, CPUDIV3,
VREGEN
Nótese que en la primera línea de código anterior, no se definió la frecuencia del oscilador externo HS de 4 MHz, sino la frecuencia de trabajo resultante del PLL y CPUDIV escogidos
BIBLIOGRAFÍA
Pérez-Moret, F. Y., & por La Derecha, P. C. B. (2012). Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW. URL www. youblisher. com/pdf/481469.
buena informacion
Ya no abre la dirección para accesar al artículo completo.
Listo, se ha corregido el link de la fuente.