Anda di halaman 1dari 11

TIMERS Y PWM

-Fuentes de reloj:
*Reloj maestro, MCLK, es utilizado por la CPU y unos perifricos.
*Reloj maestro Subsistema, SMCLK, se distribuye a los perifricos.
*Reloj auxiliar, ACLK, tambin se distribuye a los perifricos.
Tpicamente SMCLK funciona a la misma frecuencia que MCLK, tanto en el rango de megahercios.
Para el procesador MSP430, tanto los relojes MCLK y SMCLK son suministrados por un oscilador
interno de control digital (DCO), que funciona a aproximadamente 1,1 MHz.

DCO - Oscilador Controlado digitalmente corridas internas en alrededor de 1 Mhz.


La frecuencia de la DCO se controla a travs de conjuntos de bits en los registros del mdulo en tres
niveles. Hay frecuencias de 1, 8, 12, y 16 MHz calibrado. Para cambiar la frecuencia de simplemente
copiar los valores en los registros del mdulo de reloj.
Los siguientes juegos de la DCO utilizados por la CPU a 1 MHz, lo que parece ser el valor por defecto:
BCSCTL1 = CALBC1_1MHZ; // Gama Set
DCOCTL = CALDCO_1MHZ; // Paso Set DCO y la modulacin

-Temporizador/Contador
Los temporizadores son fundamentalmente contadores conducidos por una seal de reloj,
comnmente aumentar o disminuir el contador en cada ciclo de reloj.
Cuando el contador alcanza un cierto valor predefinido (por ejemplo, 0), el temporizador puede
generar una interrupcin. El resultado es una base de tiempo razonablemente precisa para la
ejecucin de la funcionalidad tales como el mantenimiento de un reloj de referencia (segundo,
minuto, etc.) o la realizacin de alguna operacin sobre una base regular (parpadear un LED de cada
segundo).
El recuento de un temporizador de 16 bits en el modo continuo a continuacin se repite a contar
desde 0 a FFFFh. Utilizando el modo UP, otros lmites pueden especificarse.

El pulso de reloj controla el contador, con cada ciclo de reloj incrementar el contador.
Temporizadores MSP430 pueden interrumpir (TAIFG) cuando el temporizador alcanza un lmite
especificado, que sirve para realizar operaciones cronometradas con precisin.
Por ejemplo, un reloj temporizador de FFFFh Hz y un lmite de recuento de FFFFh podran generar
una interrupcin cada segundo estableciendo la TAIFG.

El MSP430 tiene muchas opciones para crear temporizadores, nos limitaremos a un sencillo que
ilustra los conceptos bsicos.
Tenga en cuenta un temporizador tiene al menos 3 partes fundamentales:
--entrada de reloj que marca a una velocidad especificada,
--contador que cuenta el reloj avanza en el modo UP,
--procedimiento de interrupcin llama cuando alcanza el lmite de la cuenta.

Timer
--TA0CTL
Registro de control Timer A0.
TASSEL_1 = 01 en los bits 9-8, selecciona temporizador Un reloj 0 fuente como ACLK, 32768Hz.
Mc_1 = 01 en los bits 5-4, establece el modo de recuento, contando hasta el valor en TA0CCR0 y
generar una interrupcin si est habilitada.

Contador
--TA0CCTL0
Registro de control para el temporizador A0 contador 0. Las interrupciones estn habilitadas
escribiendo un 1 en el bit 4 de este registro.

--TA0CCR0
Sostiene el valor de cmputo de 16 bits.
32678 se usa porque el reloj ACLK opera en aproximadamente 32768Hz y queremos cambiar los
LEDs en aproximadamente en intervalos de un segundo. Con las interrupciones habilitadas, se
genera una interrupcin cuando la cuenta llega a 32.768.

El contador, en el modo UP, se pone automticamente a 0 cuando alcanza el lmite de la cuenta.


Interrupciones
--TA0CCTL0
Activa / desactiva las interrupciones A0 temporizador
TIMER0_A0_VECTOR
Vector de temporizador A0
Un punto importante es que los temporizadores pueden funcionar de forma independiente a la
velocidad de la CPU, lo que permite que la CPU se apaga y se enciende automticamente cuando
se produce una interrupcin.
_BIS_SR (LPM0_bits + GIE); lugares CPU en modo de bajo consumo con interrupciones habilitado.
SR / R2
Registro de estado.
CPUOff = 1 en el bit 4 apaga la CPU hasta que se produzca interrupcin.
GIE = 1 en el bit 3 permite interrupciones globales (lo mismo que la instruccin EINT).
La revelacin completa
Contadores en los ejemplos estn desactivados de 1. Desde el conteo comienza en 0, un recuento
de 32768 tendra un lmite de 32767. Para mayor claridad y facilidad aritmtica, vamos a vivir con
el pequeo error.

