You are on page 1of 18

5.

MICROCONTROLADORES DE TEXAS

En los captulos 3 y 4 se han visto los microcontroladores de 8 bits de Microchip y de

Freescale, respetivamente ahora se vern los fabricados por Texas Instruments. Para este

fabricante el microcontrolador mas pequeo es de 16 bits.

5.1. ARQUITECTURA DE LOS MICROCONTROLADORES MSP430.

Entre los microcontroladores de 16 bits se encuentran el MSP430F1132, el MSP430F1232 el

MSP430F2013, el MSP430F2272 y el MSP430F2274, entre otros, en la tabla 27 se muestran

algunas de las caractersticas de cada unos de ellos.

Tabla 27. Comparacin entre algunos Microcontroladores de 16 Bits. Texas.

Caractersticas 1 2 3 4 5
MSP430F1132 MSP430F1232 MSP430F2013 MSP430F2272 MSP430F2274
Memoria de 8KBX16 8KBX16 2KBX16 32KBX16 32KBX16
Programa (ROM)
FLASH
Memoria RAM 256 X 16 256 X 16 128 X 16 1K X 16 1K X 16
Pines de I/O 14 22 10 32 32
Oscilador Interno S1 S1 S1 S1 S1
Tipo de Empaque TSSOP/QFN TSSOP/QFN DIP/ TSSOP TSSOP/QFN TSSOP/QFN
Numero de Pines 20 28 14 38 38

1
Texas Instruments [Internet] [consultado 26 Agosto de 2011] [Hora 9:33]. Disponible en
http://www.ti.com/lit/ds/symlink/msp430f1132.pdf p. 11.
2
Ibid., p. 11.
3
Texas Instruments [Internet] [consultado 26 Agosto de 2011] [Hora 9:33]. Disponible en
http://www.ti.com/lit/ds/symlink/msp430f2013-ep.pdf p. 8.
4
Texas Instruments [Internet] [consultado 26 Agosto de 2011] [Hora 9:33]. Disponible en
http://www.ti.com/lit/ds/symlink/msp430f2272.pdf p. 18.
5
Ibid., p. 18.
__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
181
Siendo as seleccionado el MSP430F2272, pues es un microcontrolador poderoso; para

desarrollar las mismas aplicaciones que se realizaron en los captulos 3 y 4 es decir en los

microcontrolador PIC18F4550 (Microchip) y el MC9S08GT60 (Freescale), respectivamente. El

lector podr observar que estas aplicaciones pueden servir para los otros mencionados que se

analizaron en la tabla 25, solo hay que tener en cuenta el mapa de memoria de cada uno.

En la tabla 28 se muestra la comparacin entre los micronctroladores PIC18F4550, el

MC9S08GT60 y el MSP430F2272, en la cual se muestran las principales caractersticas de

cada uno de ellos y de esa forma se aprecia que son muy parecidos.

Tabla 28. Comparacin entre los Microcontroladores PIC 18F4550, MC9S08GT60 y el MSP430F2272

Memoria de Memoria RAM Pines de I/O Oscilador Tipo de Numero de


Microntroladores Programa Interno Empaque Pines
(ROM) FLASH
PIC18F4550 32K X 14 2KX8 35 SI PDIP/TQFP 40/44
MC9S08GT60 60K X 8 4KX8 36 SI QFP 44
MSP430F2272 32 K x 16 1 K x 16 32 SI TSSOP/QFN 38

5.2. MSP430F2272

En la tabla 27 y 28 se comento que el MSP430F2272 es de 38 pines empaquetado TSSOP

QFN, es as que en la figura 53 se muestra la distribucin de estos.

En la figura 54 se muestra el mapa de memoria. El lector podr interpretar y explorar todas las

posiciones del mapa de memoria. Por el momento se quiere avanzar en programacin en

asembler, para tal motivo se explicaran algunos de los registros que posee este

microcontrolador, sin embargo para mayor informacin se puede consultar el data sheet:

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
182
6
Figura 53. Distribucin de pines del MSP430F2272.

7
Figura 54. Distribucin de Memoria del MSP430F2272.

Este tipo de microcontroladores tienen 16 registros acumuladores, con los cuales se evita el

cuello de botella al tener uno o dos de ellos. Estos registros pueden ser usados para propsito

general o direccionamiento de memoria. En la figura No. 55 se muestran.

6
Ibid., msp430f2272.pdf . p. 3.
7
Ibid., msp430f2272.pdf . p. 3.
__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
183
8
Figura 55. Parte de la CPU del MSP430F2272.

REGISTRO STATUS/R2: En la figura 55 se pude apreciar que R2 es el registro que tiene el

estado de las operaciones. Este registro es muy similar el registro STATUS y al CCR en los

micrcontroladores de Microchip y Freecale respectivamente.

15 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


Reservado V SCG1 SCG0 OSC CPU GIE N Z C
OFF OFF

BIT 8: V: (OVERFLOW) DETECTA EL CAMBIO ERRNEO DE SIGNO EN UNA OPERACIN ARITMTICA

8
Ibid., msp430f2272.pdf . p. 43.
__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
184
BIT 7 - 6: SCG1- SCG0 SISTEMA GENERADOR DE RELOJ

BIT 5: OSC OFF:

BIT 4: CPU OFF:

BIT 3: GIE: (INTERRUPT MASK) MASCARA DE INTERRUPCIN.


1 LAS INTERRUPCIONES ESTN HABILITADAS.
0 LAS INTERRUPCIONES ESTN DESHABILITADAS.

BIT 2: N: (ZERO) BANDERA DE NEGATIVO


1: EL RESULTADO DE UNA OPERACIN ARITMTICA O LGICA DA CERO
0: EL RESULTADO DE UNA OPERACIN ARITMTICA O LGICA NO DA CERO.

BIT 1: Z: (ZERO) BANDERA DEL CERO


1: EL RESULTADO DE UNA OPERACIN ARITMTICA O LGICA DA CERO
0: EL RESULTADO DE UNA OPERACIN ARITMTICA O LGICA NO DA CERO.

BIT 0: C: (CARRY) CARRY.


1: EL RESULTADO DE UNA OPERACIN SIN SIGNO PASA DE LA CAPACIDAD DE OPERACIN, ES
DECIR EL CARRY DE 16 BITS.
0: EL RESULTADO DE UNA OPERACIN SIN SIGNO PASA DE LA CAPACIDAD DE OPERACIN, ES
DECIR DE 16 BITS.

5.3. PINES DE I/0.

El microcontrolador MSP430F2272 cuenta con 32 lneas de entrada y salida (I/O) distribuidas

en cuatro Puertos (Port1, Port2, Port3, Port4), el Puerto 1 tiene 8 un bits, el Puerto 2 tiene 8, el

Puerto 3 tiene 8 bits, el Puerto 4 tiene 8 bits. Para el control de los Puertos de entrada o salida

tiene los registros de control, P1DIR, P2DIR, P3DIR, P4DIR, los cuales controlan

respectivamente cada puerto. Para programar una lnea de salida se le garantiza uno (1) y para

programarla de entrada se le garantiza cero (0). Es importante aclarar que es lo contrario de los

de Microchip y lo mismo de los de Freescale.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
185
5.4. SET DE INSTRUCCIONES.

Antes de empezar a desarrollar ejemplos de aplicaciones en el microcontrolador; se hace

necesario ver las instrucciones. En el capitulo 3 se mencion que este fabricante esta en el

grupo RISC. En la tabla 28 se muestran las instrucciones; las cuales fueron tomadas del

datasheet del microcontrolador.

Tabla 28. Set instrucciones del MSP430F2272

INSTRUCCIN OPERACIN BIT DEL STATUS


