PSoC 3 GPIO

4

Click here to load reader

description

Este documento es una breve intriduccion al manejo de los pines de entrada y salida del PSoC 3.

Transcript of PSoC 3 GPIO

  • SISTEMAS EMBEBIDOS - PSOC 3 - LABORATORIO 1 - MANEJO DE LAS GPIO - SEPTIEMBRE 2013 1

    Manejo de las Lneas GPIOPSoC 3Gefry A. Castro

    ResumenEn este documento se pretende mostrar el diseno deun nivel digital, su implementacion mediante el uso de las lineasGPIO del PSoC 3 y su visualizacion a traves de una pantallaLCD.

    Palabras ClavesGPIO, PSoC3, Sistemas Embebidos.

    I. INTRODUCCION

    EN este documento se intentara dar a conocer elfuncionamiento basico de uno de los perifericos internosdel PSoC3 especficamente de las lineas GPIO junto con laaplicacion de las pantallas LCD.

    Las lineas de E/S del PSoC son bastante flexibles, cadaGPIO (Generel Purpose Input Output) tiene capacidad deentrada/salida tanto analogica como digital.

    Figura 1: GPIO - Diagrama de Bloques

    Todos los dispositivos PSoC3 de 100 pines incluyen 56lneas GPIO que se encuentran organizadas en puertos de 8bits, para el caso de los PSoC3 se tienen siete puertos de E/Snumerados desde P0 hasta P7 [1]. Cada pin puede ser no solo

    G. Castro estudiante de Ingeniera Electronica, Universidad Distrital Fran-cisco Jose de Caldas. Bogota, Colombia. Codigo: 20092005059 e-mail:[email protected]

    configurado como entrada o salida, analogica o digital sinoque ademas cuenta con ocho modos de manejo de corriente(ya sea de entrada o de salida).

    Figura 2: Modos de Manejo de Corriente. Para mayor informacion sobre las lineasGPIO y detalles sobre los modos de corriente, se invita al lector a leer [2] seccion 6.4

    pagina 38.

    Todos los pines GPIO del PSoC3 son compatibles con dis-positivos TTL. Cada pin tiene una carga maxima de corrientede 4mA en modo source y un valor de corriente de entradaconfigurable a 8mA o 25mA en modo sink.

    II. DESARROLLO Y RESULTADOSII-A. Planteamiento del Problema

    Para este documento se disenara e implementara un niveldigital que muestre en una LCD alfanumerica la burbuja yel valor de la inclinacion. Para la implementacion deldispositivo se utilizara un acelerometro analogico. Al lograrsela nivelacion de la superficie deseada se generara un beepmomentaneo, para esto se utilizara un buzzer.

    Restricciones: No se debe emplear Conversor AnalogicoDigital (ADC) Interno o Externo.

    II-B. Solucion del ProblemaII-B1. Analisis del Problema: Debido a que el acelerome-

    tro es analogico, se hace necesario discretizar su operacion,para ello se han de utilizar los comparadores internos delPSoC. Tambien se ha de tener en cuenta que es necesariogenerar voltajes de referencia para realizar la comparacion,para lo cual se hara uso de los Conversores Digital Analogico(DAC) del PSoC. Adicionalmente, no se debe olvidar el usode un pin analogico para sensar la salida del acelerometro eincluir el modulo de la LCD y el pin digital de salida para elbuzzer.

  • SISTEMAS EMBEBIDOS - PSOC 3 - LABORATORIO 1 - MANEJO DE LAS GPIO - SEPTIEMBRE 2013 2

    II-B2. Diseno e Implementacion: El primer paso paraproceder con la discretizacion es conocer los valores devoltaje que entrega el acelerometro para lo cual se tuvo encuenta tanto la informacion del Datasheet [3] (Los cualescoincidieron con los valores medidos).

    La figura 3 muestra el rango de valores de salida delacelerometro (se muestran en negrita los puntos extremos ycentral) y los valores de referencia que se tomaron para realizarlas comparaciones, adicionalmente en la parte izquierda seaprecian los valores que toma el angulo dependiendo del rangoen el que se encuentre.

    Figura 3: Vista general de los voltajes, rangos y angulos que se tuvieron en cuenta parael diseno.

    Los rangos de trabajo ya se encuentran definidos, por loque resta identificar y ubicar los componentes que haran partedel circuito solucion1.

    Los primeros componentes en ser ubicados son la senalde salida del acelerometro, (que sera una entrada analogica)denominada X, y la salida que indica que el nivel esta en cero,produciendo el sonido con el buzzer determinado por el pinBuzzer2.

    Figura 4: Pin X: Entrada de la senal del acelerometroPin Buzzer: Salida de nivel cero

    Luego la parte dedicada a la comparacion se dividio endos: la primera muestra los comparadores que se encargande detectar los valores para los cuales se ha definido queel acelerometro se encuentre en la posicion de cero grados(Figura 5). Aqui los DAC se utilizaron para proveer el voltajede referencia para los comparadores. El DAC 1 estaraentregando un voltaje de 1.7 V, mientras que el DAC 2 unvoltaje de 1.6 V. Adicionalmente todos los comparadoresinvolucrados en el circuito, tendran la misma configuracion,mostrada en la figura 6.

    1Se da por entendido que el lector tiene cierto conocimiento basico sobreel entorno de desarrollo (PSoC Creator)

    2De la imagen se puede apreciar que el pin X se encuentra asignado alpuerto 1 - bit 2, y el pin Buzzer al Puerto 0 - bit 1.

    Figura 5: Primera parte del circuito, Encargado de detectar el nivel cero.

    Figura 6: Configuracion general de los comparadores

    La segunda parte del circuito, mostrada en la figura 7 esla encargada de dar los valores de referencia y determinarlos rangos para los cuales el acelerometro se encuentra entre15, 45 y 90 para ambas posiciones. Esta parte del circuitopresenta varias caractersticas diferentes a la anterior, enprimer lugar el PSoC3 cuenta con 4 comparadores y 4 DAC,por lo que se tuvo que usar dos comparadores y dos voltajesde referencia adicionales.

    Para los voltajes de referencia se opto por utilizar undivisor de voltaje externo medido a traves del pin V 2, y unareferencia3 predeterminada por el PSoC3 (Vref - 1.024 V).Los comparadores adicionales tienen un inconveniente debidoa que no es posible obtener el resultado de la comparacionmediante software, por lo tanto se dedicaron dos pinesdigitales a la salida de cada uno de los comparadores (V1 yV2) con el fin de obtener dicho resultado.

    Figura 7: Segunda parte del circuito, Encargado de la comparacion para los valoresextremos

    3Esta se encuentra en el catalogo de componentes en la Categoria Analo-gica.

  • SISTEMAS EMBEBIDOS - PSOC 3 - LABORATORIO 1 - MANEJO DE LAS GPIO - SEPTIEMBRE 2013 3

    A continuacion se muestra un cuadro con los componentesempleados y sus respectivos voltajes de referencia.

    Cuadro I: Componentes y sus respectivos voltajes de referencia

    Componente Voltaje de Referencia

    DAC 1 1.7

    DAC 2 1.6

    DAC 3 2.2

    DAC 4 1.3

    V 2 2.2

    Vref 1.024

    La siguiente parte del diseno es el codigo, en el cual seencuentran especificadas diferentes funciones con el fin de darsolucion a la tarea. A continuacion se muestra el encabezadodel codigo donde se aprecian las funciones que hacen partedel programa junto con las iniciaciones de los componentesque hacen parte del diseno los cuales fueron declarados en elmain, el cual no es mostrado en su totalidad.

    #include #define ON (1u)#define OFF (0u)void label();void ring(int buzzer);void bubble(int col);void angle(int a);void main(){

    LCD_Start();Comp_1_Start();Comp_2_Start();Comp_3_Start();Comp_4_Start();S_Comp_1_Start();S_Comp_2_Start();DAC_1_Start();DAC_2_Start();DAC_3_Start();DAC_4_Start();label();...

    }La primera funcion es label, la cual es la encargada de

    dibujar en la pantalla LCD una plantilla con el formato quese utilizara para la visualizacion del nivel:

    void label(){

    int i = 0;LCD_Position(0u,0u);LCD_PrintString(Angulo: );LCD_Position(0u,15u);

    LCD_PutChar(3);LCD_Position(0u,11u);LCD_PutChar(7);while(i

  • SISTEMAS EMBEBIDOS - PSOC 3 - LABORATORIO 1 - MANEJO DE LAS GPIO - SEPTIEMBRE 2013 4

    for(;;){

    if (Comp_1_GetCompare() != 0 &&Comp_3_GetCompare() == 0){

    label();ring(OFF);bubble(9);angle(15);CyDelay(200);

    }if (Comp_3_GetCompare() != 0 &&V1_Read() != 1){

    label();ring(OFF);bubble(11);angle(45);CyDelay(200);

    }if (V1_Read() == 1){

    label();ring(OFF);bubble(14);angle(90);CyDelay(200);

    }if (Comp_1_GetCompare() == 0 &&Comp_2_GetCompare() != 0){

    label();ring(1);bubble(7);LCD_Position(0,10);LCD_PrintString();angle(0);CyDelay(200);

    }if (Comp_2_GetCompare() == 0 &&Comp_4_GetCompare() != 0){

    label();ring(OFF);bubble(5);angle(15);CyDelay(200);

    }if (Comp_4_GetCompare() == 0 &&V2_Read != 1){

    label();ring(OFF);bubble(2);angle(45);CyDelay(200);

    }if (V2_Read() == 1 &&

    Comp_4_GetCompare() != 0){

    label();ring(OFF);bubble(0);angle(90);CyDelay(200);

    }}

    Este ultimo corchete representa el cierre del ciclo repetitivo,en el cual el PSoC estara haciendo las comparaciones.

    III. CONCLUSIONES

    En aplicaciones en las que es necesario cierto nivel deprecision, se aprecia que el uso de los comparadores no es lamejor opcion, pero la intencion principal de este documento esmostrar de forma general como funcionan los comparadores,las lineas de E/S y la LCD y hasta cierto punto los alcanceso limitaciones que estos puedan tener en el desarrollo decualquier tipo de aplicacion.

    REFERENCIAS[1] Camargo Julian, Guia de Laboratorio, No 1. Bogota, Colombia:

    Universidad Distrital, 2013.[2] Cypress http://www.cypress.com/?docID=45349 PSoc3 CY8C38 Family

    Datasheet[3] Freescale https://www.sparkfun.com/datasheets/Components/General/

    MMA7361L.pdf Pagina Web, SparkFun