sábado, 31 de diciembre de 2011

Mejores prácticas y recomendaciones con PSoC® 1 (Parte 1)


En esta ocasión y por unas cuantas publicaciones de PSoC en español, se va a interrumpir el desarrollo de prácticas con estos microcontroladores para presentar una traducción y un pequeño resumen de una nota de aplicación la cual es útil para todos aquellos que están comenzando en el mundo PSoC. La nota de aplicación es la AN2010 titulada PSoC® 1 Best Practices and Recommendations y escrita por Jeff Dahlin, si quieren observar y estudiar esta nota de aplicación en su versión original lo pueden hacer siguiendo el link que se encuentra a continuación y redirige a la página de cypress semiconductor.


La AN2010 contiene algunas líneas de introducción y recomienda algunas prácticas para el desarrollo de sistemas PSoC 1. Además se exponen algunos errores comunes que cometen los diseñadores.

INTRODUCCIÓN

Esta nota de aplicación provee información para mejorar la calidad y eficiencia de los proyectos de PSoC 1. Este documento se encuentra divido por secciones las cuales se encuentran relacionadas entre sí razón por la cual el documento debe ser leído por completo.

PRIMEROS PASOS

Antes de comenzar cualquier proyecto de PSoC 1. Es importante asegurarse de tener instaladas en el computador las versiones de software y documentación más recientes. A continuación se presentan los primeros pasos en el trabajo con PSoC.

• Instalar PSoC Designer.
• Conectar ICE cube (El ICE es un dispositivo que sirve como depurador y sus siglas significan In Circuit Emulator).
• Examine los proyectos de ejemplo incluidos en la documentación de PSoC Designer.
• Descargue la documentación mas reciente.
• Explore otros recursos como los últimos lanzamientos de software, los foros de cypress ó el soporte técnico en línea.

LOS MÓDULOS DE USUARIO Y RECURSOS GLOBALES

Esta sección se enfoca en los aspectos básicos del posicionamiento y configuración de los módulos de usuario.

Selección inicial de los parámetros de los módulos de usuario:

Se recomienda configurar un valor inicial a todos los parámetros presentes en los módulos de usuario que se estén utilizando en el proyecto, sin importar que existan parámetros los cuales no parecen aplicarse.

Consideraciones de la velocidad de reloj de la CPU:

Es recomendable establecer el reloj de la CPU a 12 MHz o inferior. Ya que puede haber limitantes en el voltaje de alimentación y la temperatura de funcionamiento cuando se trabaja a 24 MHz, estas limitantes no se presentan cuando se trabaja a 12 MHz.

Limitaciones de frecuencia de los Bus globales:

Los bus de entrada y salida globales no están garantizados para funcionar por encima de los 12 MHz.

Limitaciones de los módulos de usuario:

Los bloques digitales tienen las siguientes limitaciones de reloj:

• Los módulos de usuario counter que utilizan el parámetro “Enable” no pueden operar por encima de los 24 MHz.
• Los módulos de usuario timer que utilizan el parámetro “Capture” no pueden operar por encima de los 24 MHz.
• El modulo de usuario CRC no puede operar por encima de los 24 MHz.
• Los módulos digitales utilizados para comunicación serial no operan por encima de los 24 MHz.

Relojes para módulos de usuario multi-bloque:

Algunos módulos de usuario requieren más de un bloque para su implementación, a su vez algunos de estos módulos multi-bloques necesitan entradas de reloj individuales para ajustarse a la misma fuente de reloj. Un ejemplo de esto es el modulo de usuario ADCINC, este modulo requiere que tanto el bloque análogo y el bloque digital sean conectados al mismo reloj.

El reloj para los bloques digitales se ha seleccionado desde los parámetros del modulo de usuario, por su parte el reloj para el bloque analógico se ha configurado como un reloj de la columna análoga tal como se puede ver en las siguientes figuras.

(Configuración reloj para bloques digitales del ADCINC)
(Configuración reloj para bloques análogos del ADCINC)

Reloj digital basado en n+1:

Todos los parámetros de tiempo (Periodo y ancho de pulso) que vayan a ser usados en módulos de usuario tipo digital utilizan valores n+1. Por lo tanto para efectos de cálculo el valor introducido en el programa debe ser uno menos que el valor deseado.

Limitación de uso del FlashTemp:

El modulo de usuario FlashTemp no debe ser utilizado para mediciones de temperatura ambiente. Este es un modulo destinado a monitorear y proporcionar la temperatura del ciertas funciones del dispositivo PSoC.

Reloj de enrutamiento:

En las familias 22/24/27/29 de PSoC, se encuentra un Bus de difusión para cada fila de los bloques digitales. Todos los bloques de la fila pueden utilizarse como fuente para el bus, a su vez un bus de una fila puede ser utilizado como fuente para un bus de otra fila. De esta manera se encuentra una opción muy flexible de enrutamiento.

Estas mismas familias de PSoC poseen una fuente de reloj la cual puede ser dividida por un valor de 8 bits. Este reloj puede ser usado para reemplazar algunas funciones como la velocidad de transmisión.

martes, 13 de diciembre de 2011

Lectura y escritura de puertos de PSoC


Con esta publicación se va a dar comienzo al desarrollo de prácticas con los microcontroladores PSoC, en esta primera práctica se va a llevar a cabo el manejo de los puertos de PSoC específicamente la lectura y escritura de estos.


El PSoC CY8C29466 cuenta con tres puertos (Port_0, Port_1 y Port_2), cualquiera de estos puertos puede ser utilizado como entrada o salida de tipo digital, contrario a lo que sucede con las entradas o salidas de tipo análogo para las cuales solo se cuenta con algunos pines específicos de los puertos Port_0 y Port_2.

La lectura y escritura de puertos de PSoC se puede hacer de varias maneras, en esta ocasión se van a observar dos, la primera controlando cada uno de los bits del puerto con una instrucción diferente para cada bit y la segunda controlando todos los 8 bits del puerto mediante una sola instrucción.

Lectura y escritura bit por bit:

Para poder llevar a cabo la lectura o escritura de un bit de cualquiera de los puertos se utiliza el registro PRTXDR donde “X” es el número del puerto que se quiere controlar. Para hacer referencia a alguno de los bits del puerto que se está manejando se utilizan los siguientes números hexadecimales:


(Direcciones Hexadecimales de los Bit en los puertos PSoC)

Además de tener en cuenta el nombre del registro y el valor en hexadecimal del bit a utilizar, también hay que hacer uso de diferentes operaciones booleanas con las cuales se llevan a cabo comparaciones para así leer un bit del puerto ó escribir un estado alto o bajo del mismo. Las operaciones más utilizadas son:


OR (a | b): Se utiliza para escribir un estado alto en un bit y su sintaxis es PRTXDR|=Bit.

AND (a & b): Se utiliza para leer un bit y su sintaxis es PRTXDR&Bit.

COMPLEMENTO (~a): Se utiliza para escribir un estado bajo en un bit y su sintaxis es PRTXDR&=~Bit.


Por ejemplo:

• Para leer si el Port_1_6 se encuentra en un estado alto se debe escribir PRT1DR&0X40;
• Para establecer un valor alto en el Port_2_1 se debe escribir PRT2DR|=0X02;
• Para establecer un valor bajo en el Port_3_4 se debe escribir PRT3DR&=~0X10;

Lectura y escritura de todo el puerto:

Con este método se simplifica la manera de hacer la lectura y la escritura de los puertos ya que con una sola línea de instrucciones se puede realizar la acción deseada en los 8 bits que componen el puerto que se desea controlar, ahorrándose de esta manera la tediosa labor de escribir una línea de instrucción por cada bit.

Para este método se sigue utilizando el registro PRTXDR, las diferencias con el método anterior son básicamente dos:

• Cada puerto se ve como un numero de 8 bits, por lo tanto en el momento de leer o escribir en un puerto lo que se está haciendo es comparar o asignar un numero a todo el puerto seleccionado y no solamente asignando un estado alto ó bajo a cada pin. Por ejemplo si se quiere que enciendan los tres primeros bits del puerto 1 bastara con la instrucción PRT1DR=0b00000111 ó lo que es igual PRT1DR=0x07.

• En lugar de utilizar operaciones booleanas (|, &, ~, ^) para realizar las comparaciones de los estados de los bits del puerto, en este método se utilizan inecuaciones matemáticas como lo son (<, <=, >, >=, =).

PRACTICA 1 (Control de dos LED por medio de un pulsador)

El objetivo de esta práctica es leer un bit de un puerto en el cual se va a encontrar conectado un pulsador, dependiendo si el pulsador indica un estado alto o bajo se deben prender ó apagar los LED conectados en otro puerto, esta labor se debe realizar mediante el uso de registro PRTXDR. El funcionamiento debe ser el siguiente:

(Funcionamiento Practica 1)

En los siguientes link pueden descargar los archivos de los proyectos realizados en PSoC Designer 5.1, cada link es uno de los dos métodos descritos en esta publicación.

Practica1_metodo1.rar
Practica1_metodo2.rar

En el siguiente video se muestra el desarrollo de la práctica.



domingo, 13 de noviembre de 2011

¿Qué es PSoC Designer?



PSoC Designer es el software que la empresa cypress semiconductor ha desarrollado y puesto a disposición de todas las personas interesadas en trabajar con los microcontroladores PSoC, este programa se puede descargar de forma gratuita directamente de la página web de cypress semiconductor en la siguiente dirección:

El programa está basado en una sencilla GUI (Interfaz Grafica de Usuario) en la que se permite hacer configuraciones de hardware del microcontrolador de una manera cómoda, algunas de estas configuraciones que son posibles de realizar desde la GUI son las siguientes:

• Las configuraciones globales del microcontrolador como lo son: el voltaje de alimentación, la velocidad del reloj del CPU, sleep timer, Watchdog, voltajes de referencia, entre otros.
• Configuración de cada uno de los pines I/O del microcontrolador.
• Configuración de los módulos de usuario que han sido agregados al proyecto.
• Conexiones de manera grafica entre los diferentes módulos de usuario.

También permite la programación por medio de código, ya sea en lenguaje assembler ó C dependiendo el usuario con cual sienta más confianza, la sintaxis para cualquiera de los dos lenguajes es muy similar a como se maneja para los PIC de Microchip, simplemente lo que hay que tener en cuenta es el nombre de los puertos y los diferentes registros del mismo lo cual lo podemos conseguir fácilmente en el datasheet del PSoC con el que se esté trabajando. Además Cypress provee unos manuales sobre el trabajo de estos dos lenguajes para PSoC (en ingles).

El PSoC Designer se puede decir que se divide básicamente en tres partes:

• Device Editor.
• Aplication Editor.
• Debugger.

Device Editor: Es la primera página o pestaña que se abre cuando empezamos a trabajar en un proyecto, desde esta pestaña se pueden hacer la mayoría de configuraciones necesarias del PSoC, también se encuentran los módulos de usuario, el workspace explorer, y el área de trabajo donde son mostrados los bloques tanto analógicos como digitales que se tienen a disposición.

Aplication Editor: Son todos los archivos que hacen parte de la configuración de la aplicación que se está desarrollando, las librerías, encabezados, archivos de salida y los archivos fuente dentro de los cuales se encuentra el archivo main el cual es en donde se debe escribir todo el código de la aplicación a desarrollar.

Debugger: Esta es una herramienta muy útil para llevar a cabo la depuración del código implementado, se pueden agregar breakpoints, observar los registros de la CPU, las memorias. El inconveniente se encuentra en que para llevar a cabo el debugger se hace necesario adquirir el dispositivo hardware ICE (In Circuit Emulator).

A continuación se presenta un video en el que se hace un recorrido por el entorno del PSoC Designer con lo que se espera que todo quede más claro.


sábado, 29 de octubre de 2011

Características de los bloques analógicos y digitales

En la publicación anterior se realizo una introducción a los tipos de bloques que poseen los microcontroladores PSoC, ahora corresponde profundizar un poco en el tema y ver que características tienen estos bloques, tanto los analógicos como los digitales y como están compuestos.

Bloques Analógicos:

El sistema analógico está dispuesto en columnas y cada una de ellas a su vez cuenta con bloques de tres tipos (ACB, ASC, ASD), estos bloques están formados en filas con lo cual se tiene una matriz de componentes analógicos configurables, el tamaño de la matriz depende de la referencia del microcontrolador que estemos utilizando, para el caso del CY8C29466 esta matriz tiene un tamaño de 4 * 3, lo cual deja a nuestra disposición un total de 12 bloques analógicos para desarrollar elementos o aplicaciones de tipo análogo.

Cada columna de bloques análogos cuenta con un buffer de salida (línea output buffer) el cual solo puede ser utilizado por uno de los 3 bloques que conforman esa columna, luego la salida de este buffer puede ser conectada a cualquiera de los pines que puedan ser habilitados como salida analógica.

(Sistema Analógico PSoC CY8C29466)

Bloques ACB: Estos bloques son utilizados para elementos cuya respuesta es continua en el tiempo y que su respuesta es lineal con respecto a un nivel de referencia, este es el caso de los amplificadores operacionales en las configuraciones de inversor amplificador (AMPINV), amplificador (PGA) y comparadores.

Bloques ASC y ASD: Estos son bloques del tipo capacidad conmutada (Switched Capacitor), en el interior de estos bloques se puede encontrar multiplexores, amplificadores, condensadores, entre otros. Con ellos se pueden configurar una gran cantidad de dispositivos como convertidores, comparadores, buffers, filtros, etc.

Para poder realizar la conexión del exterior con los bloques ASC y ASD primero hay que conectar a un bloque ACB para poder adaptar la señal proveniente del exterior, este procedimiento se hace como método de seguridad.

Para quienes no sepan que son las capacidades conmutadas y/o esten interesados en consultar o profundizar un poco acerca del tema a continuación dejo unos link donde puede leer unos artículos que encontré acerca del tema.



filtros de elementos conmutados
Realización de resistencias con capacidades conmutadas

Bloques Digitales:

Estos bloques al igual que los análogos vienen dispuestos en forma de matriz y el número de bloques depende de la referencia de microcontrolador con la que se esté trabajando. Los bloques digitales no pueden recibir una señal del exterior de manera directa, para llegar a ellos primero hay que utilizar como intermediario a un bloque análogo, con estos bloques se pueden implementar dispositivos como convertidores, elementos de transmisión UART y SPI, módulos PWM, etc.

(Sistema Digital PSoC CY8C29466)

Como se puede apreciar en la figura anterior los bloques digitales están dispuestos en filas y cada fila está compuesta por dos tipos de bloques digitales, los DBB y DCB.

Bloques DBB: Estos son bloques de propósito general y pueden ser utilizados en la mayoría de tareas.

Bloques DCB: Estos son bloques utilizados para aplicaciones que requieren de comunicación con otros dispositivos como comunicación UART.

Por último cabe destacar que las diferentes aplicaciones que se quieran desarrollar pueden ocupar un número diferente de bloques tanto análogos como digitales y este número depende de la cantidad de recursos de los que requiera la aplicación o dispositivo que se está desarrollando.
Por el momento vamos a terminar la parte teórica de la arquitectura del microcontrolador PSoC, en la siguiente publicación empezaremos revisar que es el PSoC Designer.

lunes, 17 de octubre de 2011

Los bloques de PSoC


Los microcontroladores PSoC tienen dentro de su configuración una cantidad determinada de arreglos de elementos tanto digitales como analógicos, estos arreglos de componentes es lo que se conoce como bloques los cuales pueden ser de tipo digital o analógico dependiendo de los elementos que los conformen. A continuación se va a exponer que tipos de elementos componen y que sistemas se pueden configurar con los bloques que componen tanto el sistema digital como analógico de un PSoC CY8C29466.

El sistema Digital:

Este sistema está compuesto por un total de 16 bloques de 8 bits cada uno, sin embargo pueden ser utilizados tanto individualmente como en conjunto siendo posible así formar bloques de 8, 16, 24 y 32 bits.

Dentro de los módulos de usuario que vienen pre-configurados en el PSoC Designer (Herramienta de desarrollo PSoC) para facilitar la programación y uso de los microcontroladores, encontramos los siguientes módulos que usan los bloques digitales:

• PWM (8 a 32 bits).
• Contadores (8 a 32 bits).
• Temporizadores (8 a 32 bits).
• UART de 8 bits, sin paridad.
• SPI maestro y esclavo.
• I2C esclavo y multi-maestro.
• Comprobador de redundancia cíclica (CRC).

Los bloques digitales pueden ser conectados a cualquier GPIO (Puertos de entrada-salida) por medio de una conexión de buses globales que además permiten la multiplexación de las señales y de esta manera llevar a cabo una gran cantidad de operaciones lógicas.



(Configuración del modulo de usuario PWM8 )

Sistema Analógico:

Este sistema está compuesto por 12 bloques configurables, cada uno está compuesto por diferentes elemento como amplificadores operacionales, filtros de capacidades conmutadas. Con estos bloques se puede configurar diferentes dispositivos, algunos de estos dispositivos ya vienen pre-configurados en los módulos de Usuario del PSoC Designer, una muestra de estos módulos que utilizan los bloques analógicos son los siguientes:

• Convertidor Analógico a Digital.
• Convertidor Digital a Analógico,
• Filtros Pasa-bajo, Pasa-banda y Pasa-altos (2, 4, 6 u 8 polos).
• Amplificadores (ganancia seleccionable hasta 48X).
• Amplificadores de instrumentación (ganancia seleccionable hasta 93X).
• Comparadores.
• Marcadores DTMF.
• Moduladores.
• Detectores de pico.


(Configuración modulo de usuario LPF2 – filtro pasa-bajos de orden 2)


En la siguiente entrada del blog se profundizara acerca de los bloques y como están compuestos internamente.

domingo, 18 de septiembre de 2011

El núcleo de PSoC


El núcleo de los PSoC es un elemento de gran alcance y que apoya a un amplio conjunto de características, el núcleo incluye una CPU, memoria, relojes y GPIO configurables (Entradas y salidas de propósito general).

A medida que la empresa Cypress ha ido desarrollando estos microcontroladores incorpora nuevas características a cada familia de PSoC, entre estas se encuentran los núcleos, los cuales han sido diferentes en las 3 familias de microcontroladores PSoC existentes hasta el momento como se puede ver a continuación:

• Familia CY8C2XXXX (PSoC 1): M8C processor speeds up to 24 MHz
• Familia CY8C3XXXX (PSoC 3): Single cycle 8051 CPU core
• Familia CY8C5XXXX (PSoC 5): 32-bit ARM Cortex-M3 CPU core


familias PSoC y sus núcleos


El M8C es un procesador que puede alcanzar una velocidad de hasta 24 MHz, posee una arquitectura tipo Harvard de 25 hilos con lo cual se logra simplificar la programación de eventos en tiempo real. Otras características que vale la pena resaltar de este núcleo son las siguientes:

• Temporizadores, Sleep y watch Dog (WDT).
• 32 KB de memoria flash para almacenamiento de programas.
• 2 KB de memoria SRAM para almacenamiento de datos.
• 2 KB de memoria EEPROM emulado usando la flash.
• El reloj interno de 24 MHz se puede duplicar a 48 MHz para el uso del sistema digital.
• Reloj de baja velocidad de 32 KHz para el temporizador de apagado y el WDT.
• Las GPIOs permiten conectar el CPU a los recursos digitales y analógicos.
• Cada pin también tiene la capacidad para generar una interrupción del sistema de alto nivel, bajo nivel y el cambio de la última lectura.

El 8051 posee un set de instrucciones tipo RISC, con un gran rendimiento y un promedio de hasta 2 ciclos por instrucción, además puede llegar a tener una velocidad 10 veces mayor que la normal del procesador 8051, otras características importantes son las siguientes:

• 64 KB de memoria flash para almacenamiento de programas.
• 8 KB de memoria SRAM para almacenamiento de datos.
• 2 KB de memoria EEPROM.
• Periféricos HUB (PHUB).
• Interfaz de memoria externa (EMIF).
• Vector programable para el control de interrupciones.

