Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
1
Microcomputadoras MSP430
2
Microcomputadoras MSP430
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.
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.
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.
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
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.
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.
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:
5
Microcomputadoras MSP430
6
Microcomputadoras MSP430
Cada bit del registro PxIE permite la solicitud de interrupción asociada con la bandera de la
interrupción correspondiente PxIFG;
Este registro de lectura y escritura selecciona la transición en que se produzca una interrupción
para el pin correspondiente de E/S
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.
7
Microcomputadoras MSP430
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.
8
Microcomputadoras MSP430
𝑉𝑖𝑛 − 𝑉𝑅−
𝑁𝐴𝐷𝐶 = 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.
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.
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.
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.
9
Microcomputadoras MSP430
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.
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.
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
Reinicio de conversión
Detener conversiones
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.
11
Microcomputadoras MSP430
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:
Interrupciones en el ADC10
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.
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.
El sistema del Temporizador es fundamental para casi cualquier aplicación embebida. Los
temporizadores se utilizan en aplicaciones para:
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.
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).
13
Microcomputadoras MSP430
Registros
BTCTL, Registro de Control Timer Básico 1 Control
7 6 5 4 3 2 1 0
Bit Descripción
14
Microcomputadoras MSP430
7 0
BTIE
Bit Descripción
7 BTIE Interrupcion de Habilitación del Timer Basico 1 cuando BTIE = 1
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.
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);
16
Microcomputadoras MSP430
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
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
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/(TxCCR02];
15 10 9 8
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 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.
Modo Comparar
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.
1: Set
2: Toggle/Reset
3: Set/Reset
4: Toggle
5: Reset
6: Toggle/Set
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.
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