14. Toggle LED rojo cada segundo.

#include <msp430g2553.h>
void main (void) {
WDTCTL = WDTPW + WDTHOLD; // Parar
temporizador de vigilancia
P1DIR | = BIT0; // Set P1.0 a la
direccin de salida
P1OUT & = ~ BIT0; // Establecer el LED
rojo
TA0CCR0 = 12000; // Lmite de la cuenta
(16 bits)
TA0CCTL0 = 0x10; // Habilitar
interrupciones de contador, el bit 4 = 1
TA0CTL = TASSEL_1 + mc_1; //
Temporizador A 0 con ACLK @ 12KHz, cuente UP
_BIS_SR(LPM0_bits + GIE); // LPM0 (modo
de baja potencia) con interrupciones
habilitado
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt vaco Timer0_A0 (void) {//
Timer0 A0 rutina de servicio de interrupcin
P1OUT ^ = BIT0; // Cambia LED rojo
}

Hay tres modos para operar Timer_A.


--Modo continuo: Timer_A acta igual que un 16 dgitos, odmetro binario; que cuenta de 0 a 0xFFFF
y luego "da la vuelta" a 0 de nuevo.
--Hasta modo; como en modo continuo, cuenta hasta establecer el lmite entonces se da la vuelta a
0.
--Arriba / abajo modo, es similar al modo de arriba tiene un lmite superior. En lugar de rodar a 0,
se da la vuelta y una cuenta atrs hasta 0.
Adems de las tres maneras de contar en Timer_A, tambin hay algunas maneras de utilizar el
contador.
Timer_A tiene la capacidad de establecer "puntos de control" en su conteo (dispositivos Value Line
slo tienen dos, pero otros dispositivos tener un tercero). TI llama a estos puestos de control de
Capture / Compare Registros. El uso ms bsico de estos registros es establecer valores en los que
las banderas de contador del procesador para hacer algo especial. Uno de estos registros configura
el lmite superior en el modo de arriba y arriba / abajo. El otro registro slo banderas del procesador
y permite que el temporizador de seguir contando. (Este es tambin el comportamiento de la
primera registro en modo continuo.) Este tipo de uso es el modo de comparacin del
registro; establecemos un valor que se compara con la cuenta actual en Timer_A. Si los valores son
iguales, seala que es el caso para el procesador. Modo de captura se comporta de manera
diferente; el temporizador de espera de algn tipo de seal (a menudo de algn tipo de entrada) y
a continuacin, registra el valor actual del temporizador en el registro sin detener el temporizador,
algo as como la funcin de tiempo de vuelta de un cronmetro.

Registros
Hay por lo menos siete registros utilizados en cualquier dispositivo con el perifrico Timer_A. En la
Gua del usuario de la familia, pginas 12 a 20 a travs de 12 a 23 la lista de mapas de
registro. TA0CTL - El Registro de Control Timer_A se utiliza para establecer la fuente entre el
temporizador y un reloj, y seleccione el modo utilizado.
Los bits TASSELx (8 y 9) dicen que el temporizador que reloj para utilizar como fuente.
TASSEL_0 = TACLK
TASSEL_1 = ACLK @ 32768Hz.
TASSEL_2 = SMCLK @ 1MHz
TASSEL_3 = INCLK
La frecuencia de reloj puede ser dividido por un factor de 2, 4, 8 o el uso de los bits de IDX (6 y
7). (Tenga en cuenta que se trata de un nuevo fraccionamiento, a cualquier divisin realizados desde
la fuente de reloj para el reloj en s, podra tener potencialmente una divisin total de hasta 64
desde la fuente de reloj para este perifrico.)
Los bits MCX (4 y 5) seleccionar el modo particular de usar para el temporizador. Tenga en cuenta
especialmente que el establecimiento de estos bits a 0 (el valor por defecto en POR) detiene el
temporizador completamente.
TACLR es poco 2. Si usted escribe un 1 a este bit, se restablece el temporizador. El MSP430 se
restablecer automticamente este bit a cero despus de restablecer el temporizador.
TAIE y TAIFG (bits 0 y 1) controlar la capacidad del temporizador para disparar alarmas.
TA0R - El Registro Timer_A es el contador real; leer este registro informa el valor actual del contador.
TA0CCRx - La captura Timer_A / Comparar registros, de los cuales hay dos (TACCR0 y TACCR1) son
donde los valores especficos a utilizar se almacenan. En el modo de comparacin, el temporizador
indica un evento en los valores. Particularmente, TACCR0 almacena el valor que Timer_A cuenta en
sube y sube el modo / abajo. En el modo de captura, el procesador registrar el valor de TAR cuando
el MSP430 es sealado para hacerlo.
TA0CCTLx - La captura Timer_A / Comparacin de registros de control corresponden a los registros
TACCRx. Estos establecen el comportamiento de cmo se utilizan los CCR de.
CMx (bits 14 y 15) el cambio de qu tipo (s) de las seales indican que el temporizador para realizar
una captura.
CCISx (bits 12 y 13) seleccionar donde se toman las seales de entrada.
SCS y SCCI (bits 11 y 10 respectivamente) cambiar la sincrona; el temporizador normalmente
funciona de forma asncrona a las seales de entrada.
CAP (bit 8) cambia si se utiliza el modo de captura de modo (0) (1) o comparar.

