sábado, 31 de marzo de 2012

CONTADOR BINARIO DE 4 BITS (PRACTICA 4)


Para esta ocasión PSoC En español propone la realización de un contador binario de cuatro bits, la idea es que a la salida de uno de los puertos del microcontrolador se pueda visualizar por medio de cuatro LED un conteo de 0 a 15 en el sistema binario.

En esta práctica se pretende que ustedes los lectores propongan sus propias soluciones para llevar a cabo el contador, ya que como en cualquier reto no existe una solución única e irrefutable sino que por el contrario se pueden llegar a encontrar una innumerable cantidad de soluciones cada una dependiente de la persona que se encuentre frente al reto.

Sin embargo acá se propone una solución sencilla basada en un ciclo for, una variable acumuladora y la posterior salida del valor de esta variable en un puerto configurado como salida, el código de este sencillo contador se muestra a continuación:

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

void main(void)
{
int i;              // Variable acumuladora.
while (1)
{
for(i=0;i<=15;i++)  // Ciclo que cuenta entre 0 y 15 para el contador de 4 bits.
{
PRT2DR = i;         // Se escribe en el puerto 2 el valor de a variable i.
Delay10msTimes(100);       // Retardo de 1 segundo.
}
}
}


De esta manera se puede conseguir a la salida del puerto 2 un contador binario de 4 bits, sin embargo se insiste en la importancia de que los lectores propongan sus propias soluciones y de esta manera poder visualizar un espectro más amplio de posibilidades.

En el siguiente vídeo se muestra el funcionamiento que se espera obtener de la práctica propuesta para esta ocasión.


sábado, 17 de marzo de 2012

USO DE LAS FUNCIONES DE RETARDO


Los retardos son quizás de las instrucciones más utilizadas en cualquier programa que se esté desarrollando, estos permiten esperar un tiempo determinado entre la última instrucción realizada y la siguiente que se debe ejecutar. Aunque en la publicación anterior se mostro como hacer un retardo mediante la creación de una función a la que se llamo tiempo y que básicamente funcionaba ejecutando un ciclo “for”, esta no es la mejor manera de realizar un retardo ya que no permite al usuario determinar el tiempo preciso en el cual se va a retrasar la siguiente instrucción del programa. Para poder hacer estos retardos en periodos de tiempos precisos en la mayoría de lenguajes existe la instrucción delay, la cual para los microcontroladores PSoC no es la excepción.

Para poder utilizar la instrucción delay en cualquier programa que se esté desarrollando En PSoC Designer, primero se tiene que agregar al proyecto los archivos “delay.asm” y “delay.h” los cuales pueden ser descargados directamente desde la página web de Cypress Semiconductor por medio del link que se muestra a continuación.

Descarga archivos funciones de retardo (Página oficial de Cypress Semiconductor)

El archivo que se descarga del link anterior contiene los dos archivos que son necesarios para poder ejecutar los retardos en cualquier proyecto, cada uno de estos archivos tiene funciones especificas como lo son:

Delay.asm: Este archivo contiene las 3 funciones que generan los retados en PSoC, las cuales son Delay50u, Delay50uTimes y Delay10msTimes.

Delay.h: Este archivo por su parte contiene las estructuras y prototipos necesarios para llevar a cabo la ejecución de las funciones que se encuentran dentro del archivo delay.asm.

Funciones de retardo: funcionamiento y sintaxis de uso.

Delay50u: Esta función genera un único retraso de 50 µS para velocidades de CPU que se encuentren entre los 1,5 MHz y los 24 MHz. Para velocidades de CPU menores a 1,5 MHz el retardo debe ser calculado por la siguiente formula:
Delay = (1,5 MHz / frecuencia de la CPU)* 50 µS.
La sintaxis para el uso de esta función es la siguiente:
Delay50u ();

Delay50uTimes: Esta función genera un retraso definido en múltiplos de 50 µS, el retardo se generar a partir de un factor de multiplicación ingresado por el programador, esta función básicamente lo que hace es repetir el la función Delay50u el numero de veces indicadas, la sintaxis para el uso de la función es la siguiente:
Delay50uTimes(X); // Donde X es el factor de multiplicación.
El valor máximo de retardo que se puede generar con esta función son 12,75 mS.

Delay10msTimes: Esta función se ejecuta de la misma manera que la función anterior, la diferencia radica en que los retardos se realizan en múltiplos de 10 mS, la sintaxis para el uso es la siguiente:
Delay10msTimes(X); // Donde X es el factor de multiplicación.
El valor máximo de retardo que se puede generar con esta función son 2,55 S.

Pasos para agregar los archivos delay.asm y delay.h:

Para poder utilizar los retrasos en un proyecto primero se deben seguir los siguiente pasos para incluirlos al mismo proyecto:

1. Agregar los archivos “delay.asm” y “delay.h” mediante la ruta:
    “project -> Add File -> Seleccionar los dos archivos”.

2. Después de haber sido agregados, el archivo delay.asm debe quedar alojado en la carpeta source files, por su parte el archivo delay.h debe encontrarse en la carpeta header Files.

3. Incluir en el encabezado del código fuente el archivo delay.h mediante la instrucción: #include<delay.h> .

4. A partir de este momento ya se pueden utilizar las funciones de retardo mediante la sintaxis que se presento anteriormente.

PRACTICA 3 (Uso de retardos)

En esta práctica se pretende observa el comportamiento de la función de retardo Delay10msTimes() ya que es la que presenta mayor facilidad de ser comprobada a simple vista, dado el caso que tenga acceso a instrumentos de medida como un osciloscopio puede comprobar las otras funciones de retardo.

El objetivo de esta práctica comprobar las diferencias en tiempo producidas entre diferentes retardos, esto se va a lograr mediante el control de cuatro LED en cuatro tiempos de la siguiente manera:

(Funcionamiento de la practica 3 - Uso de los retardos)

Los archivos del proyecto realizado en PSoC Designer 5.1 para esta práctica pueden ser descargados por medio del siguiente link:

Descarga archivos Practica 3 (UsoDelay.rar)

En el siguiente video se puede observar paso a paso el uso del las funciones de retardo y la práctica propuesta: