Está en la página 1de 10

EL TIMER A

El timer a es un temporizador/contador el cual utilizaremos para nuestras aplicaciones con distintos fines ya que con el podemos medir y generar intervalos de tiempo, utilizarlo como contador de eventos, generar PWM a distintas frecuencias, muestrear seales etc. Para ello requerimos de conocer este perifrico para poder configurarlo a convenca, para ello dividiremos esta seccin en 2, una de ellas es el uso de el timer a como temporizador, la otra es el uso del timer a en modo captura comparacin.

TIMER_A COMO TEMPORIZADOR


Si tenemos un contador de pulsos al cual le insertamos una seal cuadrada de cierto periodo conocido, entonces despus de cierto tiempo al consultar la cuenta podremos calcular el tiempo que ha transcurrido desde que iniciamos la cuenta. En si este es el principio bsico de este perifrico.

Podemos ver en el diagrama a bloques del Timer_A que hay un multiplexor de 4 entradas y una salida el cual es controlado por TASSELx despus de ello hay un divisor de frecuencias controlado por IDx el cual puede dividir la seal por 2, 4 y 8, despus esta seal ya seleccionada y dividida pasa a alimentar al contador/temporizador de 16 bits almacenando la cuenta en el registro llamado TAR, adems este contador/temporizador es controlado por los bits MCx los cuales se encargan de controlar el modo de cuenta del contador/temporizador. Tambin podemos ver que tanto al divisor de frecuencia como al contador/temporizador cuentan con un bit mas llamado TACLR el cual se encarga de resetear los valores tanto del TAR como del IDx. Por ultimo podemos ver que la nica salida con la que cuenta este modulo es la TAIFG, es decir que depende como configuremos a este modulo en conjunto de en que momento ser enviada la interrupcin a la CPU. A continuacin describiremos los bits especficos antes mencionados junto con los valores que pueden tomar. TAR En este modo existe un registro de 16 bits llamado TAR (Timer A Register) el cual es incrementado o decrementado por cada flanco ascendente de la seal cuadrada del reloj, es decir que en este registro se almacena la cuenta de pulsos de periodo conocido de la seal cuadrada que incide en el contador. Este registro es el mas importante de el timer a el cual se puede tanto leer como escribir en el. TASSELx e IDx

El contador se puede alimentar de diferentes fuentes de reloj tanto internas como externas, la seleccin de esto se hace mediante los bits llamados TASSELx (Timer A Source Select) y adems estas fuentes pueden ser divididas por 2, 4, 8 con los birs llamados IDx (Input Divider) ambos se encuentran en el registro llamado TACTLx (Timer A Control Register) . Tanto TASSELx como IDx son conjuntos de 2 bits dentro de este registro. (Para mayor informacin con respecto a las fuentes de reloj visitar la seccin del sistema de reloj). TASSELx ocupa las posiciones 8 y 9 del registro de 16 bits TACTL y puede adquirir los siguientes valores.
o o o o
00 TACLK Reloj del Timer_A (Timer_A Clock) 01 ACLK Reloj auxiliar (Auxiliary Clock) 10 SMCLK Reloj sub principal (Semi Master Clock) 11 INCLK No disponible para nuestro caso

IDx ocupa las posiciones 6 y 7 del registro de 16 bits TACTL y puede adquirir los siguientes valores.
o o o o
00 Frecuencia de entrada/1 01 Frecuencia de entrada/2 10 Frecuencia de entrada/4 11 Frecuencia de entrada/8

MCx El modo de cuenta es controlado por estos dos bits dependiendo del valor de estos dos bits podemos elegir entre los 4 modos de cuenta disponibles: detenido, ascendente, continuo, ascendente/descendente. Depende de los modos de cuenta el momento en el que la interrupcin ser generada, a continuacin te mostramos una tabla con sus valores, despus de ello su descripcin individual mas detallada.
o o o o
00 detenido 01 ascendente 10 continuo 11 ascendente/descendente

MODOS DE CUENTA
1.- MODO ASCENDENTE En este modo el contador/temporizador contara desde cero hasta el valor almacenado en TACCR0, despus de eso la cuenta se reinicia y continua de nuevo. En la siguiente imagen se puede ver mejor este modo de cuenta.

