Você está na página 1de 21

Microcomputadoras MSP430

MSP430
Introducción
Los tipos de dispositivos, tales como un microprocesador, microcontrolador, procesador,
procesador digital de señales (DSP), entre otros, de una cierta manera, están relacionados con
el mismo dispositivo - el ASIC (Aplicación Specific Integrated Circuit). Cada dispositivo de
procesamiento ejecuta instrucciones, siguiendo un programa determinado aplicado a las
entradas y compartiendo características arquitectónicas desarrolladas a partir de los primeros
microprocesadores creados en 1971. En las tres décadas después del desarrollo del primer
microprocesador, grandes desarrollos e innovaciones se han hecho en este campo de la
ingeniería. Cualquiera de los términos utilizados en el principio de esta sección son correctos
para definir un microprocesador, aunque cada uno tiene diferentes características y
aplicaciones.

La definición de un microcontrolador es algo difícil debido a la naturaleza constantemente


cambiante de la industria del silicio. Lo que hoy consideramos un microcontrolador con
capacidades medianas es varios órdenes de magnitud más potente que el equipo utilizado en
las primeras misiones espaciales. Sin embargo, algunas generalidades pueden ser hechas
como para que caracteriza a un microcontrolador. Típicamente, los microcontroladores son
seleccionados para sistemas de proyectos embebidos, es decir, sistemas de control con un
número limitado de entradas y salidas cuando el controlador es embebido en un sistema.

El concepto de SoC (system-on-chip) programable inició en 1972 con la microcomputadora


TMS1000 de 4 bits desarrollado por Texas Instruments (TI), y en esos días, era ideal para
aplicaciones tales como calculadoras y hornos. Este término se cambió a Unidad de
microcontrolador (MCU), que era más descriptivo de una aplicación típica.

Hoy en día, MCUs están en el corazón de muchos sistemas físicos, con mayores niveles de
integración y la capacidad de procesamiento con bajos niveles de consumo de energía.

La siguiente lista presenta una serie de cualidades que definen a un microcontrolador:

 Costo: Por lo general, los microcontroladores son de gran volumen, dispositivos de


bajo costo;
 Frecuencia de reloj: En comparación con otros dispositivos (microprocesadores y
DSPs), los microcontroladores utilizan una frecuencia de reloj de baja.
Microcontroladores hoy pueden correr hasta 100 MHz / 100 Millones de instrucciones
por segundo (MIPS).
 Consumo de energía: órdenes de magnitud inferior a un DSP y a un MPU;
 Bits: 4 bits (dispositivos más antiguos) a 32 bits en los dispositivos;
 Memoria: memoria disponible limitada, por lo general menos de 1 MByte;
 Entrada/Salida (I/O): Cuenta desde pocos hasta muchos pines (8-150) de I/O.

La Figura 1 muestra un microcontrolador que cumpla con los criterios anteriores.

1
Microcomputadoras MSP430

Fig. 1 Microcontroladores de Texas Instruments MSP430F169.

Principales características de un microcontrolador MSP430

Aunque hay variantes en la familia de dispositivos, un microcontrolador MSP430 puede


caracterizarse por:

 Bajo consumo de energía:


 0.1 µA para la retención de datos en la memoria RAM;
 0.8 µA para el funcionamiento del reloj en modo operación tiempo real;
 250 µA / MIPS en funcionamiento activo.
 Voltaje de funcionamiento bajo (de 1,8 V a 3,6 V).
 < 1 µs de reloj de puesta en marcha.
 < 50 nA de corriente de fuga del puerto.
 Potencia Cero Caida de voltaje en Reset (BOR).
 Dispositivo analógico en el Chip:
 Convertidor Analógico Digital de 10/12/16-bit (ADC);
 Convertidor Digital Analógico de 12 bits (DAC);
 Temporizadores con Compuerta de comparadores;
 Amplificadores Operacionales (OP Amps);
 Supervisor del Voltaje de Alimentación (SVS).
 CPU con arquitectura RISC de 16 bits:
 Procesamiento de instrucciones en cualquiera de los bits, bytes o palabras;
 Nucleo compacto diseñado para reducir el consumo de energía y su costo;
 Compilador eficiente;
 27 instrucciones básicas;
 7 modos de direccionamiento;
 Capacidad extendida dl vector de interrupciones.
 Flexibilidad:
 Memoria hasta de 256k en la Flash Programable(ISP);
 Opción hasta 100 pines;
 USART, I2C, Temporizadores;
 Controlador LCD;
 Emulador incorporado.

2
Microcomputadoras MSP430

El rendimiento del microcontrolador está directamente relacionada con el bus de datos de 16


bits, los 7 modos de direccionamiento y el conjunto de instrucciones reducido, lo que permite
un código de programación más compacto y corto para una rápida ejecución. Estas familias
de microcontroladores comparten un núcleo del CPU de 16 bits (Central Processing Unit), tipo
RISC, periféricos inteligentes, y un sistema de reloj flexible. Emplea una arquitectura Von
Neumann que interconecta comúnmente los Buses de direcciones de memoria (MAB) y el bus
de datos de memoria (MDB).

Fig. 2. Arquitectura del MSP430.

Unidad Central de Procesos (CPU del MSP430)

La arquitectura de tipo RISC de la CPU se basa en un conjunto breve de instrucciones (27


instrucciones), interconectados por un conjunto de instrucciones de 3 etapas para codificar la
instrucción. La CPU tiene una ALU de 16 bits, cuatro registros dedicados y doce registros de
trabajo, que hace que el MSP430 sea un microcontrolador de alto rendimiento adecuado para
aplicaciones de baja potencia. La adición de doce de registros de trabajo de propósito general
ahorra ciclos de CPU, al permitir el almacenamiento de valores y variables utilizadas con
frecuencia en vez de utilizar la memoria RAM.

El conjunto de instrucciones ortogonal permite el uso de cualquier modo de direccionamiento


para cualquier instrucción que hace que la programación sea clara y coherente, con pocas
excepciones, lo que aumenta la eficiencia del compilador para lenguajes de alto nivel, como
C.
3
Microcomputadoras MSP430

Unidad Aritmética Lógica (ALU)

El MSP430 CPU incluye una unidad lógica aritmética (ALU) que se encarga de las operaciones
de suma, resta, comparación y lógicas (AND, OR, XOR). Las operaciones de la ALU pueden
afectar las banderas del desbordamiento, del cero, del negativo, en el registro de estado.

Registros de la CPU del MSP430

La CPU incorpora dieciséis registros de 16 bits:


 Cuatro registros tiene funciones dedicadas (R0, R1, R2 y R3);
 Hay 12 registros de trabajo para uso general (R4 a R15).

R0: Contador de Programa (PC)

El contador de programa de 16 bits (PC/R0) apunta a la siguiente instrucción para ser leída
por la memoria y ejecutada por la CPU. El contador de programa es implementado por el
numero de bytes usados por la instrucción (2, 4, o 6 bytes). Es importante recordar que el PC
está alineado en direcciones pares, porque las instrucciones son de 16 bits, a pesar de que las
direcciones de memoria individuales contienen valores de 8 bits.

R1: Puntero de Pila (SP)

El puntero de pila (SP/R1) se encuentra en R1.

Primero: la pila puede ser utilizado por el usuario para almacenar datos para su uso posterior
(instrucciones: almacenar a través de PUSH, recuperar mediante POP);

Segundo: la pila puede ser utilizado por el usuario o por el compilador para los parámetros de
subrutinas (PUSH, POP en llamadas a la rutina; direcciona vía el cálculo del offset del puntero
de la pila (SP) en el llamado a una subrutina);

Tercero: utilizado por llamadas a subprogramas para almacenar el valor del contador de
programa para el retorno al finalizar la subrutina (RET);

Cuarto: utilizado por interrupción, el sistema almacena el valor real de PC, y luego el contenido
del registro de estado actual (en la parte superior de la pila) al regreso de interrupción (RETI),
el sistema recibe el mismo estado que tenía justo antes de que ocurriera la interrupción
(siempre y cuando no ha cambiado el valor de TOS) y el mismo valor del contador del programa
de la pila.

R2: Registro de Estados (SR)

El Registro de estado (SR/R2) guarda los bits de estado y de control. Los indicadores del
sistema se cambian automáticamente por la CPU en función del resultado de una operación
en un registro. Los bits reservados de la SR se utilizan para apoyar el generador de constantes.

4
Microcomputadoras MSP430

R2/R3: Registro del Generador de Constantes (CG1/CG2)

Dependiendo del valor de la fuente de registro del modo de direccionamiento (As), seis
constantes comúnmente pueden ser generadas sin una palabra de código o sin un código de
acceso a la memoria para recuperarlos. Esta es una característica muy poderosa, que permite
la implementación de instrucciones emuladas, por ejemplo, en lugar de implementar una
instrucción de núcleo para un incremento, se utiliza el generador constante.

R4 - R15: Registros de Propósito General.

Estos registros de propósito general se utilizan para almacenar valores de datos, indicadores
de dirección, o los valores del índice y se puede acceder con bytes o palabras de instrucciones.

Configuración de los Puertos Generales I/O

Registros
Independiente del tipo de puerto de E/S, la configuración de la operación de puerto se define
mediante el software usando los siguientes registros:

Registros de Dirección (PxDIR)


 Registros de 8 bits que Lee / Escribe
 Selecciona la dirección del correspondiente pin de E/S, sin tener en cuenta la función
seleccionada en el Pin (de uso general E/S o como una función especial de E/S);
 Otras funciones de módulo deben ajustarse según se requiera por los otros módulos;
 Configuración del registro PxDIR:
o Bit = 1: El pin del puerto se configura como una salida;
o Bit = 0: el pin del puerto se configura como una entrada.

Registros de Entrada (PxIN)


 Cada bit de estos registros de sólo lectura refleja la señal de entrada en el pin de E/S
correspondiente (pin configurado como propósito general E/S);
 Configuración del registro PxIN:
o Bit = 1: La entrada es alta;
o Bit = 0: La entrada es baja;
 Consejo: Evite escribir a estos registros de sólo lectura, ya que se da lugar a un aumento
del consumo de corriente.

Registros de salida (PxOUT)


 Los registros de salida son de lectura y escritura. Cada bit de estos registros refleja el
valor escrito en el pin de salida correspondiente.
 Configuración PxOUT:

5
Microcomputadoras MSP430

o Bit = 1: La salida es alta;


o Bit = 0: La salida es baja.
 La familia 2xx ofrece la característica adicional de que cada E/S tiene una resistencia
pullup / pulldown que se puede programar individualmente. Si la resistencia pullup /
pulldown del pin es habilitada, el correspondiente bit en el registro PxOUT selecciona el
pull-up o pull-down:
o Bit = 1: El pin esta puesto en alto;
o Bit = 0: El pin esta puesto en bajo.

Registro de Habilitación de la Resistencia Pull-up/Pull-down (PxREN)


 Se aplica sólo a la familia 2xx.
 Cada bit de este registro activa o desactiva la resistencia pullup/pulldown del correspondiente
pin E/S.
 Configuración del registro PxREN:
o Bit = 1: Resistencia Pullup/pulldown Habilitado;
o Bit = 0: Resistencia Pullup/pulldown deshabilitado.

Registro de selección de funciones: (PxSEL) y (PxSEL2)


 Algunos pines del puerto son multiplexados con otras funciones del módulo periférico
(ver la ficha técnica específica del dispositivo);
 Los bits: (PxSEL) y (PxSEL2 - 2xx familia y algunos dispositivos de la familia 47x (x)),
se utilizan para seleccionar la función del pin: Puerto de propósito general E/S o función
del módulo periférico.
 Configuración del registro PxSEL:
o Bit = 0: la función de E/S es seleccionada para este pin.
o Bit = 1: la función del módulo periférico es seleccionada para este pin.
 Los dispositivos de la familia 2xx proporcionan el bit PxSEL2 para configurar las
características adicionales del dispositivo. La combinación PxSEL y PxSEL2
proporciona la siguiente configuración de los dispositivos 2xx:
o Bit = 0: la función de E/S es seleccionada para este pin.
o Bit = 1: la función del módulo periférico es seleccionada para este pin.

Función del Pin PxSEL PxSEL2 Pin


0 0 Selecciona la función de E/S de propósito general
0 1 Selecciona la función del módulo periférico primaria
1 0 Reservado (Vea la hoja de datos específica del dispositivo)
1 1 Selecciona la función del módulo periférico secundario
 Nota: Cuando los puertos P1 y P2 están configurados para la función del módulo
periférico (PxSEL = 1 y/0 PxSEL2), las interrupciones están deshabilitadas.

6
Microcomputadoras MSP430

Configuración de los Puertos Generales I/O para aceptar


interrupciones externas

Puertos que pueden aceptar interrupciones (P1 y P2)


Cada pin de los puertos P1 y P2 puede generar una petición de Interrupción y es configurable
usando los registros PxIFG, PxIE, y PxIES. De igual manera los puertos hacen uso de los
registros para su configuración que como puertos no interrumpibles que son PxDIR, PxIN,
PxREN, PxSEL1, PxSEL2 y PxOUT, pero con estos tres registros adicionales:

Habilitar Interrupción (PxIE)

Registro de Lectura y escritura para habilitar la interrupción mediante pines individuales;

Configuración del PxIE:


 Bit = 1: La interrupción es habilitada;
 Bit = 0: La interrupción es deshabilitada.

Cada bit del registro PxIE permite la solicitud de interrupción asociada con la bandera de la
interrupción correspondiente PxIFG;

Escribir en PxOUT y/o PxDIR puede resultar en el establecimiento de la bandera en PxIFG.

Registro de Selección de Transición de la Interrupcion (PxIES)

Este registro de lectura y escritura selecciona la transición en que se produzca una interrupción
para el pin correspondiente de E/S

Configuración del PxIES:

 Bit = 1: la bandera de interrupción se establece en una transición de alto a bajo;


 Bit = 0: la bandera de interrupción se establece en una transición de bajo a alto.

Registro de Bandera de Interrupción (PxIFG)

En este registro de lectura y escritura, los bits se coloca automáticamente cuando la transición
de la señal programada (Flanco) se produce en el correspondiente Pin de E/S.

Cada Bit de la bandera PxIFG se puede colocar por medio de software, lo que permite generar
interrupciones por software.

Cada Bit de la bandera PxIFG se debe resetear mediante software.

Configuración del PxIFG:


 Bit = 0: No hay una interrupción pendiente;
 Bit = 1: Hay una interrupción pendiente.

7
Microcomputadoras MSP430

Configuración del MSP430 para el empleo del convertidor


analógico digital

El módulo ADC10 incluido en el MSP430 permite un soporte rápido, el convertidor analógico-


Digital de 10 bits. El módulo implementa un:

 El núcleo SAR es de 10 bits


 Control de selección de muestreo
 Generador de Referencia.
 El Controlador de transferencia de datos (DTC) manipula automática de los resultados
de la conversión (conversión y almacenamiento de muestras del ADC, sin intervención
de la CPU).

Las características del ADC10 incluyen:

 Mayor que 200 ksps de la máxima tasa de conversión;


 Convertidor monotónica de 10 bits sin códigos;
 Muestreo y retención, con períodos de muestreo programables;
 Iniciación de conversión por software o mediante el Timer_A;
 Selección mediante software del voltaje de referencia del Chip (1,5 V o 2,5 V)
 Selección mediante software de la referencia interna o externa;
 Ocho canales de entrada externos;
 Canales de conversión para sensor de temperatura interno, VCC, y para las referencias
externas;
 Selección de la fuente del reloj de conversión;
 Diversos modos de conversión: canal simple, canal simple repetitivo, secuencial y
secuencial y repetitivo.
 El núcleo del ADC y el voltaje de referencia se pueden apagar por separado;
 Controlador de transferencia de datos para el almacenamiento automático de los
resultados convertidos.

El módulo del ADC10 se configura mediante el software por el usuario.

Núcleo del ADC de 10 bits


El núcleo del ADC convierte una entrada analógica a su representación digital de 10 bits y
almacena el resultado en el registro ADC10MEM.

El rango de conversión analógica se limita a sus límites superior e inferior (VR+ y VR-), dichos
voltajes son programables y se pueden seleccionar.

La salida digital (NADC) es:

 Escala completa: NADC = 03FFh, cuando la señal de entrada ≥ VR+ - 0.5LSB;


 Cero: NADC = 0000h, cuando la señal de entrada ≤ VR- + 0.5LSB.

8
Microcomputadoras MSP430

Resultados de conversión pueden estar en formato binario o formato de complemento a dos.


Cuando se usa el formato binario, la fórmula de conversión para el resultado del ADC está
dada por:

𝑉𝑖𝑛 − 𝑉𝑅−
𝑁𝐴𝐷𝐶 = 1023
𝑉𝑅+ − 𝑉𝑅−

El núcleo del ADC10 se habilita con el bit ADC10ON. Entonces, puede ser configurado por los
dos registros de control, ADC10CTL0 y ADC10CTL1. Estos bits de control sólo pueden
modificarse cuando ENC = 0, ya que este bit debe establecerse para iniciar las conversiones.

Cuando la conversión no está en forma activa, el núcleo se desactiva automáticamente y


