Wikia

WikiTrónica

Introducción a los temporizadores

Discusión0
3páginas en el wiki

El tiempo, la cuarta dimensión, está presente en todo momento, y medir su paso es un aspecto importante en casi cualquier aplicación electrónica. Una de las primeras aplicaciones desarrolladas en el mundo de la electrónica digital fueron los circuitos para medir el tiempo, y estos adquirieron tal importancia, que están presentes en casi cualquier dispositivo electrónico moderno. En nuestro caso, hablaremos de un grupo especial de estos dispositivos, los circuitos temporizadores de los microcontroladores.

El primer microcontrolador de la historia, el INTEL 8051, que salió al mercado en 1976, tenía dos temporizadores programables. Hasta el día de hoy, estos han tenido una evolución constante en el mundo de la electrónica digital, de modo que algunos microcontroladores modernos poseen varios contadores.

¿Cómo trabaja un temporizador?Editar sección

El elemento fundamental del temporizador es un contador binario, encargado de contar los pulsos suministrados por algún circuito oscilador, con una base de tiempo estable y conocida.

El simple hecho de contar pulsos de una duración fija nos permite medir el tiempo con precisiones asombrosas, determinadas fundamentalmente por la estabilidad del generador de pulsos y por los circuitos electrónicos del contador binario. Sin embargo, un contador útil debe tener más elementos que permitan sacar provecho a ése circuito básico, es por ello que los microcontroladores utilizan un conjunto de circuitos auxiliares para poder manejar, con cierto nivel de libertad, las características básicas del contador binario y convertir el conjunto en un temporizador/contador programable.

Se utilizan en…Editar sección

  • Hacer una lista completa es prácticamente imposible, pero algunos ejemplos de su aplicación, nos ayudarán a adentrarnos en los entresijos de su diseño y sacarle provecho a sus potencialidades.
  • Medición de tiempo
  • División de frecuencia
  • Medición de período y frecuencia
  • Conteo de eventos
  • Base de tiempo para otros periféricos
  • USART
  • PWM
  • Watch Dog

Estructura básica de yareliEditar sección

La estructura básica de un temporizador/contador la podemos ver en la Figura 1. En este esquema simplificado podemos observar que el contador está compuesto por tres bloques fundamentales:

  1. Contador binario: es el elemento básico del temporizador/contador y su misión es contar los pulsos del reloj. Hay dos propiedades esenciales a tener en cuenta, respecto a este componente: la cantidad de pulsos que puede contar y la posibilidad de controlar el sentido del conteo, sea ascendente o descendente.
  2. Circuitos de configuración y control: constituyen la interfaz entre el contador binario y elementos externos. Es uno de los elementos que da valor añadido al simple contador binario.
  3. Circuitos especializados de salida: Se utilizan para notificar, a otro elemento del sistema, sobre el estado del temporizador o acerca de la ocurrencia de un determinado evento.
Esquema basico temporizador.png

Figura 1: Estructura básica de un temporizador/contador

Más adelante veremos, con ejemplos de contadores reales, cada uno de los bloques del temporizador/contador, y cómo configurar estos módulos, para utilizarlos en distintas aplicaciones.

CaracterísticasEditar sección

En el mundo del diseño digital, los temporizadores constituyen periféricos muy útiles. Se diseñan con ciertas características que determinan el uso que podemos darle a un temporizador, veamos algunas:

Longitud del contador: Los más comunes son aquellos que tienen 8 ó 16 bits, determina la cantidad máxima de pulsos que se pueden contar.

Lectura/escritura: En general, los temporizadores pueden ser escritos o leídos por el procesador del microcontrolador. En algunos casos, donde el temporizador está vinculado a algún periférico muy específico, esta opción puede no existir o estar limitada.

Modos de trabajo: Existen, en principio dos: contador y temporizador. Como contador, se cuentan los pulsos desde una fuente externa al microcontrolador. Los pulsos contados pueden tener período variable. Como temporizador, se cuentan los pulsos suministrados por una fuente estable y conocida, que puede ser externa, o alguna fuente generada internamente por el microcontrolador.

Forma de conteo: La forma típica es el conteo ascendente, sin embargo, existen contadores con la opción de configurar el modo de conteo, sea éste ascendente, descendente o de otro tipo específico.

Configuración de activación por frente: Permite establecer cuando se produce el conteo, si en el frente de subida del reloj o en el frente de caída del mismo.

Configuración del reloj: En la mayoría de los casos la fuente de reloj es configurable. Incluso existen microcontroladores con abundante variedad de formas de configurar el reloj, de modo que se puedan obtener distintos tipos de bases de tiempo.