V N Z C
MOV(.B) src,dst Mueve as: src dst - - - -
ADD(.B) src,dst Suma as: src + dst dst * * * *
ADDC(.B) src,dst Suma as: src + dst + C dst * * * *
SUB(.B) src,dst Resta as: dst + not.src + 1 dst * * * *
SUB(.B) src,dst Resta as: dst + not.src + C dst * * * *
CMP(.B) src,dst Resta as: dst src * * * *
Esta instruccin es la de comparacin. No afecta
ninguno de los dos registros involucrados pero si
afecta los bits del Status por los cuales se puede
preguntar
DADD(.B) src,dst Suma as: src + dst + C dst (En decimal) * * * *
BIT(.B) src,dst Operacin lgica AND as: src AND dst dst 0 * * *
No afecta ninguno de los dos registros involucrados
pero si afecta los bits del Status por los cuales se
puede preguntar
BIC(.B) src,dst Toma un bit (src) de un registro (dst) y lo pone en - - - -
CERO
BIS(.B) src,dst Toma un bit (src) de un registro (dst) y lo pone en - - - -
UNO
XOR(.B) src,dst Suma exclusiva as: src dst dst * * * *
AND(.B) src,dst Operacin lgica AND as: src AND dst dst 0 * * *
RRC(.B) dst PENDIENTE * * * *
RRA(.B) dst PENDIENTE * * * *
PUSH(.B) src SP 2 = SP Y Guarda src en SP - - - -
SWPB dst Intercambia los bit de mayor (15 al 8) peso a con los - - - -
de menor peso (7 al 0) del dst

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
186
CALL dst Llamado a un Subturina (dst) - - - -
RET Retorna de una Subrutina - - - -
JEQ/JZ Label Salta a una etiqueta (Label) si el bit Zero es Uno - - - -
JNE/JNZ Label Salta a una etiqueta (Label) si el bit Zero es Cero - - - -
JC Label Salta a una etiqueta (Label) si el bit Carry es Uno - - - -
JNC Label Salta a una etiqueta (Label) si el bit Carry es Cero - - - -
JN Label Salta a una etiqueta (Label) si el bit Negative es Uno - - - -
JGE Label Salta a una etiqueta (Label) si (N XOR V) es Cero - - - -
JL Label Salta a una etiqueta (Label) si (N XOR V) es Uno - - - -
JMP Label Salta a una etiqueta (Label) incondicional - - - -

Donde:
src = Fuente dst = Destino
- = Ningn Bit del Status es afectado 0 = Un Bit del Status es puesto en CERO
* = Algn Bit del Status es afectado 1 = Un Bit del Status es puesto en UNO

En las instrucciones que tienen (.B), esta se pueden usar para hacer operaciones en 8 bits, al
poner en .b en la instruccin.

5.5. PROGRAMACIN.

A continuacin se acondicionaran algunos de los ejemplos que se desarrollaron en los

microcontroladores de Microchip y de Freescale 3 y 4, con ello el lector tendr mejores

herramientas para desarrollar sus aplicaciones.

Para el desarrollo de las aplicaciones en Texas se siguen los mismos pasos de programacin,

planteados en el ejemplo 8 el cual se vio en el captulo 3, se recomienda al lector leer

nuevamente este ejemplo.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
187
Para programar y simular los programas de los microcontroladores de Texas se usara

CodeComposer versin 4.0, sin embargo en otra versin superior seria prcticamente los

mismo.

Ejemplo 26. Tomar el ejemplo 8 y acondicionarlo para el microcontrolador MSP430F2272.

A continuacin se desarrollara paso a paso, adems se explicara como hacer un proyecto en

CodeComposer.

Paso 1. El funcionamiento de un led ya se conoce por ende se omite este paso.

Paso 2. Hacer un diagrama de conexiones. Hay que decir en cual de las 32 lneas de In/Out, del

microcontrolador se va a poner el led. Se puede tomar P3.5. en la figura 56 se muestra como

esta conectado el led, el lector entender que hay que alimentar el microcontrolador.

Figura 56. Monajeje del Ejemplo 26 usando MSP430F2272.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
188
Paso 3. Hacer el diagrama de flujo. De acuerdo al diagrama de conexiones planteado en el

punto anterior. Hay que programar P3.5 como salida para el led. Ver diagrama 39.

Diagrama 39. Programa que prender y apagar un led. Ejemplo 26

INICIO

Definicin del Microcontrolador

Programacin P3.5 Como Salida


PRENDE

1 = P3.5 Prende el LED

Llamar TIEMPO

0 = P3.5 Apaga el LED

Llamar TIEMPO

Para estos microcontroladores la rutina tiempo es mas sencilla, pues como se tienen registros de

16 bit con un solo registro se puede hacer una rutina suficiente para ver prender y apagar el led,

recodar que 216 = 65536 a diferencia de 28 = 256, ya con esto el lector entender que es mas

suficiente. Ver diagrama 40. Recordar que estos microcontroladores tienen 15 registros que se

pueden usar como propsito general, sin embargo los R0, R1, R2, R3 ya tienen tareas propias

del microcontrolador, ver figura 55, es por ello que no se recomienda usar los para propsitos

generales, es mejor usar desde R4. Para esta rutina se usa el R15

Diagrama 40. Tiempo del ejemplo 26.

TIEMPO

450D R15
T_1
R15 -1 = R15

NO
R15 = 0

SI
RETORNAR

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
189
Paso 4: Una vez hecho el diagrama de flujo hay que pasarlo a instrucciones. A continuacin se

