TUTORIAL / EJEMPLOS /...

24
TUTORIAL / EJEMPLOS / EJERCICIOS 1 Ángel Castillo Jordán TFC EPSC http://www.cypress.com

Transcript of TUTORIAL / EJEMPLOS /...

Page 1: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

TUTORIAL / EJEMPLOS / EJERCICIOS

1Ángel Castillo Jordán TFC EPSChttp://www.cypress.com

Page 2: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

1. Introducción2. Arquitectura PSoC CY8C294663. Diseño con USER MODULES4. IDE PSoC Designer v4.4.5. Compilador C IMAGECRAFT6. Proyecto 1: Puertos E/S7. Interrupciones8. Proyecto 2: Interrupciones E/S9. Síntesis: Tabla de ondas10. Síntesis: seno 8 bits11. Síntesis: square 8 bits12. Síntesis: sawtooth 8 bits13. Síntesis: triangle 8 bits14. Proyecto 3: Oscilador seno 8 bits con pulsador15. Síntesis: KICK-DRUM

Ángel Castillo Jordán TFC EPSC 2

Page 3: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Embedded System síntesis de sonido (caja de ritmos / drum machine).

PSoCMicrocontroladores de nueva generación y bajo coste.

USER MODULES Bloques digitales y analógicos en el mismo encapsulado (timers, adc, pwm,…).

API funciones de alto nivel para los USER MODULES.

PSoC DESIGNER Entorno de Desarrollo Integrado (IDE), permite adaptar el hardware vía software según nuestras necesidades.

MiniProg dispositivo para grabar el PSoC mediante “In-System Serial Programming” (ISSP), utiliza tres pins: 13, 15, 19 y la conexión a masa y alimentación.

Ángel Castillo Jordán TFC EPSC 3

Page 4: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Arquitectura interna o diagrama de bloques:1. PSoC Core

2. Digital System

3. Analog System

4. System Resources

System Bus 3 Puertos E/S configurables para diferentes bloques.

Ángel Castillo Jordán TFC EPSC 4

Page 5: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Arquitectura flexible al cambio de las especificaciones iníciales del proyecto.

Desarrollo por ciclos iterativos o circular, configuración del hardware, mediante software, tantas veces como sea necesario.

Cada bloque contiene los registros que determinan su funcionalidad y su conectividad.

Ángel Castillo Jordán TFC EPSC 5

Page 6: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Periféricos simples.

Señales digitales, analógicas o mixtas.

Funciones en librerías “pre-built” y “pre-tested”, es decir, código testeado.

Contiene más de 50 periféricos comunes: ADCs, DACs, TIMERs, COUNTERs, UARTs, IRDAs, FILTERs, LCD, LCD7SEG, LED, MUXs, PWMs, PRSs, etc.

Configuración de los parámetros mediante listbox.

Ángel Castillo Jordán TFC EPSC 6

Page 7: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

La aplicación de los USER MODULES reciben el nombre de “Application Programming Interface” (API).

API Funciones de alto nivel para el control y respuesta de eventos hardware a tiempo de ejecución.

API Rutinas de interrupciones opcionales. Documentadas en los datasheet de los USER

MODULES visibles directamente en el IDE PSoC Designer. Explicación de las operaciones internas, las características modificables mediante listbox, listado de funciones en ensamblador y C (con código ejemplo) y los bits de los registros.

Ángel Castillo Jordán TFC EPSC 7

Page 8: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

1. Creamos nuevo proyecto, con un nombre y en una carpeta.

2. Seleccionamos el modelo del chip PSoC y el lenguaje a utilizar: C o ensamblador.

3. Finalizar, vamos a la ventana “DeviceEditor” y “UserModules SelectionView”.

Ángel Castillo Jordán TFC EPSC 8

Page 9: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 9

Page 10: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 10

Page 11: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 11

Page 12: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Activar compilador de C IMAGECRAFT en IDE PSoC Designer v4.4.

Menú TOOLSOPTIONS COMPILER

Introducir número de licencia y aceptarla.

Ángel Castillo Jordán TFC EPSC 12

Page 13: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

OBJETIVO: Contabilizar el número de veces que se pulsa un pulsador y que se encienda un led mientras se tiene pulsado E/S. Se visualizará el resultado en la pantalla LCD USER MODULE LCD.

IMPLEMENTACIÓN: Crearemos nuevo proyecto en PSoC Designer con nombre: Proyecto_1. El único USERMODULE a utilizar es el LCD y usará el Port2. El pulsador se conectará a la entrada P0[0] y el “DRIVE” será del tipo pull up. El led ira a la salida P1[0] y será de tipo strong. La velocidad de la CPU la dejaremos por defecto SysClk/8 = 3 MHz igual que el resto de recursos globales.

Estas configuraciones “Ventana Interconnect View”.

Ángel Castillo Jordán TFC EPSC 13

Page 14: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 14

Page 15: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 15

Recursos Globales

Configuración del USER MODULE LCD

