Sei sulla pagina 1di 85

Microcontrolador Msp430 M. en C.

Enrique Lpez Ortega IPN ESIME ZACATENCO

Microcontrolador MSP430 de Texas Instruments.

Por M en C. Enrique Lpez Ortega

El msp430 es un microcontrolador de 16 bits muy verstil, que puede realizar operaciones


para 8 y 16 bits, presenta un modelo de programacin fcil de aprender y un mapa de
memoria que no requiere de paginacin, los modos de direccionamiento que maneja
permiten que se puedan usar con cualquier instruccin y en cualquier direccin de
memoria. Esta familia de microcontroladores esta diseada especficamente para
aplicaciones que requieran ser porttiles ya que se alimenta con 3V y tiene formas de
operacin de muy bajo consumo de energa.

El modelo MSP430x20xx tiene las siguientes caractersticas:

Voltaje de alimentacin en el rango de 1.8V a 3.6V


Bajo consumo de potencia
En modo activo 220 uA a 1 MHz , 2.2V
En modo Stand By 0.5 uA
Modo apagado (retencin de RAM) 0.1 uA
5 Modos de bajo consumo
Tiempo de arranque desde Stand By en menos de 1 uS
Arquitectura RISC, 62.5 ns tiempo de ciclo de instruccin (a 16 MHZ)
Varias configuraciones posibles de reloj
Frecuencias internas de 16 MHZ con 4 frecuencias calibradas al +- 1%
Oscilador interno de muy baja frecuencia mediante Cristal de 32 KHz
Mediante Fuente de reloj externa.
temporizador de 16 bit con 2 registros de Captura/Comparacin
Comparador interno para seales analgicas (MSP430x20x1)
Convertidor A/D 10 Bit 200 ksps, con referencia interna Muestreo y retencin
Auto scan y controlador de transferencia de datos(MSP430x20x2)
Convertidor A/D Sigma-Delta de 16 bits con entradas diferenciales
(MSP430x20x3)
Interfaz de comunicacin serie (USI), soporta SPI e I2C(MSP430x20x2) y
(MSP430x20x3)
Se puede seleccionar por software modo Asncrono UART o modo sincrono SPI
En el (MSP430x2xxx ) se puede programar en PCB
No se requiere de voltajes de programacin externos
Proteccin de cdigo con fusibles de seguridad
Proteccin Brownout reset
MSP430F2012, MSP430F2013: 8KB + 256B Flash Memory y 128 B RAM
Disponible en 14-terminales
Literatura base hojas de especificacin SLAU144-E.pdf ( MSP430x2xxx)

1
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Fig. 1 Diagrama de bloques del MSP430F2012

Fig. 2 Terminales del MSP430F2012

Se puede observar de la figura 2 que este modelo de micro tiene 2 puertos el puerto 1 es de
8 bits y el puerto 2 es de 2 bit en total 10 lneas programables como E/S.
Se adelanta que el puerto 1 y el puerto 2, tienen capacidad de interrupcin (IRQ) en c/u de
sus lneas (10 EN TOTAL) y se puede seleccionar el flanco de interrupcin de forma
individual ya sea de subida o de bajada. Tambin se explicara el microcontrolador
MSP430F2274 que cuenta con ms recursos, a continuacin.

2
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El modelo MSP430F2274 tiene las siguientes caractersticas:

Voltaje de alimentacin en el rango de 1.8V a 3.6V


Bajo consumo de potencia
En modo activo 200 uA a 1 MHz , 2.2V
En modo Stand By 0.7 uA
Modo apagado (retencin de RAM) 0.1 uA
5 Modos de bajo consumo
Tiempo de arranque desde Stand By en menos de 6 uS
Arquitectura RISC, 125 ns tiempo de ciclo de instruccin (a 8 MHZ)
Varias configuraciones posibles de reloj
Mediante Varios resistores internos
Mediante resistor externo
Mediante Cristal de 32 KHz
Mediante Cristal de alta frecuencia
Mediante Resonador
Mediante Fuente de reloj externa.
2 temporizador de 16 bit con 3 registros de Captura/Comparacin
Convertidor A/D 10 Bit 200 ksps, con referencia interna Muestreo y retencin
Autoscan y controlador de transferencia de datos
Interfaz de comunicacin serie (USART0)
Se puede seleccionar por software modo Asncrono UART o modo sncrono SPI
En el (MSP430x2xxx ) se puede programar en PCB
No se requiere de voltajes de programacin externos
Proteccin de cdigo con fusibles de seguridad
Proteccin Brownout reset
MSP430F2274: 32KB + 256B Flash Memory y 1KB RAM
Disponible en 38-terminales
Literatura base hojas de datos SLAU144-E.pdf ( msp430x2xxx)

3
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Fig. 3 Diagrama a bloques del MSP430 F2274

Fig. 4 Terminales del microcontrolador MSP430F2274

Se puede observar de la figura 4 que este modelo de micro tiene 4 puertos de 8 bits en total
32 lneas programables como E/S
Se adelanta que el puerto 1 y el puerto 2, tienen capacidad de interrupcin (IRQ) en c/u de
sus lneas (16 EN TOTAL) y se puede seleccionar el flanco de forma individual ya sea de
subida o de bajada.

4
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modelo de Programacin

Son los registros a los cuales tiene acceso el programador, para la familia msp430, se
tienen 16 registros de 16 bits.

Fig. 5 Modelo de programacin del MSP430

El CPU esta integrado por 16 Registros de 16 bits. 4 de los registros, del R0 al R3 estn
dedicados al Contador de programa (PC/R0), Apuntador de pila (SP/R1), registro de Status
(SR/R2) y Registro Generador de constantes (CG/R3) respectivamente, los dems registros
son de propsito general; es decir sirven lo mismo como acumuladores que como registros
apuntadores solamente como variables de almacenamiento temporal.
Los tiempos de operaciones de registro a registro son de 1 ciclo de reloj, los perifricos
pueden ser manejados por todas las instrucciones

Conjunto de instrucciones

5
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El CPU tiene un conjunto de 51 instrucciones con tres formatos y 7 modos de


direccionamiento cada instruccin puede operar con datos de Byte o de Word (16 bits)

La Tabla 1 muestra los tres tipos de formatos de instruccin; los modos de


direccionamiento son listados en la tabla 2. Refirase al captulo 3 de SLAU144E.pdf para
ms detalle.

Mapa de Memoria para el modelo MSP430F201x

Es la forma en que se encuentra organizada la memoria para el MSP430F201x, obsrvese la


ultima columna.
Tabla 3 Mapa de memoria del msp430F201x

El mapa de memoria va desde la direccin 0000h hasta la direccin 0FFFFh es decir 65,536
direcciones totales, en la tabla 3 observamos que la memoria flash (de programa) comienza en
el modelo F201x en la direccin 0F800h y termina en la direccin 0FFFFh, los vectores de
interrupcin se encuentran en las direcciones que van desde 0FFC0h hasta 0FFFFh por eso se
deber preferentemente evitar estas ultimas direcciones para poner cdigo.

La memoria RAM comienza en la direccin 0200h y termina en la direccin 027Fh, la RAM


se utiliza para guardar variables temporales y tambin la utiliza la PILA, el microcontrolador
deber de inicializar su apuntador de pila SP en una localidad de RAM, y se comenta que la

6
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

pila crece hacia abajo por lo que se aconseja que las variables queden por encima de la
direccin cargada en el apuntador de pila.

Mapa de memoria para el modelo MSP430F2274

Tabla 4 mapa de memoria de la familia MSP430x22xx

El mapa de memoria va desde la direccin 0000h hasta la direccin 0FFFFh es decir 65,536
direcciones totales, en la tabla 4 observamos que la memoria flash (de programa) comienza en
el modelo F2274 en la direccin 08000h y termina en la direccin 0FFFFh, los vectores de
interrupcin se encuentran en las direcciones que van desde 0FFC0h hasta 0FFFFh por eso se
deber preferentemente evitar estas ultimas direcciones para poner cdigo.

La memoria RAM comienza en la direccin 0200h y termina en la direccin 05FFh, la RAM


se utiliza para guardar variables temporales y tambin la utiliza la PILA, el microcontrolador
deber de inicializar su apuntador de pila SP en una localidad de RAM, y se comenta que la
pila crece hacia abajo por lo que se aconseja que las variables queden por encima de la
direccin cargada en el apuntador de pila.

Ejemplo de un programa bsico en ensamblador que hace que un led conectado a P1.0
encienda y se apague infinitamente.

;**********************************************************************
; MSP430F20xx Demo - Software Toggle P1.0
;
; Descripcin: Invierte el estado de un led con la operacin XOR en ; P1.0 dentro de un
bucle.
; ACLK = n/a, MCLK = SMCLK = default DCO
;
; MSP430F20xx
; -----------------
; /|\| XIN|-
; || |
; --|RST XOUT|-
; | |
; | P1.0|-->LED
;
; M. Buccini / L. Westlund Traducido Por M. en C. Enrique Lpez O.
; Texas Instruments Inc.

7
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

; October 2005/Agosto 2007


; Built with IAR Embedded Workbench Version: 3.40A
;************************************************************************
*******
#include "msp430x20x3.h" ; Nota quizs se cambie para el 2274.
#define time 50000
;-------------------------------------------------------------------------------
ORG 0F800h ; 8000h para el 2274
;-------------------------------------------------------------------------------
RESET mov.w #0240h,SP ; Inicializa ap. de pila
mov.w #WDTPW+WDTHOLD,&WDTCTL ; Apaga perro Guardin
bis.b #BIT0,&P1DIR ; P1.0 como salida
Otro call #Cambia
jmp Otro ; bucle infinito
;-------------------------------------------------------------------------------------
Cambia
xor.b #BIT0,&P1OUT ; Invierte P1.0
call #tiempo
ret
;----------------------------------------------------------------------------
tiempo mov.w #time,R15 ; Retardo de R15
L1 dec.w R15 ; Decrementa R15
jnz L1 ; Fin?
ret
;---------------------------------------------------------------------
; Vectores de interrupcin
;-------------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 Vector de Reset
DW RESET ;
END
A continuacin el mismo programa en versin lenguaje C