desarrollara el diagrama de flujo bloque por bloque.

Pero antes se hace necesario saber como se construye proyecto Code Composer.

Cuando se construye un nuevo proyecto se hace la definicin del microcontrolador, para ello

se usa CodeComposer versin 4.0 o en otra versin superior. Para abrir este programa ir por

Inicio/Todos los programas/Texas Instrument/Code Composer V4.0/Code Composer V4.0,

as como lo muestra la figura 57a.

57 a 57 b

Figura 57. Inicio de Code Composer y Crear proyecto.

En la figura 57b se observa una ventana de donde ud pude dejar sus proyectos, se recomienda

que el programador tenga una carpeta exclusiva para los proyectos de Texas, entonces va por

Bruwse seleccionar la carpeta y dar OK. Una vez seleccionada la carpeta va por File/New,

como se muestra en la figura 58a, en la ventana que sale darle CCSProyect, ver figura 58b. En

la siguiente ventana que sale usted puede escribir el nombre del proyecto, y hacer click en

Next, figura 59a; en la siguiente ventana seleccionar la familia MSP430 Ejecutable, y hacer

click en Next. En la siguiente ventana solo es hacer click en Next. En la siguiente ventana

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
190
seleccionar el microcontrolador MSP430F2272 en la lista, ver figura 59b , despus seleccionar

Teeat as an Assembler-only proyect, y hacer click en Finish.

58 a 58 b

Figura 58. Creacin de nuevo Proyecto Perte1.

59 a 59 b

Figura 59. Creacin de nuevo Proyecto Perte2.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
191
Una vez creado el proyecto, figura 60a, se debe crear el archivo en assembler, para ello hacer

click derecho sobre en nombre del proyecto, va por New/Header File.

En la ventana que se abre escribir el mismo nombre del proyecto pero en .asm, y hacer click en

Finish. figura 60b.

60 a 60 b

Figura 60. Creacin de nuevo Proyecto Perte3.

En la ventana que se abre el usuario puede hacer su programa ver figura 61a, se de dejar en

blanco, favor borrar, (figura 61b). Se recomienda buscar en la pgina de Texas Instruments

(www.ti.com) programas ejemplo como gua en assembler (plantilla para configuracin del

WDT, OSC, RESET, entre otros), el lector puede ver el data sheet de microcontrolador y all el

fabricante recomienda algunas rutinas base. Sin embargo el lector puede copiar este ejemplo y

tomarlo como base para los siguientes programas.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
192
61 a 61 b

Figura 61. Creacin de nuevo Proyecto Perte4.

Cuando se abri el nuevo proyecto se escogi el microcontrolador que es primer bloque del

diagrama de flujo; el siguiente bloque en el diagrama de flujo es programa la lnea P3.5 de

salida, para ello el lector puede recordar las instrucciones de la tabla 28, y adems lo

comentado en el punto 5.3, y es para programar una lnea de salida se pone en 1, usando el

registro P1DIR. La instruccin para poner un UNO en cualquier bit de un registro es: BIS(.B)

src,dst; y para poner un CERO en cualquier bit de un registro es: BIC(.B) src,dst. La forma

como se escribe es:

BIS.B #00100000B,&P3DIR ; P3.5 Como Out

Para el lector debe ser claro que si se quiere otro bit solo es escribir la combinacin del bit.

Siguiendo el diagrama de flujo el siguiente bloque es prender el led, para ello se usa la misma

instruccin pero con la ahora se usa el registro P3OUT, el cual es el puerto, as:
__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
193
BIS.B #00100000B,&P3OUT ; Prende LED

Continuado el diagrama ahora se requiere llamar tiempo para ver prendido el led, para ello se

usa la instruccin CALL dst, as:

CALL #TIEMPO ; Tiempo para ver led prendido

Siguiendo el diagrama de flujo el siguiente bloque es apagar el led, para ello se usa la misma la

instruccin BIC(.B) src,dst, as:

BIC.B #00100000B,&P3OUT ; Apaga LED

Continuado el diagrama ahora se requiere llamar tiempo para ver apagado el led, para ello se

usa la instruccin CALL dst, as:

CALL #TIEMPO ; Tiempo para ver led apagado

Por ultimo es volver a prender el led para ello se usa una instruccin de salto incondicional la

cual es: JMP Label, hay que aclara que se debe salta a la etiqueta PRENDE, asi:

JMP PRENDE ; VA PRENDER EL LED