La interrupcin se genera en el momento en el que la cuenta en TAR cambia de el valor de TACCR0 a 0. Imaginemos que tenemos una frecuencia de 4MHZ externa mediante un cristal de cuarzo conectado en las terminales del puerto dos, con esta seal alimentaremos a nuestro contador/temporizador, por lo cual TASSELx debe ser 01, adems utilizaremos un divisor por 4 para obtener una frecuencia de 1MHz y as un periodo de 1us, para eso IDx debe ser 10. Lo que deseamos es interrumpir a la CPU cada 1ms por lo que deben de transcurrir 1000 pulsos de la seal que hemos configurado para que esto ocurra, para ello cargamos 1000 en TACCR0 y por ultimo iniciaremos la cuenta al poner en MCx el valor de 01. Lo nico que resta es definir la rutina de servicio a la interrupcin adems del vector de interrupcin correspondiente para por ejemplo encender y apagar un led cada 1ms. 2.- MODO CONTINUO En este modo el contador/temporizador cuenta de manera repetida hasta el valor mximo permitido el cual es 0xFFFF y despus regresa a cero, as la bandera de interrupcin es colocada cuando la cuenta pasa desde 0xFFFF a 0x0, as podemos generar interrupciones con periodo de 65535(Tsrc) donde Tsrc es el periodo de la fuente que seleccionamos con su respectivo divisor de frecuencia. A continuacin una imagen que ilustra de mejor manera este modo.

En el ejemplo anterior este Tsrc es de 1us por tanto con esas configuraciones se pueden generar interrupciones con un periodo de 65.535ms. Adems de generar estos periodos podemos hacer uso de los registros TACCR0 y TACCR1, con ellos podemos generar intervalos de tiempo independientes, posteriormente veremos como implementar esto para generar intervalos de tiempo independientes. 3.- MODO ASCENDENTE/DESCENDENTE

En este modo el contador/temporizador cuenta desde cero hasta el valor de TACCR0 de manera ascendente y despus cuenta de manera descendente hasta cero. Esto nos ser til para la generacin de pulsos simtricos, as el periodo ser de el doble del valor almacenado en TACCR0. A continuacin una imagen que muestra este modo de cuenta.

En este modo la interrupcin se genera cuando la cuenta pasa de 0x0001 a 0x0000, como podemos ver en todos los casos la bandera de interrupcin TAIFG es generada cuando la cuenta pasa por cero.

TIMER EN CAPTURA
Casi todos los dispositivos cuentan con tres de estos mdulos de captura y comparacin, en nuestro caso el microcontrolador MSP430G2231 solo cuenta con 2 (CCR0 y CCR1), lo mismo ocurre con los dispositivos mas pequeos de esta familia. Es bueno mencionar que independientemente del numero de mdulos todos son idnticos. El modo de captura nos servir para realizar mediciones de tiempo, como por ejemplo para medir velocidades de computo o bien para medir periodos de tiempo generados por fuentes externas. La precisin de la medicin depende de muchos factores como la interferencia que puede generar la CPU o el hardware con el que se realiza, as como de la fuente de reloj aplicada adems de el numero de bits involucrados en la medicin. A continuacin mostramos un diagrama a bloques de un modulo de captura y comparacin, donde te explicaremos los bits que interfieren en la configuracin de este modulo.

CAP El bit CAP (Capture Mode) nos servir para seleccionar este modo ya que el modulo en si puede trabajar en captura o comparacin, este ocupa la posicin 8 del registro llamado TACCTLx.
o o
0 Modo de comparacin 1 Modo de captura

El grupo de bits llamado CCISx (Capture Compare Input Select) nos ayudara a seleccionar de donde provendr nuestra seal a medir, este esta en los bits 12 y 13 de TACCTLx.
o o o o
00 Bit CCIxA del encapsulado 01 Bit CCIxB del encapsulado 10 GND 11 VCC