Por su parte, el ARM cortex contiene un procesador de bajo consumo de potencia de 32 bits y arquitectura Harvard, está diseñado para satisfacer las necesidades de aplicaciones que requieran una gran velocidad en el manejo de interrupciones, además también cuenta con las siguientes características:

• 256 KB de memoria flash.
• 64 KB de memoria SRAM.
• 2 KB de memoria EEPROM.
• Controlador de memoria cache de 128 bytes de memoria.
• Periféricos HUB (PHUB).
• 4 GB de espacio de direcciones.

sábado, 10 de septiembre de 2011

¿Qué es PSoC?

imagen PSoC


La palabra PSoC es el acrónimo de (Programmable System on Chip), estos dispositivos fabricados por la empresa cypress son microcontroladores cuya principal característica y atractivo es el contar con módulos tanto análogos y digitales en un solo chip, así mismo poder reconfigurar dinámicamente las entradas y salidas de estos módulos. De esta manera se obtiene un componente electrónico con una gran flexibilidad en su estructura y que permite una facilidad incomparable hasta el momento, para el desarrollo de sistemas electrónicos embebidos.

Algunas características de la arquitectura de estos microcontroladores son las siguientes:

• Unidad multiplicadora MAC.
• Reloj tanto interno como externo.
• El voltaje de referencia puede ser variado para actuar con distintos sensores.
• Voltaje de funcionamiento de 5 voltios ó 3,3 voltios.
• Posibilidad de reconfiguración.

En cuanto a los bloques que tanto se han mencionado hasta el momento, el numero de estos puede variar dependiendo de la referencia del PSoC con el cual se esté trabajando, por ejemplo el CY8C29466 el cual es el que se va a utilizar para la mayoría de los ejercicios que se realicen en este blog, cuenta con 16 bloques digitales y 12 bloques análogos los cuales pueden ser configurados y programados para implementar un sinfín de aplicaciones. Para revisar más características de diferentes referencias de microcontroladores PSoC y notas de aplicaciones del fabricante por favor dirigirse a la sección hojas de datos y aplicaciones (pestaña parte superior de este mismo blog).

arquitectura PSoC

En la figura anterior se puede observar las cuatro áreas principales que componen un microcontrolador PSoC las cuales son: núcleo, sistema digital, sistema analógico y por último los recursos del sistema. En las siguientes publicaciones iremos profundizando un poco sobre cada una de estas partes.

Los PSoC tienen un programa de desarrollo llamado PSoC designer, en este programa se puede contar con una interfaz grafica en la cual se visualizan los bloques tanto digitales y análogos que posee el microcontrolador, además cuántos de estos bloques estamos utilizando, también desde este programa podemos escribir nuestro código en C ó assembler para realizar nuestras aplicaciones, la selección del lenguaje de programación es según nuestras preferencias y dependiendo de con cual se nos facilite mas la programación, para este blog vamos a trabajar en C. Pero más adelante seguiremos profundizando sobre este programa de desarrollo para los PSoC.

martes, 6 de septiembre de 2011

Presentación de PSoC en Español


Hola a todos, este espacio va a ser dedicado a los microcontroladores PSoC (Programmable System on Chip) fabricados por la empresa Cypress, estos dispositivos ofrecen una gran versatilidad para el desarrollo de sistemas electrónicos embebidos ya que en el mismo chip gracias a su configuración por bloques se pueden desarrollar tanto sistemas digitales como análogos generando así una reducción significativa en el tamaño final de las tarjetas de los circuitos a implementar, entre muchas otras ventajas las cuales se podrán ver con el paso del tiempo en las siguientes publicaciones.

La idea de este blog es aumentar la información existente sobre estos micros y brindar un medio de apoyo a todas las personas que quieren iniciarse en el mundo PSoC, ya que es difícil encontrar información sobre este microcontrolador debido a su aparición relativamente reciente y esta dificultad aumenta si la información la queremos adquirir en el idioma español.

Procurare hacer por lo menos dos publicaciones al mes para así ir aumentando el registro de notas sobre estos componentes, claro está que si me es posible hacer mas publicaciones al mes no dudare en hacerlo.