vuelve a activar automáticamente cuando sea necesario.

Selección del reloj de conversión


El ADC10CLK se utiliza tanto para el reloj de conversión, como para generar el periodo de
muestreo.

Cada fuente del reloj del ADC10 que dispone se selecciona mediante los bits ADC10SSELx:

 SMCLK;
 MCLK;
 ACLK;
 Oscilador interno ADC10OSC;
 Cada uno se puede dividir por 1-8 usando los bits ADC10DIVx.

El ADC10CLK debe permanecer activo hasta el final de una conversión. Si se quita el reloj
durante una conversión, la operación no se completará, y cualquier resultado no será válido.
Sin embargo, el ADC10OSC es también activado automáticamente cuando sea necesario y se
desactiva cuando no se requiera durante las conversiones.

Entradas y multiplexor del ADC10

El multiplexor de entrada analógica permite la selección de uno de los ocho canales externos
y de las cuatro señales analógicas internas, para que sea el canal para la conversión.

Selección del puerto analógico

Las entradas externas Ax, y las terminales VeREF+ y VREF- están compartidas con los pines
GPIO pines.
Para reducir las corrientes parásitas entre VCC y GND y en consecuencia un mayor consumo
de corriente, el búfer del pin del puerto de entrada / salida se puede desactivar desde el puerto
del buffer del pin configurando los bits ADC10AEx.

Generador del voltaje de referencia

9
Microcomputadoras MSP430

El voltaje de referencia interno (1.5 V o 2.5 V) se puede seleccionar mediante la deshabilitacion


o habilitación a través del bit REFON, respectivamente. Este generador del voltaje de
referencia interno está diseñado para aplicaciones de baja potencia, que consiste en una
fuente de voltaje y un buffer separado. El buffer puede ser habilitado o deshabilitado,
dependiendo del estado de la conversión, puede ser activo o inactivo, respectivamente.

El buffer interno de referencia se selecciona mediante la velocidad y la potencia. (por ejemplo:


fconversión ≤ 50 ksps y ADC10SR = 1 → Ibuffer ≈ 50% de reducción). El tiempo de establecimiento
total cuando se REFON = 1 es ≈ 30 µs.

El voltaje de referencia interno también se puede utilizar externamente (PIN VREF+), mediante
la desactivación del bit de REFOUT. Las referencias externas pueden suministrar VR+ y VR- o
utilizar VCC como referencia. En estos casos, la referencia interna puede estar apagado para
ahorrar energía. Para utilizar una referencia positiva externa VeREF +, los bits SREFx deben ser
activadas.

Tiempo de muestro y la conversión

Una conversión de analógico-digital es iniciada en el flanco de subida de la señal de muestreo


de entrada SHI. La fuente de SHI (Selección de los bits SHSx) puede ser:

 Bit ADC10SC;
 Salida del Timer_A de la unidad 1;
 Salida del Timer_A de la unidad 0;
 Salida del Timer_A de la unidad 2.

La polaridad de la señal de la fuente SHI puede invertida por el bit ISSH.

Los bits de SHTx seleccionan el período de muestreo, tsample, serán 4, 8, 16, o 64 ciclos de
ADC10CLK. Los temporizadores de muestreo colocan al SAMPCON en alto para seleccionar
el periodo de muestreo después de sincronizarse con ADC10CLK. Por lo tanto, el tiempo de
muestreo total es: 𝑡𝑡𝑜𝑡 = 𝑡𝑠𝑎𝑚𝑝𝑙𝑒 + 𝑡𝑆𝑌𝑁𝐶

Modos de conversión

El ADC10 tiene cuatro modos de operación, los cuales son seleccionados por los bits
CONSEQx:

 Canal simple, simple conversión: Una simple conversión para el canal seleccionado por
los bits INCHx, el resultado se almacena en los registros ADC10MEM;
 Canales secuenciales: Una conversión en múltiples canales que comienzan con el canal
seleccionado por los bits INCHx y decrementa hasta el canal A0, el enlace de un número
específico de registros ADC10MEM y para después de la conversión del canal A0;
 Canal simple repetidos: Un simple canal seleccionado por los bits INCHx se convierte
en varias ocasiones hasta que se detenga, almacena el resultado en el registro
ADC10MEM;
 Canales secuenciales repetidos: conversiones repetidas a través de múltiples canales,
comenzando con el canal seleccionado por los bits INCHx y decrementa hasta el canal

10
Microcomputadoras MSP430

A0. Cada resultado de ADC se escribe en ADC10MEM. La secuencia termina después


de la conversión del canal A0, y la siguiente señal de disparo vuelve a iniciar la
secuencia.

Reinicio de conversión

Las conversiones sucesivas pueden comenzar de forma automática y muy rápidamente


cuando MSC = 1 y CONSEQx > 0. El primer flanco de subida de la señal de SHI desencadena
la primera conversión y las siguientes conversiones se disparan automáticamente tan pronto
como se complete la conversión anterior, sin necesidad de flancos ascendentes adicionales
en SHI.

Detener conversiones

Para detener las conversiones depende del modo de operación:

Modo Canal simple conversión simple: Se sondear el bit ADC10BUSY hasta que se resetee y
que resetee el bit ENC;
Modo canal simple repetido: Resetear el bit ENC;
Modo canales secuenciales o modo canales secuenciales repetidos: Reseterar el bit ENC.
Cualquier modo de conversión puede ser detenido de inmediato al resetear los bits CONSEQx
y ENC. Sin embargo, los datos de la conversión no son fiables.

Controlador de transferencia de datos (DTC)

El DTC (ADC10DTC1 ≠ 0) transfiere automáticamente los resultados de la conversión de


