Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
3
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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 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.
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.
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.
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
/**********************************************************************
// 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
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Apaga Perro guardin
P1DIR |= 0x01; // P1.0 como salida
for (;;)
{
volatile unsigned int i;
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
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
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.
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.
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.
11
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
Nota: La Bandera PxIFG cambia a uno, cuando se cambian los registros PxOUT o
PxDIR
0-
0-
1-
1-
12
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
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.
13
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
Caractersticas
14
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
15
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
16
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
Modo contino
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
18
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
Bloques de captura/comparacin
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
20
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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:
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.
000 Salida La seal de salida OUTx esta definida por el bit OUTx.
La seal OUTx se actualiza cuando OUTx se actualiza.
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.
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
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.
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.
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.
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.
25
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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:
26
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
27
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
28
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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)
0 Interrupcin deshabilitada.
1 Interrupcin habilitada
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.
29
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
4 Introduccin al ADC10
30
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
31
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
32
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
4.2.1 El ADC 10
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.
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.
33
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
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.
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
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.
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
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
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
39
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
40
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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
42
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
43
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
45
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
Transferencia continua
46
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
47
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
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
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.
49
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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 )
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
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.
51
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
52
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
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.
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
Memoria flash
55
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
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.
5.2.1 Segmento A
; Desproteje Segmento A
57
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
; Proteje Segmento A
SEGA_LOCKED ; Si , continua
; Segmento A esta protegido
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)
58
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
Un borrado es iniciado por un intento de escritura en una direccin que este dentro del
rango a ser borrado.
59
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
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
Los modos de escritura se seleccionan mediante los bits WRT y BLKWRT bits, se muestra
el listado en la tabla 5.1
Tabla 51.
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.
62
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
El diagrama de flujo para iniciar una escritura de byte/Word se muestra en la figura 5-8.
; Escritura Byte/word desde flash. 514 kHz < SMCLK < 952 kHz
63
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
; Escritura de Byte/word desde la RAM. 514 kHz < SMCLK < 952 kHz
; Asume 0FF1Eh est borrado
; Asume ACCVIE = NMIIE = OFIE = 0.
64
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
65
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
66
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
67
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
Existen3 opciones de programacin para los MSP430, todas las opciones soportan
programacin en sistema
via JTAG
via the Bootstrap Loader
via solucin personalizada
69
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
70
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
FWKEYx Bits15-8 FCTLx password. Siempre se lee como 096h. Debe ser escrita como
=0A5 o un PUC ser generado
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.
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
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
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
Introduccin al USI
73
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
74
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
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.
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.
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
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.
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.
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.
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
; 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.
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.
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
80
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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
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.
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.
82
Microcontrolador Msp430 M. en C. Enrique Lpez Ortega IPN ESIME ZACATENCO
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.
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.
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
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.
85