Upload
ariel-carvajal
View
252
Download
0
Tags:
Embed Size (px)
Citation preview
UNIVERSIDAD PRIVADA DEL VALLEFACULTAD DE INFORMATICA Y ELECTRONICAINGENIERIA BIOMEDICA CAMPUS TIQUIPAYA
DISEÑO DE SISTEMAS DIGITALES
Informe de Laboratorio Nº 5
COMUNICACIÓN USB CON PIC DE GAMA ALTA
Grupo “B”
Estudiante: Ariel Adrián Carvajal Pardo
Docente: MSc. Ing. Gerson Pérez Villarroel
Cochabamba 17 de Noviembre
Gestión II – 2015UNIVERSIDAD PRIVADA DEL VALLESERVICIOS DE LABORATORIOLABORATORIOS DE DISEÑO DE SISTEMAS DIGITALES
Evaluación
PRACTICA Nº 5
TRANSMISIÓN DE DATOS CON LA INTERFACE I2C
1. OBJETIVOS. El Estudiante:
Realizara en breadboard ó desarrollo del circuito la implementación del puerto USB. Desarrollará el firmware ó programa que configure el modulo USB del PIC. Desarrollará la aplicación de escritorio que servirá de interfaz de comunicación entre el usuario y el microcontrolador. Diseñara e implementara una interface en la PC para la transmisión de datos por USB.
2. MARCO TEORICOVamos a mostrar el procedimiento para conectar un PIC de gama alta, el 18F4550, al PC por el puerto USB. Se va a tratar de una clase de dispositivo USB CDC (Communication Device Class) emulando un dispositivo RS232 mostrado como un puerto COM en windows. El ejemplo consiste en una comunicación básica que muestra en el PC el valor de tensión leído del conversor A/D. Dicha lectura la activaremos o desactivaremos desde el PC pulsando la barra espaciadora.
En el PIC 18F4550 la configuración de fuses va a tener su importancia puesto que de ellos va a depender, entre otros, las frecuencias de reloj que van a ser utilizadas.
#fuses HSPLL //Uso de un crystal oscilador >4 MHz usando el PLL
#fuses NOWDT //No habilitación de reset por watchdog
#fuses NOLVP //Inhabilitación de programación a bajo voltaje
#fuses USBDIV //Clock del módulo USB se tomará del PLL/2 (48MHz)
#fuses PLL5 //La frecuencia se dividirá por 5 en el PLL
#fuses CPUDIV1 //El clock para el procesador serán los 96 MHz del
PLL divididos para 2 (48MHz)
#fuses VREGEN //Habilita regulador 3,3 voltios para el módulo USB
Vamos a ver el porqué de esta configuración, sobre todo en lo que respecta a la frecuencia de reloj. El objetivo es obtener 48 MHz en el módulo del USB por mediación del PLL. Esta frecuencia no tiene por qué coincidir con la del cristal empleado. Fijándonos en el diagrama de bloques interno representado del PIC18F4550 (se puede encontrar también en el datasheet del PIC18F4550 de Microchip) deberemos conseguir obligatoriamente 4 MHz a la salida del MUX controlado por PLLDIV. Como empleamos un cristal de 20MHZ deberemos dividir por 5 esta frecuencia para obtener los 4 MHz. Esto lo conseguimos mediante el fuse PLL5.
Con respecto a los drivers que vamos a emplear van a ser, por un lado, lógicamente, el correspondiente al PIC 18F4550 y el correspondiente a la librería de uso de una clase de dispositivo CDC USB.
#include <18F4550.h> //PIC a emplear
#include <usb_cdc.h> // Librería de control USB
Las funciones utilizadas para control USB:
usb_cdc_init(); //Inicialización del modo CDC
usb_init(); //Inicialización del control del USB
usb_task(); //Detección de la conexión de dispositivo USB
usb_enumerated(); //Devuelve TRUE si dispositivo ha sido
enumerado por el PCusb_cdc_kbhit(); //Devuelve TRUE si hay recepción de datosusb_cdc_putc(); //Envío de caracteres al buffer de trasmisiónusb_cdc_getc(); //Lectura del buffer de recepción
Ya tenemos el programa para el PIC. Pero ahora necesitamos que el PC reconozca el dispositivo USB al conectarlo. Para ello deberemos modificar en el archivo "usb_desc_cdc.h", que se encuentra en la carpeta "drivers" en el directorio de instalación del PIC C COMPILER, estas dos lineas:
0x61,0x04, //vendor id(0x04D8 is Microchip,or is it 0x0461 ??)==8,9
0x33,0x00, //product id ==10,11
Se deben sustituir respectivamente por estas dos:
0xD8,0x04, //vendor id(0x04D8 is Microchip, or is it 0x0461??)==8,90x0A,0x00, //product id ==10,11
Indican el identificador de fabricante (Microchip) y al identificador de producto (familia PIC18), y permiten la localización del driver de windows cuando se conecta el dispositivo USB.
3. MATERIALES
1 Multímetro Digital
Fuente de energía
Bread boardO
Protoboard
Resistencias de Diseño
Cables para Fuente
1 Microcontroladores 18F4550
LEDS
Potenciómetros
4. PROCEDIMIENTO.
Parte 5.1
Diseñar e implementar la comunicación entre un PIC 18F4550 y una aplicación de escritorio, utilizando un entorno de programación Multiplataforma, que nos permita ejecutar la aplicación en diferentes sistemas operativos.
Diagrama de Bloques general.
CODIGO MAESTRO
#include <18F4550.h>#device adc=8#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN#use delay(clock=48000000)#define USB_CON_SENSE_PIN PIN_B2#include <usb_cdc.h>
char c;float dato;
void main(){ setup_adc_ports(AN0); //se usara el bit 0 del puerto A setup_adc(ADC_CLOCK_INTERNAL); //se usara reloj interno usb_cdc_init(); usb_init(); usb_task(); while(!usb_enumerated()){} printf(usb_cdc_putc,"Voltaje = "); while(1){ set_adc_channel(0); //se lee el canal 0 dato=read_adc(); //se lee y se guarda en la variable datos dato = (dato * 5 / 255); delay_us(25);//tiempo de espera
usb_task(); if(usb_enumerated()) { if(usb_cdc_kbhit()) {
printf(usb_cdc_putc,"\fVoltaje = %01.2f ",dato); } } delay_ms(100); }
}
SIMULACION
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA3/AN3/VREF+5
RA4/T0CKI/C1OUT/RCV6
RA5/AN4/SS/LVDIN/C2OUT7
RA6/OSC2/CLKO14
OSC1/CLKI13
RB0/AN12/INT0/FLT0/SDI/SDA33
RB1/AN10/INT1/SCK/SCL34
RB2/AN8/INT2/VMO35
RB3/AN9/CCP2/VPO36
RB4/AN11/KBI0/CSSPP37
RB5/KBI1/PGM38
RB6/KBI2/PGC39
RB7/KBI3/PGD40
RC0/T1OSO/T1CKI 15
RC1/T1OSI/CCP2/UOE 16
RC2/CCP1/P1A 17
VUSB18
RC4/D-/VM 23
RC5/D+/VP 24
RC6/TX/CK 25
RC7/RX/DT/SDO 26
RD0/SPP0 19
RD1/SPP1 20
RD2/SPP2 21
RD3/SPP3 22
RD4/SPP4 27
RD5/SPP5/P1B 28
RD6/SPP6/P1C 29
RD7/SPP7/P1D 30
RE0/AN5/CK1SPP 8
RE1/AN6/CK2SPP 9
RE2/AN7/OESPP 10
RE3/MCLR/VPP 1
U1
PIC18F4550
R1(1)
VCC1
D+3
D-2
GND4
J1
USBCONN
84%
12
3
RV1
100k
RV1(2)
R11k
LAYOUT
5. CUESTIONARIO.
1. ¿Cómo se define la velocidad de transmisión de los bits en la comunicación USB?
Hay que decir que el Host es el que controla la velocidad en la que circulan los datos en el
bus USB y que al ser un bus compartido, la velocidad real dependerá de la cantidad de
dispositivos que tengamos conectados a el en un momento determinado (máximo 127
incluyendo al Host). Por tanto los datos siguientes son solo teóricos y de referencia.
Low speed: 1,5 Mbps. Soportado por las especificaciones 1.1, 2.0 y 3.0. Es la
velocidad utilizada por dispositivos como teclados, ratones, joystick, etc.
Full speed: 12 Mbps. Soportado por USB 1.1, USB 2.0 y USB 3.0. Un ejemplo
donde se utilizan estas velocidades es en transmisiones de audio.
High speed: 480 Mbps. Solo USB 2.0 y USB 3.0. Ejemplo transmisiones de video.
Super speed: 5Gbps solo soportado en dispositivos USB 3.0, y como he dicho antes
no conozco ningún microcontrolador que soporte esta especificación.
2. Comentar las complejidades y virtudes de la comunicación por medio del puerto USB que se
va a aplicar durante el desarrollo de esta la práctica.
Con respecto a las complejidades que se toparon a la hora de realizar este proyecto se
pueden mencionar que a la hora de programar y realizar el código no se tuvo muchas
dificultades. Donde recién empezaron los problemas fueron a la hora de que la computadora
sea capaz de reconocer al USB-Virtual con eso de reconocer los drivers de funcionamiento.
6. CONCLUSIONES
Tras finalizar la práctica de laboratorio se lograron los objetivos que eran realizar en
breadboard ó desarrollo del circuito la implementación del puerto USB. Desarrollar el
firmware ó programa que configure el modulo USB del PIC. Desarrollar la aplicación de
escritorio que servirá de interfaz de comunicación entre el usuario y el microcontrolador.
Diseñar e implementar una interface en la PC para la transmisión de datos por USB.
Habiendo culminados los objetivos que se buscaban cubrir se da por terminada esta práctica
de laboratorio.
7. WEBGRAFÍA
Ledezma, J. H., 2010. BANCO DE TESIS. [En línea] Available at: http://dpicuto.edu.bo/tesis/facultad-nacional-de-ingenieria/carrera-de-ingenieria-electrica-y-electronica/1746-diseno-e-implementacion-de-un-controlador-logico-programable-mediante-el-microcontrolador-16f877a.html[Último acceso: 11 marzo 2015].
S., I., 2007. PIC 16F877. [En línea] Available at: http://picmicrocontroller877.blogspot.com/2007/08/set-de-instrucciones.html[Último acceso: 11 Marzo 2015].