Mostrando entradas con la etiqueta Bloques Digitales. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bloques Digitales. Mostrar todas las entradas

sábado, 13 de julio de 2013

RECEPCIÓN DE DATOS CON MÓDULO UART DE PSoC

En esta entrada se va a trabajar la recepción de datos por medio del protocolo UART con un microcontrolador PSoC, por lo tanto es recomendable primero revisar y leer una publicación anterior en la cual se hizo la introducción y un primer trabajo de envío de datos por medio de este protocolo con el modulo de usuario UART con el que cuenta PSoC Designer, la entrada en mención es la siguiente: COMUNICACIÓN UART CON PSoC.


En la práctica que se va a mostrar en esta entrada se trata de enviar un dato por medio de protocolo UART desde el computador, recibir este dato en el microcontrolador PSoC para luego mostrarlo en un display LCD de 16 caracteres por 2 columnas. Antes de comenzar con la muestra del desarrollo de la práctica es necesario mostrar algunos métodos que tiene el módulo UART de PSoC para la recepción de caracteres como son los siguientes:

UART_IntCntl: Esta función habilita o deshabilita las interrupciones de recepción y transmisión de manera independiente, la sintaxis es:

  • UART_IntCntl(); dentro del paréntesis se debe colocar el tipo de interrupción que se desee habilitar o deshabilitar teniendo las siguientes opciones:

·         UART_ENABLE_RX_INT: Habilita la recepción
·         UART_ENABLE_TX_INT: Habilita la transmisión
·         UART_DISABLE_RX_INT: Deshabilita la recepción
·         UART_DISABLE_TX_INT: Deshabilita la transmisión

Por ejemplo para habilitar la recepción, la línea de código quedaría escrita de la siguiente manera:

·       UART_IntCntl(UART_ENABLE_RX_INT);

   UART_CmdReset: Resetea el buffer del modulo UART, dejándolo preparado para recibir las siguientes instrucciones. La sintaxis de esta función es:

·                    UART_CmdReset();
  
    UART_szGetParam: Toma el dato guardado en el buffer de recepción del modulo UART, luego de tomar este dato lo guarda en un puntero. La sintaxis de a función es la siguiente:

·                    Char * UART_szGetParam();


Para que esta función pueda guardar el dato dentro de un puntero, se coloca la función dentro de una condición if, por ejemplo:

·                    If(dato = UART_szGetParam()){}

Donde dato es el puntero en el cual se va a guardar el dato que ha recibido el buffer del módulo  UART del PSoC.

DESARROLLO DE LA PRÁCTICA:

Como ya se había mencionado en esta práctica se va a enviar un dato por medio del computador para que posteriormente sea recibido por el modulo UART del microcontrolador PSoC y sea mostrado en un display LCD 16*2.

En la práctica con módulo UART realizada anteriormente, para establecer la comunicación entre el computador y el microcontrolador se utilizo una tarjeta construida con un circuito integrado FT232 con el cual se lograba hacer la conversión de protocolo USB a UART mediante la emulación de un puerto COM, en esta ocasión no se va a utilizar la misma tarjeta sino que para mostrar una nueva posibilidad para establecer dicha conexión se utilizo un programador de microcontroladores PIC como interfaz y como software para enviar los datos se utilizo la herramienta UART (UART Tool) del programa PICkit 2 de Microchip.

Luego de haber enviado el dato, el encargado de recibir dicha información es el PSoC, para tal fin se utilizo un modulo UART y se configuraron los parámetros del reloj y de recepción del mismo tal como se muestra en la imagen a continuación.

(Figura 1. Parámetros globales del microcontrolador)


(Figura 2. Parámetros módulo UART)

Luego de guardar el dato para hacer la visualización del mismo se utilizo un display LCD 16*2, para utilizar este dispositivo se uso el módulo LCD que incluye PSoC Designer.

El código utilizado para esta práctica con sus respectivos comentarios se puede ver a continuación:

//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h>       
#include "PSoCAPI.h"   

void main(void)
{
char *dato; // Puntero donde se guardan los datos recibidos
UART_CmdReset(); //Resetea el buffer del modulo UART
UART_IntCntl(UART_ENABLE_RX_INT); //Habilita las interrupciones de RX
UART_Start(0); // Inicializa módulo UART
LCD_Start(); // Inicializa módulo LCD
M8C_EnableGInt;
       while(1)
       {
             if(dato = UART_szGetParam()) //Comprueba si el buffer del UART ha recibido un                                              Parametro y lo guarda en el puntero
             {
             LCD_Position(0,3); // Ubica la primera columna y el tercer caracter del display                                  LCD
             LCD_PrCString("PSoC RX UART"); // Escribe el texto en la posición anterior
             LCD_Position(1,0); // Ubica la segunda Columna y el tercer caracter del display                                   LCD
             LCD_PrString(dato); // Escribe el valor del puntero en la posición anterior
             UART_CmdReset();//Resetea el buffer del modulo UART
             }
       }
}


