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:


6 comentarios:

  1. buen aporte amigo justo lo que buscaba

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias por visitar el blog y me alegra que el contenido le haya servido y sea de su agrado

      Eliminar
  2. Disculpa no tendras alguna información para el capsense para colocar los parametros y elaboración de la placa?

    ResponderEliminar
    Respuestas
    1. Hola, en el momento no tengo ninguna información sobre el capsense de PSoC, sin embargo intentare averiguar y si consigo alguna información importante la publicare.

      Eliminar
  3. hola, antes que nada quiero felicitarlo por su blog el cual me a servido de mucho, tengo inconveniente en cuanto a correr el el programa de retardo me genera dos errores en el cual me dice que no lee al #include y ya verifique y todo esta de acuerdo al vídeo, espero pueda ayudarme, gracias por la atención prestada.

    ResponderEliminar
  4. Una duda, camarada. Descargué los archivos, los agrego en donde corresponde, pero a la hora de compilar, me envía un error y me dice que el archivo delay.h no se encuentra. ¿Qué puede ser lo que suceda? Como dato, cuando agrego los archivos, me aparecen en cursiva. ¿Tendré algún error en mi progrma PSoC Designer?

    ResponderEliminar