OUTMODx (bits 5-7) seleccionar diferentes modos de salida de la seal del CCR cuando las banderas
del temporizador una captura o comparar evento.
CCIE y CCIFG (bits 4 y 0) son ms interrupciones asociadas con el CCR de.
CCI y OUT (bits 3 y 2) son la entrada y salida para el CCR.
COV (bit 1) es el desbordamiento de captura; este bit se pone a 1 si dos capturas se sealizan antes
del primer valor de captura es capaz de ser ledo.
TA0IV - El Vector Registro Timer_A interrupcin; ya que hay varios tipos de interrupciones que
pueden ser marcados por Timer_A, este registro contiene detalles sobre lo que las interrupciones
se han marcado.
Los nicos bits utilizados aqu son bits 1-3 (TAIVx), que muestran el tipo de interrupcin que ha
sucedido, lo que nos permite realizar diferentes acciones para resolver los diferentes tipos de
interrupciones.
La figura a continuacin enumera los registros y valores TIMER0 y Timer1 para el programa que
sigue:

PWM
Seal PWM se compone de dos partes:
Perodo
Tiempo de cada pulso.
Seal de 5 Hz tiene perodos de 5.1 segundos = 0,2 segundos.
Ciclo de trabajo
El porcentaje de tiempo que la seal PWM est Activo o alta.
Un perodo de 0,2 segundos y 10%
Ciclo de trabajo = 0,10 * 0,2 segundos = 0.02 segundos.
Si la seal tiene una baja tensin de 0 y un alto voltaje de 10 voltios, un ciclo de trabajo del 50%
produce un promedio de 5 voltios, un ciclo de trabajo del 10% produce un promedio de 1 voltio.

LED bajo control PWM

PWM en el LaunchPad
PWM se utiliza para controlar el brillo del LED variando el ciclo de trabajo, unos ms largos
resultados de ciclo de trabajo en un brillante LED verde.
(Verde) LED direccin se establece y seleccionado para PWM.
P1DIR | = bit6; / LED / verde como salida
P1SEL | = bit6; // LED verde controlada por ancho de pulso
modulacin
LED Temporizador A0 PWM verde

TA0CCR0 / TA0CCR1
Registros del temporizador determinar cundo se producen los eventos y el lmite de la cuenta del
reloj. Combinados, los valores de registro determinan el perodo de PWM (TA0CCR0) y ciclo de
trabajo (TA0CCR1).
TA0CCR0 = 1,000;

// PWM periodo
// reloj de 12KHz da 12000/1000 =

12 Hz = 1 / 12s perodo
TA0CCR1 = 100;
TA0CCR0

trabajo PWM // ciclo = TA0CCR1 /


// ciclo de tiempo en frente

apagado, el 10% inicialmente


Logra un ciclo de trabajo 10%, donde la produccin PWM es 1 para 10% del tiempo y 0 para 90%
"Salida TA0CCR1 se restablece (0) cuando el temporizador cuenta hasta el valor TA0CCR1 y se
establece (1) cuando el temporizador cuenta hasta el valor TA0CCR0" (Desde Gua del usuario).
Significa que la salida PWM cuando se alcanza el recuento TA0CCR0 es 1 y el recuento comienza de
nuevo, y cuando se alcanza TA0CCR1, salida PWM es 0.

--TA0CCTL1
Controla la salida PWM, ya sea alta o baja cuando TA0CCR1 est por debajo de la cuenta.

TA0CCTL1 = OUTMOD_7;// reinicio TA0CCR1 / set


// alta tensin por debajo TA0CCR1 cuenta y
baja tensin cuando el pasado
TA0CCR0 = 8 (0-8) perodo de 9 garrapatas
TA0CCR1 = 2 ciclo (0-2) deber 3/9 = 33%
Se genera ciclo de trabajo 33%
Relo
j

TA0CCR0

TA0CCR1

Perodo

Ciclo de
trabajo

PW
M

10

11

12

13

14

15

16

17

18

19

20

21

Anda mungkin juga menyukai