Nuestro dispositivo solo cuenta con CCI0A y CCI1A los cuales se ubican en los puertos P1.1 y P1.2, estos los configuramos para esta funcin a travs del registro P1SEL poniendo a 1 los bits 1 y 2 de este registro. CMx Los bits CMx nos ayudaran a seleccionar el flanco de captura de la seal de entrada, ya sea flaco de bajada, de subida o ambos. Cuando una captura ocurre el valor del TAR es copiado en TACCRx y la bandera de interrupcin llamada CCIFG es colocada, estos bits estn en las posiciones 14 y 15 de TACCTLx
o o o o
00 No hay captura 01 Captura con flanco ascendente 10 Captura en flanco descendente 11 Captura en ambos flancos

CCI

El bit CCI nos ayudara para leer en cualquier momento el nivel lgico de la entrada, este esta ubicado en la posicin 3 del registro TACCTLx. SCS El bit llamado SCS nos ayudara a sincronizar la entrada con el reloj del contador/temporizador.
o o
0 Captura asincrona 1 Captura sncrona

COV Un sobre flujo lgico es provisto en cada registro de captura comparacin para indicar que una segunda captura ha ocurrido antes de que el valor de la primera captura sea ledo.
o o
0 No ha ocurrido sobre flujo en la captura 1 Ocurri sobre flujo en la captura

Como podemos ver el registro utilizado para la configuracin de este modulo aun tiene muchos bits que no hemos usado, estos bits que no hemos mencionado sern utilizados para la configuracin del modo de comparacin.

TIMER EN COMPARACION
Este modo es seleccionado cuando CAP=1, este modo lo usaremos principalmente para generar PWM o interrupciones a intervalos especficos en el momento en que TAR cuente al valor de los registros TACCRx. A continuacin mostramos un diagrama a bloques de los mdulos de comparacin y captura, para explicar esta seccin usaremos el mismo diagrama que la seccin anterior.

La unidad de salida esta presente en todo modulo de captura comparacin esta es la que usaremos para generar seales PWM cada unidad cuenta con

ocho modos de operacin que generan diferentes seales de salida, estos modos de salida sern configurados por el grupo de tres bits llamados OUTMODx que se encuentran en TACCTLx. A continuacin una lista con los valores que pueden tomar estos tres bits adems de una descripcin de la funcin que cumplen de acuerdo a cada valor asignado. 000.-Modo Salida. En este modo la salida es igual al contenido del bit OUTx en este mismo registro 001.-Modo Colocar. La salida pasa a 1 cuando el contador/temporizador cuenta al valor en TACCRx y permanece as hasta que el contador/temporizador sea reiniciado u otro modo de salida sea seleccionado. 010.-Modo Conmutar/Reiniciar.- La salida es conmutada cuando el contador/temporizador cuenta al valor en TACCRx y es reiniciada cuando el contador/temporizador cuenta al valor de TACCR0. 011.- Modo Colocar/Reiniciar.- La salida es puesta a 1 cuando en contador/temporizador cuenta al valor de TACCRx y es puesto a 0 cuando el contador/temporizador cuenta al valor de TACCR0. 100.- Modo Conmutar.- La salida es conmutada cuando el contador/temporizador cuenta al valor de TACCRx, el periodo de salida es el doble que el periodo del contador/temporizador 101.- Modo Reiniciar.- La salida es puesta a cero cuando el contador/temporizador cuenta al valor de TACCRx y permanece ah hasta que otro modo de salida sea seleccionado. 110.- Modo Conmutar/Colocar.- La salida es conmutada cuando el contador/temporizador cuenta al valor de TACCRx, es puesta a 1 cuando el contador/temporizador cuenta al valor en TACCR0 111.- Modo Reiniciar/Colocar.- La salida es reiniciada cuando el contador/temporizador cuenta al valor en TACCRx, despus es puesta a 1 cuando el contador/temporizador cuenta al valor de TACCR0 A continuacin mostraremos unas imgenes donde podemos ver como es que esto afecta a la seal de PWM en la salida segn cada modo de cuenta y su respectivo modo de salida. MODO ASCENDENTE

MODO CONTINUO

MODO ASENDENTE/DESCENDENTE

A partir de conocer tanto el modo de cuenta como el modo de salida podremos obtener la seal de PWM que mejor nos convenga con el periodo y ciclo til que queramos.

También podría gustarte