Interrupciones: En la mayoría de casos, los temporizadores tienen interrupciones asociadas, con el objetivo de notificar al procesador que ha ocurrido el cruce por cero o algún valor específico en el registro de conteo.

Características especiales: Muchos microcontroladores tienen temporizadores especializados para trabajar de conjunto con algunos de sus periféricos, o para ser utilizados en aplicaciones específicas.

Un temporizador por dentroEditar sección

Ahora vamos a analizar un temporizador real, en particular, el TIMER0 de los microcontroladores PIC de la MICROCHIP. Específicamente los PIC de gama media.

El análisis de este temporizador nos permitirá ver en concreto cómo hacer funcionar uno de estos dispositivos. Lo aprendido aquí puede ser muy útil en caso de trabajar con temporizadores de otros fabricantes, ya que si observa las hojas de datos de otros microcontroladores, podrá percatarse de la similitud de los diferentes módulos temporizadores entre distintos fabricantes.

El esquema funcional del temporizador podemos verlo en la Figura 2, aquí hemos marcado con cuadros rojos lo que sería, más o menos, cada bloque de los explicados para la figura 1. Con un temporizador real no podemos hacer una separación completa de los elementos de cada uno de los bloques que usamos para introducir la teoría de los temporizadores, porque los circuitos y registros están muy relacionados entre sí para constituir un temporizador real.

Esquema funcional TIMER0 PIC.png

Esquema funcional del TIMER0

Analizando el esquema de este temporizador podemos observar que el mismo puede utilizar como fuentes básicas de reloj una fuente externa conectada al pin T0CKI (el pin específico en el encapsulado del microcontrolador depende del dispositivo) o puede utilizarse la señal de reloj interna, generada por el microcontrolador, equivalente a un ciclo de máquina (FOSC/4).

La selección de una u otra fuente básica depende del estado de un multiplexor digital cuya señal de control es T0CS, a la salida de este multiplexor encontramos un pre-escalador, que sirve también como post-escalador para el Watch Dog (WD).

Un pre-escalador o post-escalador, es otro contador que se coloca antes o después del contador principal del temporizador y su función es dividir la señal del reloj a la entrada o salida del contador principal. Generalmente la longitud es configurable, pero no se permite leerlos o escribirlos por software.

Existe otro multiplexor digital que nos permite seleccionar o no el uso del pre-escalador y cuya señal de control es PSA. A su salida existe un componente que tiene como misión sincronizar el reloj externo con el del dispositivo, en caso que se utilice esta fuente, y al final tenemos la fuente de reloj que será la que hará funcionar al contador principal del temporizador.

El registro del contador principal del temporizador puede leerse y escribirse por software en cualquier momento, sin embargo, existen ciertos detalles a tener en cuenta en caso de las escrituras. A la salida del contador principal tenemos la activación de la señal T0IF, que es utilizada para notificar al procesador que se ha desbordado el temporizador, y en caso de estar habilitadas las interrupciones del dispositivo, esta señal activará el proceso de interrupción del procesador.

Para poder configurar este periférico y obtener información útil sobre él, existen tres registros que el programador y el periférico utilizan para lograr un trabajo adecuado:

  • TMR0: es el registro donde se lleva la cuenta de pulsos de reloj que llegan al contador principal del temporizador, es de lectura/escritura.
  • INTCON: Es el registro de control de interrupciones, se utiliza para habilitar el servicio de interrupciones del microcontrolador y del temporizador, contiene además la bandera T0IF, que determina si el temporizador se ha desbordado.
  • OPTION_REG: Se utiliza para establecer la fuente de reloj a utilizar, el frente que activa el conteo y para configurar el pre-escalador.

ConcluyendoEditar sección

Hasta ahora hemos visto una breve introducción a la teoría de los temporizadores y analizado el esquema funcional y los registros de trabajo del TIMER0 de los microcontroladores PIC, es importante que el lector dedique tiempo a revisar las hojas de datos y tome nota de las características de este y otros temporizadores, específicamente para el modelo de dispositivo que pueda tener. Así podrá conocer con mayor nivel de detalle a este periférico.

Este es un artículo publicado por mí en la [revista http:wwww.ucontrol.com.ar uControl], pero iré moficándolo de modo que sirva para explicar las generalidades de los temporizadores y mover todo lo referente a temporizadores específicos hacia otras páginas.

--Reiniertl 13:08 26 jun 2008 (UTC)

Spotlights de otras wikias
Solicita el tuyo aquí

Wiki aleatorio