informe labo 5 - dsd

11
UNIVERSIDAD PRIVADA DEL VALLE FACULTAD DE INFORMATICA Y ELECTRONICA INGENIERIA 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 Evaluación

Upload: ariel-carvajal

Post on 17-Feb-2016

252 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informe Labo 5 - DSD

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

Page 2: Informe Labo 5 - DSD

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.

Page 3: Informe Labo 5 - DSD

#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

Page 4: Informe Labo 5 - DSD

1 Multímetro Digital

Fuente de energía

Bread boardO

Protoboard

Resistencias de Diseño

Cables para Fuente

1 Microcontroladores 18F4550

Page 5: Informe Labo 5 - DSD

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.

Page 6: Informe Labo 5 - DSD

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); }

}

Page 7: Informe Labo 5 - DSD

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

Page 8: Informe Labo 5 - DSD

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.

Page 9: Informe Labo 5 - DSD

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].