/**********************************************************************
// MSP430F20xx Demo - Software Toggle P1.0
//
// Descripcin; Cambio en P1.0 por realizar la operacin xor en P1.0 en un bucle
//infinito.
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430F20xx
// -----------------
// /|\| XIN|-
// || |
// --|RST XOUT|-
// | |
// | P1.0|-->LED
//
// M.Buccini / L. Westlund Traducido por M en C. Enrique Lpez O. Agosto 2007
// Texas Instruments, Inc
// October 2005

8
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

// Built with IAR Embedded Workbench Version: 3.40A


//*********************************************************************
#include <msp430x20x3.h> // Quiz se tenga que cambiar para el
x227x

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Apaga Perro guardin
P1DIR |= 0x01; // P1.0 como salida
for (;;)
{
volatile unsigned int i;

P1OUT ^= 0x01; // Cambio P1.0 usando OR exclusiva

i = 50000; // Retardo
do (i--);
while (i != 0);
}
}
TABLA 5 VECTORES DE
INTERRUPCION

9
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

2.1 Introduccin a las Entradas y Salidas digitales


Los dispositivos MSP430 pueden tener 6 puertos de E/S digitales implementados P1-P6.
Cada puerto tiene 8 lneas de E/S.(ver hojas de datos del microcontrolador a utilizar). Cada
lnea de E/S se puede configurar de forma independiente como entrada salida, y tambin
cada lnea puede ser leda escrita de forma individual. Los puertos 1 y 2 tienen capacidad
de interrupcin. Cada interrupcin para las lneas E/S de P1 y P2, pueden ser habilitadas
de forma individual y configuradas para interrumpir en flanco de bajada o de subida de la
seal de entrada. Todas las lneas de E/S del P1 tienen un vector de interrupcin nico y
todas las lneas de E/S del P2 tienen un vector de interrupcin nico distinto al del P1.

Las Caractersticas de la E/S digital incluyen:

_Las lneas de E/S se pueden programar de forma independiente


_ Valida cualquier combinacin de entrada o salida
_Registros de entrada y salida de datos independientes
_ Resistores de pull- Up o pull-down individualmente configurables

2.2 Operacin Digital de E/S

Las E/S digitales se configuran mediante el software del usuario. La inicializacin y la


operacin para las E/S digitales se explica en las secciones siguientes.

2.21 Registro de entradas PxIN

Cada bit del registro PxIN, refleja el valor presente en la Terminal E/S correspondiente
cuando la Terminal est configurada como E/S.
Bit=0: La entrada esta en bajo
Bit=1: La entrada est en alto

Nota: Escribiendo en el registro PxIN

Escribir en esos registros de lectura producen un aumento en la corriente de consumo


mientras la escritura esta activa.

2.2.2 Registro de salidas PxOUT


Cada bit en el registro PxOUT es el valor que saldr en la lnea E/S correspondiente
cuando la lnea se configura para funcionar como Salida y el resistor de pull-up/down est
deshabilitado.

Bit = 0: La salida esta en bajo


Bit = 1: La salida esta en alto

Si la resistencia de pull-up/pull-down de la Terminal est habilitada, el bit correspondiente


del registro PxOUT selecciona si la resistencia ser de pull-up o pull-down.
Bit = 0: La resistencia interna se conecta a tierra (pull-down)
Bit = 1: La resistencia interna se conecta a Vcc (pull-up)

Registro de direccin PxDIR

10
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Cada bit del PxDIR selecciona la direccin de la lnea correspondiente de E/S, sin importar
la funcin de la Terminal. La direccin programada en PxDIR debe de corresponder con la
funcin de la Terminal seleccionada.

Bit = 0: La lnea del puerto esta configurada como entrada.


Bit = 1: La lnea del puerto esta configurada como salida.
2.2.4 Registro de habilitacin de resistencia de PullUp/Down (PxREN)

Cada bit del registro PxREN habilita deshabilita la resistencia de pull-up/down de la


correspondiente linea de E/S. El bit correspondiente del registro PxOUT selecciona si la
resistencia es de pull- up pull down

Bit = 0: Resistencia de Pull-up/down deshabilitada


Bit = 1: Resistencia de Pull-up/down habilitada

Para seleccionar si la resistencia es de pull- up o pull down en el bit que corresponda en el


regitro PxOUT

Bit = 0: Resistencia de Pull- down


Bit = 1: Resistencia de Pull-up

2.2.5 Registro de seleccin de funcin ( PxSEL)

La mayora de las veces las terminales del puerto estn multiplexadas con otras funciones
de mdulos perifricos. Ver las hojas de especificaciones del dispositivo especfico para
determinar las funciones de las lneas. Cada bit de PxSEL bit es utilizado para seleccionar
si la terminal trabaja como E/S digital como lnea que pertenece a un perifrico.

Bit = 0: La terminal de trabaja como E/S digital


Bit = 1: La terminal trabaja como lnea de algn perifrico, el hecho de poner PxSELx=1
no configura automticamente la lnea en la direccin que el perifrico requiere, por tanto
hay la necesidad de programar la direccin de la lnea.

Ejemplo: Poner la lnea P1.0 como salida Auxiliar (ACLK )

BIS.B #01h,&P1SEL ; Selecciona la lnea como perifrico


BIS.B #01h,&P1DIR ; Se programa como salida *Requerido*

Nota: Las interrupciones de P1 y P2 , se deshabilitan cuando PxSEL = 1

Cuando cualquier bit de P1SELx o P2SELx se pone a uno, la interrupcin de esa lnea se
deshabilita, por tanto cualquier seal en esa terminal no genera interrupcin sin importar si
fueron habilitadas mediante PxIE.

2.2.6 Interrupciones de los puertos P1 y P2

11
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Cada lnea de los puertos 1 y 2 tienen capacidad de interrupcin., estas se configuran


mediante los registros PxIFG, PxIE, y PxIES .Todas las terminales del P1 tienen un mismo
vector de interrupcin, y as como tambin, las lneas del puerto 2 tienen su vector propio.
Para determinar que Terminal interrumpi al micro utilice los registros PxIFG

2.2.7 Registros de banderas de interrupcin P1IFG, P2IFG

Cada bit del registro PxIFG es una bandera que tiene correspondencia con las lneas de E/S
y estas banderas, se ponen en uno cuando en la terminal de entrada llega el flanco
seleccionado. Cualquiera de estas banderas solicitan una interrupcin cuando el bit
correspondiente PxIE y el bit GIE estn en uno. Cada bit PxIFG debe ser borrado por
programa, tambin es posible escribir estas banderas con uno, de esta forma se generara
una interrupcin mediante programa.

Bit = 0: No hay interrupcin pendiente


Bit = 1: Interrupcin pendiente.

nicamente son causantes de interrupcin las transiciones de estado y no los niveles


estticos. Si cualquier bandera PxIFG llega a uno durante una rutina de servicio de
interrupcin del puerto, es uno despus de la instruccin RETI se ejecuta la rutina de
servicio de interrupcin, entonces se genera otra interrupcin, esto asegura que cada
transicin es reconocida.

Nota: La Bandera PxIFG cambia a uno, cuando se cambian los registros PxOUT o
PxDIR

2.2.7 Registros de seleccin de flanco de interrupcin P1IES, P2IES

Cada bit PxIES selecciona el flanco de interrupcin de la Terminal correspondiente de E/S.


Bit = 0: La bandera PxIFGx es uno con una transicin de bajo a alto.
Bit = 1: La bandera PxIFGx es uno con una transicin de alto a bajo

Nota: Escribiendo en PxIESx


Escribir en los bits de los registros P1IES o P2IES puede resultar en activar la
correspondiente interrupcin.
f
PxIESx PxINx PxIFGx

0-
0-
1-
1-

2.2.8 Registros de habilitacin de interrupciones P1IE, P2IE

Cada bit PxIE habilita la bandera PxIFG asociada.


Bit = 0: La interrupcin est deshabilitada

12
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Bit = 1: La interrupcin est habilitada

2.2.9 Configuracin de las lneas no utilizadas

Las terminales no utilizadas de E/S deben configurarse como lneas de E/S, como salidas y
dejarlas desconectadas en el circuito impreso, para prevenir entradas flotadas y as bajar el
consumo de energa. El estado de la lnea de salida no importa, otra alternativa es activar
la resistencia interna de pull-up/down para prevenir entradas flotadas.

2.2 Registros asociados de los puertos de E/S

A continuacin se muestran todos los registros asociados a los puertos de E/S, los tres
ltimos registros solo existen para los puertos 1 y 2.

Tabla 2.3 Registros de los puertos de E/S


NOMBRE USO

PxSEL Selecciona la lnea es de E/S o asociada a un subsistema

PxDIR Selecciona si la lnea correspondiente ser de entrada o salida

PxIN Registro donde se lee el estado actual de la(s) lnea(s) de entrada

PxOUT Registro donde se escribe(n) la(s) lnea(s) de salida

PxREN Registro donde se habilitan las resistencias internas(solo para lneas


configuradas como entradas)
PxIE Registro donde se habilita(n) la(s) lnea(s) de interrupcin

PxIFG Registro de banderas de interrupcin, el bit correspondiente se pone en 1 al


ocurrir el flanco programado en IES
PxIES Registro donde se programa el flanco que activa la interrupcin 0=subida,
1 = bajada

Recuerde que cada registro es de 8 bits y que cada bit tiene asociado una lnea del puerto x.
As P1SEL .0, tiene asociado el bit 0 del puerto 1.
Nota: todos los registros por reset se ponen en cero.

3.1 Introduccin al temporizador/contador A3


El temporizador A3 es un Temporizador/contador de 16 bits con 3 registros de captura
/comparacin. Este capitulo describe el Temporizador A3 (3 registros de

13
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

captura/comparacin), implementados en los MSP430x2xx, excepto para los


MSP430x20xx.
El temporizador A soporta operaciones de captura/comparacin, salidas PWM e intervalos
de tiempo. El temporizador tiene capacidades de interrupcin, las cuales pueden ser
generadas por el sobre flujo del contador o desde cada uno de los registros de captura y
comparacin.

Caractersticas

Temporizador /Contador asncrono con 4 modos de operacin.


Fuente de reloj seleccionable y configurable
2 3 Registros de Captura/Comparacin
Salidas configurables con capacidad de PWM
Entradas asncronas y salida con retencin
Registro de vector de interrupcin para decodificacin rpida de todas las
interrupciones de temporizador A.

Figura 3.1 Diagrama a bloques del temporizador A3

3.1.1 Temporizador /Contador de 16 bits (TAR)

14
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El registro Temporizador/contador (temporizador) de 16 bits TAR, se incrementa o


decrementa (dependiendo del modo de operacin) con cada flanco positivo de la seal de
reloj. El TAR puede ser ledo escrito por programa. Adicionalmente el temporizador
puede generar una interrupcin cuando llega a su sobre flujo (pasa de su valor mximo de
cuenta, a cero).
El TAR puede ser borrado al poner en uno el bit TACLR, este bit tambin borrara la pre
escala del reloj y la direccin de cuenta en el modo ascendente/descendente.

Nota: Modificando los registros del temporizador A


Se recomienda detener el temporizador antes de modificar su operacin (con excepcin de
Habilitacin de interrupciones, bandera de interrupcin y TACLR) para evitar condiciones
de operacin errneas.

Cuando el reloj del temporizador asncrono con respecto al reloj del CPU, cualquier lectura
desde el TAR debe ser mientras el temporizador no est en operacin, de lo contrario el
resultado se vuelve impredecible. Alternativamente el temporizador, puede ser ledo
muchas veces mientras est operando, y una mayora de votos en programa determinarn la
lectura correcta. Cualquier escritura el TAR tomar efecto de forma inmediata.

3.2 Seleccin de la fuente de reloj y divisin.

El reloj del temporizador puede ser conectado a ACLK, SMCLK o manejado de forma
externa mediante las lneas TACLK o INCLK (ver terminales del microcontrolador). La
fuente de reloj se selecciona mediante los bits TASSELx localizados en el registro de
control del TAR (TACTL).La fuente de reloj seleccionada puede ser pasada directamente
al TAR o ser subdividida en 2,4,8 , esto utilizando los bits IDx localizados en este mismo
registro. El factor de divisin del TAR se pierde al poner en uno el bit TACLR.

3.2.1 Iniciando el temporizador

El temporizador puede ser iniciado o reiniciado en las siguientes formas:


El temporizador cuenta cuando los bits MCx > 0 y la fuente del reloj est activa.
Cuando el modo de cuenta del temporizador es ascendente (up) ascendente/descendente
(up/down), el temporizador puede ser detenido escribiendo un 0 en el registro TACCR0.
El temporizador puede ser restablecido por escribir un valor distinto de cero. En este
escenario el temporizador comienza incrementando hacia arriba desde cero.

3.2.2 Modo de control del temporizador

El temporizador tiene 4 modos de operacin como se describe en la tabla 3-1: paro,


ascendente, continuo y ascendente/descendente. El modo de operacin se selecciona con
los bits MCx presentes en el registro de control del TAR (TACTL)

Tabla 3-1 Modos del temporizador

MCx Modo Descripcin


00 apagado El temporizador est detenido
01 Ascendente El temporizador cuenta repetidamente desde cero a el valor de
TACCR0

15
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

10 Continuo El temporizador repetidamente cuenta desde o a 0FFFFh


11 Ascendente/Descendente El temporizador repetidamente cuenta de cero
hasta el valor del TACCR0 y de vuelta hacia cero.

Modo Ascendente

El modo ascendente se utilice cuando el periodo del temporizador debe ser distinto de
0FFFFH cuentas
El temporizador cuenta repetidamente de forma ascendente hasta el valor cargado en el
registro TACCR0, el cual define el periodo, como se muestra en la figura 3.2. El nmero
de cuentas del temporizador en un periodo es de TACCR0+1. Cuando el valor del
temporizador es equivalente al TACCR0 el temporizador restablece su cuenta a cero. Si se
selecciona el modo ascendente cuando el temporizador tiene un valor mayor al TACCR0,
el temporizador inmediatamente restablece su cuenta comenzando desde cero.

Figura 3.2 Modo ascendente

La bandera de interrupcin TACCR0 se pone en uno cuando la cuenta del temporizador


TAR, se iguala con el valor cargado en el registro TACCR0. La bandera de interrupcin
TAIFG se pone en uno cuando el temporizador cuenta desde valor TACCR0 a cero. La
figura 3.3 muestra el ciclo de puesta a uno de la bandera.

Figura 3.3 Puesta a uno de las banderas en modo ascendente

Cambiando el periodo del registro TACCR0

Cuando se cambia el contenido del TACCR0 mientras el temporizador est corriendo, si el


nuevo periodo es mayor o igual que el viejo, el temporizador cuenta hasta el nuevo
periodo. Si el nuevo periodo es menor que la cuenta actual, el temporizador vuelve a cero.
Una cuanta adicional ocurre antes de empezar desde cero.

16
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modo contino

En el modo continuo, el temporizador cuenta repetidamente desde cero hasta 0FFFFh y


comienza de nuevo en cero, como se muestra en la figura 3.4. El registro de
captura/comparacin TACCR0 trabaja de la misma forma que los otros registros de
captura/comparacin.

Figura 3.4 Modo continuo

Figura 3.5 Puesta a uno se las banderas en modo continuo

Uso del modo contino


El modo continuo puede utilizarse para generar intervalos de tiempo independientes y
frecuencias de salida. Cada vez que es completado un intervalo de tiempo, se genera una
interrupcin. El siguiente intervalo de tiempo es sumado al registro TACCRx en cada
rutina de servicio. La figura 3.6 muestra 2 intervalos de tiempo separados t0 y t1 los cales
son sumados en los registros de captura/comparacin. En esta forma de uso el intervalo de
tiempo es controlado por circuitera no por programa quitando as el impacto de la latencia
de la interrupcin. Se pueden generar ms de 3 intervalos de tiempo independientes
frecuencias de salida utilizando para ello los 3 registros de captura/comparacin.

Figura 3.6 Intervalos de tiempo en modo continuo

17
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Los intervalos de tiempo pueden ser producidos por otros modos de operacin. Como por
ejemplo cuando el TACCR0 es utilizado como registro de periodo. Su manejo es ms
complejo desde que la suma del valor anterior del registro TACCRx y el nuevo periodo
pueden ser mayor que el valor en el TACCR0. Cuando esto sucede el TACCR0 debe ser
restado para obtener el intervalo de tiempo correcto.

Modo Ascendente/Descendente

El modo ascendente/descendente se utilizar cuando el periodo deba ser distinto de


0FFFFh cuentas y adems se requiera de generacin de pulsos simtricos. El temporizador
contara hasta el valor cargado en el registro de comparacin TACCR0 y regresar a cero,
esto lo har de forma infinita. Observe en la figura 3.7 que el intervalo de tiempo es el
doble de lo que esta cargado en el TACCR0.

Figura 3.7 Modo ascendente/descendente

La direccin de la cuenta es guardada. Esto permite al temporizador ser detenido y


restablecido en la misma direccin en la que se encontraba contando antes de ser detenido.
Si esto no se desea, el bit TACLR debe ser puesto en uno para borrar la direccin. El bit
TACLR tambin borra el valor del TAR y el valor del divisor del reloj del temporizador.
En modo ascendente/descendente, la bandera de interrupcin del TACCR0 CCIFG y la
bandera del temporizador TAIFG son puestas a uno solamente una vez por periodo,
separadas por periodo de tiempo. La bandera de interrupcin del TACCR0 CCIFG se
pone en uno cuando el temporizador cuenta desde TACCR0-1 a TACCR0, y la bandera
TAIFG se pone en uno cuando el temporizador completa la cuenta hacia abajo desde
0001hasta 0000 observe la figura 3.8 que muestra los ciclos de puesta a uno de las
banderas.

Figura 3.8 puesta a uno de banderas en modo ascendente/descendente

Cambiando el periodo del registro TACCR0

18
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Cuando se cambia TACCR0 mientras el temporizador est corriendo, y contando en


sentido descendente, el temporizador contina descendiendo hasta alcanzar cero. El nuevo
periodo tendr efecto despus de llegar a cero.
Cuando el temporizador est contando en direccin ascendente, y el nuevo periodo es
mayor igual al valor de la cuenta actual, el temporizador contina contando asta el nuevo
periodo antes de contar de forma descendente. Por el contrario si el nuevo periodo es
menor que la cuenta actual, el temporizador comienza contando hacia abajo. Una cuenta
adicional puede ocurrir antes de que el temporizador comience a contar hacia abajo.

Uso del modo ascendente /Descendente

El modo ascendente descendente soporta aplicaciones en donde se requieren tiempos


muertos entre seales de salida (ver seccin de unidad de salida del temporizador A). por
ejemplo para evitar condiciones de sobrecarga, 2 salidas manejan un puente H nunca deben
de estar en estado alto simultneamente. En el ejemplo se muestra en la figura xx el tiempo
muerto es: tiempo muerto = ttemporizador.(TACCR1-TACCR2)
Con: tiempo muerto es el tiempo durante el cual ambas salidas necesitan estar inactivas
ttemporizador ciclos del reloj.
TACCRx Contenido del registro de comparacin.
Los registros TACCRx no tienen registro secundario alguno. Ellos se renuevan
inmediatamente cuando son escritos. Por lo que cualquier tiempo muerto no ser
mantenido.

Figura 3.9 Unidad de salida en modo ascendente/descendente

Bloques de captura/comparacin

El temporizador A cuenta con 2 3 bloques de captura/comparacin, cualquiera de ellos


puede utilizarse como captura de tiempos del temporizador o para generar intervalos de
tiempo.
Modo de Captura

19
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El modo de captura se selecciona cuando el bit CAP se pone en uno, este bit est presente
en el registro de control asociado TACCRx. El modo de captura se utiliza para medir
eventos de tiempo y puede ser usado para medir velocidades. Las entradas de captura
CCIxA y CCIxB estan conectadas a las terminales externas y se seleccionan con los bits
CCISx . Los bits CMx seleccionan el flanco que dispara la captura bien puede ser
ascendente descendente incluso ambos. La captura ocurre en el flanco seleccionado de
la seal de entrada. Cuando ocurre una captura:
El valor del temporizador es copiado en el registro TACCx
La bandera de interrupcin CCIFG se pone en uno.
La seal de entrada puede ser leda en cualquier momento mediante el bit CCI. Los
MSP430x2xx tienen distintas seales conectadas a CCIxA y CCIxB refirase a las hojas de
especificacin de cada dispositivo para la conexin de esas seales.
La seal de captura puede ser asncrona con el reloj del temporizador y causa una condicin de
carrera. Al poner el bit SCS en uno se sincronizar la captura con el reloj del temporizador, esto se
recomienda. Ver figura 3.10

Figura 3.10 Seal de captura SCS=1


Cada registro de captura /comparacin tiene una lgica de sobre flujo que indica si una
segunda captura fue realizada antes de que fuera ledo el primer valor del registro de
captura. El bit COV se pone en uno cuando esto ocurre como se muestra en la figura 3.11
COV debe ser borrado por programa.

20
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 3.11 ciclo de captura

Captura iniciada por programa

La captura puede ser iniciada por programa. Los bits CMx pueden ser puestos a uno para
capturar en ambos flancos. Despus el programa pone en uno el bit CCIS1 y cambia el bit
CCIS0 de la seal de captura entre VCC y GND, iniciando una captura cada vez que
CCIS0 cambia de estado.

MOV #CAP+SCS+CCIS1+CM_3,&TACCTLx ; Setup TACCTLx


XOR #CCIS0,&TACCTLx ; TACCTLx = TAR

Modo de comparacin

El modo de comparacin se selecciona cuando el bit CAP se pone en cero, dicho bit est
localizado en el registro de control TACCRx. El modo de comparacin se utiliza para
generar PWM o interrupciones con intervalos de tiempo especficos. Cuando la cuenta del
TAR llega a ser el valor cargado en el registro de comparacin TACCRx:

_ La bandera de interrupcin CCIFG se pone a uno


_ La seal interna l EQUx = 1
_ EQUx afecta la salida de acuerdo al modo de salida
_ La seal de entrada CCI es grabada en SCCI

Unidad de salida
Cada bloque de captura/comparacin contiene una unidad de comparacin. La unidad de
comparacin es utilizada para generar seales de salida como seales PWM. Cada unidad
de salida tiene ocho modos de operacin que generan seales basadas en las seales EQU0
y EQUx.

21
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modos de salida

Los modos de salida estn definidos por los bits OUTMODx y estn descritos en la tabla
3.2 La seal de salida OUTx es cambiada con el flanco positivo de la seal de reloj del
temporizador para todos los modos excepto el modo 0. Los modos de salida 2,3,6 y 7 no se
utilizan para la unidad de salida cero porque la seal EQUx = EQU0.

Tabla 3.2 Modos de salida

OUTMODX MODO DESCRIPCION

000 Salida La seal de salida OUTx esta definida por el bit OUTx.
La seal OUTx se actualiza cuando OUTx se actualiza.

001 Set La salida es uno cuando el temporizador cuenta hasta el


Valor del registro TACCRx. Permanece en uno hasta
Que se restablece el temporizador, o hasta que otro
Modo de salida se seleccione y afecte la salida

010 Toggle/Reset La salida es invertida cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. La salida
Ser cero cuando el TAR llegue al valor del registro
TACCR0.

011 Set/Reset La salida es uno cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. La salida
Ser cero cuando el TAR llegue al valor del registro
TACCR0.

100 Toggle La salida es invertida cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. El periodo
De la salida es el doble que el periodo del temporizador

101 Reset La salida es cero cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. Permanece
en 0 hasta que se restablece el temporizador, o hasta
que otro modo de salida se seleccione y afecte la salida

110 Toggle/Set La salida es invertida cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. La salida
Ser uno cuando el TAR llegue al valor del registro
TACCR0.

111 Reset/Set La salida es cero cuando la cuenta del temporizador


Cuenta hasta el valor del registro TACCRx. La salida
Ser uno cuando el TAR llegue al valor del registro
TACCR0.

Ejemplo de Salida temporizador en modo ascendente

22
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

La seal OUTx es cambiada cuando el temporizador cuenta hasta el valor del registro
TACCRx y regresa desde el valor cargado en el TACCR0 a cero, dependiendo del modo
de salida. un ejemplo se muestra en la figura 3.12 utilizando el TACCR0 y el TACCR1.

Figura 3.12 Ejemplo de salida modo ascendente

Ejemplo de Salida temporizador en modo contino

La seal OUTx es cambiada cuando el temporizador cuenta hasta el valor del registro
TACCRx y regresa desde el valor cargado en el TACCR0 a cero, dependiendo del modo
de salida. un ejemplo se muestra en la figura 3.13 utilizando el TACCR0 y el TACCR1.

23
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 3.13 Ejemplo de salida modo continuo

Ejemplo de Salida temporizador en modo ascendente descendente

La seal OUTx es cambiada cuando el temporizador cuenta hasta el valor del registro
TACCRx y regresa desde el valor cargado en el TACCR0 a cero, dependiendo del modo
de salida. un ejemplo se muestra en la figura 3.14 utilizando el TACCR0 y el TACCR2.

Figura 3.14 Ejemplo de salida modo ascendente/ascendente


Nota: Cambio entre modos de salida

24
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Cuando se cambia entre modos de salida, uno de los bits OUTMODx debe permanecer en
uno durante la transicin, a menos que se trate del modo 0. De otra manera puede ocurrir
un brinco porque las compuertas NOR decodifican la salida a modo cero. Un mtodo
seguro para cambiar entre modos de salida es utilizar el modo 7 como estado de transicin.

BIS #OUTMOD_7,&TACCTLx ; Poner en modo de salida=7


BIC #OUTMODx,&TACCTLx ; Borrar bits no deseados

Interrupciones del temporizador A


El temporizador A tiene asociados 2 vectores de interrupcin:
El vector de interrupcin del registro TACCR0 con bandera CCIFG
El vector del interrupcin TAIV para sobre flujo del TAR y dems registros

En el modo de captura alguna bandera CCIFG se pone a uno cuando el valor del
temporizador es capturado en el registro asociado TACCRx. En el modo de comparacin,
alguna bandera CCIFG se pone en uno cuando el TAR llega a la cuenta del registro
asociado TACCRx. Por programa se puede poner a uno o cero cualquier bandera CCIFG.
Todas las banderas CCIFG hacen peticin de interrupcin cuando su correspondiente bit
CCIE y el bit GIE estn en uno.

Interrupcin del TACCR0

La bandera CCIFG del TACCR0 tiene la mxima prioridad del temporizador y tiene un
vector de interrupcin dedicado como se muestra en la figura 3.15. La bandera TACCR0
CCIFG se borra automticamente cuando se atiende la rutina de servicio de interrupcin.

Figura 3.15 Bandera de interrupcin del registro de captura/comparacin TACCR0

Generador de Vector de Interrupcin TAIV


Las banderas TACCR1 CCIFG, TACCR2 CCIFG y TAIFG estn priorizadas y
combinadas en un solo vector de interrupcin. El registro de vector de interrupcin TAIV
es utilizado para determinar cual bandera hizo la peticin de interrupcin.
La interrupcin de mayor prioridad genera un nmero en el registro TAIV (ver descripcin
del registro). Este nmero puede ser evaluado o sumado al contador de programa para
automticamente entrar a la rutina apropiada. Al deshabilitar las interrupciones del
temporizador A no se tiene efecto en el valor del TAIV. Cualquier
Acceso de lectura o escritura en el registro TAIV automticamente borra la bandera de mas
alta prioridad pendiente. Si otra bandera de interrupcin es uno, otra interrupcin es
generada despus del servicio de la interrupcin inicial. Por ejemplo, si las banderas
TACCR1 y TACCR2 CCIFG son uno cuando la rutina de servicio accesa el registro TAIV,

25
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

La bandera TACCR1 CCIFG es borrada automticamente. Despus de la instruccin RETI


la bandera TACCR2 CCIFG generar otra interrupcin.

Programa ejemplo de TAIV

El siguiente programa de ejemplo muestra el uso recomendado del TAIV y del manejo de
la sobrecarga. El valor del TAIV es sumado al PC para que automticamente brinque a la
rutina apropiada.
Los nmeros en el margen derecho muestran el nmero necesario de ciclos de CPU para
cada instruccin. La sobrecarga del programa para las distintas fuentes de interrupcin
incluyen la latencia de interrupcin y los retornos desde los ciclos de interrupcin, pero no
el manejo de las tareas en si mismo. Las latencias son:

Bloque de captura/comparacin TACCR0 11 ciclos


Bloque de captura/comparacin TACCR1,TACCR2 16 ciclos
Sobreflujo del temporizador TAIFG 14 ciclos

Manejador de interrupcin para TACCR0 CCIFG


ciclos
CCIFG_0_HND
; . . . ; Latencia del inicio del manejador de interrupcin 6
RETI 5
; Manejador de interrupcin para TAIFG, TACCR1 y TACCR2 CCIFG
TA_HND ... ; Interrupt latency 6
ADD &TAIV,PC ; Add offset to Jump table _3
RETI ; Vector 0: No interrupt 5
JMP CCIFG_1_HND ; Vector 2: TACCR1 2
JMP CCIFG_2_HND ; Vector 4: TACCR2 2
RETI ; Vector 6: Reservado 5
RETI ; Vector 8: Reservado 5
TAIFG_HND ; Vector 10: TAIFG Flag
... ; Task starts here
RETI 5
CCIFG_2_HND ; Vector 4: TACCR2
... ; Task starts here
RETI ; regreso al programa princ.5 5
CCIFG_1_HND ; Vector 2: TACCR1
... ; Task starts here
RETI ; regreso al programa princ.5

Registros del temporizador A

26
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 3.16 registros del temporizador A

TACTL Registro de control del temporizador A

TASSELx Bits
9-8 Seleccin de la fuente de reloj del temporizador A
00 TACLK
01 ACLK
10 SMCLK
11 INCLK
IDx Bits
7-6 Divisor de entrada. Esos bits seleccionan la entrada para el divisor del
reloj.
00 /1
01 /2
10 /4
11 /8
MCx Bits
5-4 Control de modo. Poner MCx = 00h cuando el Temporizador A no se use.
00 Modo Stop : El temporizador est detenido
01 Modo Up : El temporizador cuenta hasta el valor del TACCR0
10 Modo continuo: El temporizador cuenta hasta 0FFFFh
11 Modo Up/down: El temporizador cuenta hasta el valor TACCR0 despus
cae a 0000h
No utilizado Bit 3 No utilizado
TACLR Bit 2 Borrado del Temporizador _A . Al poner en uno este bit, se borra el TAR, el divisor
del reloj, y la direccin de cuenta. El bit TACLR se borra automticamente y siempre se lee como
cero.
TAIE Bit 1 Temporizador _A habilitacin de interrupcin. Este bit habilita la peticin de interrupcin
TAIFG.

0 Interrupcin des habilitada


1 Interrupcin habilitada

27
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

TAIFG Bit 0 Temporizador _A bandera de interrupcin


0 interrupcin No pendiente
1 Interrupcin pendiente

TAR Registro temporizador _A

Este registro es el contador del temporizador _A

TACCTLx Registro de control de captura/comparacin

CMx Bit 15-14 Modo de captura


00 No captura
01 Captura en flanco ascendente
10 Captura en flanco descendente
11 Captura en ambos flancos ascendente y descendente

CCISx Bit 13-12 Seleccin de la entrada de capture/comparacin. Esos bits seleccionan la


seal de entrada TACCRx l. Ver hojas de especificaciones del dispositivo.
00 CCIxA
01 CCIxB
10 GND
11 VCC
SCS Bit 11 Fuente de Sincronizacin de captura. Este bit se usa para sincronizar la
entrada de captura con el reloj del temporizador
0 captura asncrona.
1 captura sncrona.

28
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

SCCI Bit 10 Entrada de captura/comparacin sincronizada. La seal CCI de entrada


seleccionada con la seal EQUx y puede ser ledo a travs de este bit.

No utilizado Bit 9 No utilizado. Solo lectura. Siempre se lee 0.

CAP Bit 8 Modo de captura


0 modo de comparacin.
1 modo de captura.

OUTMODx Bits7-5 Modo de salida. Los modos 2, 3, 6, y 7 no son utilizados para el TACCR0
porque EQUx= EQU0.(requieren 2 registros)

000 valor del bit OUT


001 Set
010 Toggle/reset
011 Set/reset
100 Toggle
101 Reset
110 Toggle/set
111 Reset/set

CCIE Bit 4 Habilitacin de interrupcin de Captura/comparacin. Este bit habilita la


peticin de interrupcin de la bandera CCIFG correspondiente.

0 Interrupcin deshabilitada.
1 Interrupcin habilitada

CCI Bit 3 Entrada de captura/comparacin. La seal de la entrada seleccionada puede


ser leda en este bit.

OUT Bit 2 Output. Para el modo de salida 0, Este bit controla directamente el estado de
la salida.
0 Salida en bajo
1 Salida en alto

COV Bit 1 Sobre flujo de captura. Esta bit indica que a ocurrido un sobre flujo de
captura. COV debe borrarse por programa.

0 No ha ocurrido sobre flujo de captura


1 Ha ocurrido un sobre flujo de captura

CCIFG Bit 0 bandera de interrupcin de Captura/comparacin


0 No hay interrupcin pendiente
1 Interrupcin pendiente

TAIV registro de vector de interrupcin

29
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Contenido TAIV Fuente de interrupcin Bandera de interrupcin Prioridad

4 Introduccin al ADC10

El modulo ADC10 soporta conversiones analgico /digitales de 10 bits de alta velocidad.


El modulo est implementado en un convertidor SAR DE 10 BITS, un sistema de control

30
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

de seleccin de muestreo, un generador de referencias y un controlador de transferencia de


datos (DTC).
El DTC permite que las muestras convertidas de 10 bits se almacenen en cualquier parte
de la memoria sin la intervencin de la CPU. El modulo puede ser configurado por
programa para soportar gran variedad de aplicaciones.

Las caractersticas del ADC10:

Velocidad mxima de conversin mayor a 200 KSPS


Convertidor monotnico de 10 bits sin cdigos perdidos
Muestreo y Retencin con periodos programables de muestreo
Inicio de conversin va software o mediante temporizador A
Generacin de voltaje de referencia interno de (1.5 V o 2.5 V) seleccionable por
software
Referencia interna o externa seleccionable por programa
8 canales externos de entrada (12 en el MSP430x22x4)
Canales de conversin para sensor de temperatura interno, VCC y referencias
externas
Fuente seleccionable de reloj de conversin
Modos de conversin: 1 canal, un canal conversin repetida, secuencia de canales y
secuencia de canales repetidos.
El ADC y la referencia de voltaje pueden ser apagados de forma separada
Controlador de transferencia de datos para almacenamiento automtico
El diagrama a bloques del ADCC10 se muestra en la figura 4.1.

31
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 4.1 diagrama a bloques del ADC10

4.2 Operacin del ADC10

El modulo ADC10 se configura mediante el software del usuario. La inicializacin para su


operacin se muestra en las siguientes secciones.

32
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

4.2.1 El ADC 10

El ADC convierte la entrada analgica en una representacin digital de 10 bits y


almacena el resultado en el registro ADC10MEM. El convertidor utiliza 2 niveles de
voltaje programables/seleccionables llamados (VR+ y VR-) para definir los lmites bajo y
alto de la conversin. La salida digital (NANDC) est a plena escala (03FFh) cuando la
seal de entrada es equivalente o mayor que VR+, y cero cuando la seal de entrada es
equivalente o menor que VR-. El canal de entrada y los niveles de referencia de voltaje
(VR+ y VR-) estn definidos en la memoria de control de conversin.
Los resultados de la conversin pueden estar en formato binario o formato complemento a
dos, la formula de conversin cuando se usa binario natural es:

El ADC10 se configura a travs de 2 registros de control ADC10CTL0 Y ADC10CTL1.


El convertidor es habilitado con el bit ADC10ON. Con algunas excepciones los bits de
control del ADC10 pueden ser modificados nicamente cuando el bit ENC=0, este bit ENC
debe ser puesto a 1 antes de cada conversin.

Seleccin del reloj de conversin

El reloj ADC10CLK se utiliza como reloj de conversin y como periodo para el muestreo.
La fuente de reloj del ADC10 se selecciona con los bits ADC10SSELx y puede ser
dividido desde 1 hasta 8 con los bits ADC10DIVx. Las fuentes posibles de reloj son
SMCLK, MCLK, ACLK y el oscilador interno ADC10OSC.
El ADC10OSC, generada internamente esta en el rango de los 5 MHZ, pero esto vara de
dispositivo a dispositivo, con el voltaje de entrada y la temperatura, vea hojas de datos del
dispositivo.

El usuario debe asegurarse que el reloj escogido para el ADC10CLK permanezca activo
hasta el fin de la conversin. Si se quita el reloj durante una conversin, la operacin no se
completar y el resultado ser invalido.

Entradas del ADC10 y multiplexor

La entrada del multiplexor analgico puede seleccionar las 8 seales externas y las 4
internas como canal de conversin. La entrada del multiplexor es del tipo romper antes de
hacer para reducir el ruido de entrada a entrada que resulta por el cambio de canal como se
muestra en la figura 4.2. La entrada del multiplexor es un interruptor tipo T para minimizar
el acoplamiento entre canales. Los canales no seleccionados estn aislados del convertidor
A/D y un nodo intermedio se conecta a tierra analgica (VSS) as que la capacitancia es
aterrizada y esto ayuda a eliminar el Cross Talk.

EL ADC10 utiliza el mtodo de redistribucin de carga capacitiva. Cuando las entradas


son conmutadas internamente esta accin causa transitorios los cuales decaen ates de
cuasar una conversin errada.

33
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Seleccin de puerto analgico

Las terminales externas del ADC10 Ax, VeREF+, y VREF- Comparten terminales con las
lneas de E/S de propsito general, las cuales son CMOS. Cuando seales de tipo analgico
son aplicadas a las compuertas CMOS pueden fluir corrientes parsitas desde VCC a GND.
Estas corrientes ocurren cuando el voltaje de entrada estn cerca del nivel de transicin de
la compuerta. El eliminar el buffer de la Terminal elimina estas corrientes y por tanto el
consumo de corriente. Los bits ADC10AEx deshabilitan las terminales asociadas a los
puertos de E/S.

; P2.3 en el MSP430x22x4 configurado como entrada analgica

BIS.B #08h,&ADC10AE0 ; P2.3 ADC10 funcionando y habilitada

Generador de voltaje de referencia

El modulo ADC10 contiene una referencia de voltaje nter construida con 2 niveles de
voltaje seleccionables. Poniendo el bit REFON=1, se habilita la referencia interna. Cuando
el bit REF2_5V=1, la referencia interna es de 2.5V. Cuando el bit REF2_5V=0, la
referencia interna es de 1.5V. La referencia interna de voltaje puede ser utilizada
internamente y cuando el bit REFOUT=0, de forma externa va la terminal VREF+.
Se pueden tener referencias externas para VR+ y VR- a travs de las lneas A3 y A4
respectivamente. Cuando se utilizan las referencias externas cuando VCC se utiliza como
referencia, la referencia interna puede ser apagada para ahorrar energa.
La referencia externa positiva VeREF+, puede ser reforzada al poner los bits SREF0 = 1
Y SREF1 = 1. Esto permite utilizar la referencia externa con una resistencia interna grande
a costa del manejador de corriente. Cuando REFBURST=1 el incremento en el consumo de
corriente se limita al periodo de muestreo y conversin No se requiere capacitancia de
almacenamiento externa para la fuente de referencia lo mismo en el ADC12.

Caractersticas de bajo consumo de la referencia interna


El generador de referencia interna de voltaje esta diseado para aplicaciones de bajo
consumo. Este incluye una fuente de voltaje band-gap y un manejador separado. La
corriente de consumo de cada uno se especifica separadamente en las hojas de
especificaciones del dispositivo. Cuando el bit REFON=1, ambos son habilitados y cuando
REFON=0 ambos son deshabilitados. El tiempo total de establecimiento cuando
REFON=1 es de 30 us.
Cuando REFON=1, pero no hay conversin activa, el manejador se deshabilita
automticamente y se habilita cuando es necesario. Cuando el manejador est
deshabilitado, no consume corriente, en este caso la fuente de voltaje Band gap
permanece habilitada. Cuando REFOUT=1, el bit REFBURST controla la operacin de la
referencia interna de voltaje. Cuando REFBURST=0 el manejador estar encendido
continuamente permitiendo que la referencia de voltaje este presente fuera de l dispositivo.
Cuando REFBURST=1 el manejador se deshabilita automticamente cuando el ADC10
no este convirtiendo, y automticamente se rehabilita cuando se requiere.
La referencia de voltaje interna puede seleccionarse para trabajar con parmetros de
velocidad vs. Consumo. Cuando la velocidad de conversin est por debajo de los 50 k
muestras por segundo, poner el bit ADC10SR =1, esto reduce el consumo de corriente
aproximadamente en un 50 %.

34
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Auto apagado

El ADC10 est diseado para aplicaciones de bajo consumo. Cuando el ADC10 esta
realizando una conversin, es automticamente deshabilitado y automticamente re
habilitado. El oscilador ADC10OSC tiene el mismo funcionamiento se habilita de forma
automtica cuando se requiere y se deshabilita cuando no se requiere.

Temporizacin de muestreo y conversin

La conversin analgica a digital se inicia con el flanco de subida de la seal de muestreo


SHI. La fuente para SHI se selecciona con los bits SHSx e incluye lo siguiente:
El bit ADC10SC
La unidad de salida 1 del temporizador A
La unidad de salida 0 del temporizador A
La unidad de salida 2 del temporizador A

La polaridad de la fuente de seal SHI se puede invertir con el bit ISSH. Los bits SHTx
seleccionan el periodo de muestreo tmuestreo para que sea 4,8,16 64 relojes del ADC10
ADC10CLK. El temporizador de muestreo pone SAMPCON en alto para el periodo de
muestreo despus de la sincronizacin con ADC10CLK. El tiempo total es el tiempo de
muestreo tmuestreo + sincronizacin. La transicin de alto a bajo del bit SAMPCON
comienza la conversin de analgico a digital, la cual requiere de 13 ciclos ADC10CLK
como se muestra en la figura 4.2

Figura 4.2 tiempo de muestreo

Consideraciones de temporizacin

Cuando el bit SAMPCON =0 todas las entradas estn en alta impedancia. Cuando
SAMPCON =1, la entrada seleccionada Ax puede ser modelada como un filtro pasa bajo
RC durante el tiempo de muestreo tmuestreo, como se muestra en la figura 4.3. La
resistencia de entrada del multiplexor interno RI(2K ohms max)en serie con un capacitor
de 27 pf, es observado por la fuente. El voltaje del capacitor CI se debe cargar dentro del
valor LSB de la fuente de voltaje VS para una conversin correcta de 10 bits.

35
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Usada para calcular el tiempo de muestreo mnimo para una conversin de 10 bits.

Sustituyendo los valores para RI y CI, La ecuacin queda como:

tsample >(RS+2k) x 7.625 x 27pF

Por ejemplo, si RS es 10K, tmuestreo debe ser mayor que 2.47 us

Cuando el buffer de referencia se usa en modo burst, el tiempo de muestreo debe ser mayor que
el tiempo calculado y puesto en el buffer tREFBURST.

Por ejemplo, si VRef es 1.5V y RS es 10 K, tmuestreo debe ser mayor que 2.47 us cuando
ADCR10=0 , o 2.5 us cuando ADCR10=1. Ver Hojas de datos de especificaciones del dispositivo
para consultar los parmetros
Para calcular el tiempo de establecimiento del buffer cuando se utiliza una referencia externa, la
formula es:

Donde:
SR Buffer slew rate
(~1 us/V cuando ADC10SR = 0 y ~2 us/V cuando ADC10SR = 1)
Vref: Referencia externa de voltaje

Modos de conversin

36
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El ADC10 tiene 4 modos de operacin seleccionables mediante los bits CONSEQx como se
muestra en la tabla

Modo de conversin de un solo canal una conversin

Un solo canal seleccionado por INCHx es muestreado y convertido una vez. El resultado
del ADC es escrito en ADC10MEM. La figura x muestra el diagrama de flujo del modo de
un solo canal una conversin. Cuando el ADC10SC dispara una conversin, conversiones
sucesivas pueden ser disparadas por el bit ADC10SC. Cuando se utiliza alguna otra fuente
de disparo, ENC debe invertirse entre cada conversin.

37
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modo de secuencia de canales

Una secuencia de canales es muestreada y convertida una sola vez. La secuencia comienza
con el canal seleccionado por INCHx y se decrementa a el canal A0. Cada resultado ADC
es escrito en ADC10MEM. La secuencia para despus de la conversin del canal A0. La
figura x muestra el modo de secuencia de canales. Cuando el ADC10SC dispara la
secuencia, otras secuencias sucesivas pueden ser disparadas con el bit ADC10SC. Cuando
se utiliza alguna otra fuente de disparo, ENC debe invertirse entre cada secuencia.

38
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modo de un canal conversiones infinitas

Un canal es seleccionado por INCHx muestreado y convertido de forma continua. Cada


resultado del ADC es escrito en el ADC10MEM la figura x muestra el modo de un solo
canal conversiones infinitas.

39
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Modo de repeticin de secuencia de canales.


Una secuencia de de canales es muestreada y convertida repetidamente. La secuencia
comienza con el canal seleccionado por INCHx y se decrementa hasta el canal A0. Cada
resultado del ADC es escrito en ADC10MEM. La secuencia termina despus de la
conversin de A0, y en la siguiente seal de disparo reinicia la secuencia. La figura x
muestra el modo de repeticin de secuencia de canales.

40
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Utilizando el bit MSC

Para configurar el convertidor para realizar conversiones sucesivas automticamente y lo


ms rpido posible, una funcin de mltiple muestreo y conversin est disponible cuando
MSC=1 y CONSEQx > 0 el primer flanco de subida de la seal SHI dispara la primera
conversin. Conversiones sucesivas son disparadas automticamente tan pronto como la
conversin anterior termina. Los flancos de subida adicionales en SHI son ignorados hasta
que la secuencia es completada en el modo de secuencia simple o hasta que el bit ENC es
invertido en el modo de repeticin de un canal o modo de repeticin de secuencias. La
funcin del bit ENC es incambiable cuando de usa el bit MSC.

Deteniendo conversiones

41
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Para detener la actividad del ADC10 se depende del modo de operacin. Las formas
recomendadas de detener una conversin activa o secuencia de conversiones son:
Poner en cero el bit ENC en modo de un canal una conversin detiene la conversin
inmediatamente y el resultado se vuelve impredecible. Para un resultado correcto
interrogue al bit ADC10BUSY hasta que se borre antes de borrar ENC.

Poniendo a cero ENC durante una operacin de un solo canal con conversiones repetidas
detiene el convertidor y termina la conversin actual.

Poniendo a cero ENC durante una secuencia o secuencia repetida detiene el convertidor y
termina la secuencia.

Cualquier modo de conversin puede ser detenido inmediatamente por poner


CONSEQX=0 Y poniendo a cero el bit ENC. Los datos son invlidos.

Controlador de transferencia de datos del ADC10

El ADC10 incluye un controlador de transferencia de datos (DTC) que automticamente


transfiere los resultados de la conversin desde el ADC10MEM a otras localidades de
memoria. El DTC se habilita al poner el registro ADC10DTC1 con un valor distinto de
cero. Cuando el DTC se habilita, cada vez que el ADC10 completa una conversin y carga
el resultado en el ADC10MEM se inicia la transferencia del dato. No se requiere de
programacin para manejar el ADC10 hasta que el total de las conversiones se hayan
transferido. Cada transferencia DTC requiere de un ciclo de reloj MCLK. Para evitar
competencia por el bus el CPU se detiene por un ciclo MCLK para poder realizar la
transferencia.

La transferencia no puede ser iniciada mientras el ADC10 este ocupado. El programa debe
asegurar que no exista actividad de conversin o secuencia cuando se configura el DTC.
; Testeo de actividad del ADC10
BIC.W #ENC,&ADC10CTL0 ;
busy_test BIT.W #BUSY,&ADC10CTL1 ;
JNZ busy_test ;
MOV.W #xxxx,&ADC10SA ; direccin inicial de memoria
MOV.B #xx,&ADC10DTC1 ; Numero de datos a transferir
; continue setup

Modo de transferencia de un bloque

Para seleccionar el modo de transferencia de un bloque ponga a cero ADC10TB. El valor n


en ADC10TC1 define el nmero de transferencias totales por bloque. El bloque comienza
en la direccin cargada en el registro ADC10SA, y termina en la direccin definida como
ADC10SA+2n-2. EL modo de transferencia de un bloque se muestra en la figura 17.9

42
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 17.9 modo de transferencia de un bloque.

El apuntador de direccin interno es ADC10SA y el contador de transferencia interno es


equivalente a n. El apuntador y el contador internos no son visibles por programa. El DTC
transfiere valores de palabra del ADC10MEM a la direccin apuntada por el ADC10SA. Despus
de cada transferencia DTC, el apuntador de direcciones interno es incrementado en 2 y el contador
decrementado en uno.
La transferencia DTC contina con cada carga del ADC10MEM, hasta que el contador de
transferencias interno llega a cero. No habr ms transferencias DTC hasta que se vuelva a escribir
en el registro ADC10SA. Cuando se utilice el DTC en el modo de un bloque, La bandera
ADC10IFG se pondr en uno nicamente cuando el bloque completo haya sido transferido. La
figura 17-10 muestra un diagrama de estados del modo de un bloque.

43
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 17.10 transferencia de un bloque

Modo de transferencia de 2 bloques

Para seleccionar el modo de transferencia de 2 bloques el bit ADC10TB debe estar en uno.
El valor n en ADC10TC1 define el numero de transferencias para un bloque, La direccin
del primer bloque esta definida por el valor guardado en ADC10SA, el primer bloque
termina en ADC10SA+2n-2. El segundo bloque est definido de SA+2n a SA+4n-2. El
modo de transferencia de 2 bloques se muestra en 17-11.

44
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 17.11 Modo de transferencia de 2 bloques

El apuntador interno inicialmente tiene la direccin cargada en ADC10SA y el contador interno de


transferencias es inicialmente equivalente a n. El apuntador interno y el contador no son visibles
al programador. El DTC transfiere la el valor de palabra almacenado en el ADC10MEM a la
direccin apuntada por ADC10SA. Despus de cada transferencia DTC el apuntador interno es
incrementado por 2 y en contador interno de transferencias es decrementado en uno.
Las transferencias DTC continan con cada carga del ADC10MEM, hasta que el contador interno
de transferencias llega a cero. En este punto el bloque uno est lleno y las banderas ADC10IFG y
ADC10B1 estn en uno. El usuario puede probar la bandera ADC10B1 para determinar si el bloque
uno est lleno.
El DTC contina con el bloque 2. El contador interno de transferencias automticamente se recarga
con el valor n. En la siguiente carga del ADC10MEM, el DTC comienza transfiriendo los
resultados al bloque 2. Despus de que las transferencias han completado el bloque 2 la bandera
ADC10B1 se borra y ADC10IFG se pone en uno. El usuario puede checar que ADC10B1 est
borrado y as determinar que el bloque 2 est lleno. La figura 17-12 muestra el diagrama de estados
del modo de 2 bloques.

45
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 17-2 Estados del modo de transferencia de 2 bloques

Transferencia continua

EL modo de transferencia continua se selecciona si el bit ADC10CT est en uno. El DTC no se


detendr despus del bloque uno (modo un bloque) o despus del segundo bloque (modo de 2
bloques).El apuntador interno de direcciones y el contador de transferencias se ponen con los
valores ADC10SA y n respectivamente. .Las transferencias continan comenzando en el bloque
1si el bit ADC10CT est en cero, las transferencias DTC cesan despus de completar las
transferencias en el bloque uno (modo un bloque) o en el bloque 2 (modo de 2 bloques)

46
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Tiempo de transferencia de ciclo


Para cada transferencia ADC10MEM, el DTC requiere 1 o 2 ciclos de reloj MCLK para
sincronizar, uno para la transferencia actual (mientras la CPU est detenida) y un ciclo de espera de
tiempo. Por el hecho de que el DTC utilice MCLK, su ciclo depende del modo de operacin
, el DTC utiliza el MCLK para cada transferencia sin habilitar el CPU. Si la fuente esta apagada, el
DTC temporalmente restablece MCLK con el DCOCLK nicamente durante la transferencia. El
CPU permanece apagado y despus de la transferencia DTC, MCLK es nuevamente apagado. El
ciclo mximo DTC para todos los modos de operacin se muestra en la tabla 17-2

Tabla 172.Ciclo Mximo de tiempo DTC

17.2.10 Interrupciones ADC10

Una interrupcin y un vector de interrupcin son asociados con el ADC10 como muestra la figura
17-17. Cuando el DTC no es utilizado (ADC10DTC1=0) ADC10IFG es uno cuando la conversin
se carga en el ADC10MEM. Cuando se usa el DTC (ADC10DTC1>0) los bits ADC10IE y GIE se
ponen en 1 , entonces la bandera ADC10IFG genera una peticin de interrupcin . La bandera
ADC10IFG automticamente vuelve a cero cuando se atiende la peticin de servicio de
interrupcin puede ser borrada por programa.

Figura 17.2.10 Sistema de interrupciones del ADC10

47
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

17.3 Registros del ADC10

A continuacin se muestran los registros del ADC10

ADC10CTL0, ADC10 Registro de Control 0

SREFx Bits Selecciona la referencia


15-13
000 VR+ = VCC and VR = VSS
001 VR+ = VREF+ and VR = VSS
010 VR+ = VeREF+ and VR = VSS
011 VR+ = Buffered VeREF+ and VR = VSS
100 VR+ = VCC and VR = VREF/ VeREF
101 VR+ = VREF+ and VR = VREF/ VeREF
110 VR+ = VeREF+ and VR = VREF/ VeREF
111 VR+ = Buffered VeREF+ and VR = VREF/ VeREF

ADC10 Bits ADC10 tiempo de muestreo y retencin


SHTx
12-11
00 4 x ADC10CLKs
01 8 x ADC10CLKs
10 16 x ADC10CLKs
11 64 x ADC10CLKs

48
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

ADC10SR Bit 10 ADC10 Periodo de muestreo Este bit selecciona la referencia del buffer
maneja la capacidad para el mximo periodo de muestreo. Poner en uno el bit
ADC10SR reduce el consumo de corriente del buffer de referencia

0 El buffer de referencia soporta mas de 200 ksps


1 El buffer de referencia soporta arriba de 50 ksps

REFOUT Bit 9 Salida de referencia


0 Salida de referencia apagada
1 Salida de referencia encendida
REFBURST Bit 8 Burst de referencia.
0 Buffer de referencia encendido continuamente
1 Buffer de referencia apagado continuamente

MSC Bit 7 Muestreo y conversin mltiple Valido nicamente para los modos
de secuencia o repeticin. 0 El muestreo requiere de flanco ascendente de la seal
SHI para disparar cada muestreo y conversin.
1 EL primer flanco ascendente dispara el temporizador de muestreo pero los
siguientes muestreos y conversiones se desarrollan automticamente tan pronto
como la conversin anterior se complete.

REF2_5V Bit 6 Voltaje del generador de referencia. EL BIT REFON debe de estar en uno.
0 1.5 V
1 2.5 V
REFON Bit 5 Encendido del generador de referencia
0 Referencia apagada
1 Referencia encendida

ADC10ON Bit 4 Encendido del ADC10


0 ADC10 apagado
1 ADC10 encendido
ADC10IE Bit 3 ADC10 habilitacin de interrupcin
0 Interrupcin deshabilitada
1 Interrupcin Habilitada

ADC10IFG Bit 2 ADC10 Bandera de Interrupcin. Este bit se pone en uno si ADC10MEM se
carga con una conversin. Automticamente se borra cuando es aceptada la peticin de servicio de
interrupcin, o puede ser borrada por programa. Cuando se utilice el DTC esta bandera se pone en
uno cuando el bloque se transfiere completamente.

0 No hay interrupcin pendiente


1 Interrupcin pendiente

ENC Bit 1 Habilitar la conversin


0 ADC10 deshabilitado
1 ADC10 habilitado
ADC10SC Bit 0 Inicio de conversin Inicio de muestreo y retencin controlados por
programa.
Los bits ADC10SC y ENC deben de ponerse en uno juntos en una sola instruccin.
El bit ADC10SC se borra automticamente.

0 No inicio de muestreo y conversin


1 Inicio de muestreo y conversin

49
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

ADC10CTL1, Registro de control 1 ADC10

INCHx Bits15-12 Seleccin del canal de entrada. Esos bits selecciona el canal a convertir para una
conversin simple o el canal ms alto de la secuencia de conversiones.
0000 A0
0001 A1
0010 A2
0011 A3
0100 A4
0101 A5
0110 A6
0111 A7
1000 VeREF+
1001 VREF/VeREF
1010 Temperature sensor
1011 (VCC VSS) / 2
1100 (VCC VSS) / 2, A12 on MSP430x22x4 devices
1101 (VCC VSS) / 2, A13 on MSP430x22x4 devices
1110 (VCC VSS) / 2, A14 on MSP430x22x4 devices
1111 (VCC VSS) / 2, A15 on MSP430x22x4 devices
SHSx Bits11-10 Seleccin de fuente de muestreo y retencin
00 ADC10SC bit
01 Timer_A.OUT1
10 Timer_A.OUT0
11 Timer_A.OUT2 (Timer_A.OUT1 en dispositivos MSP43020x2 )

ADC10DF Bit 9 ADC10 formato de datos


0 Binario natural
1 Complemento a 2s

ISSH Bit 8 Seal invertida de muestreo y retencin


0 The La seal muestreada no est invertida
1 The La seal de entrada est invertida
.
ADC10DIVx Bits 7-5 Divisor del reloj del ADC10

50
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

000 /1
001 /2
010 /3
011 /4
100 /5
101 /6
110 /7
111 /8

ADC10SSELx Bits4-3 ADC10 Seleccin de fuente de reloj


00 ADC10OSC
01 ACLK
10 MCLK
11 SMCLK
CONSEQx Bits2-1 Seleccin de modo de secuencia de conversin.
00 Conversin simple un solo canal
01 Secuencia de canales
10 Un solo canal con repeticin
11 Secuencia de canales con repeticin
ADC1m0 BUSY Bit 0 ADC10 ocupado. Este bit indica que esta activo una de muestreo y
retencin
0 No hay operacin activa
1 Secuencia de muestreo o retencin activa.

ADC10AE0, Entrada (analgica) Registro de control de habilitacin 0

ADC10AE0x Bits7-0ADC10 Habilitacin analgica. Esos bits habilitan la correspondiente


terminal para entrada analgica. BIT0 corresponde a A0, BIT1 corresponde a A1, etc.

0 Entrada analgica deshabilitada


1 Entrada analgica habilitada

ADC10AE1, Analog (Input) Enable Control Register 1 (MSP430x22x4 only)

ADC10AE1x Bits 7-4 ADC10 Habilitacin analgica. Esos bits habilitan la terminal
correspondiente para entrada analgica. BIT4 corresponde a A12,BIT5 corresponde a A13, BIT6
corresponde a A14 y BIT7 corresponde a A15.

0 Entrada analgica deshabilitada


1 Entrada analogical habilitada

51
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

ADC10MEM, Conversion-Memory Register, Binary Format

Resultado de conversin Bits15-0 La conversin de 10 bits est justificada a la derecha, en formato


binario natural Le bit 9 es el MSB, Los bits 15-10 siempre son cero.

ADC10MEM, Registro de conversion Memoria formato complement a , 2s

Resultado de conversin Bits 15-0 La conversin de 10 bits est justificada a la izquierda en


formato complemento a 2s. EL Bit 15 es el MSB, los bits 5-0 siempre son cero.

ADC10DTC0, Registro de control de transferencia de datos 0

52
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Reservados Bits7-4 Reservados. Siempre se lee 0.

ADC10TB Bit 3 ADC10 modo de 2 bloques


.
0 Modo de transferencia de un bloque
1 Modo de transferencia de 2 bloques

ADC10CT Bit 2 ADC10 Transferencia continua.

0 La transferencia de datos se detiene cuando el bloque(Modo de un bloque) o dos


bloques(modo de 2 bloques)han sido completados.

1 Transferencia contina de datos. La operacin del DTC se detiene nicamente si


ADC10CT se borra, si ADC10SA es escrito.

ADC10B1 Bit 1 ADC10 block one. This bit indicates for two-block mode which block is filled
with ADC10 conversion results. ADC10B1 is valid only after ADC10IFG has
been set the first time during DTC operation. ADC10TB must also be set

0 Block 2 is filled
1 Block 1 is filled

ADC10FETCH Bit 0 Este bit normalmente debe estar en cero.

ADC10DTC1, Data Transfer Control Register 1

Transferencias DTC Bits 7-0 Transferencias DTC. Esos bits definen el nmero de
transferencias en cada bloque.
0 DTC est deshabilitado
01h-0FFh Nmero de transferencias por bloque.

ADC10SA, Direccin inicial para el registro de transferencias

53
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

;*********************************************************************
;MSP430F20x2 Demo - ADC10, DTC muestrea 32x, AVcc, un canal con ;repeticin, DCO
; Descripcin: Utiliza DTC muestrea A1, 32 veces con referencia de AVcc. ;Software:
Escribe el ADC10SC para disparar al grupo de muestreo en ;el prog. Principal el MSP430
espera en LPM0 para bajar el consumo; hasta que se completa la conversin del grupo,
ADC10_ISR(DTC) forzar ;a salir de. El tiempo de muestreo del oscilador interno ser
de(16x) ;y de conversin de (13x). DTC ;t transferencia de conversin code RAM 200h -
240h. P1.0 uno al inicio de la conversin, cero al finalizar.
;
; MSP430F20x2
; -----------------
; /|\ | |- XIN
; | | |
; ---|RST |- XOUT
; | |
; --> |P1.1/A1 P1.0|-->LED
;*********************************************************************#inc
lude "msp430x20x2.h"
;---------------------------------------------------------------------
RSEG CSTACK ; Define Segmento de Pila
;---------------------------------------------------------------------
RSEG CODE ; Ensambla en memoria Flash
;---------------------------------------------------------------------
RESET mov.w #SFE(CSTACK),SP ; Inicializa Apuntador de Pila
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupADC10 mov.w #CONSEQ_2+INCH_1,&ADC10CTL1 ; Repeticin un ch, A1
mov.w #ADC10SHT_2+MSC+ADC10ON+ADC10IE,&ADC10CTL0
bis.b #BIT1,&ADC10AE0 ; P1.1 ADC option select
mov.b #32,&ADC10DTC1 ; 32 conversiones
SetupP1 bis.b #BIT0,&P1DIR ; P1.0 output
;
Mainloop bic.w #ENC,&ADC10CTL0 ;
busy_ test bit #BUSY,&ADC10CTL1 ; ADC10 inactivo?
jnz busy_test ;
mov.w #0200h,&ADC10SA ; Data buffer start
bis.b #BIT0,&P1OUT ; P1.0 = 1

54
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

bis.w #ENC+ADC10SC,&ADC10CTL0 ; Inicio de conversin


bis.w #CPUOFF+GIE,SR ; LPM0, ADC10_ISR will force exit
bic.b #001h,&P1OUT ; P1.0 = 0
jmp Mainloop ; Again
;
;---------------------------------------------------------------------
ADC10_ISR; Salir de LPM0 en reti
;---------------------------------------------------------------------
bic.w #CPUOFF,0(SP) ; Salir LPM0 en reti
reti ;
;
;---------------------------------------------------------------------
; Interrupt Vectors
;---------------------------------------------------------------------
ORG ADC10_VECTOR ; ADC10 Vector
DW ADC10_ISR
ORG RESET_VECTOR ; POR, ext. Reset
DW RESET
END

Memoria flash

5.1 Introduccin a la memoria Flash

La memoria flash del MSP430 es programable y direccionable en bits bytes y words. El


mdulo de memoria flash tiene un controlador integrado que controla las operaciones de
programacin y el borrado.
El controlador tiene 3 registros, un generador de tiempo y un generador de voltaje que
provee de los voltajes de programacin y borrado.
Las caractersticas de la memoria del MSP430 Incluye:

Generacin interno de voltaje de programacin.


Programable en bytes y words
Operacin de ultra-bajo consumo
Borrado por segmentos y borrado masivo
El diagrama de bloques de la memoria flash y el controlador se muestra en la figura 5-1

55
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 5-1 diagrama de bloques de la memoria flash y su controlador.

Nota: Voltaje mnimo VCC durante escritura a la Flash o borrado

El voltaje VCC mnimo durante escritura a la flash o borrado a la misma es 2.2V SI VCC
cae por debajo durante escritura o borrado, el resultado de la escritura o borrado es
impredecible.

5.2 Segmentacin de la memoria flash

La memoria flash del MSP430 esta particionada en segmentos. Se pueden escribir bits,
bytes o words en la flash, pero el segmento es la unidad ms pequea que puede ser
borrada.

La memoria flash esta particionada en seccin principal y seccin de informacin no existe


diferencia alguna en su operacin, la diferencia son el tamao del segmento y las
direcciones fsicas. La memoria de informacin tiene 4 segmentos de 64 bytes. La
memoria principal tiene 2 o mas segmentos de 512 bytes, refirase a las hojas de
especificaciones para ver el tamao exacto del dispositivo as como sus direcciones.

Los segmentos a su vez estn divididos en bloques de tamao de 64 bytes comenzando en


la direccin 0xx00h, 0xx40h, 0xx80h o 0xxc0h y terminan en 0xx3Fh, 0xx7F, 0xxBFh o
0xxFFh

56
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

La figura 5-2 muestra la segmentacin de la flash utilizando como ejemplo una flash de
4KB que tiene 8 segmentos en memoria principal y 4 segmentos de informacin.

Figura 5-2 ejemplo de una memoria flash de 4KB.

Los segmentos de la memoria de informacin y los bloques de los segmentos de la


memoria principal son de 64 bytes.

5.2.1 Segmento A

El segmento A de la memoria de informacin esta asegurada separadamente de los otros


segmentos con el bit LOCKA, cuando LOCKA =1, el segmento A no puede ser escrito o
borrado y toda la informacin esta protegida durante el borrado masivo. Los segmentos B,
C y D siempre sern borrados con un borrado de segmento independientemente del estado
del bit LOCKA.
El estado del bit LOCKA es invertido cuando se escribe un uno en el, escribir un cero en
LOCKA no tiene efecto alguno. Esto permite que las rutinas de programacin existentes
en la flash utilizarse sin cambio alguno.

; Desproteje Segmento A

BIT #LOCKA,&FCTL3 ; Test LOCKA


JZ SEGA_UNLOCKED ; Continua desprotegido?
MOV #FWKEY+LOCKA,&FCTL3 ; No, desprotege Segmento A

57
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

SEGA_UNLOCKED ; Si, continua


; Segmento A esta desprotegido

; Proteje Segmento A

BIT #LOCKA,&FCTL3 ; Test LOCKA


JNZ SEGALOCKED ; Continua protegido?
MOV #FWKEY+LOCKA,&FCTL3 ; No, proteje el Segmento A

SEGA_LOCKED ; Si , continua
; Segmento A esta protegido

5.3 Operacin de la memoria Flash

La memoria flash inicialmente se encuentra en modo de lectura, en este modo la memoria


no ser borrada o escrita, el generador de tiempo y el generador de voltaje estn apagados
y la memoria opera de forma idntica a una ROM.
La memoria flash del MSP430 es programable en sistema es decir no requiere de voltajes
externos de programacin. La CPU puede programar su propia memoria flash. Los modos
de escritura/borrado de la flash se seleccionan a travs de los bits BLKWRT, WRT ,
MERAS y ERASE y son:

Escritura byte/Word
Escritura de bloque
Borrado de segmento
Borrado masivo (todos los segmentos de la memoria principal)
Borrado total (todos los segmentos)

Leer o escribir la memoria flash mientras est siendo programada o borrada esta prohibido.
Si lse requiere ejecucin de la CPU durante la escritura o el borrado, el cdigo a ser
ejecutado debe de estar en RAM . Cualquier actualizacin puede ser iniciada desde flash o
RAM.
5.3.1 Generador de tiempo de la memoria Flash
Las operaciones de escritura y borrado estn controladas por el generador de tiempo de la
flash que se muestra en la figura 5-3. La frecuencia de operacin del generador de tiempo,
fFTG, debe de estar en el rango de 257 khz a 476 khz (vea especificaciones del
dispositivo)

Figura 53. Diagrama a bloques de Generador de tiempo de la memoria Flash

58
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Seleccin de la fuente de reloj del generador de tiempo de la Flash

El generador de tiempo de la flahs puede alimentarse desde ACLK, SMCLK, MCLK. A


su vez la fuente seleccionada debe ser divida usando los bits FNx para obtener los
requerimientos de frecuencia para fFTG. Si la frecuencia fFTG se desva de las
especificaciones durante la operacin de escritura o borrado , el resultado de los mismos se
vuelve impredecible, y quizs se este daando la memoria flash.
Si se detecta una falla de reloj durante la operacin de escritura o borrado la operacin es
abortada, la bandera de falla FAIL es puesta a uno y el resultado de la operacin es
impredecible.
Mientras la operacin de escritura o borrado esta activa la fuente de reloj no debe de ser
deshabilitada por poner al MSP430 en modo de bajo consumo. La fuente de reloj
seleccionada deber permanecer activa hasta que la operacin sea completada antes de
deshabilitar el reloj fuente.

5.3.2 Borrado de la memoria Flash

El nivel lgico de borrado de la memoria flash es uno. Cada bit puede ser programado de
uno a cero, pero para programar de cero a uno se requiere de un ciclo de borrado. La menor
cantidad de flash que puede ser borrada es el segmento. Existen 3 modos de borrado que se
pueden seleccionar mediante los bits MERAS Y ERASE observe la tabla 5-1.

Tabla 51.Modos de borrado

MERAS ERASE Modo de borrado

Un borrado es iniciado por un intento de escritura en una direccin que este dentro del
rango a ser borrado.

El intento de escritura inicia el generador de tiempo de la flash y la operacin de borrado.

La figura 5-4 muestra un ciclo de borrado. El bit de ocupado se pone en uno


inmediatamente despus del intento de escritura y permanece as durante todo el ciclo de
borrado. BUSY, MERAS, y ERASE son automticamente limpiados cuando el ciclo se
completa. El tiempo de ciclo de borrado no es dependiente de la cantidad de memoria
presente en el dispositivo. Los tiempos de ciclo de borrado es equivalente para todos los
MSP430F2XX..

59
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 5-4 tiempos de ciclo de borrado

Un intento de escritura en una direccin que no esta en el rango de la memoria a ser


borrada no iniciara el ciclo de borrado, no afecta a la memoria flash y no es sealizada por
bandera.
Esta escritura errante es ignorada.

Iniciando un borrado desde la memoria flash

Un ciclo de borrado puede ser iniciado desde la memoria flash o desde la RAM. Cuando
una operacin de borrado de segmento de flash es iniciado desde la propia flash, toda la
temporizacin es controlada por el controlador de flash, y el CPU es detenido mientras el
ciclo de borrado se completa. Despus de completarse el ciclo de borrado, la CPU contina
con la ejecucin con la instruccin siguiente al intento de escritura de la flash.
Cuando se inicia un ciclo de borrado dentro de la flash, es posible haber borrado el cdigo
necesario para la ejecucin despus del comando de borrado. Si esto ocurre, la ejecucin
de la CPU se vuelve impredecible despus del ciclo de borrado.

The flow to initiate an erase from flash is shown in Figure 55.

Figura 5-5 ciclo de borrado desde la propia flash

60
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

; Borrado de segmento desde flash. 514 kHz < SMCLK < 952 kHz
; Asume ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilita Perro Guardian


MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV #FWKE
Y,&FCTL3 ; Clear LOCK
MOV #FWKEY+ERASE,&FCTL1 ; Habilita el borrado de segmento
CLR &0FC10h ; Intento de escritura, borra S1
MOV #FWKEY+LOCK,&FCTL3 ; Hecho, set LOCK
... ; habilitar WDT?

Iniciando borrado desde la RAM

Un ciclo de borrado puede ser iniciado desde RAM. En este caso, la CPU no es detenida y
puede continuar ejecutando cdigo desde la RAM. El bit BUSY debe ser interrogado para
determinar el fin del ciclo de borrado antes que la CPU pueda acceder a cualquier
direccin de flash de nuevo. Si ocurre un acceso a la flash mientras el bit de BUSY = 1,
esto es una violacin de acceso la bandera ACCVIFG se pondr en uno y el resultado del
borrado ser impredecible.
El flujo de inicializacin de borrado desde RAM se observa en la figura 56.

; Borrado de segmento desde RAM. 514 kHz < SMCLK < 952 kHz

61
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

; Asume ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilita WDT


L1 BIT #BUSY,&FCTL3 ; Prueba de bandera BUSY
JNZ L1 ; Loop while busy
MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV #FWKEY,&FCTL3 ; Clear LOCK
MOV #FWKEY+ERASE,&FCTL1 ; Habilita borrado erase
CLR &0FC10h ; Escritura falsa, borra S1
L2 BIT #BUSY,&FCTL3 ; Prueba bandera BUSY
JNZ L2 ; espera mientras busy
MOV #FWKEY+LOCK,&FCTL3 ; Hecho, set LOCK
... ; Re-habilita WDT?

5.3.3 Escritura en la memoria Flash

Los modos de escritura se seleccionan mediante los bits WRT y BLKWRT bits, se muestra
el listado en la tabla 5.1
Tabla 51.

Ambos modos de escritura utilizan una secuencia de instrucciones de escritura individual,


pero usando la escritura de block es aproximadamente el doble de rpido que el modo
byte/Word, porque el generador de voltajes permanece prendido para la escritura completa
del bloque. Cualquier instruccin que modifique el destino puede ser usada para modificar
una localidad de flash en cualquier modo byte/Word o escritura de bloque. Una palabra de
flash (byte bajo + alto) no debe ser escrita mas de dos veces entre borrados. De otra forma,
puede ocurrir dao.
El bit de BUSY es uno mientras una operacin de escritura est activa y borrado cuando la
operacin se completa. Si la operacin de escritura comienza desde la RAM , la CPU no
debe tener acceso a la flash mientras BUSY=1. De otra forma ocurre una violacin de
acceso la bandera ACCVIFG=1 y la escritura de la flash se vuelva impredecible.

Byte/Word Escritura

Una operacin de escritura de byte/word puede ser iniciada desde la memoria flash o
desde la RAM. Cuando es iniciada desde la memoria flash, toda la temporizacin es
controlada por el controlador de flash, y la CPU es detenida mientras se completa la
escritura. Despus de completarse la escritura, la CPU reasume la ejecucin de cdigo con
la siguiente instruccin a la escritura. El tiempo de escritura de byte/Word se muestra en la
figura 5-7.

Figura 57. Tiempo de escritura de Byte/Word

62
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Cuando la escritura de byte/word se ejecuta desde la RAM, la CPU contina ejecutando el


cdigo desde RAM. El bit BUSY debe ser cero antes que la CPU accese la flash , de lo
contrario ocurre una violacin a la RAM, La bandera ACCVIFG se pone en uno y el
resultado de la operacin de escritura es impredecible.
En el modo byte/Word, el voltaje de programacin generado internamente es aplicado
completamente al bloque de 64 bytes cada vez que un byte o una palabra es escrita, por 27
de 30 fFTG ciclos. Con cada escritura de byte o de Word, el monto de tiempo del bloque
est sujeto a los voltajes de programacin acumulados. El tiempo de programacin
acumulativo, tCPT, no debe ser excedido para cualquier bloque. Si el tiempo de
programacin acumulativo se alcanza, el bloque debe ser borrado antes de programar
cualquier otro byte en cualquier direccin dentro del bloque. Ver hojas de especificaciones
del dispositivo especfico.

Iniciando escritura de Byte/Word desde la memoria Flash

El diagrama de flujo para iniciar una escritura de byte/Word se muestra en la figura 5-8.

Figura 58. Iniciando la escritura Byte/Word Write desde la memoria Flash

; Escritura Byte/word desde flash. 514 kHz < SMCLK < 952 kHz

63
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

; Asume 0FF1Eh esta borrado


; Asume ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilita WDT


MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV #FWKEY,&FCTL3 ; Quitar proteccin
MOV #FWKEY+WRT,&FCTL1 ; Habilitar escritura
MOV #0123h,&0FF1Eh ; 0123h > 0FF1Eh
MOV #FWKEY,&FCTL1 ; Hecho. Clear WRT
MOV #FWKEY+LOCK,&FCTL3 ; Poner Proteccin Set LOCK
... ; Re-enable WDT?

Iniciando la escritura de Byte/Word desde RAM

Figura 59. Iniciando la escritura Byte/Word desde RAM

; Escritura de Byte/word desde la RAM. 514 kHz < SMCLK < 952 kHz
; Asume 0FF1Eh est borrado
; Asume ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilita WDT


L1 BIT #BUSY,&FCTL3 ; Checar Bandera BUSY
JNZ L1 ; Espera mientras este ocupado
MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2

64
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

MOV #FWKEY,&FCTL3 ; Quita aseguramiento


MOV #FWKEY+WRT,&FCTL1 ; Habilita escritura
MOV #0123h,&0FF1Eh ; 0123h > 0FF1Eh
L2 BIT #BUSY,&FCTL3 ; Checa se esta ocupado BUSY
JNZ L2 ; Espera mientras esta ocupado
MOV #FWKEY,&FCTL1 ; Borrar escritura WRT
MOV #FWKEY+LOCK,&FCTL3 ; Asegura LOCK
... ; Re-habilitar WDT?

Escritura de Bloque

La escritura de bloque puede ser utilizada para acelerar el proceso de escritura de la flash,
cuando se requieren programar bytes o words secuenciales. El voltaje de programacin de
la flash permanece durante el ciclo de escritura del bloque de 64 bytes. El tiempo de
programacin acumulativa tCPT no debe ser excedido para ningn bloque durante su
escritura.
La escritura de bloque no puede ser iniciada dentro de la memoria flash. La escritura de
bloque debe ser iniciada nicamente desde la memoria RAM. El bit BUSY permanece en
uno durante la programacin del bloque. El bit WAIT debe ser checado entre escrituras de
byte o Word en el bloque. Cuando WAIT es uno, el prximo byte o Word dentro del
bloque puede ser escrito. Cuando se escriben bloques sucesivos, el bit BLKWRT debe ser
borrado despus de que el bloque actual es completado. El bit BLKWRT puede ser uno
iniciando la escritura del siguiente bloque despus de que el tiempo de recuperacin
requerido por la flash dado por tend. BUSY es borrado despus de que la escritura del
bloque es completada indicando que puede ser escrito el siguiente bloque Figura 5-10

Operacin de la memoria Flash

Figura 5-10 Controlador de Memoria Flash

Diagrama de flujo de escritura de bloque

65
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El diagrama de flujo de la escritura de bloque se muestra en la figura 5-8

Figura 511. Diagrama de flujo de la escritura de bloque

; Escritura de un bloque que comienza en la direccin 0F000h.

66
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

; Debe se ejecutado desde RAM, Asume que la flash ya esta borrada.


; 514 kHz < SMCLK < 952 kHz
; Asume que ACCVIE = NMIIE = OFIE = 0.

MOV #32,R5 ; Usa contador de escritura


MOV #0F000h,R6 ; Apuntador de escritura
MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilita WDT
L1 BIT #BUSY,&FCTL3 ; Checa BUSY
JNZ L1 ; Loop while busy
MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV #FWKEY,&FCTL3 ; Borra LOCK
MOV #FWKEY+BLKWRT+WRT,&FCTL1 ; Habilita escritura de bloque
L2 MOV Write_Value,0(R6) ; Escribe en localidad
L3 BIT #WAIT,&FCTL3 ; Checa bit WAIT
JZ L3 ; Espera mientras WAIT=0
INCD R6 ; Apunta a la siguiente palabra
DEC R5 ; Decrementa el contador de
Escritura
JNZ L2 ; Fin de bloque?
MOV #FWKEY,&FCTL1 ; Borra WRT,BLKWRT
L4 BIT #BUSY,&FCTL3 ; Checa BUSY
JNZ L4 ; Espera mientras busy=1
MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK
... ; Re-habilita WDT si se requiere

5.3.4 Acceso a la Memoria Flash durante escritura o borrado

Cuando se inicia una escritura o borrado desde RAM y mientras BUSY =1, la CPU no
debe leer o escribir en ninguna localidad de flash. De Otra forma ocurre una violacin de
acceso, CCVIFG se pone en uno y el resultado se vuelve impredecible. SI se intenta una
escritura a la flash con WRT=0, la bandera de interrupcin ACCVIFG se pone en uno y la
memoria flash queda inafectada.
Cuando una escritura de byte/Word es iniciada desde la flash, el controlador de flash
regresa el cdigo de operacin 03fffH a la CPU en la siguiente instruccin. El cdigo de
operacin 03FFFFh es la instruccin de salto JMP PC. Esto causa un LOOP en la CPU
hasta que la operacin en la flash termine. Cuando la operacin termina y BUSY=0, el
controlador de flash permite a la CPU buscar el cdigo de operacin correcto y continua la
ejecucin del programa.

Las condiciones de acceso a la flash mientras BUSY=1 son listadas en la tabla 53.

Tabla 53. Acceso a la Flash mientras BUSY = 1

67
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Las interrupciones son automticamente deshabilitadas durante la operacin en la flash


cuando EEI=0 y EEIEX=0 y en los MSP430X20xx donde EEI y EEIEX no estn
presentes. Despus de completar la operacin en la flash. Re-habilitadas. Cualquier
interrupcin que ocurra durante la operacin tendr su bandera asociada en uno, y se
generar una peticin de interrupcin cuando se re-habiliten. Cuando EEIEX=1 y GIE=1,
la interrupcin abortar inmediatamente cualquier operacin en la flash y la bandera FAIL
se pondr en uno. Cuando EEI=1,y GIE=1, y EEIEX=0 el borrado de segmento ser
interrumpido por una interrupcin pendiente cada 32 fFTG ciclos o hasta que se complete.
Durante el servicio de la interrupcin el bit BUSY permanece en uno pero la memoria
flash puede ser acezada por la CPU sin causar una violacin de acceso. No se soportan las
interrupciones anidadas.
El perro guardin (en modo perro guardin) debe ser deshabilitado antes de un ciclo de
borrado. Un reset abortar el borrado y el resultado se vuelve impredecible. Despus de
que el ciclo de borrado se ha completado, el perro puede ser re-habilitado.

5.3.5 Deteniendo un ciclo de lectura y escritura

Cualquier operacin de escritura o de lectura puede ser detenida antes de terminar


normalmente por poner en uno el bit de salida de emergencia EMEX. Al hacer esto se
detiene inmediatamente la operacin activa e inmediatamente se detiene la operacin del
controlador de flash. Todas las operaciones de la flash cesan y la flash retorna al modo de
lectura, y todos los bits en el registro FCTL1 son reseteados. El resultado de la operacin
intentada es impredecible.

5.3.6 Configurando y acensando el controlador de la memoria Flash

El registro FCTLx es un registro de lectura/escritura protegido por contrasea de 16 bits.


Cualquier acceso de lectura o escritura debe utilizar instrucciones de palabra y la escritura
debe incluir la contrasea 0A5h el el byte superior. Cualquier escritura en FCTLx con un
valor distinto que 0A5h en el byte superior es una violacin de seguridad, se pone en uno
la bandera KEYV y se dispara la CPU a un reset. Cualquier lectura de los registros FCTLx
dar 096h en el byte alto. Cualquier escritura en FCTL1 durante una operacin de borrado
o escritura de byte o Word es una violacin de acceso y pondr ACCVIFG en uno. Se
permite escribir en FCTL1 en modo de escritura de bloque cuando WAIT=1, pero hacerlo
cuando WAIT=0 es una violacin de acceso y se pondr en uno ACCVIFG. Una escritura

68
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

en FCTL2 cuando BUSY=1 es una violacin de acceso. Cualquier registro FCTL puede ser
ledo cuando BUSY=1 una lectura no causa violacin de acceso.

5.3.7 Interrupciones del controlador de memoria Flash

El controlador de flash tiene 2 fuentes de interrupcin, KEYV y ACCIVFG.


ACCVIFG se pone en uno cuando ocurre una violacin de acceso. Cuando el bit ACCVIE
es re habilitado despus de una escritura o borrado de flash, la puesta en uno de ACCVIFG
generara una peticin de interrupcin. ACCIVFG trabaja con el vector NMI as que no es
necesario que GIE se ponga en uno para atender a ACCVIFG. ACCVIFG puede ser
checada por programa para determinar si ocurri una violacin de acceso esta bandera debe
borrarse por programa.
La bandera de violacin de llave KEYV, se pone en uno, cuando algn registro de control
de la flash es escrito con el password incorrecto. Cuando esto ocurre se genera un PUC
mandando a reset al microcontrolador.

5.3.8 Programacin de la memoria flash

Existen3 opciones de programacin para los MSP430, todas las opciones soportan
programacin en sistema
via JTAG
via the Bootstrap Loader
via solucin personalizada

5.4 Registros de la memoria Flash

Los registros de la memoria flash se listan en la tabla 5.4

Tabla 5.4 Registros de la memoria flash

69
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 5.1 Registro de Control de la memoria Flash

FRKEY/FWKEY Bits15-8
FCTLx password. Siempre se lee como 096h. Se debe escribir 0A5h o se generar un reset
PUC
BLKWRT Bit 7 Modo de escritura de bloque. WRT debe de estar en uno para la escritura
de bloque. BLKWRT se resetea automticamente cuando EMEX es uno.
0 Escritura de bloque est apagado
1 Escritura de bloque encendido
WRT Bit 6. Este bit es utilizado Para seleccionar algn modo de escritura.WRY es
automticamente puesto a cero.
Cuando EMEX es uno.
0 Modo de escritura est apagado
1 Modo de escritura esta encendido
Reservado Bit 5 Reservado. Siempre se lee como 0.

EEIEX Bit 4 Habilitacin de interrupcin de emergencia. Poner este bit en uno habilita la
interrupcin que causa una salida de emergencia desde la operacin de la flash cuando GIE
=1. EEIEX se pone a cero automticamente cuando EMEX es uno.
0 Interrupcin de salida deshabilitada
1 Interrupcin de salida habilitada

EEI bits 3 Habilitacin de interrupcin de borrado. Poner este bit en uno permite que el
borrado de segmento sea interrumpido por una peticin de interrupcin. Despus de que la
interrupcin es servida el ciclo de borrado contina. EEI es automticamente borrado
cuando EMEX es uno.
0 Interrupcin durante borrado de segmento es deshabilitado
1 Interrupcin durante borrado de segmento es habilitado

MERASERASE Bit 2Bit 1


Mass erase and erase. Esos bits son usados juntos para seleccionar el modo de borrado.
MERAS y ERASE son automticamente borrados cuando EMEX es uno.
MERAS ERASE Ciclo de borrado
0 0 No borrado
0 1 Borrado nicamente de un segmento individual
1 0 Borrado de todos los segmentos de la memoria principal
1 1 Borrado de toda la memoria principal y de informacin si LOCKA=0

70
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Solo segmentos maestros si LOCKA =1

Figura 5.2 Registro de Control 2 de la memoria Flash

FWKEYx Bits15-8 FCTLx password. Siempre se lee como 096h. Debe ser escrita como
=0A5 o un PUC ser generado

FSSELx Bits76 Seleccin de fuente de reloj del controlador de flash


00 ACLK
01 MCLK
10 SMCLK
11 SMCLK

FNx Bits5-0 Divisor del reloj del controlador de Flash. Esos 6 bits seleccionan la divisin
para el controlador de reloj de la flash. El valor del divisor es FNx+1. Por ejemplo, Cuando
FNx=00h, el divisor es uno. Cuando FNx=03Fh el divisor es 64.

Figura 5.3 Registro de Control 3 de la memoria Flash

FWKEYx Bits 15-8 FCTLx Password . Siempre se lee como 96h. Debe ser escrito =A5h o
se generar un PUC.
FAIL Bit 7 Falla de operacin. Este bit es uno si la fuente de reloj fFTG falla, o si la
operacin de la flash es abortada desde una interrupcin cuando EEIEX =1. La falla debe
se borrada va programa.
0 No failure
1 Failure

71
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

LOCKA Bit 6 Segmento A y candado de informacin. Escribir 1 en este bit. Escribir 0 no


tiene efecto.
0 Segmento A sin candado y todas la memoria de informacin es borrado durante un
borrado masivo.
1 Segmento A con candado y toda la memoria de informacin est protegida de borrado
durante un borrado masivo.
EMEX Bit 5 Salida de emergencia
0 No hay salida de emergencia
1 Salida de emergencia
LOCK Bit 4 Proteccin. Este bit desprotege la memoria flash para escritura o lectura. El
bit de LOCK se puede poner en uno en cualquier momento durante operaciones de lectura
o escritura de byte/Word y la operacin se completar normalmente. En el modo de
escritura de bloque si el bit LOCK est en uno mientras BLKWRT=WAIT=1, entonces
WAIT se borra y el modo termina normalmente.
0 No protegido
1 Protegido

WAIT Bit 3 Espera. Indica que la memoria flash est siendo escrita
0 La memoria flash no est lista para la siguiente escritura byte/word
1 La memoria flash est lista para la siguiente escritura Word/byte

ACCVIFG Bit 2 Bandera de interrupcin de violacin de acceso.


ACCVIFG debe de estar en cero va software.
0 No hay interrupcin pendiente
1 Interrupcin pendiente

KEYV Bit 1 Violacin de llave de seguridad


Este bit indica que fue escrita una clave FCTLx incorrecta en algn registro de control de
la flahs y genera un PUC cuando est en uno. KEYV se debe borrar por software.
0 FCTLx password fue escrito correctamente
1 FCTLx password fue escrito incorrectamente
BUSY Bit 0 Ocupado. Este bit indica el estado del generador de tiempo de la s flash
0 No ocupado
1 Ocupado

Figura 5.4 Registro de Habilitacin de Interrupcin la memoria Flash

Bits 7-6,4-0 Esos bits pueden ser usados por otros mdulos. Ver hoja de datos del
dispositivo especfico.
ACCVIE Bit 5 Habilitacin de interrupcin por violacin de acceso a la memoria flash
Este bit habilita la interrupcin ACCVIFG. Porque otros bits en IE1 pueden ser usados por
otros mdulos se recomienda poner a cero o a uno este bit utilizando BIS.B o BIC.B
0 Interrupcin no habilitada
1 Interrupcin habilitada

72
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Interfaz serie universal


La interfaz serie universal (USI) provee de comunicaciones SPI e I2C con un modulo de
circuitera. Este capitulo describe ambos mdulos implementados en los dispositivos
MSP430x20xx.

Introduccin al USI

El mdulo USI provee de la funcionalidad bsica ara soportar comunicaciones serie


sincronas. En su forma ms simple, se trata de un registro de corrimiento de 8 0 16 bits
que puede ser usado para enviar datos, o cuando es combinado con un pequeo programa,
puede implementarse comunicaciones serie, en adicin, el USI incluye de forma nter
construida facilidades para implementar comunicaciones tipo SPI o I2C. El mdulo USI
incluye interrupciones para reducir el programa requerido para comunicaciones serie y
mantener su capacidad de muy bajo consumo de energa.

Las caractersticas del USI incluyen:

Soporte SPI 3 alambres


Soporte de I2C
Longitud de datos variable
Operacin esclavo en LPM4 No se requiere reloj externo
Orden de datos de salida seleccionables MSB o LSB
Deteccin de inicio y paro para I2C con control automtico SCL
Generacin de reloj programable
Control de polaridad y fase
La figura x1 muestra el USI en nodo SPI y la fig. x2 muestra el USI en modo I2C

73
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 6.1 USI en modo SPI

74
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 6-2 USI en modo I2C.

6.2 Operacin del USI

El modulo USI es un registro de corrimiento y un contador de bits que incluye lgica para
soportar comunicaciones SPI e I2C. El registro de corrimiento USI, USISR es accesible
directamente por programa y contiene los datos a ser transmitidos o los datos que han sido
recibidos.
El contador de bits contiene el nmero de bits muestreados y pone en uno la bandera de
interrupcin del USI USIIFG cuando el valor de contador USICNTx llega a cero por
decremento o por escribirle cero directamente al registro USICNTx. Al escribirle
USICNTX con un valor > 0 automticamente se borra la bandera USIIFG cuando
USIIFGCC=0, de otra forma USIIFG no se afecta. El USICNTx detiene su decremento
cuando llega a cero. El contador no comienza de Nuevo en 0FFh al llegar a cero. El
contador y el registro de corrimiento utilizan el mismo reloj en el flanco ascendente,

75
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

USICNTx se decrementa y el USISR muestrea el siguiente bit en la entrada. El registro


conectado al registro de corrimiento retarda el cambio de la salida al flanco de bajada del
reloj. Esto se puede hacer transparente al poner en uno el bit USIGE esto har que salga
inmediatamente el LSB o el MSB del USISR a la terminal SDO dependiendo del bit
USILSB.

6.2.1 Inicializacin del USI

Mientras el programa del USI ponga a cero el bit USISWRST, es uno, las banderas
USIIFG, USISTTIFG, USISTP y USIAL se mantendrn en su estado de reset. El registro
USISR y USICNTx no trabajan y sus contenidos no son afectados. En el modo I2C, la
lnea SCL tambin es dejada en su estado ocioso por la circuitera del USI.
Para activar la funcionalidad del puerto USI, los bits correspondientes USIPEx en el
registro de control del USI deben ser puestos en uno. Esto seleccionara la funcin del USI
para las terminales y mantendr las funciones de los registros PxIN y PxIFG con esta
caracterstica las entradas del puerto pueden ser ledas, mediante al registro PxIN mediante
programa y el flujo de datos entrantes pueden generar interrupciones en transiciones de
datos. Esto se utiliza para generar interrupcin en flanco de inicio.

6.2.2 Generacin de reloj del USI

El generador de reloj USI contiene un multiplexor de seleccin de reloj, un divisor y la


habilidad de seleccionar la polaridad del reloj mostrado en los diagramas de bloques
figuras 15-1 y figura 14-2
La fuente del reloj puede ser seleccionada a los relojes internos ACLK o SMCLK,de un
reloj externo SCLK, as como las salidas de captura/comparacin del temporizador A.
Adems es posible darle reloj al modulo mediante el bit USISWCLK cuando
USISSELx=100.

Los bits USIDIVx pueden ser utilizados para dividir la fuente de reloj seleccionada de
potencias de 2 hasta 128. El reloj generado, USICLK,es detenido cuando USIIFG=1 o
cuando el mdulo opera en modo esclavo.
Los bits USICKPL son utilizados para seleccionar la polaridad del reloj de USICLK.
Cuando USICLKP=0, el nivel inactivo del USICLK es bajo. Cuando USICKPL=1 el nivel
inactivo del USICLK es alto.

6.2.3. Modo SPI

El modulo USI se configura en modo SPI cuando el bit USII2C=0. El bit de control
USICKPL selecciona el nivel inactivo del reloj SPI mientras que USICKPH selecciona el
flanco del reloj en el cual SDO se actualiza y SDI es muestreado. La figura 14.3 muestra la
relacin entre el reloj y los datos para una transferencia de 8 bits con el MSB primero en
enviar. USIPE5, USIPE6, y USIPE7 debe ser uno para habilitar las funciones del puerto
SCLK, SDO y SDI.

76
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 6.3 temporizacin del SPI

SPI Modo Maestro


EL Modulo USI es configurado como maestro poniendo en uno el bit USIMST y borrando
el bit I2C USII2C. El maestro provee la seal de reloj al esclavo(s) por tanto se requiere
seleccionar una fuente de reloj apropiada y la terminal SCLK debe de ser configurada
como salida. Cuando USIPE5 =1, SCLK automticamente se configura como salida.
Cuando USIIFG=0 y USICNTx>0, se habilita el generador de reloj y el maestro comenzara
con la transferencia de datos utilizando el USISR.
Los datos recibidos deben ser ledos desde el registro de corrimiento antes que un nuevo
dato sea escrito en el para su transmisin. En una aplicacin tpica, el programa del USI
leer el dato recibido desde el USISR, escribir un nuevo dato a ser transmitido al USISR y
habilitara el modulo para la siguiente transferencia al escribir el numero de bits a ser
transferidos al USICNTx.

SPI Modo esclavo


El modulo USI se configura como esclavo SPI al borrar el bit USIMST y los bits USII2C.
En este modo cuando USIPE5=1 SCLK se configura automticamente como entrada y el
USI recibe un reloj extrao desde el maestro. SI el USI esta transmitiendo datos, el registro
de corrimiento debe ser cargado con el dato antes de que el maestro de el primer flanco de
reloj. La salida debe ser habilitada al poner en uno el bit USIOE. Cuando USICKPH=1, el
MSB ser visible en el SDO inmediatamente despus de haber cargado el registro de
corrimiento.
La terminal SDO puede ser deshabilitada borrando el bit USIOE. Esto sirve si el esclavo
no est direccionado en un en el bus con mltiples esclavos. Una vez que todos los bits han
sido recibidos, el dato debe ser ledo desde el registro USISR y el nuevo dato debe ser
cargado en el USISR antes del prximo flanco del reloj maestro. En una aplicacin tpica
despus de recibir el dato el el programa del USI leer el registro USISR y escribir el
dato a transmitirse en el USISR y habilitar el modulo USI para la siguiente transferencia
escribiendo el numero de bits a ser transferidos en el USICNTx.

Operacin USISR

77
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

El registro USISR est hecho a base de 2 registros de 8 bits, USISRL y USISRH el bit de
control USI16B selecciona el nmero de bits del USISR que son utilizados en la
transmisin y recepcin de datos. Cuando USI16=0; nicamente los 8 bits menos
significativos son utilizados como datos, los presentes en USISRL.
Para transferir < 8 bits, el dato debe ser alineado con el MSB o el LSB dependiendo del
USILSB la figura 14-4 muestra un ejemplo de manejo de 7 bits.

Figura 14-4 Ajuste para 7 bits


Cuando USI16B=1 los 16 bits son utilizados para manejo de datos. Cuando se est usando
el USISR para acesar al los registros USIRL y USISRH, el dato necesita estar ajustado
cuando se utilizan menos de 16 bit de la misma forma que la mostrada en la figura 14-4.

Interrupciones SPI
Hay un vector asociado con el mdulo USI, y una bandera de interrupcin USIIFG.
Cuando los bits USIIE y GIE estn en uno, la bandera de interrupcin generar una
peticin de interrupcin.
La bandera USIIFG se pone a uno cuando el registro USICNTx llega a cero, ya sea por
conteo o por escribir cero directamente en este registro. La bandera USIIFG se borra
cuando en el registro USICNT se le escribe un numero distinto de cero cuando
USIIFGCC=0 o directamente por programa.

14.2.4. Modo I2C


El modulo USI se configura para modo I2C cuando el bit USII2C =1,y el bit USICKPH=0.
Para compatibilidad de datos I2c, USILSB y USI16B deben estar en cero. USIPE6 y
USIPE7 deben de ser 1 para habilitar las funciones del puerto SCL y SDA.

I2C Modo Maestro

78
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Para configurar el modulo USI como Maestro I2C el bit USIMST debe de estar en uno. En
modo maestro los relojes se generan por el modulo USI y se manda afuera por la lnea SCL
mientras el bit USIIFG =0. Cuando USIIFG=1, La lnea SCL se detendr en nivel ocioso o
alto. Se soporta la operacin multimaestro esto se describe en la seccin de arbitraje.
El maestro soporta esclavos que estn sosteniendo a la lnea SCL bajo nicamente cuando
USIDIV>0. Cuando USIDIVx es puesto la divisin de reloj /1 (USIIDIVx=0) Los
esclavos conectados no deben sostener la lnea SCL en bajo durante la transmisin de datos
de otra forma la comunicacin puede fallar.

I2C Slave Mode

Para configurar el modulo USI como I2CTo configure the USI module as an I2C slave the
USIMST bit must be cleared.
In slave mode, SCL is held low if USIIFG = 1, USISTTIFG = 1 or if
USICNTx = 0. USISTTIFG must be cleared by software after the slave is setup
and ready to receive the slave address from a master.

I2C Transmisor

En el modo transmisor, el dato se carga primero en el registro USISRL. La salida es


habilitada por poner en uno USIOE y la transmisin comienza al escribir 8 en el registro
USICNTx. Esto borra USIIFG y se genera SCL en modo maestro o se libera de estar en
bajo en el modo esclavo.
Para recibir el bit de reconocimiento I2C, el bit USIOE es borrado por programa y el
USICNTx es cargado con uno. Esto borra la bandera USIIFG y un bit es recibido en el
USISRL. Cuando USIIFG llega a ser uno de nuevo, el LSB del USISRL es recibido el bit
de reconocimiento y puede ser probado por programa.

; Receive ACK/NACK
BIC.B #USIOE,&USICTL0 ; SDA input
MOV.B #01h,&USICNT ; USICNTx = 1
TEST_USIIFG
BIT.B #USIIFG,&USICTL1 ; Test USIIFG
JZ TEST_USIIFG
BIT.B #01h,&USISRL ; Test received ACK bit
JNZ HANDLE_NACK ; Handle if NACK
...Else, handle ACK

Receptor I2C

En modo I2C la salida debe ser deshabilitado por borrar el bit USIOE y el modulo USI se
prepara para recepcin escribiendo 8 en el USICNTx. Esto borra la bandera USIIFG y SCL
se genera en modo maestro o es dejado para mantenerse en bajo en modo esclavo. El bit bit
USIIFG se pondr en uno despus de 8 relojes. Esto detiene la seal de reloj en SCL en
modo maestro o mantiene SCL en bajo en la siguiente fase baja en modo esclavo.

Para transmitir un bit de reconocimiento o un no reconocimiento el MSB del registro de


corrimiento es cargado con un cero o un uno, el bit USIOE se pone en uno por programa
para habilitar la salida y un uno es escrito en el USICNTx. Tan pronto como el bit MSB es

79
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

mandado fuera , el bit USIIFG se pondr en uno y el mdulo puede ser preparado para la
recepcin del prximo I2C byte.

; Genera un reconocimiento ACK

BIS.B #USIOE,&USICTL0 ; SDA output


MOV.B #00h,&USISRL ; MSB = 0
MOV.B #01h,&USICNT ; USICNTx = 1
TEST BIT.B #USIIFG,&USICTL1 ; Probando USIIFG
JZ TEST
...continua...
Condicin de inicio

Una condicin de inicio es una transicin de alto a bajo en SDA mientras SCL es alto. La
condicin de inicio puede ser generada por poner en uno MSB del registro de corrimiento
en cero. Poniendo en uno USIGE y USIOE hace la salida transparente y el MSB del
registro de corrimiento se presenta inmediatamente en SDA y manda la lnea en bajo.
Borrando USIGE vuelve la funcin latch y sostiene 0 en SDA hasta que el dato es
mandado fuera con el SCL.

; Generando inicio
MOV.B #000h,&USISRL ; MSB = 0
BIS.B #USIGE+USIOE,&USICTL0 ; Latch/SDA salida habilitada
BIC.B #USIGE,&USICTL0 ; Latch deshabilitado
...continua...

Condicin de Paro

Una condicin de paro es una transicin de alto a bajo en la lnea SDA mientras SCL es
alto. Para finalizar el bit de reconocimiento y poner SDA en bajo para preparar la
condicin de paro
Requiere de borrar el MSB en el registro de corrimiento y cargar 1 en el USICNTx. Esto
generara un pulso bajo en SCL durante la fase baja en SDA es mandada a bajo.SCL se
detiene en el estado ocioso o alto, desde que el modulo es en modo maestro. Para generar
una transicin de bajo a alto, el MSB es uno en el registro de corrimiento y USICCNTx es
cargado con uno. Poniendo el USIGE y USIOE hace la salida de latch transparente y el
MSB de USIRL deja SDA en estado ocioso. Borrando USIGE deposita el MSB en la
salida con latch y la salida es deshabilitada por borrar USIOE. SDA permanece en alto
hasta que la condicin de inicio es generada por la resistencia externa de pull up.

; Generando paro

BIS.B #USIOE,&USICTL0 ; SDA= salida


MOV.B #000H,&USISRL ; MSB = 0
MOV.B #001H,&USICNT ; USICNT = 1 por un reloj
TEST
BIT.B #USIIFG,&USICTL1 ; Prueba la Bandera USIIFG
JZ TEST ;
MOV.B #0FFH,&USISRL ; USISRL = 1 a manejar SDA Alto
BIS.B #USIGE,&USICTL0 ; Latch Transparente Habilitado

80
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

BIC.B #USIGE+USIOE,&USICTL ; Latch/SDA salida deshabilitada


...continua...
Liberando al SCL

Al poner en 1 el bit USISCLREL soltar SCL, si este est siendo retenido en bajo por el
modulo USI, sin requerir que la bandera USIIFG sea borrada. El bit USISCLREL ser
borrado automticamente si se recibe una condicin de START y la lnea SCL, se
mantiene en bajo en el siguiente reloj.
En operacin como esclavo este bit debera ser usado para prevenir que SCL sea retenido
en bajo, cuando el esclavo ha detectado que no ha sido direccionado por el maestro. En la
siguiente condicin de START USISCLREL deber ser borrado y el bit USISTTIFG
deber ponerse en 1 lgico.

Arbitraje

El modulo USI puede detectar la condicin de prdida de arbitraje en condiciones de


sistemas multi maestro I2C. El procedimiento de arbitraje utiliza los datos presentados en
SDA por los transmisores que compiten. El primer transmisor maestro que genera el un
uno lgico pierde el arbitraje contra el maestro que genera un cero lgico. La prdida del
arbitraje es detectada en el modulo USI al comparar el valor presentado en el bus y el valor
ledo desde el bus. Si los valores no son equivalentes el arbitraje se pierde y se pone en uno
la bandera de prdida de arbitraje USIAL. Esto tambin borra el bit de habilitacin de
salida USIOE y el modulo USI no manejara mas el bus. En este caso el usuario debe
checar por software la bandera USIAL junto con USIIFG y configurar el USI como
esclavo receptor cuando se pierde el arbitraje. La Bandera USIAL debe se borrada por
programa.
Para prevenir que otros maestros rpidos generen relojes durante el procedimiento de
arbitraje SCL se mantiene en bajo, si otro maestro en el bus maneja SCL en bajo y USIIFG
o USISTTIFG es uno o si USICNTx=0.

Interrupciones I2C

Hay un vector asociado con el modulo USI con 2 banderas de interrupcin importantes
para la operacin I2C,USIIFG y USISTTIFG. Cada bandera de interrupcin tiene su propio
bit de habilitacin, USIIE y USISTTIE. Cuando la interrupcin es habilitada, y GIE =1,
cualquier bandera de interrupcin generara una peticin de interrupcin.

USIIFG es uno cuando USICNTx llega a cero, ya sea por cuenta o por escribir
directamente cero en los bits USICNTx. USIIFG se borra al escribir un valor > 0 en los bit
USICNTx cuando USIIFGCC=0, o directamente por software cuando USISTTIFG es uno
cuando se detecta una condicin de Start. La bandera USISTTIFG debe ser borrada por
software.
La recepcin de la condicin de STOP se indica con la bandera USISTP pero no existe
vector de interrupcin asociado con esta bandera. USISTP se borra al escribir un valor >0
en los bits USICNTx cuando USIIFGCC=0 o directamente por programa.

AMBIENTE DE DESARROLLO Y PROGRAMACION (IAR)

Terceras partes han desarrollado ambientes para la programacin y depuracin de


programas de los microcontroladores de Texas Instruments; existe un software llamado

81
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

IAR creado por IAR SYSTEMS, que se puede bajar gratuitamente de la pagina de Texas
Instruments y que una vez instado permite la creacin, depuracin y programacin de la
familia MSP430 en conjunto con un programador de Texas como el MSP-FET430UIF.
Cabe sealar que estos microcontroladores tienen nter construida circuitera para poder
observar el estado del microcontrolador ver y modificar registros, memoria etc. y que
adems se puede correr a pasos un programa de servicio de interrupcin activo, cosa que
hasta hace poco no era posible con los microcontroladores de otros fabricantes.

En la figura 4 se tiene la ventana que aparece al abrir el IAR, la ventana emergente nos da
4 opciones; la primera dice crear un proyecto nuevo en el espacio de trabajo actual, la
segunda opcin dice agregar un proyecto existente a espacio actual, el tercero abrir espacio
existente y el cuarto son ejemplos de aplicaciones.

La primera vez que creamos un proyecto seleccionaremos la primera opcin

Figura 4 primera pantalla al iniciar el IAR

El microcontrolador y el ambiente puede configurarse para trabajar en ensamblador, en C y en


C++ en este ejemplo se har en ensamblador.

Al seleccionar la primera opcin sale la segunda ventana emergente de la cual seleccionamos


la opcin de asm de la opcin asm y damos OK ver figura 5

82
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 5 ventana de IAR para escoger el tipo de proyecto a desarrollar.

Una vez que elegimos asm y damos OK se crea un proyecto para ensamblador y aparece una
ventana de edicin con un esqueleto de programa en ensamblador ver figura 6.

Figura 6 esqueleto de un proyecto en ensamblador por default.

Configuracin del IAR

83
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

A partir de este punto, se tiene que configurar el ambiente, para que ensamble o compile el
programa escrito en lenguaje ensamblador al cdigo de maquina que corresponde al modelo
especifico del microcontrolador a programar, recuerde que algunos modelos tienen mas
recursos internos que otros.
Para hacer eso en el men Project, options aparece una ventana emergente de opciones para un
espacio de trabajo.

En esta ventana emergente aparece una columna men llamada categora en ella la primera
opcion a configurar es General Options y del lado derecho una serie de carpetas, la primera,
permite configurar el modelo especifico de microcontrolador a programar simular.

Para este ejemplo se escoger el MSP430F1232 Ver figura 7

Figura 7 Seleccin del modelo especfico de microcontrolador a utilizar.

A partir de este punto podemos insertar el cdigo para el microcontrolador, en caso de que
resulte mas difcil poner cdigo que traer un ejemplo previamente tecleado tendremos que
remover el archivo en ensamblador (extensin S.43) que aparece por default; esto se consigue
con el botn derecho del ratn sobre el nombre del archivo remover. Una vez removido hay
que cerrarlo.
De forma inversa habr que abrir el archivo de inters (S.43), y una vez abierto, anexarlo al
proyecto. Para hacer esto, dar clic derecho con el ratn en el nombre del proyecto y seleccionar
ADD, escoger el archivo ya abierto. Esto se observa en la figura 7 y 8

84
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO

Figura 7 Opcin abrir archivo con clic derecho para cargar un archivo

Figura 8 Opcin agregar archivo (X.S43) a proyecto activo

Una vez agregado un archivo a un proyecto, este se debe compilar ya sea para bajarlo al
microcontrolador o para correrlo en el simulador.

Para compilar un archivo, elijase en la pestaa proyecto (Proyect) la opcin Build All, hecho
esto, se crea el archivo en cdigo de maquina y en este momento se marcan los posibles
errores existentes o aparece No errors No Warnings.

Para bajar el programa al microcontrolador dar en (proyect) la opcin Debug.

85

Potrebbero piacerti anche