ADC10MEM a otras ubicaciones de la memoria en el chip, cada vez que el ADC10 completa
una conversión y carga el resultado a ADC10MEM. Dado que se requiere una MCLK CPU, si
la CPU está activada durante este período, se detendrá para asegurar que la transferencia se
haya completado. Además, hay que asegurarse de que no hay conversión activa o secuencia
está en curso (ADC10 ocupado) durante el inicio de transferencia de DTC.

El DTC se puede configurar para:

 Modo de Transferencia de Un-Bloque (ADC10TB = 0): El valor de n en ADC10DTC1


define el número total de las transferencias de un bloque. El bloque inicia en la dirección
por el registro ADC10SA registro de 16 bits y termina en ADC10SA+2n-2.
 Modo de Transferencia de Dos-Bloques (ADC10TB = 1): El valor de n en ADC10DTC1
define el número de transferencias de un bloque. El rango de dirección del primer bloque
se define por el registro ADC10SA de 6 bits y termina en ADC10SA+2n-2. El rango de
direcciones para el segundo bloque se define como SA+2n a SA+4n-2.

Una transferencia continua (ADC10CT = 1) indica que el DTC no se detendrá después de un


bloque o (modo de un solo bloque) o dos bloques (modo de dos bloques) se hayan transferido.
Las transferencias continúan en el bloque uno.

11
Microcomputadoras MSP430

Sensor de temperatura Integrado

El canal de entrada analógica INCHx = 1010 usa el sensor de temperatura que se encuentra
integrado en el chip. Su función de transferencia que relaciona el voltaje de entrada, V Temperature
[V] a la temperatura, T [º C], está dada por:

𝑉𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 = 0.00355 𝑥 𝑇 + 0.986

Cuando se utiliza el sensor de temperatura, se debe de tener en cuenta lo siguiente:

 El período de muestro debe ser mayor que 30 µs;


 Como el error del offset es grande, las aplicaciones deben incluir la calibración;
 Seleccionando INCHx = 1010, cambia automáticamente en el chip del voltaje de
referencia como una fuente de voltaje.
 La referencia seleccionada para la conversión de la temperatura empleada con el
sensor integrado son el mismo que con otros canales.

Interrupciones en el ADC10

Una interrupción y un vector de interrupción están asociado con el ADC10.

 Cuando el DTC no se utiliza (ADC10DTC1 = 0): ADC10IFG es colocado en 1, cuando


los resultados de la conversión se en ADC10MEM.
 Cuando el DTC se utiliza (ADC10DTC1> 0): ADC10IFG es colocado en 1, cuando se
complete un bloque de transferencia y el contador de trasferencia interna sea n = 0.

Si tanto el ADC10IE y los bits GIE son colocador en 1, entonces la bandera ADC10IFG genera
una petición de interrupción. La bandera ADC10IFG es automáticamente reseteada cuando la
solicitud de interrupción es atendida o también puede ser reseteada por software.

Configuración del MSP430 para el empleo del Timers


El correcto funcionamiento del Sistema de temporización es esencial para el buen
funcionamiento de una aplicación en tiempo real. La definición de temporización puede
establecerse como el procesamiento de los datos de información durante la ejecución de un
programa de aplicación. Las implementaciones del reloj varían entre los dispositivos de la
familia MSP430. Cada dispositivo ofrece diferentes fuentes de reloj, controles y usos. Este
documento trata de los controles de reloj incluidos en las plataformas utilizadas.

La familia MSP430 4xx tiene dos contadores de propósito general de 16 bits o de 8 bits y
temporizadores de eventos, llamados Timer_A, Timer_B, y un temporizador básico. El módulo
del temporizador Básico sólo se implementa en los Dispositivos 4xx. La familia de dispositivos
2xx también tiene Timer_A y Timer_B, pero las señales de reloj son proporcionados por el
módulo del reloj básico +.

Los temporizadores pueden recibir un reloj interno o externo. El Timer_A y Timer_B también
incluyen múltiples capturas independientes y bloques de comparación, con capacidades de
12
Microcomputadoras MSP430

interrupción.

Los bloque de captura y comparar son adecuados para aplicaciones tales como
temporizadores de eventos y Modulación por ancho de pulso (PWM), respectivamente.

Este apartado se centra principalmente en la configuración y el funcionamiento de los


temporizadores y sus diferentes usos, además se describe el módulo de reloj básico+ (BCS+),
sus tres registros direccionables, los cuales son totalmente controlable por software. Esto
permite que las fuentes de reloj para sean configuradas por uno o dos osciladores
(dependiendo del dispositivo) o por cristales o resonadores externos, tan bien como por el
oscilador interno controlado digitalmente (DCO). El DCO permite una frecuencia de trabajo
de hasta 16 MHz, menor consumo de energía y menor tiempo de inicio.

El sistema del Temporizador es fundamental para casi cualquier aplicación embebida. Los
temporizadores se utilizan en aplicaciones para:

 Generar eventos de tiempo de periodo fijo;


 Permitir una activación periódica del modo de suspensión;
 Contar flancos de una señal;
 Reemplazar bucles de retardo con llamadas al temporizador para que el CPU duerma,
consumiendo mucha menos energía.

Las señales de reloj de los dispositivos de la familia MSP430x4xx son controlados por dos
conjuntos de registros. El primer conjunto de registros configura las señales de baja
frecuencia para ser usada por los módulos periféricos. Estos registros, a llamados Registros
de Control del Timer básico (BTCTL), Contador 1 del Timer Básico (BTCNT1) y el control del
Contador 1 del Timer Básico (BTCNT2), el cual controla el módulo del temporizador básico 1.

El segundo conjunto de registros está dedicado a la configuración del sistema de relojes de


propósito general. Forman parte del Control del Sistema de Reloj (SCFQCTL), Reloj del
Sistema Integrador de frecuencia 0 (SCFI0), Reloj del Sistema Integrador de frecuencia 1
(SCFI1), y los dos registros de control del bucle bloqueado en frecuencia, FLL + CTL0 y FLL
+ CTL1.

Timer Básico 1

El módulo Timer básico 1 está formado por dos temporizadores independientes de 8 bits:
Contador Temporizador Básico 1 (BTCNT1) y Contador Temporizador Básico 1 (BTCNT2), que
se pueden usar en cascada para formar un temporizador de 16 bits (seleccionable por software
por el registro de configuración BTCTL).

Las principales características de este módulo son:

 Reloj para el módulo LCD;


 Adecuado para una implementación RTC;

13
Microcomputadoras MSP430

 Temporizador básico de intervalo;


 Capacidad simple de interrupción.

Estos temporizadores / contadores tienen diferentes aplicaciones:

 BTCNT1: Se utiliza para generar la frecuencia de cuadro para el controlador LCD:


o Registro de 8 bits de Lectura / escritura;
o Fuente de reloj: ACLK;
o Frecuencia de fotogramas seleccionable por software (bits BTFRFQx en la BTCTL
registro), basado en la división ACLK (x);
o flcd = ACLK / x.
 BTCNT2: Se utiliza como un divisor de frecuencia programable con capacidad de
interrupción, para proporcionar alarmas periódicas del CPU periódicas y/o un sistema
de reloj de tiempo real.
o Registro de 8 bits de Lectura / escritura;
o Tres posibles fuentes de reloj: ACLK o SMCLK o ACLK / 256 cuando en cascada
con BTCNT1 (seleccionados por los bits BTSSEL y BTDIV en el registro BTCTL);
o Fuentes interrupción del Timer Básica 1 BTIFG, con un intervalo seleccionado por
los bits BTIPx en el registro BTCTL;

Figura 1. Diagrama a bloques del Timer Básico 1.

Registros
BTCTL, Registro de Control Timer Básico 1 Control

7 6 5 4 3 2 1 0

BTSSEL BTHOLD BTDIV BTFRFQ1 BTFRFQ0 BTIP2 BTIP1 BTIP0

Bit Descripción

7 BTSSEL BTCNT2 selección del reloj (junto con el bit de BTDIV)

14
Microcomputadoras MSP430

6 BTHOLD Basic Timer 1


hold:  BTCNT1 y BTCNT2 activo
BTHOLD =
0
BTHOLD =1  BTCNT1 retenido, si BTDIV = 1
BTHOLD = 1 
BTCNT1 y BTCNT2 retenidos
5 BTDIV Basic Timer 1 Divisor de reloj (junto con el bit BTSSEL selecciona la
señal de reloj BTCNT2):
BTSSEL BTDIV = 0 0  ACLK BTSSEL
BTDIV = 0 1  ACLK/256
BTSSEL BTDIV = 1 0  SMCLK
BTSSEL BTDIV = 1 1  ACLK/256
4-3 BTFRFQx Frecuencia del Cuadro del LCD:
BTFRFQ1 BTFRFQ0 = 0 0  fACLK/32
BTFRFQ1 BTFRFQ0 = 0 1  fACLK/64
BTFRFQ1 BTFRFQ0 = 1 0  fACLK/128
BTFRFQ1 BTFRFQ0 = 1 1  fACLK/256
2-0 BTIPX Intervalo de interrupción del Timer Básico 1:
BTIP2 BTIP1 BTIP0 = 0 0 0  fCLK2 / 2
BTIP2 BTIP1 BTIP0 = 0 0 1  fCLK2 / 4
BTIP2 BTIP1 BTIP0 = 0 1 0  fCLK2 / 8
BTIP2 BTIP1 BTIP0 = 0 1 1  fCLK2 / 16
BTIP2 BTIP1 BTIP0 = 1 0 0  fCLK2 / 32
BTIP2 BTIP1 BTIP0 = 1 0 1  fCLK2 / 64
BTIP2 BTIP1 BTIP0 = 1 1 0  fCLK2 / 128
BTIP2 BTIP1 BTIP0 = 1 1 1  fCLK2 / 256

IE2, Registro 2 de Habilitacion de Interrupción

7 0

BTIE

Bit Descripción
7 BTIE Interrupcion de Habilitación del Timer Basico 1 cuando BTIE = 1

IFG2, Registro 2 de bandera de Interrupción

7 0

BTIFG

Bit Descripción
7 BTIFG Bandera de la Interrupción del Timer Básico 1 BTIFG = 1 cuando
ocurre o está pendiente una interrupción

15
Microcomputadoras MSP430

Timer_A y Timer_B

Los Timer_A y Timer_B son dos contadores de propósito general de 16 bits y temporizadores de
eventos. Existen ligeras diferencias entre los dos temporizadores.

Ambos temporizadores cuentan:

 Temporizador/Contador asíncrono de 16-bit con cuatro modos de funcionamiento:


o Longitud del Timer_A: 16 bits;
o Longitud Timer_B: programable para ser 8, 10, 12, o 16 bits.
o El registro del temporizador / contador, TAR (Timer_A) o TBR (Timer_B)-de ahora
en adelante descrito como TxR- incrementos o decrementos (Dependiendo del
modo de operación) con cada flanco ascendente de la señal de reloj;
o El temporizador puede generar una interrupción cuando se desborda;
o Amplia gama de intervalos de interrupción: 1 / MCLK a 32 segundos.

 Fuente de reloj seleccionable y configurable:


o ACLK, SMCLK, o externamente a través TxCLK o INCLK (seleccionado con los
bits TASSELx);
o La fuente de reloj seleccionada puede, además, ser dividido por 2, 4, u 8
(configuración de bits de IDx).

 Registro de captura / comparar configurable:


o Timer_A tiene tres o cinco registros de captura/comparar;
o Timer_B tiene tres o siete registros de captura/comparar;
o Timer_B Los registros de captura/comparar registros se pueden agrupados.

 Salidas configurables y varias conexiones internas a otros módulos, lo que permite una
