Introducción al PSoC Designer 1. Introducción PSoC Designer es el programa de desarrollo por medio del sistema de aplicación System-on-Chip de Cypress. Como lo define puntualmente el fabricate en su página web: The free Integrated Development Environment for PSoC, is a full-featured, GUIbased design tool suite that enables the user to configure design-in silicon with simple point and click options. PSoC Designer permite la programación de los dispositivos en lenguaje assembler y C (éste no es libre y se necesita el número de licencia para activar el compilador integrado en el Designer). Como lo menciona el fabricante previamente en su página web: With PSoC Designer, users can code the device in either 'C' or Assembly language and debug the design using features such as event triggers and multiple break points, while single stepping through code in 'C' or Assembly or a mix of the two (la unica manera para acceder es mediante el dispositivo ICE In-Circuit Emulator). Finalmente, PSoC Designer es libre y puede ser descargado de la página http://www.cypress.com/psocdesigner 2. PSoC Designer PSoC Designer se divide en tres grandes subsistemas: Device Editor: Application Editor Debugger 2.1. Device Editor Este es el primer sistema que aparece en PSoC Designer, con éste se realiza la configuración del PSoC; es decir, se seleccionan los periféricos analógicos y digitales que se necesitan para una aplicación particular. Una vez se finaliza esta etapa se generan los ficheros necesarios de configuración (API's ISR's, datasheets, etc...) con la opción Generate Application. Device Editor se compone de dos partes: A) Selection view: En la que se seleccionan los componentes disponibles en las librerías (menú de la izquierda) y se incluyen dentro de la configuración del C.I. (al pinchar dos veces sobre el componente). Los componentes escogidos se muestran en la parte superior central. En la parte inferior aparece el esquema del componente y más abajo el datasheet del mismo. La parte derecha de la pantalla muestra los recursos disponibles. 1 IVAN M. GRANADA-JHONNY O. TURIZO
B) Interconnect view: En esta pantalla están las herramientas necesarias para la conexión de los diferentes bloques que configuran las matrices analógicas y digitales. En esta pantalla se observan las siguientes funciones. En la parte izquierda de la pantalla aparecen tres tablas. De la parte superior a la inferior encontramos: Global Resource Table: A través de ella se configuran los parámetros generales del dispositivo (tensión de alimentación, Reloj interno/externo, frecuencia del reloj principal y auxiliares...) User Module Parameters: En ella se seleccionan los parámetros característicos de cada bloque seleccionado (analógico y/o digital). Los parámetros susceptibles de modificación vienen descritos en el datasheet del modulo. Port Table: Mediante esta tabla se seleccionan las características de los puertos de entrada-salida (General Purpose Input-Output, GPIO) 2 IVAN M. GRANADA-JHONNY O. TURIZO
En la parte central de la pantalla aparecen las dos matrices programables, la digital en la parte superior y la analógica en la parte inferior. Sobre estas matrices se insertarán los componentes escogidos y se cablearán hacia los distintos pines del C.I. En la versión empleada del PSoC (CYC29466) aparecen 16 módulos digitales, organizados en una matriz de 4x4 elementos, y 12 módulos analógicos, organizados en una matriz 3x4. A su alrededor se observan las diversas líneas de interconexión y puertos disponibles. La parte derecha de la pantalla muestra una vista del C.I. con los pines empleados y su descripción (entrada/salida, analógico/digital). 2.2. Application Editor. El segundo subsistema que aparece una vez se ha configurado el C.I. es el Application Editor. En éste se incluye el código principal del programa que debe ejecutar el núcleo microcontrolador. 2.3 Debugger El tercer subsistema que aparece una vez se ha configurado los Global Resources, los parámetros de los módulos a utilizar y también se haya incluido el código principal del programa; procedemos por a si decirlo ejecutar el programa, obteniendo información de los errores y de warnings; pero tan bien dando un diagnostico sobre la RAM, la flash, entre otros 3 IVAN M. GRANADA-JHONNY O. TURIZO
También se puede observar en la parte inferior izquierda una barra que indica entre otras cosas el estado de la tarjeta de programación en este caso desconectada, el puerto por el cual se encuentra, la frecuencia de trabajo.etc DIAGRAMA LOGICO DE SUBSISTEMAS 4 IVAN M. GRANADA-JHONNY O. TURIZO
Procedimiento. COMO CREAR UN NUEVO PROYECTO Abrimos PSoC Designer indicamos nuevo proyecto. Esta ventana también nos da la opción de abrir un proyecto ya creo en cualquiera de los subsistemas descritos anteriormente. Lo nombramos damos siguiente y en el mensaje emergente afirmamos la creación del proyecto. Procedemos a escoger el dispositivo y el lenguaje con el que vamos a trabajar, por último damos finalizar. Y ahora si a trabajar 5 IVAN M. GRANADA-JHONNY O. TURIZO
PRACTICA 1: Leds parpadeantes. El ejercicio propuesto es el siguiente: VCC PSoC CY8C29466 Port0_0 Port0_1 Herramientas: PSoC Designer v. 4.4, PSoC Programmer v. 2.2.. Kit de desarrollo CY8C29466. Board, fuente y materiales varios. 0 VCC LED1 0 LED2 Tomamos dos módulos de leds del device editor. Los módulos de leds no necesitan ser colocados en la matriz digital o análoga ya que estos no usan ningún bloque como lo dice en el datasheet. Vamos a la ventana interconnect view a configurar el microcontrolador y los módulos. 6 IVAN M. GRANADA-JHONNY O. TURIZO
Luego de esto configuramos los recursos globales y los dos módulos. Primero los parámetros globales del microcontrolador Luego los módulos de leds. LED_1 LED_2 En este punto ya están listos los módulos y podemos hacer el código. Para esto damos clic en application editor, sources files y main.c 7 IVAN M. GRANADA-JHONNY O. TURIZO
Para esta aplicación el código es el siguiente. Lo compilamos dando clic en execute the program. 8 IVAN M. GRANADA-JHONNY O. TURIZO
Aparecerá el siguiente mensaje. Este indica que no se pudo comunicar con el dispositivo ICE In-Circuit Emulator. Damos OK, y luego miramos si el código tiene errores. Para programar el dispositivo CY8C29466 el procedimiento es el siguiente, siempre que se tenga instalado el PSoC Programer. Conectamos el programador a un puerto USB Damos clic en Program Part. Aparecerá la siguiente ventana. Luego del mensaje de conexión exitosa con la interfaz, ponemos el micro en el socket de la tarjeta y la conectamos con la interfaz USB y damos clic en Program. 9 IVAN M. GRANADA-JHONNY O. TURIZO
Saldrá un mensaje de Programming Succeded, lo que indica que fue optimo el programado en el dispositivo. // // PRACTICA 2: LCD VCC El ejercicio propuesto es el siguiente: Tomamos un modulo de LCD del device editor PSoC CY8C29466 VCC Port0_[0..6] 7 4 inf- 3 control PSOC LCD USER MODULE R3 R 0 0 10 IVAN M. GRANADA-JHONNY O. TURIZO
Los módulos de LCD no necesitan ser colocados en la matriz digital o análoga ya que estos no usan ningún bloque como lo dice en el datasheet. Vamos a la ventana interconnect view a configurar el microcontrolador y los módulos. Luego de esto configuramos el micro y el módulo de LCD. Primero los parámetros globales del microcontrolador 11 IVAN M. GRANADA-JHONNY O. TURIZO
Luego el modulo de LCD. En la ventana de GPIO verán las conexiones que se deben hacer entre el PSoC y la LCD. Este modulo viene listo con una interfaz de datos a cuatro bits lo que facilita la programación y ahorra pines del microcontrolador. En este punto ya están listos el módulo y podemos hacer el código. Para esto damos clic en application editor, sources files y main.c Para esta aplicación el código es el siguiente. Este código muestra las dos formas de imprimir caracteres, uno directamente y el otro haciendo referencia a una posición de memoria.para la programación del dispositivo se sigue el procedimiento descrito en la practica 1. 12 IVAN M. GRANADA-JHONNY O. TURIZO
PRACTICA 3: PWM DE 8 Bits El ejercicio propuesto es el siguiente: VCC 1.5 MHz 93.7 KHz 24 MHz 16 VC1 16 VC2 256 VC3 255 PWM8_1 1.4Hz Port0_0 PSoC CY8C29466 366 Hz 255 PWM8_2 1.4Hz Port0_1 LED1 LED2 0 0 0 Tomamos dos módulos de PWM de 8 bits del device editor. Luego los ubicamos en las columnas de los bloques digitales, cada modulo PWM de 8 bits usa solo un bloque digital. 13 IVAN M. GRANADA-JHONNY O. TURIZO
El procedimiento es el siguiente: Lo seleccionamos, automáticamente se iluminara el bloque que asigna el programa para este modulo. Si esta colocación no interfiere con otro modulo lo podemos colocar dando clic derecho sobre el modulo y dar Place. Inmediatamente aparecerá el modulo en ese bloque. 14 IVAN M. GRANADA-JHONNY O. TURIZO
Hacemos lo mismo para el otro modulo de PWM. Quedando de la siguiente manera. Si no se quiere hacer esta colocación, podemos escoger el bloque digital que queremos usar para este modulo, esto se hace antes de dar Place en el menú del modulo así: 15 IVAN M. GRANADA-JHONNY O. TURIZO
Verán como se ilumina los bloques donde es posible colocar el modulo de PWM Luego de esto configuramos el micro y los dos módulos. Primero los parámetros globales del microcontrolador. VC1, VC2 y VC3 son fuentes de reloj que se pueden usar para los módulos. PWM8_1 PWM8_2 16 IVAN M. GRANADA-JHONNY O. TURIZO
Se vera lo siguiente en la matriz de módulos digitales. Luego configuramos los pines de salida de los módulos de la siguiente manera. Damos Clic en digital Row_0_Output_0. interconnect Aparecerá la siguiente ventana. 17 IVAN M. GRANADA-JHONNY O. TURIZO
En este punto seleccionamos el búfer que queremos de salida y damos Close. Veremos lo siguiente. La salida de PWM se cablea a GlobalOutEven0. Luego escogemos el pin es importante escoger un pin par, por que la salida del PWM esta en una salida global Par en este caso escogeré el Port0_0, aunque es posible escoger algunos pines impares. Damos clic en el puerto y en el menú select y escogemos GlobalOutEven_0. 18 IVAN M. GRANADA-JHONNY O. TURIZO
Veremos lo siguiente, luego de hacer el mismo procedimiento con la salida del modulo de PWM8_2 En este punto ya están listos los módulos y podemos hacer el código. Para esto damos clic en application editor, sources files y main.c Para hacer el código es importante leer las APIs del datasheet del modulo de PWM. Para esta aplicación el código es el siguiente. Para la programación del dispositivo se sigue el procedimiento descrito en la practica 1. 19 IVAN M. GRANADA-JHONNY O. TURIZO
PRACTICA 4: ADC con visualización en LCD El ejercicio propuesto es el siguiente: VCC R5 1k Port0_7 R6 1k PSoC CY8C29466 PGA G=1 ADC 8bits Port0_[0..6] EF 7 4 inf- 3 control PSOC LCD R3 R VCC 0 0 Tomamos los modulo de LCD y de ADC del device editor, es necesario pasar la entrada del ADC por una PGA (programmable gain amplifier). Como podemos observar tenemos tres módulos de los cuales dos serán ubicados en las matrices (digital y análoga), los cuales son los módulos de PGA y ADC. 20 IVAN M. GRANADA-JHONNY O. TURIZO
Teniendo definido previamente que la LCD no ocupa ningún bloque análogo o digital. Deberán aparecer de la siguiente forma: Luego de esto configuramos los recursos globales y los módulos. Primero los parámetros globales del microcontrolador Luego el modulo de LCD. 21 IVAN M. GRANADA-JHONNY O. TURIZO
Luego la PGA. Luego el ADC. Nota: mientras se hacen las configuraciones de los parámetros de los módulos de usuario, en este caso la PGA y el ADC, se debe prestar especial atención a las conexiones que se realizan automáticamente en la matriz de bloques análogos. En la ventana de GPIO verán las conexiones que se deben hacer entre el PSoC y el exterior. 22 IVAN M. GRANADA-JHONNY O. TURIZO
Luego configuramos las conexiones que hicieron falta en la matriz de bloques análogos de la siguiente manera, escogemos la entrada de la PGA. Damos clic en AnalogColumn_InputMUX_0 y escogemos el Port0_7. Este modulo de ADC como lo describe el manual (The output is based on an input voltage between -V ref and +V ref centered at AGND), necesita una referencia negativa que en este caso se configuro en el PORT_2_3, el cual es conectado a tierra mediante una resistencia de pulldown en la ventana de GPIO. En la columna Drive. En este punto ya están listos los módulos y podemos hacer el código. Para esto damos clic en application editor, sources files y main.c 23 IVAN M. GRANADA-JHONNY O. TURIZO
El código es el siguiente: //---------------------------------------------------------------------------- // C main line //---------------------------------------------------------------------------- #include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules void main(){ int result; // Insert your main routine code here. LCD_1_Start(); LCD_1_Position(0,2); LCD_1_PrCString("PSoC LCD"); PGA_1_Start(2); ADCINC_1_Start(2); ADCINC_1_GetSamples(0); M8C_EnableGInt; while (1) { if (ADCINC_1_fIsDataAvailable()!= 0){ result = ADCINC_1_bGetData(); LCD_1_Position(1,12); LCD_1_PrHexByte(result); } } } 24 IVAN M. GRANADA-JHONNY O. TURIZO
PRACTICA 5: ADC, DAC y Comparador. El ejercicio propuesto es el siguiente: R5 1k Port0_7 G=1 PGA VCC 8bits ADC DAC PSoC CY8C29466 PORT0_5 R6 COMP PORT0_4 1k 0 Tomamos los modulo necesarios para esta aplicación. Como podemos observar tenemos los módulos los cuales serán ubicados en las matrices (digital y análoga), Teniendo definido previamente que es indispensable el uso de el PGA, con ganancia de 1, para la entrada del ADC. 25 IVAN M. GRANADA-JHONNY O. TURIZO
Obteniendo como resultado el siguiente pantallaso: Luego de esto, configuramos el micro y los módulos que estamos usando. Primero los parámetros globales del microcontrolador Luego la PGA. Luego el ADC. 26 IVAN M. GRANADA-JHONNY O. TURIZO
Nota: mientras se hacen las configuraciones de los parámetros de los módulos de usuario, en este caso la PGA y el ADC, se debe prestar especial atención a las conexiones que se realizan automáticamente en la matriz de bloques análogos. Luego el DAC y por ultimo el COMPARADOR. El valor de referencia es 0.5*Vcc = 2.5v. Luego configuramos las conexiones que hicieron falta en la matriz de bloques análogos de la siguiente manera, escogemos la entrada de la PGA, que ya se hizo, La entrada del comparador que se hace de la misma manera, y las salidas del DAC y el comparador, deberían quedar de esta manera. En este punto ya están listos los módulos y podemos hacer el código. Para esto damos clic en application editor, sources files y main.c El código: 27 IVAN M. GRANADA-JHONNY O. TURIZO
Para la programación del dispositivo se sigue el procedimiento descrito en la practica 1. AUTORES: IVAN MAURICIO GRANADA SACRISTAN JHONNY OSWALDO TURIZO TENJO 28 IVAN M. GRANADA-JHONNY O. TURIZO