Práctica 0 - Universidad Autónoma Metropolitana

1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
Tutorial de Code Composer Studio
El objetivo de esta pr´
actica es introducirte al uso del IDE (Integrated Development
Environment) Code Composer Studio (CCS), desde donde podr´as compilar, ensamblar
y depurar c´
odigo fuente. Las computadoras del laboratorio tienen instalada la versi´on
m´as reciente de CCS, sin embargo para poderlo instalar en tu computadora deber´as registrarte como usuario en el sitio de Texas Instruments y descargar el instalador desde
http://www.ti.com/tool/ccstudio. Es altamente recomendable que realices dicho registro ya que esto te permitir´
a descargar un sin n´
umero de documentaci´on u
´til desde el sitio
de Texas Instruments.
Parte 1. Identificando el modelo del MSP430 y la versi´
on de CCS
Antes de empezar a trabajar con tu LaunchPad, es necesario que identifiques que tipo de MSP430 est´
a conectado a tu LaunchPad. Localiza en tu LaunchPad la montura
etiquetada como IC1 y toma nota de la matr´ıcula impresa en la parte superior del circuito integrado. El LaunchPad viene con dos microprocesadores, y es muy probable que el
que se encuentra montado es el modelo MSP430G2553. La versi´on del CCS se obtiene del
men´
u Help About Code Composer Studio . Para el caso de las Figuras 1a y 1b podemos ver que
tenemos el modelo MSP430G2452 del MSP430 y la versi´on 6.1.0 del CCS.
(a) Matr´ıcula del MSP430
(b) Versi´on del Code Composer Studio
Figura 1: Datos importantes para trabajar con el CCS.
Parte 2. Creando un nuevo proyecto para ensamblador en el CCS
Cada que se empiece un ejercicio, se deber´a crear un nuevo proyecto de dise˜
no en el
CCS. Para crear un nuevo proyecto, solo ve al men´
u File New CCS Project .
Adaptado del curso EE3376 de la UTEP
1
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
Al seleccionar la opci´
on CCS Project se abrir´a la ventana New CCS Project . Sigue los pasos
que a continuaci´
on se listan:
1. Nombra el proyecto actual. En este caso nombraremos el proyecto actual como
demo_msp430.
2. Asegurate que la casilla use default location este deshabilitada.
3. Da click sobre el bot´
on Browse.
4. Elige una ubicaci´
on para el proyecto actual y da click en OK.
5. En la secci´
on Device, elige el modelo que se encuentra montado en tu LaunchPad.
Adaptado del curso EE3376 de la UTEP
2
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
6. En la secci´
on Project templates and examples, selecciona la opci´on Empty Assembly-only
Project.
7. Da click en Finish.
¡Listo!, has creado un nuevo proyecto en el Code Composer Studio.
Parte 3. Corriendo un programa en ensamblador paso a paso.
En esta parte aprender´
as como correr paso a paso un programa en ensamblador. Primero
necesitamos a˜
nadir un programa fuente al proyecto actual. Da click derecho sobre el nombre
del proyecto y despu´es selecciona New Source File
Adaptado del curso EE3376 de la UTEP
3
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
lo cual abrir´
a la ventana New Source File. En el campo Source file le asignar´as un nombre al archivo que contendr´
a el programa fuente, introduce el nombre demo_msp430.asm.
En el campo Template elige None para crear un archivo en blanco. Da click sobre Finish
para cerrar la ventana.
Esto abrir´
a un editor con un archivo en blanco, en donde tendr´as que introducir el c´odigo
listado en C´
odigo 1. Dicho programa suma cuatro pares de n´
umeros, los cuales pueden
interpretarse como n´
umeros con o sin signo. Si se interpretan como n´
umeros sin signo,
la bandera C indica la condici´
on de sobreflujo. Cuando se interpretan como n´
umeros con
signo, es la bandera V la que indica dicha condici´on. Despu´es de cada suma, la bandera C
se usa para modificar el estado del LED1 y la bandera V para modificar el estado del LED2.
Si copias y pegas el c´
odigo, aseg´
urate de que los espacios y las tabulaciones se
conserven tal cual aparecen, de otra forma obtendr´
as errores al compilar.
Adaptado del curso EE3376 de la UTEP
4
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
C´
odigo 1 : demo msp430.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
;--------------------------------------------------------------------------------; EE3376 MSP430 Lab 1
; The University of Texas at El Paso
; Autores: Victor Barraza y Eric MacDonald
;
; Un programa sencillo en ensamblador que suma cuatro pares de numeros, desplega
; ndo el estado de las banderas C y V en los LEDs 1 y 2 de la LaunchPad.
;--------------------------------------------------------------------------------; Las siguientes lineas deben incluirse en todos los programas en ensamblador.
;--------------------------------------------------------------------------------.cdecls C,LIST, "msp430G2553.h" ;Esta biblioteca debe cambiarse para que coincida
;con la matricula de tu MSP430
.text
;Marca el inico del programa
.global _main
;Punto de arranque para el vector de reset
;------------------------------------------------------------------------------_main:
mov.w #WDTPW|WDTHOLD, &WDTCTL ;detiene el temporizador "watchdog"
clr.b &P1OUT
;inicia con los LEDs apagados
mov.b #0x41, &P1DIR
;almacena el numero #01000001b en el registro P1DIR,
;lo cual configura P1.0 y P1.6 como salidas
mov.w
mov.w
add.w
mov.b
mov.w
rra.w
#0xFFFF,r4
#0xFFFF,r5
r4,r5
sr, &P1OUT
sr, r6
r6
;carga r4 con 64532 (sin signo) o -1 (con signo)
;carga r5 con 64532 (sin signo) o -1 (con signo)
;suma r4 + r5 y almacena el resultado en r5
;prende LED1 con base en el estado de la badera C
;carga el contenido de sr en r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 7 de r6
rra.w r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 6 de r6
mov.b r6, &P1OUT ;prende LED2 con base en el estado de la bandera V
clr.b &P1OUT
;apaga ambos LEDs
mov.w
mov.w
add.w
mov.b
mov.w
rra.w
#0x8000,r4
#0x8000,r5
r4,r5
sr, &P1OUT
sr, r6
r6
mov.w
mov.w
add.w
mov.b
mov.w
rra.w
#0x0001,r4
#0x0001,r5
r4,r5
sr, &P1OUT
sr, r6
r6
mov.w
mov.w
add.w
mov.b
mov.w
rra.w
#0x4000,r4
#0x4000,r5
r4,r5
sr, &P1OUT
sr, r6
r6
;carga r4 con 32252 (sin signo) o -32253 (con signo)
;carga r4 con 32252 (sin signo) o -32253 (con signo)
;suma r4 + r5 y almacena el resultado en r5
;prende LED1 con base en el estado de la bandera C
;carga el contenido de sr en r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 7 de r6
rra.w r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 6 de r6
mov.b r6, &P1OUT ;prende LED2 con base en el estado de la bandera V
clr.b &P1OUT
;apaga ambos LEDs
;carga r4 con 1
;carag r5 con 1
;suma r4 + r5 y almacena el resultado en r5
;prende LED1 con base en el estado de la bandera C
;carga el contenido de sr en r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 7 de r6
rra.w r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 6 de r6
mov.b r6, &P1OUT ;prende LED2 con base en el estado de la bandera V
clr.b &P1OUT
;apaga ambos LEDs
;carga r4 con 16182
;carga r5 con 16182
;suma r4 + r5 y almacena el resultado en r5
;prende LED1 con base en el estado de la bandera C
;carga el contenido de sr en r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
Adaptado del curso EE3376 de la UTEP
5
1123021 Microcontroladores
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Universidad Aut´onoma Metropolitana
;despues de la suma se encuentra en el bit 7 de r6
;corre el contenido de r6 a la derecha, el estado de la bandera V
;despues de la suma se encuentra en el bit 6 de r6
mov.b r6, &P1OUT ;prende LED2 con base en el estado de la bandera V
clr.b &P1OUT
;apaga ambos LEDs
rra.w r6
infloop:
jmp infloop
;--------------------------------------------------------------------------------; Las siguientes lineas definen lo que pasa cuando el boton de reset es presionado
; Estas lineas deben ser incluidas en todos los programas.
;--------------------------------------------------------------------------------.sect
".reset"
.short_main
Una ves capturado el c´
odigo fuente demo_msp430, tu ´area de trabajo debe lucir de la
siguiente forma
Ahora compilaremos nuestro proyecto. Existen dos formas de hacerlo: (1) Presionando las
teclas ctrl + B , o (2) mediante el men´
u Project Build Project
Adaptado del curso EE3376 de la UTEP
6
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
Antes de procede, aseg´
urate que tu LaunchPad se encuentra conectada a tu computadora
a trav´es del puerto USB. Ahora indicaremos al CCS que entre a modo de depuraci´on. De
nuevo, existen dos formas de iniciar el modo de depuraci´on: (1) Presionando la tecla F1 ,
o (2) mediante el men´
u Run Debug
Inmediatamente CCS se comunicar´a con tu LaunchPad y descargar´a a memoria flash el
contenido de tu programa, lo cual tomar´a unos cuantos segundos. Una ves que el programa
ha sido descargado, podemos ejecutarlo paso a paso de dos formas: (1) Presionando la tecla
F5 , o (2) dando click sobre el bot´
on Step Into o Step Over,
lo cual ejecutar´
a la instrucci´
on actual e incrementar´a el PC de forma que apunte a la
siguiente instrucci´
on. Conforme se ejecutan las instrucciones, nosotros seremos capaces de
ver los cambios en los registros en la secci´on Registers, ubicada en la esquina superior
derecha. La siguiente figura muestra el aspecto del CCS despu´es de haber presionado el
bot´on Step Over cuatro veces.
La siguiente instrucci´
on a ejecutarse se muestra sombreada en la ventana que muestra
el c´odigo fuente. En la ventana de registros observar´as que dos registros cambiaron como resultado de la instrucci´
on previa: (1) el registro PC, que ahora apunta a la siguiente
instrucci´
on y cambia continuamente durante la ejecuci´on del programa; (2) el registro r4
el cual se carg´
o con unos en la instrucci´on anterior. Ambos registros est´an resaltados en
amarillo, indicando que cambiaron. Ejecuta todo el programa paso a paso, observa que en
algunos casos los LEDs en tu LaunchPad se encender´an, lo cual corresponder´a al estado de
Adaptado del curso EE3376 de la UTEP
7
1123021 Microcontroladores
Universidad Aut´onoma Metropolitana
las banderas C y V, modificadas por la instrucci´on de suma. En la linea 67 del C´
odigo
1, ambos LEDs se prenden al escribir al puerto P1, ¿puedes explicar por que?.
Existen otras herramientas en el modo de depuraci´on como:
Run Free Run . Corre todo el programa de una sola vez, deteni´
endose solo si encuentra
un punto de paro. El c´
odigo en demo_msp430.asm fue espec´ıficamente dise˜
nado para
correrse paso a paso. Intenta correrlo con esta herramienta y no podr´as ver nada
debido a la velocidad del reloj principal.
Run New Breakpoint . Crea un nuevo punto de paro, permitiendo a los usuarios correr
el programa a toda velocidad y detener su ejecuci´on en ese punto para evaluar el
estado del procesador. Tambi´en puedes crear un nuevo punto de paro dando click
derecho sobre cualquier linea de c´odigo.
View Memory Browser . Permite examinar el contenido de la memoria mientras el programa esta detenido.
View Expressions . Permite examinar el contenido de localidades de memoria, registros,
y/o expresiones que contengan ambos.
Adaptado del curso EE3376 de la UTEP
8