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.