respuesta más rápida porque no hay ciclos donde se pierda tiempo mientras se carga
el ISR/ejecuta y evita despertar al CPU, que a su vez ahorra energía:
o Salidas con capacidad de modulación del ancho de pulso (PWM);
o Comparador_A;
o Acceso directo a memoria;
o Convertidor digital a analógico (DAC12);

 Entradas asíncronas y salidas lacheadas:


o Registros de Timer A de captura/comparación no se almacenan, se actualice
inmediatamente cuando se escriben en;
o Registros de Timer B de captura/comparación son de doble búfer con carga
sincronizada.

 Registro de vector de interrupción para la decodificación rápida de todas las


interrupciones del Timer_A y Timer_B.
o TACCR0 (o TBCCR0) Vector de interrupciones para TACCR0 (o TBCCCR0)
CCIFG;
o TAIV (o TBIV) Vector de interrupciones para el resto de las banderas CCIFG y
TAIFG (o TBIFG).

16
Microcomputadoras MSP430

El temporizador tiene cuatro modos de funcionamiento, como se describe en la Tabla 1, seleccionados


con los bits MCX en los registros de control del Timer_A o Timer_B.

Tabla 1. Modos de operación del Timer_A y Timer_B.


MCx Mode Description
00 Parado Se detiene el temporizador
01 Ascendente Modo cuenta ascendente repetidamente (Desde 0x0000 hasta el
valor del registro TACCR0 or TBCCR0)
10 continuo Modo cuenta continuo repetidamente (Desde 0x0000 hasta 0xFFFF)

11 Ascendente/ Modo cuenta ascendente / descendente repetidamente (Desde


Descendente 0x0000 a el valor del registro TACCR0 o TBCCR0 y regresa hasta
cero)

Características de los modos


Modo Ascendente

Las principales características del modo ascendente son:

 TAR cuenta de modo ascendente con cada pulso de reloj hasta que alcanza el valor
del registro TACCR0 (o TBCCR0);
 La bandera de interrupción del TACCR0 (o TBCCR0), CCIFG, se coloca en “1” cuando
el temporizador llega al valor de TACCR0 (o TBCCR0);
 Cuando se alcanza este valor, EQU0 = 1 (se reinicia TAR para contar desde cero);
 La bandera de interrupción TAIFG (o TBIFG) es puesta en “1” cuando el valor del
temporizador del contador de TACCR0 (o TBCCR0) es cero.
 Período de interrupción: tINT = 1/[fCLK/Prescaler/(TxCCR0+1)]
o tINT: TxIFG period de interrupción [sec];
o fCLK: frecuencia de la Fuente de reloj [Hz];
o Prescaler: Divisor (IDx bits).

Modo continúo

Las principales características del modo continuo son:

 TxR cuenta con cada pulso de reloj hasta 0xFFFF (65536 series);
 Cuando se alcanza este valor, el siguiente impulso de reloj se reiniciará el TxR a contar
desde cero;
 La bandera de interrupción TxIFG (o TxIFG) se coloca a “1” cuando el temporizador
cuenta de 0xFFFF a cero.
 Período de interrupción: tINT = 1/[fCLK/Prescaler/65536];

Modo ascendente/descendiente

Las principales características del modo ascendente/descendente son:

17
Microcomputadoras MSP430

 TxR cuenta con cada pulso de reloj hasta que alcanza el valor en el registro TxCCR0;
 La bandera de interrupción TxCCR0, CCIFG, se establece cuando la cuenta del
temporizador va de TxCCR0 - 1 a TxCCR0;
 Cuando se alcanza este valor, la cuenta se invierte, comenzando en el siguiente pulso
de reloj para disminuir hasta cero;
 La bandera de interrupción TxIFG se establece cuando el temporizador termina la
