-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.
-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.
#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
}
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.
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
--TA0CCTL1
Controla la salida PWM, ya sea alta o baja cuando TA0CCR1 est por debajo de la cuenta.
TA0CCR0
TA0CCR1
Perodo
Ciclo de
trabajo
PW
M
10
11
12
13
14
15
16
17
18
19
20
21