Ahora es hacer programa de tiempo, diagrama de flujo 40, lo primero es cargar el registro R15

usando la instruccin MOV(.B) src,dst, as:

MOV.W #450,R15

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
194
Para entender un poco mas esto se puede observar la tabla 29 en la cual se muestra como se usa

esta instruccin para cargar el valor 119 en decimal y los equivalentes en Hexadecimal, ASCII

y en binario el registro R15.

Forma de uso de la instruccin Explicacin


MOV.W #$119,R15 Mueve el valor 119 en
Hexadecimal al registro R15
MOV #77,R15 Mueve el valor 119 en Decimal al
registro R15
MOV #01110111B,R15 Mueve el valor 01110111 en
Binario al registro R15
MOV #A,CON1 Mueve el valor ASCII de la letra
M R15

Tabla 29. Forma de uso de la instruccin MOV src,dst

Siguiendo el diagrama hay que restar en uno el R15 y preguntar si es cero, para ello se usa las

instrucciones: DEC.W dst y JNZ Label; la primera resta en uno (dst-1=dst), la

segunda salta a una etiquta cuando aun no es cero, as:

DEC.W R15 ; R15-1 = R15


JNZ L1 ; R15 =0

Por ultimo se usa la instruccin ret para retornar al programa principal desde la subrutina

TIEMPO as:

RET ;RETORNA AL PROGRAMA PRINCIPAL

Ahora que se escribi el programa desarrollando cada una de las partes del diagrama de flujo a

continuacin se puede observar el programa completo:

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
195
.cdecls C,LIST, "msp430x22x2.h"

;------------------------------------------------------------------------
.text ; Program reset
;------------------------------------------------------------------------
RESET mov.w #300h,SP ; Initialize stack pointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupBC bis.b #LFXT1S_2,&BCSCTL3 ; LFXT1 = VLO

SetupOsc BIS.B #RSEL2+RSEL1+RSEL0,&BCSCTL1 ; Select range 7


BIS.B #DCO2+DCO1+DCO0,&DCOCTL ; Select max DCO tap

SetupP1
BIS.B #00100000B,&P3DIR ; P3.5 Como Out

PRENDE
BIS.B #00100000B,&P3OUT ; Prende LED
CALL #TIEMPO ; Tiempo para ver led prendido
BIC.B #00100000B,&P3OUT ; Apaga LED
CALL #TIEMPO ; Tiempo para ver led apagado

JMP PRENDE ; VA PRENDER EL LED

TIEMPO
MOV.W #45000,R15
T_1
DEC.W R15 ; R15-1 = R15
JNZ T_1 ; R15 =0
RET ;RETORNA AL PROGRAMA PRINCIPAL

;------------------------------------------------------------------------
; Interrupt Vectors
;------------------------------------------------------------------------
.sect ".reset" ; MSP430 RESET Vector
.short RESET ;
.end

Una vez escrito todo el programa hay que compilar para ello hacer click como se muestra en la

figura 62a, previamente tener conectado LunchPad. El lector puede darse cuanta cuales son los

icono para la simulacin, (figura 62b) estos estn en un ovalo rojo, el programa como va

corriendo estn el ovalo azul y los registros del microcontrolador en el ovalo negro. Para correr

el programa paso a paso es: F5.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
196
62 a 62 b

Figura 62. Como compilar y Emular.

El lector puede entonces ir ejecutado el programa paso a paso, e ir verificando como van

cambiando los registros involucrados en el programa y de esa forma ver si el programa esta

haciendo lo debe hacer, para este caso prender y apagar un led. Adems como esta en

emulacin el microcontrolador est ejecutado en tiempo real el programa.

Si se desea simular en proteus se debe tener habilitado en CodeComposer la opcin Create

flash image: Intel-HEX; para ello va por Proyect/Properties, ver figura 63a, en la ventana que

sale seleccionar C/C Build / Build Steps, y al finalizare OK, ver figura 63b

Paso 5. Programar el microcontrolador, armar el circuito y probar. En este paso hay que tener

cuidado cuando se este cableando en el protoboard, para ello hay que saber la distribucin del

microcontrolador (ver figura 53) y el diagrama de conexiones planteado en el paso 2.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
197
63 a 62 b

Figura 51. Como compilar y Emular.

Paso 6. Si hay que hacer correcciones, hacerlas y volver al paso tres.

__________________________________________________________________________
Diseos NEFEPEQUIN 06/05/2013
198