cuenta descendente cuando pasa de 0x0001 a 0x0000;
 período de interrupción: tINT = 1/[fCLK/Prescaler/(TxCCR02];

Registros del Timer_A registers

TACTL, Timer_A Control Register

15 10 9 8

Unused TASSEL1 TASSEL0

7 6 5 4 3 2 1 0
ID1 ID0 MC1 MC0 Unused TACLR TAIE TAIFG

Bit Descripción
9-8 TASSELx Timer_A fuente de reloj:
TASSEL1 TASSEL0 = 00  TACLK
TASSEL1 TASSEL0 = 01  ACLK
TASSEL1 TASSEL0 = 10  SMCLK
TASSEL1 TASSEL0 = 11  INCLK
7-6 IDx Divisor de la señal de reloj:
ID1 ID0 = 00  /1
ID1 ID0 = 01  /2
ID1 ID0 = 10  /4
ID1 ID0 = 11  /8
5-4 MCx Modo de operación del reloj del Timer:
MC1 MC0 = 00  Mode parada
MC1 MC0 = 01  Modo ascendente
MC1 MC0 = 10  Modo Continuo
MC1 MC0 = 11  Modo Ascendente/Descendente
2 TACLR Limpia el Timer_A cuando TACLR = 1
1 TAIE Habilita la interrupción del Timer_A cuando TAIE = 1
0 TAIFG Bandera de interrupción del Timer_A cuando TAIFG = 1

Bloques de Captura/Comparación

El TIMER_A y el TIMER_B contienen bloques de captura y de comparación independientes, TACCRX


(o TBCCRX) que pueden utilizarse para capturar el contenido del registro del contador del tiempo, en
el momento de un evento, o para generar un evento cuando el contenido del registro contador de
tiempo corresponden a contenido de registro de captura/comparar, por ejemplo, para generar
intervalos de tiempo.

El modo se selecciona mediante el bit PACt para cada registro de control del Captura/Comparar,
TACCTLx (o TBCCTLx).

18
Microcomputadoras MSP430

Modo Captura

El modo de captura se utiliza para medir el período de eventos en el tiempo, con una mínima
intervención de la CPU.

La configuración de modo de captura se logra mediante la realización de los siguientes pasos:

 Escribir 1 en el bit de la PAC para seleccionar el modo de captura;


 Escribir 1 en el bit SCS para sincronizar la captura con el siguiente reloj temporizador
(recomendado para evitar las condiciones de carrera);
 La señal de entrada es muestreada por el CCIxA (o CCIxB) de entrada, seleccionado
por los bits CCISx en el Registro de Control de Captura / Comparar, TACCTLx (o
TBCCTLx);
 El flanco de captura de la señal de entrada (subida, bajada, o ambos) es seleccionado
por los bits CMX;
 Cuando se detecta el borde correspondiente de la línea de entrada seleccionado, el
valor en el registro del temporizador está lacheado a los registros TACCRx (o TBCCRx),
proporcionando una marca de tiempo para el evento;
 La bandera de interrupción se coloca en “1” en el CCIFG;
 El bits COV (= 1) controla un evento de desbordamiento cuando una segunda captura
se lleva a cabo antes de que el valor de la primera captura que se lee.

Modo Comparar

El modo de comparación se utiliza para la generación de impulsos o interrupciones a intervalos


específicos de tiempo. Una de sus aplicaciones comunes es la de generar una señal de salida de
modulación del ancho de pulso (PWM).

La operación en modo de comparación está configurada como:

 Se coloca en el bit CAP un cero para seleccionar el modo de comparación;


 TxR cuenta con el valor programado en el registro TxCCRx;
 Cuando el valor del temporizador es igual al valor en el registro TxCCRx, se genera
una interrupción:
o La bandera de interrupción CCIFG está establecida;
o señal interna EQUx = 1 (x es el número del canal CCR).
 EQUx afecta a las señales de salida del comparador OUTx de acuerdo con el modo
de salida (definido por los bits OUTMODx en el registro TxCCTLx- Véase el cuadro
2).
 La señal de entrada CCI está lacheada al SCCI.

La unidad de salida se utiliza para generar señales de salida (tales como señales PWM) basándose en
las señales EQU0 y EQUx . Hay ocho modos de funcionamiento diferentes numeradas de 0 a 7. La
señal OUTx cambia con el flanco de subida del reloj del temporizador para todos los modos , excepto
el modo 0 .

19
Microcomputadoras MSP430

Los modos de operación de salida se describen en la Tabla 2 y los ejemplos de las señales de salida
para diferentes modos de temporizador se presentan en la Figura 2.

Modos de operación de salida son:

 Modos de 2, 3, 6 y 7: la generación de señales de salida PWM:


o Modo 3: señal PWM activa en estado bajo;
o Modo 7: señal PWM activa en estado alto;
o Modos 2 y 6: señales PWM complementarias separadas por una banda muerta
cuando se restablecen las señales (ejemplo de aplicación: puentes H de la unidad
de un motor bi-direccional).
 Modos 1 y 5: solo generación de eventos;
 Modo 4: señal con la mitad de la frecuencia de la señal del temporizador.

Modo Ascendente Modo Continuo Modo


Ascendente/Descendente

1: Set

2: Toggle/Reset

3: Set/Reset

4: Toggle

5: Reset

6: Toggle/Set

Figura 2. Ejemplos de salida de los diferentes modos del temporizador.

Registro de los bloques de Captura/Comparación

La descripción de los siguientes registros se refiere a los registros del Timer_A. Los registros del
Timer_B tienen las mismas características, pero en el Registro de Control Captura / Comparación
los bits tiene diferentes nombres y proporcionan características adicionales.

TACCTLx, Registro de Control de Captura/Comparación del Timer_A

20
Microcomputadoras MSP430
15 14 13 12 11 10 9 8
CM1 CM0 CCIS1 CCIS0 SCS SCCI Unused CAP

7 6 5 4 3 2 1 0
OUTMOD2 OUTMOD1 OUTMOD0 CCIE CCI OUT COV CCIFG

Bit Descripcion
15-14 CMx Modo Captura:
CM1 CM0 = 00  No captura
CM1 CM0 = 01  Captura en el flanco de subida
CM1 CM0 = 10  Captura en el flanco de bajada
CM1 CM0 = 11  Captura en ambos flancos
13-12 CCISx Selección de la entrada de Capturar/comparar:
xCCIS1 CCIS0 = 00  CCIxA
CCIS1 CCIS0 = 01  CCIxB
CCIS1 CCIS0 = 10  GND
CCIS1 CCIS0 = 11  Vcc
11 SCS Captura sincronizada de la señal de entrada con el reloj del
temporizador:
SCS = 0  Captura Asíncrona
SCS = 1  Captura síncrona
10 SCCI Entrada sincronizada captura/compara
8 CAP Modo:
Modo Captura  CAP = 1
Modo Compara  CAP = 0
7-5 OUTMODx Modo Salida:
OUTMOD2 OUTMOD1 OUTMOD0 = 000  Bit OUT
OUTMOD2 OUTMOD1 OUTMOD0 = 001  Set
OUTMOD2 OUTMOD1 OUTMOD0 = 010  Toggle/Reset
OUTMOD2 OUTMOD1 OUTMOD0 = 011  Set / Reset
OUTMOD2 OUTMOD1 OUTMOD0 = 100  Toggle
 Reset
OUTMOD2 OUTMOD1 OUTMOD0 = 101
 Toggle / Set
OUTMOD2 OUTMOD1 OUTMOD0 = 110
 Reset / Set
4 CCIE OUTMOD2
Habilitación OUTMOD1 OUTMOD0
de la interrupción = 111
de Captura/compara cuando CCIE = 1.
3 CCI Entrada Captura/compara
2 OUT Estado de salida
1 COV Sobreflujo de captura cuando COV = 1
0 CCIFG Bandera de la interrupción de Captura/compara CCIFG = 1 cuando la
interrupción está pendiente.

21

Você também pode gostar