Configuración de los pines E/S

Page 16: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Configuración hardware correcta “GenerateApplication”.

PSoC Designer genera el código fuente con los recursos globales, clocks, pines, USERMODULES de manera automática y proporciona las funciones de alto nivel APIs.

Ángel Castillo Jordán TFC EPSC 16

Page 17: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 17

#include <m8c.h>

#include "PSoCAPI.h“

#define Bit(bitNumber)(1<<(bitNumber))

#define LEDON (PRT1DR|=Bit(0))

#define boton (PRT0DR&Bit(0))

int contador=0;

void main(){

int i;

char string[]="PSoC EJEMPLO1";

LCD_Start();.

LCD_Position(0,0);

LCD_PrString(string);

while(1){//loop infinito

if(boton){

LEDON;

contador++;

LCD_Position(1,0);

LCD_PrHexInt(contador);

for(i=0;i<10000;i++){;}

PRT1DR&=~Bit(0);

}}

}

Page 18: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Acceso lectura y escritura mediante el registro PRTxDR (x = número del puerto).

Acceso hexadecimal, cada bit del puerto corresponde al valor según tabla:

o Ejemplo, establecer P0[0]=HIGHPRT0DR|=0x01;

Acceso más elegante mediante el uso del estándar ANSI C:

#define Bit(bitNumber)(1<<(bitNumber))◦ Ejemplo, establecer P0[0]=HIGH PRT0DR|=Bit(0);

Bibliografía: Cypress Semiconductor, “Section B: PSoC Core, 6.General Purpose IO (GPIO) (página 97)”, Technical ReferenceManual (TRM), No. 001-14463 Rev.**. San Jose (Canada).

Ángel Castillo Jordán TFC EPSC 18

Page 19: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

a|b operador OR: operación de suma lógica

establece un bit a HIGH, la utilizamos para encender el led. PRT1DR|=Bit(0)

a&b operador AND: operación de producto lógico resulta un HIGH si los dos bits son HIGH y LOW si uno de los dos bits es LOW, chequea el estado del pulsador. PRT0DR&Bit(0)

~a operador COMPLEMENTO: negación de bitescribe un valor a LOW. Lo usamos para apagar el led, es decir, led off. PRT1DR&=~Bit(0).

Bibliografía: Cypress Semiconductor “6. Additional Considerations, 6.4. Bit Toggling (página 32)”, C Language Compiler User Guide, Document #38-12001 Rev.*E. San Jose (Canada)

Ángel Castillo Jordán TFC EPSC 19

Page 20: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 20

Índice Data Sheet1. Features and Overview2. Functional Description3. Parameters and Resources4. Placement5. API6. Sample Firmware

Source Code

Page 21: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Prototipo C Descripción

void LCD_Start(void); Enciende la interface User Module LCD.

void LCD_Init(void); Inicializa a cero (reset).

void_LCD_Position(BYTE bRow, BYTE bCol);

Mueve el cursor hasta la posición indicada. bRow: posición de la fila donde apuntar. bCol: posición de la columna donde apuntar. Para fila 0 y columna 0 posición inicial. Para fila 1, columna 15 posición final.

void LCD_PrString(char *sRamString);

Imprime en la posición indicada (bRow,bCol) una variable stringalmacenada en RAM.

void LCD_PrCString(const char *sRomString);

Imprime en la posición indicada (bRow,bCol) una constante string(“hola”) almacenada en ROM.

void LCD_PrHexByte(BYTE bValue);

Imprime una variable de 8 bits en formato de 2 caracteres hexadecimal.

void LCD_PrHexInt(INT iValue);

Imprime una variable del tipo int (2 bytes) en formato de 4 caracteres hexadecimal.

Otras APIs: funciones de dibujo barra horizontal, funciones de dibujo barra vertical y funciones opcionales.

Ángel Castillo Jordán TFC EPSC 21

Page 22: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Ángel Castillo Jordán TFC EPSC 22

VENTANA “APPLICATIONEDITOR”.

Ficheros código del proyecto (librerías y main.c)

Información de compilación y ensamblado.

Page 23: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Compilamos y creamos el proyecto “build”.

Si todo es correcto fichero .hex de salida.

Pulsamos botón “Program Part” PSoC Programmer v2.32.0.3

Grabación botón PSoC MiniProg.

Ángel Castillo Jordán TFC EPSC 23

Page 24: TUTORIAL / EJEMPLOS / EJERCICIOSdigsys.upc.es/ed/SED/grups_classe/07-08_Q2/SDR/PROJ1_A_Castillo… · PSoC Microcontroladores de nueva generación y bajo coste. USER MODULES Bloques

Pulsamos el botón

para alimentar la placa de entrenamiento PSoCEval1.

Comprobación satisfactoria, cada vez que se pulsa se incrementa la variable en la pantalla LCD y se enciende el led.

No es necesario ningún sistema para el efecto “DEBOUNCE”

Ángel Castillo Jordán TFC EPSC 24