Por último los resultados obtenidos de la práctica se pueden observar en las siguientes imágenes:

(Figura 3. Envió de la palabra PSoC)

(Figura 4. Recepción y muestra de la palabra PSoC)
(Figura 5. Envió de la palabra Hola)
(Figura 6. Recepción y muestra de la palabra Hola)
(Figura 7. Envió de la palabra Prueba)
(Figura 8. Recepción y muestra de la palabra Prueba)
(Figura 9. Envió de símbolos :) )
(Figura 10. Recepción y muestra de símbolos :) )

domingo, 15 de enero de 2012

Mejores prácticas y recomendaciones con PSoC 1 (parte 2)


En esta ocasión se va a presentar la segunda parte de la traducción y resumen de la nota de aplicación AN2010 titulada PSoC® 1 Best Practices and Recommendations y escrita por Jeff Dahlin, en esta parte se van a describir los tipos de pin que componen a los microcontroladores PSoC, además algunas configuraciones para funciones analógicas del microcontrolador.

INTERCONEXIÓN Y PINES DE SALIDA

Tipos de pin:

En las familias PSoC 1 22/24/27/29 existen 8 tipos de pines configurables los cuales son los siguientes:

Digital I/O Solamente: Estos pines son los mas abundantes ya que todos los de los puertos de PSoC pueden configurarse como pines de entrada y salida digitales. Tambien pueden actuar como entrada o salida de uso general mediante la configuración stdCPU.

Entradas / Salidas digitales ó entradas análogas: Estos pines pueden funcionar como entradas y salidas de tipo digital ó se puede conectar a los multiplexores como entrada analógica.

Entradas y salidas digitales y análogas: Estos tipos de pines se pueden utilizar para entradas y salidas tanto digitales como análogas, aunque hay que utilizarlos como último recurso si se piensan utilizar como entradas ya que estos son mas útiles como salidas análogas las cuales son más escasas dentro del microcontrolador, razón por la cual estos pines deben de ser valorados.

Entrada - Salida digital ó Entrada analógica directa: Además de utilizarse como entrada - salida digital, estos pines se pueden utilizar directamente como entradas análogas para los bloques de capacitancias conmutadas (SC).

Entrada – Salida digital ó referencia externa: A parte de utilizarse como entrada - salida digital, estos pines se pueden utilizar como suministro para un voltaje de referencia AGND externoy para una tensión de referencia VREF, estas referencias externas proporcionan una mayor flexibilidad para los diseños analógicos.

Entradas – Salidas digitales ó I2C: Estos pines a parte de la aplicación digital se pueden utilizar para comunicaciones I2C, estos pines son preferibles a la I2C suplente ya que estos últimos también son utilizados para la programación ISSP, que puede llegar a interferir con la comunicación I2C.

Entradas – Salidas digitales ó reloj de sistema externo: Estos pines se pueden utilizar como entrada para una fuente externa de reloj (EXTCLK).

Entradas – Salidas digitales, Entrada de cristal externo, Entrada I2C suplente: Estos pines se pueden utilizar para conectar un cristal de 32,678 KHz, también se utilizan como auxiliares o suplentes para comunicación I2C. El ECO se utiliza para la sincronización. Ademas estos pines son los utilizados para la programación ISSP.

En la siguiente tabla se puede observar los tipos de entradas y los puertos asociados a cada tipo de pin:


(Tipos de pin para familias de PSoC 1)

Mejores prácticas para la asignación de pines:

La mejor recomendación para este tema es asignar primero los pines analógicos a las funciones que los requieran. Luego los elementos que sean solamente entradas ó salidas digitales y por ultimo asignar los pines con múltiples funciones.

Buffer de salida análoga:

Siempre que se vaya a hacer el enrutamiento de una salida analógica se debe asegurar que el buffer asociado a la columna de salida esta encendido.

Columna velocidad del reloj analógico:

Es necesario revisar las hojas de datos de los módulos de usuario que vayan a ser utilizados para así asegurar que la velocidad del reloj analógico se está configurando de manera adecuada, ya que un reloj muy rápido o muy lento puede causar problemas con la carga de los condensadores de los módulos analógicos.

Cuanto más rápido es el reloj analógico de un bloque, mayor es el poder del mismo. El ajuste de potencia de un modulo afecta el límite de capacidad de corriente del amplificador operacional dentro del bloque analógico. Con una corriente más alta se cargan con mayor rapidez los condensadores y la frecuencia del reloj es mayor.

Configuración de alimentación analógica:

El ajuste de potencia de las referencias análogas se debe establecer en la configuración de potencia máxima. Como se muestra en la siguiente figura:


(Configuración Alimentación Análoga)

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.

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.

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.