5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 1/31
Microcontroladores
Grado en Ingeniería de Tecnologías de Telecomunicación
Práctica 1: Tutorial básico
CURSO ACADÉMICO 2011/2012
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 2/31
Í NDICE
1. INTRODUCCIÓN ......................................................................................................................... 1
2. PRÁCTICA 1: TUTORIAL BÁSICO ................................................................................................ 3 1. Generación de Proyectos. Espacio de Trabajo. ........................................................................ 3 2. Generación de código ejecutable. Detección de Errores ........................................................ 10 3. Depuración Básica. ................................................................................................................ 12 4. Depuración Básica: Puntos de Ruptura.................................................................................. 15
5. Depuración Básica: Medidas de Tiempo mediante bucles SW................................................ 18
6. Depuración Básica: Representación de la información en Memoria ....................................... 21 3. REFERENCIAS ......................................................................................................................... 28
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 3/31
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 4/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
1
1. INTRODUCCIÓN
Este documento describe los conceptos básicos necesarios para comenzar a utilizar el sistema de
desarrollo necesario para la asignatura Microcontroladores . Dicho sistema se basa en el manejo
de una plataforma de desarrollo MSP-EXP430G2 de Texas Instruments (también llamada Launchpad ) y el entorno de desarrollo y depuración IAR Embedded Workbench .
La plataforma de desarrollo Launchpad proporciona algunos elementos útiles para implementar
pequeños sistemas y aplicaciones basadas en la familia de microcontroladores MSP430G2 . En el
laboratorio de la asignatura se dispone de varias placas, que incluyen el modelo de
microcontrolador MSP430G2533, que se utilizará como base de los diseños. Las Launchpad
integran un sistema de depuración que permite su conexión a un PC mediante un cable de
conexión USB-miniUSB. Las características básicas de esta placa así como su utilización para el
desarrollo de aplicaciones se describen en el documento Manual de usuario del sistema de desarrollo MSP-EXP430G2 (Launchpad)1, disponible en la página de la asignatura del Campus
Virtual.
La aplicación IAR Embedded Workbench constituye un entorno integrado que posee un Editor, un
Ensamblador/Compilador, un Linkador y un Depurador. Con esta aplicación se puede desarrollar
código tanto en ensamblador como en C para la familia de microcontroladores MSP430 , así como
transferirlo a cualquier placa de desarrollo compatible y ejecutarlo en modo depuración. De esta
forma, la aplicación IAR Embedded Workbench permite controlar por completo el ciclo de
desarrollo de cualquier sistema basado en la familia de microcontroladores MSP430 . La guía de
usuario de la aplicación IAR Embedded Workbench se describe en los documentos Manual del
entorno de desarrollo IAR EW-MSP430 2 , y Manual del depurador C-Spy 3 , también disponibles en
la página WEB de la asignatura..
La aplicación IAR Embedded Workbench se ejecuta desde el menú Inicio: [Inicio – Programas –
IAR Systems – IAR Embedded Workbench KickStart for MSP430 5.30 – IAR Embedded
Workbench ]. La placa Launchpad se alimenta a partir del puerto USB del PC con el cable USB-
miniUSB a PC.
En este tutorial se introduce el ciclo completo de utilización de la herramienta IAR Embedded Workbench para crear un espacio de trabajo, editar, ensamblar, enlazar y depurar una aplicación
sencilla o proyecto programado en ensamblador. Asimismo, se aprovechará para mostrar el
funcionamiento de un programa y aclarar varios conceptos básicos relacionados con la
programación en ensamblador.
1 MSPEXP430G2 Launchpad Experimenter Board User’s Guide
2
IAR Embedded Workbench IDE Project Management and Building Guide
3 IAR Embedded Workbench C-SPY Debugging Guide
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 5/31
Práctica 1 – Tutorial Básico Curso 2011/2012
2
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 6/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
3
2. PRÁCTICA 1: TUTORIAL BÁSICO
1. Generación de Proyectos. Espacio de Trabajo.
A continuación se enumeran los pasos necesarios para crear un espacio de trabajo, editar,enlazar y depurar un proyecto en ensamblador.
1.1 Ejecuta el programa IAR Embedded Workbench.
1.2 Crea un nuevo espacio de trabajo (Workspace ) para ubicar todos los proyectos que se van a
desarrollar en la asignatura: [File – New – Workspace ]:
1.3 Crea un nuevo proyecto vacío para la Práctica 1 dentro del espacio de trabajo recién creado.
Dicho proyecto se debe guardar en la ubicación “D:\USR\MC_GY_GrupoX\4 ” con el nombre
“Practica1.ewp ”, donde “Y ” se corresponde con tu titulación (SI : Sonido e Imagen; TST
Telemática o Sistemas de Telecomunicación; E : Electrónica; y TT : Tecnologías de
Telecomunicación) y “X ” se corresponde con el número reservado a cada grupo de alumnos
en la asignatura: [Project – Create New Project – Empty Project ]
4Si no existe este directorio, deberéis crearlo.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 7/31
Práctica 1 – Tutorial Básico Curso 2011/2012
4
1.4 Configura el proyecto recién creado “Practica1” con las opciones adecuadas para su correcto
uso con el sistema de desarrollo del que se dispone: [Project – Options ]
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 8/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
5
Establece las siguientes opciones:
• General Options – Target – Device - MSP430Gxxx Family - MSP430G2533
• General Options – Target – Exclude RESET Vector √
• General Options – Output – Output file – Executable
• Assembler – Output – Generate debug information
• Assembler – List – Output List File
• Linker – Output – Format – Debug information for C-SPY [With runtime – With I/O]
• Debugger – Setup – Driver – FET Debugger
• FET Debugger – Setup – Connection – Texas Instrument USB IF
• FET Debugger – Download – Flash Erase - Erase main and Information memory
• FET Debugger – Download – Verify download
Desmarcar en [Tools – Options – Stack ] la opción:
• Stack pointer(s) not valid until program reaches:
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 9/31
Práctica 1 – Tutorial Básico Curso 2011/2012
6
1.5 Guarda el espacio de trabajo actual con el proyecto recién creado “Practica1.ewp ” en la
ubicación “D:\USR\MC_GY_GrupoX\” con el nombre “Micro2011-12.eww ”5, donde “Y ” se
corresponde con tu titulación (SI : Sonido e Imagen; TST Telemática o Sistemas de
Telecomunicación; E : Electrónica; y TT : Tecnologías de Telecomunicación) y “X ” se
corresponde con el número reservado por cada grupo de alumnos en la asignatura: [File – Save Workspace ]
1.6 Para incluir el código fuente en el proyecto creado existen dos posibilidades: crear un fichero
fuente y añadirlo al proyecto o añadir al proyecto un fichero fuente ya creado. Para crear un
fichero fuente es necesario llevar a cabo la siguiente secuencia: [File – New – File ]
5 Si quieres puedes usar un solo espacio de trabajo para todo el curso o crear distintos espacios de trabajo para las
diferentes prácticas.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 10/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
7
1.7 Guarda el archivo de código fuente del proyecto “Practica1.ewp ” en la ubicación
“D:\USR\MC_GTST_GrupoX\” con el nombre “Practica1.s43 ”, donde “X ” se corresponde con el
número reservado por cada grupo de alumnos en la asignatura6: [File – Save ]
1.8 Tanto si el fichero se ha creado y guardado, como se ha comentado en los puntos 1.5 y 1.6, o
si se parte de uno ya creado, incluye el archivo que va a contener el código fuente
“Practica1.s43 ” en el proyecto “Practica1”: [Project – Add Files ]
6 Si lo prefieres, puedes darle otro nombre al fichero añadiendo, por ejemplo, tu número de grupo y titulación:
Practica1G3TT.s43
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 11/31
Práctica 1 – Tutorial Básico Curso 2011/2012
8
1.9 Si se desea eliminar un fichero del proyecto, selecciónalo dentro de la ventana del proyecto y
ejecuta [Project – Remove ]. Esta acción elimina el fichero del proyecto pero no lo elimina del
directorio en el que se guardó.
1.10 Para proceder a trabajar con el primer ejemplo de código, descarga el fichero “Practica1.s43”
de la página web, en el directorio “D:\USR\MC_GY_GrupoX\” o copia el código que verás a
continuación en el fichero que has creado en los puntos anteriores. Una vez tengas el código,
incluye en el proyecto “Practica1” el fichero “Practica1.s43” (como se ha indicado en el punto
1.7). Para editar el archivo de código fuente puedes hacer doble clic sobre el nombre del
fichero en la ventana proyecto. Si haces algún cambio, no olvides salvar el archivo ”: [File –
Save ]
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 12/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
9
Código fuente del fichero “Práctica1.s43 ”:
; ****************************************************************************; UNIVERSIDAD DE MALAGA DPTO. TECNOLOGIA ELECTRONICA; ****************************************************************************; PROGRAMA : Practica1.S43 (v1.0); TARGET : Placa MSP-EXP430G2 (v1.4) - Microcontrolador MSP430G2533
; DESCRIPCION : Implementa el parpadeo del LED de la placa conectado; al terminal 0 del puerto 1. El parpadeo del LED se; realiza mediante dos bucles software anidados.El bucle inteno; tarda 4 ciclos de reloj en ejecutarse y se ejecuta un total de; 55000 veces (0xD6D8); AUTOR : Eva González Parada (modificado por I. Herrero); FECHA : 02-03-12; ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1.1MHz; (no se necesita conectar HW adicional a la placa);; ****************************************************************************;-----------------------------------------------------------------------------; FICHEROS CABECERA;-----------------------------------------------------------------------------
#include "msp430G2533.h" ; Definición de etiquetas
;-----------------------------------------------------------------------------; DEFINICIÓN DE CONSTANTES;-----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000BASE_VECT EQU 0xFFE0VARIABLES EQU 0x0220CUENTA_200ms EQU 0xD6D8CUENTA_1S EQU 5
;-----------------------------------------------------------------------------; DEFINICIÓN DE VARIABLES;-----------------------------------------------------------------------------
ORG VARIABLES
;-----------------------------------------------------------------------------
; PROGRAMA PRINCIPAL;-----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL
INICIO mov #0x0400,SP ; Inicializa base pilaMov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
CONFIG_P1_0 bis.b #BIT0,&P1DIR ; Configura el P1.0 salidabic.b #BIT0,&P1OUT ; Pone P1.0 a 0. Apaga el LED
BUCLE_S mov.w #CUENTA_1S,R5BUCLE_200ms mov.w #CUENTA_200ms,R6
BUCLE_4C dec.w R6nopjnz BUCLE_4C
dec.w R5
jnz BUCLE_200ms
xor.b #BIT0,&P1OUTjmp BUCLE_Snop
;-----------------------------------------------------------------------------; VECTORES DE INTERRUPCIÓN;-----------------------------------------------------------------------------
ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESETDW INICIOEND
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 13/31
Práctica 1 – Tutorial Básico Curso 2011/2012
10
2. Generación de código ejecutable. Detección de Errores
2.1 Ensambla y linka el código fuente “Practica1.s43 ” para generar el programa ejecutable
correspondiente a la Práctica1: [Project – Make ]; también se puede indicar con la tecla de
función F7 ó pulsando el icono
Aparece la ventana “Build” (debajo), que indica el resultado del proceso de generación de código
ejecutable, y los posibles errores. También se puede abrir con [View – Messages - Build ]. Se
cierra pinchando la “X”. Si existe un error en el código, se indicará en dicha ventana. Además, se
marca el error con un círculo rojo al principio de la línea donde se ha producido. Por ejemplo,
modificamos una línea de código cambiando un nemónico a un valor inexistente. Si ahora
generamos el ejecutable con [Project – Make ] se indicará el error:
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 14/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
11
Un doble click sobre un mensaje de error te lleva directamente a la línea del fichero donde
está el mismo.
2.2 Rectifica el error anterior. Conecta la placa de desarrollo al puerto USB del PC si no se ha
hecho anteriormente. Transfiere el programa ejecutable “Practica1.d43 ” a la placa de
desarrollo para ser depurado: [Project – Download and Debug ], tecla CTRL-D o icono .
Si es la primera vez que se utiliza el sistema de desarrollo, es posible que se muestre una
ventana flotante informando de que es necesario actualizar el firmware de la placa de desarrollo:
En tal caso:
Si está usted trabajando con su propio entorno de desarrollo, es decir, si tanto el PC como el kit
MSP430 son de su propiedad, le recomendamos que pulse Sí. En caso contrario tendrá que
conseguir una versión más antigua de la aplicación IAR-Embedded Workbench. Consulte a los
profesores de la asignatura en tal caso.
En cualquier otro caso, es decir, si el PC, el kit de desarrollo o ambos son propiedad de la
Universidad, consulte al profesor de la asignatura antes de continuar.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 15/31
Práctica 1 – Tutorial Básico Curso 2011/2012
12
3. Depuración Básica.
3.1 Inicia la ejecución del programa: [Debug – Go ] , F5, o el icono
Observa la aparición de 2 nuevas ventanas. Dissasembly (a la derecha), que muestra el programa
en código máquina, y con las etiquetas sustituidas por sus valores reales; y Debug Log (debajo)
que muestra información relacionada con la depuración del código (modelo de micro, tensión de
alimentación, éxito o no del inicio de la depuración, e incidencias durante ésta).
3.2 Detén la ejecución del programa: [Debug – Break ]
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 16/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
13
3.3 Observa el contenido de los registros: [View – Register ]
3.4 Ejecuta el programa Paso a Paso: [Debug – Step Over ], F10, o el icono . El resaltado en
verde indica la instrucción que se va ejecutar a continuación (en ambas ventanas
Practica1.s43 y Disassembly ). En la ventana de visualización de registros, los registros que
aparecen en rojo, reflejan que han sufrido un cambio respecto a la ejecución de la instrucción
anterior. Si se observa en la ventana Disassembly el código máquina de la siguienteinstrucción a ejecutar, se puede comprobar, tras su ejecución, que en la ventana Register el
PC se pone en rojo, y que éste se ha incrementado en tantas unidades como el número de
bytes del código máquina de la instrucción ejecutada.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 17/31
Práctica 1 – Tutorial Básico Curso 2011/2012
14
En el ejemplo, ejecuta las instrucciones paso a paso hasta llegar a la etiqueta BUCLE_S,
observa el valor de los registros R5 y R6 y vuelve a ejecutar paso a paso. Se observa como
el registro R5 toma el valor 0x0005 y el registro R6 se decrementa en cada ejecución del
bucle etiquetado por BUCLE_4C. Observa los valores que va tomando el PC durante el bucle.
3.5 Evidentemente la ejecución del bucle no se puede hacer paso a paso, modifica la constante
CUENTA_200ms para darle el valor 5. Esta acción puedes llevarla a cabo sin salirte del
depurador, editando el cambio en la ventana Practica1.s43 y luego ejecutando la acción
[Project – Make&Restart Debugger] o pulsando en el icono .
3.6 Ejecuta el bucle etiquetado por BUCLE_4C paso a paso, observa como cuando el registro R6
llega a 0, el registro SR se pone rojo, pulsa en el + y despliega el registro SR, observa como
el bit Z se ha puesto a 1. Consulta la guía de usuario de la familia MSP430x2xx, para saber
identificar los valores que toma el bit C durante la ejecución del bucle. Vuelve a dar a la
etiqueta CUENTA_200ms su valor original 0xD6D8.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 18/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
15
4. Depuración Básica: Puntos de Ruptura
4.1 En el programa aparecen tres bucles anidados, de manera que el bucle etiquetado por
BUCLE_200ms contiene al bucle etiquetado por BUCLE_4C y el bucle etiquetado por
BUCLE_S contiene al bucle BUCLE_200ms, y por tanto a BUCLE_4C. El registro R6 que
controla la ejecución del bucle BUCLE_4C tiene un valor muy alto para ejecutarse paso a
paso y ver así el efecto de los otros bucles. Por este motivo, vamos a establecer un punto de
ruptura en la instrucción dec.w R5, que nos permitirá ver los cambios en el registro R5,
combinado la ejecución y la ejecución paso a paso. Para establecer el Punto de Ruptura en la
instrucción indicada, sitúa el cursor en la línea de la instrucción y haz [ Edit – Toggle
Breakpoint ] o pulsa sobre el icono . La línea pasa a roja, con un punto rojo delante.
4.2 Arranca la ejecución del programa:[Debug – Go ] ó . Como consecuencia del punto de
ruptura, éste se detendrá antes de decrementar el registro R5. En la ventana Debug Log se
indica que el programa ha alcanzado un punto de ruptura: Breakpoint hit: Code @ Practica1.s43:54.11.
4.3 Resetea el programa: [Debug – Reset ] o pulsa la opción para que vuelva a ejecutarse
desde el inicio.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 19/31
Práctica 1 – Tutorial Básico Curso 2011/2012
16
4.4 Pincha en la línea donde está colocado el punto de ruptura, y deshabilítalo temporalmente:
[Edit – Enable/Disable Breakpoint ]. La línea pasa a un color rosa, con un punto rojo “vacío”
delante. Si ejecutamos de forma continua de nuevo [Debug – Go ] , ya no se detendrá el
programa en el punto de ruptura aunque pase por él. También puedes hacerlo pinchando
sobre la línea y pulsando el botón derecho del ratón (el botón derecho permite acceder a
muchos de los menús de la barra superior según el lugar donde se pinche).
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 20/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
17
Depuración Avanzada: Puntos de Ruptura Condicionales
4.5 El punto de ruptura que se ha colocado, se activa cada vez que se ejecuta la instrucción
correspondiente. Podemos establecer que solo se detenga cuando se cumpla una
determinada condición. Para ello, abre la ventana BreakPoints con [View – Breakpoints].
Aparecerá en la parte de abajo, agrupada con Debug Log (se puede cambiar de una a otra
pinchando la pestaña correspondiente). En la ventana se ve el punto de ruptura definido, su
tipo, el programa en el que se definió, y la condición (ahora mismo no hay ninguna). Pincha
con el botón derecho sobre el punto de ruptura y selecciona Edit en el menú que aparece.
4.6 Coloca la condición que se debe cumplir para que “salte” el punto de ruptura en la casilla
Expression situada en el cuadro Conditions. Escribe la expresión “R5=1” y comprueba que
está activado el botón Condition true. De esta forma, el punto de ruptura se activará cuando
el registro R5 llegue a 1. Otra posibilidad podría ser no poner ninguna condición, y colocar en
el campo Skip un 3. De esta forma se esperará a pasar 3 veces por el punto de ruptura antes
de detenerse en éste.
También es posible establecer un cambio de condición [Condition changed ] como causa de
la activación del punto de ruptura activado.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 21/31
Práctica 1 – Tutorial Básico Curso 2011/2012
18
4.7 Para eliminar el punto de ruptura selecciona [Edit – Toggle Breakpoint ] ó con el cursor
situado en la línea donde está el punto de ruptura a eliminar. O también puedes pinchar en la
línea donde está colocado el punto de ruptura, pulsar el botón derecho, y elimina el punto de
ruptura: [Toggle Breakpoint ]. La línea deja de tener color.
4.8 Finaliza la ejecución de la sesión de depuración con [Debug – Stop Debugging ] o pulsa .
Volveremos a la ventana de edición de proyectos.
5. Depuración Básica: Medidas de Tiempo mediante bucles SW
5.1 Entra en modo depuración. Ejecuta el código de forma continua con [Debug – Go] o pulsando
F5 . Observa como el LED amarillo de la placa de desarrollo se enciende y apaga cada cierto
tiempo.
Tras comprobar el funcionamiento, finaliza la ejecución de la sesión de depuración y modificael fichero fuente “Ejemplo1.s43” con los cambios que se muestran en rojo y en negrita en el
código que aparece a continuación.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 22/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
19
Código “Practica1.s43 ” con las modificaciones que se deben realizar
; ****************************************************************************; UNIVERSIDAD DE MALAGA DPTO. TECNOLOGIA ELECTRONICA; ****************************************************************************; PROGRAMA : Practica1.S43 (v1.0); TARGET : Placa MSP-EXP430G2 (v1.4) - Microcontrolador MSP430G2533
; DESCRIPCION : Implementa el parpadeo del LED de la placa conectado; al terminal 0 del puerto 1. El parpadeo del LED se; realiza mediante dos bucles software anidados.El bucle interno; tarda 4 ciclos de reloj en ejecutarse y se ejecuta un total de; 55000 veces (0xD6D8); AUTOR : Eva González Parada (modificado por I. Herrero); FECHA : 02-03-12; ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1.1MHz; (no se necesita conectar HW adicional a la placa);; ****************************************************************************;-----------------------------------------------------------------------------; FICHEROS CABECERA;-----------------------------------------------------------------------------
#include "msp430G2533.h" ; Definición de etiquetas
;-----------------------------------------------------------------------------; DEFINICIÓN DE CONSTANTES;-----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000BASE_VECT EQU 0xFFE0VARIABLES EQU 0x0220CUENTA_20us EQU 5
CUENTA_1S EQU 0x94CF
;-----------------------------------------------------------------------------; DEFINICIÓN DE VARIABLES;-----------------------------------------------------------------------------
ORG VARIABLES
;-----------------------------------------------------------------------------; PROGRAMA PRINCIPAL
;-----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL
INICIO mov #0x0400,SP ; Inicializa base pilaMov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
CONFIG_P1_0 bis.b #BIT0,&P1DIR ; Configura el P1.0 salidabic.b #BIT0,&P1OUT ; Pone P1.0 a 0. Apaga el LED
BUCLE_S mov.w #CUENTA_1S,R5BUCLE_20us mov.w #CUENTA_20us,R6
BUCLE_4C dec.w R6nopjnz BUCLE_4C
dec.w R5
jnz BUCLE_20us
xor.b #BIT0,&P1OUTjmp BUCLE_Snop
;-----------------------------------------------------------------------------; VECTORES DE INTERRUPCIÓN;-----------------------------------------------------------------------------
ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESETDW INICIOEND
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 23/31
Práctica 1 – Tutorial Básico Curso 2011/2012
20
A continuación, se va a determinar la duración de encendido y apagado del LED y se va a
modificar el programa para que los estados de encendido y apagado del LED duren, cada
uno de ellos, 2 segundos y 0,5 segundos. Para ello, en primer lugar analiza el código y
contesta a las siguientes preguntas.
Extracto de código del fichero “Practica1.s43”:
¿En qué tipos de memoria se emplaza el programa, las variables y la pila?
¿Qué efecto tiene la instrucción xor.b #BIT0,&P1OUT sobre el LED?
¿Cuántas veces se ejecuta el bucle etiquetado BUCLE_4C en cada ejecución del bucle
etiquetado por BUCLE_20us? ¿y cuántas en la ejecución del bucle etiquetado por BUCLE_S?
Atendiendo a las tablas de tamaño y ciclos de ejecución de las instrucciones dadas por el
fabricante en la guía de usuario de la familia 2 de los microcontroladores MSP [4], indica el
número de ciclos de reloj que tarda en ejecutarse cada uno de los bucles (BUCLE_4C,
BUCLE_20us, BUCLE_S). Da las expresiones del número de ciclos en función de R5 y R6.
Considerando que, al arrancar el sistema, el reloj de CPU está por defecto a 1.1 MHz, y que
se tarda un ciclo de reloj en ejecutar un ciclo de instrucción, calcula el par de valores que hay
que dar a los registros R5 y R6 en estos dos casos: a) para que los estados de apagado y
encendido duren 2 segundos. b) para que ambos estados duren 0,5 s.
5.2 Resetea el programa y vuelve a ejecutar el programa de manera que te permita ver el tiempo
de ejecución de cada instrucción a través del valor CCSTEP en la ventana de registros
(combinando la ejecución paso a paso con la inserción de puntos de ruptura).
INICIO mov #0x0400,SP ; Inici
;---------------------------------------------------------------- -------------
; PROGRAMA PRINCIPAL
;---------------------------------------------------------------- -------------
ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400,SP ; Inici aliza base pila
mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
CONFIG_P1 _0 bis.b #BIT0,&P1DIR ; Configura el P1.0 salida
bic.b #BIT0,&P1OUT ; Pone P1.0 a 0. Apaga el LED
BUCLE_S mov.w #CUENTA_1S,R5 BUCLE_20us mov.w #CUENTA_20us,R6
BUCLE_4C dec.w R6nopjnz BUCLE_4C
dec.w R5jnz BUCLE_20us
xor.b #BIT0,&P1OUTjmp BUCLE_S nop
BUCLE_4C BUCLE_20us
BUCLE_S
;---------------------------------------------------------------- -------------
; PROGRAMA PRINCIPAL
;---------------------------------------------------------------- -------------
ORG PROGRAMA_PRINCIPAL aliza base pila
mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
CONFIG_P1 _0 bis.b #BIT0,&P1DIR ; Configura el P1.0 salida
bic.b #BIT0,&P1OUT ; Pone P1.0 a 0. Apaga el LED
BUCLE_S mov.w #CUENTA_1S,R5 BUCLE_20us mov.w #CUENTA_20us,R6
BUCLE_4C dec.w R6nopjnz BUCLE_4C
dec.w R5jnz BUCLE_20us
xor.b #BIT0,&P1OUTjmp BUCLE_S nop
BUCLE_4C BUCLE_20us
BUCLE_S
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 24/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
21
7Observa la instrucción xor.b #BIT0,&P1OUT ¿cuánto tarda en ejecutarse según
CCSTEP? ¿Qué duración especifica el fabricante para una instrucción de formato I, modo
de direccionamiento inmediato para la fuente y modo absoluto para el operando destino?
¿A qué crees que se debe la discrepancia?
6. Depuración Básica: Representación de la información en Memoria
Este ejemplo va a servir para aprender a observar el contenido de la memoria en el entorno de
desarrollo.
6.1 Crea un nuevo proyecto con el nombre Practica1b en el espacio de trabajo Practica1, y
configúralo tal y como se indicó en el punto 1.3 de esta guía
6.2 El código fuente que se va a incluir en el proyecto Practica1b es una modificación del código
fuente “Practica1.s43 ”. Para ello lleva a cabo las siguientes acciones:
1. Abre el fichero “Practica1.s43 ” [File-Open-File] , si ya lo tienes abierto no hace falta.
2. Guárdalo como “Practica1b.s43 ”, mediante las acciones [File-Save As ], en el mismo
directorio en el que están guardado los proyectos Practica1 y Practica1b ,
“D:\USR\MC_GY_GrupoX\”
7 El símbolo indica que la pregunta tiene cierto grado de dificultad. Quizás quieras dejar esta parte para más
adelante.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 25/31
Práctica 1 – Tutorial Básico Curso 2011/2012
22
3. Añade el fichero “Practica1b.s43 ” al proyecto Practica1b , siguiendo las opciones
[Project-Add Files ]
Observa que ahora en la ventana del espacio de trabajo aparecen tres pestañas Overview,
Practica1 y Practica1b . La Pestaña Overview permite ver los proyectos que se tienen dentro del
espacio de trabajo.
6.3 Incluye los siguientes cambios que se muestran en rojo y negrita sobre el fichero para
implementar la nueva aplicación. Trata de entender qué hace el nuevo programa antes de
seguir adelante.
; ****************************************************************************; UNIVERSIDAD DE MALAGA DPTO. TECNOLOGIA ELECTRONICA; ****************************************************************************; PROGRAMA : Practica1b.S43 (v1.0); TARGET : Placa MSP-EXP430G2 (v1.4) - Microcontrolador MSP430G2533; DESCRIPCION : Enciende o apaga el LED conectado al P1.0 en función; del contenido de un array de 5 posiciones de tamaño byte.; Si la posición está ON enciende el LED y si esta a OFF; lo apaga. Las posiciones se leen aprox. cada segundo.; AUTOR : Eva González Parada (modificado por I. Herrero); FECHA : 02-03-12; ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1.1MHz; (no se necesita conectar HW adicional a la placa);; *****************************************************************************
;-----------------------------------------------------------------------------; FICHEROS CABECERA;-----------------------------------------------------------------------------
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 26/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
23
#include "msp430G2533.h" ; Definición de etiquetas
;-----------------------------------------------------------------------------; DEFINICIÓN DE CONSTANTES;-----------------------------------------------------------------------------#define ON 1#define OFF 0
#define Indice R7;-----------------------------------------------------------------------------; DEFINICIÓN DE CONSTANTES;-----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000BASE_VECT EQU 0xFFE0VARIABLES EQU 0x0220CUENTA_20us EQU 4CUENTA_1S EQU 0x94CFN_ESTADOS_LED EQU 5;-----------------------------------------------------------------------------; DEFINICIÓN DE VARIABLES;-----------------------------------------------------------------------------
ORG VARIABLESESTADOS_LED DC8 ON,ON,ON,OFF,ON
n_on DS8 1
n_off DS8 1;-----------------------------------------------------------------------------; PROGRAMA PRINCIPAL;-----------------------------------------------------------------------------
ORG PROGRAMA_PRINCIPALINICIO mov #0x0400,SP ; Inicializa base pila
mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
CONFIG_P1_0 bis.b #BIT0,&P1DIR ; Configura el P1.0 salidabic.b #BIT0,&P1OUT ; Pone P1.0 a 0. Apaga el LED
INICIA_VBLES clr.b n_on
clr.b n_off
clr.w Indice
BUCLE_S mov.w #CUENTA_1S,R5BUCLE_20us mov.w #CUENTA_20us,R6
BUCLE_4C dec.w R6nopjnz BUCLE_4C
dec.w R5jnz BUCLE_20us
cmp.b #ON,ESTADOS_LED(Indice)
jz ENCENDER
APAGAR bic.b #BIT0,&P1OUT
inc.b n_off
jmp fin_n_estados
ENCENDER bis.b #BIT0,&P1OUT
inc.b n_on
fin_n_estados inc.w Indice
cmp.w #N_ESTADOS_LED,Indicejnz BUCLE_S
fin jmp fin
nop;-----------------------------------------------------------------------------; VECTORES DE INTERRUPCIÓN;-----------------------------------------------------------------------------
ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESETDW INICIOEND
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 27/31
Práctica 1 – Tutorial Básico Curso 2011/2012
24
6.4 Genera el programa ejecutable, conecta la placa de desarrollo al puerto USB, e inicia el modo
de depuración. Cierra la ventana Debug-Log , pinchando sobre la “x” de su esquina superior
izquierda. Abre una ventana de observación de variables Watch: [View-Watch]. Pincha en el
cuadro bajo Expressions y escribe “n_on”. Haz lo mismo con la variable “n_off”, como
alternativa remarca la palabra “n_off” en la ventana de código, y arrástrala con el botónizquierdo pulsado, hasta el primer cuadro libre bajo Expressions . Observa como aparece su
valor actual en el campo Value . Se puede elegir el formato de representación de la variable
en el menú desplegable que aparece pulsando el botón derecho sobre ella. Elige el formato
hexadecimal y que la muestre como 8 bit sin signo. Ejecuta el programa y comprueba que el
valor alcanzado por las variables n_on y n_off coincide con el numero de ON y OFF que
hay definidos respectivamente en la zona de memoria etiquetada por ESTADOS_LED.
6.5 Los cambios que se producen en memoria física se pueden ver a través de la ventana de
memoria, a la que se accede pulsando las siguientes opciones: [View - Memory]. En la ventana
de memoria también se pueden ver las variables, para ello escribe el nombre de la variable
n_on en la ventana Goto, o bien pon la dirección de memoria donde se localiza la variable. En
la ventana de memoria aparece recuadrada en negro la zona de memoria correspondiente a la
variable. También puedes cambiar la forma en que se representa la memoria pulsando en el
menú desplegable del botón con la flecha.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 28/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
25
6.6 Cierra la ventana Workspace para tener más espacio. Resetea el programa tal y como se
indicó en el punto 4.3 de esta guía. Extiende la ventana Disassembly para ver mejor su
contenido. Esta ventana es el equivalente a la ventana del código fuente en ensamblador pero
en código máquina. La instrucción en curso también se encuentra en verde. Dentro de esta
ventana se puede observar como aparece cada instrucción en ensamblador en gris, la etiqueta
asociada a la instrucción, si es que hay alguna, y justo debajo hay 3 columnas con: 1) La
dirección de memoria donde está colocada la instrucción; 2) La instrucción en código máquina;
3) La instrucción en ensamblador otra vez. Visualiza en la ventana de memoria el programa y
comprueba como los códigos máquina de las instrucciones están almacenados en la memoria
cotejando la información de las ventanas Disassembly y Memory 8 .
8
Te será más sencillo visualizar esto representando los datos en memoria a tamaño WORD(2xunits)
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 29/31
Práctica 1 – Tutorial Básico Curso 2011/2012
26
Observa como aparece cada instrucción en ensamblador en gris, la etiqueta asociada a la
instrucción, si es que hay alguna, y justo debajo hay 3 columnas con: 1) La dirección dememoria donde está colocada la instrucción; 2) La instrucción en código máquina; 3) La
instrucción en ensamblador otra vez, pero colocando los valores reales de las etiquetas y
símbolos.
Cambiando únicamente el valor de las variables y de las constantes que sean necesarias,
genera la siguiente secuencia de encendido del LED: Encendido durante 3 segundos,
apagado durante 3 segundos, encendido durante un segundo, apagado durante un
segundo y encendido indefinidamente.
¿Qué variables y constantes tienen que ser modificadas? ¿Con qué valores se modifican?
6.7 Vuelve a la ventana de edición y en el código fuente “Practica1b.s43 ” tras la instrucción que
se encarga de parar el Watchdog escribe las tres instrucciones siguientes:
;-----------------------------------------------------------------------------; PROGRAMA PRINCIPAL;-----------------------------------------------------------------------------
ORG PROGRAMA_PRINCIPALINICIO mov #0x0400,SP ; Inicializa base pila
mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT
cmp #0xFF,0(R5) ;INSTRUCCIÓN 1
cmp.b #0xFF,0(R5) ;INSTRUCCIÓN 2cmp.b #0xF8,0(R5) ;INSTRUCCIÓN 3
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 30/31
Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación
27
Ensambla, linka y transfiere el nuevo código fuente a la placa de desarrollo, observa la ventana
Disassembly y contesta a las siguientes preguntas
¿Con cuántas palabras se codifican cada una de las tres instrucciones que se han
introducido?
Explica por qué se han codificado cada una de las instrucciones de la forma que indica la
ventana Disassembly.
6.8 Comenta las instrucciones que se incluyeron en el punto 6.7 y modifica ahora la instrucción
inc.b n_on para cambiarla a inc n_on. Ensambla, linka y transfiere el nuevo código
fuente a la placa de desarrollo, pon en marcha el programa y observa el valor final de las
variables n_on y n_off.
…ENCENDER bis.b #BIT0,&P1OUT
inc n_onfin_n_estados inc.w Indice
…
¿Ves algo extraño? ¿A qué crees que se debe?
.
5/14/2018 Practica 1. Tutorial Basico - slidepdf.com
http://slidepdf.com/reader/full/practica-1-tutorial-basico 31/31
Práctica 1 – Tutorial Básico Curso 2011/2012
28
3. REFERENCIAS
[1] MSP-EXP430G2 LaunchPad Experimenter Board . User´s Guide, Literature number
SLAU318A, Julio 2010, revisado Diciembre 2011. Texas Instruments
[2] IAR Embedded workbench. IDE Project Management and Building Guide , Mayo 2011, IAR
Systems AB.
[3] IAR Embedded workbench. C-SPY® Debugging Guide for Texas Instruments’ MSP430
Microcontroller Family , Noviembre 2010, IAR Systems AB.
[4] MSP430x2xx Family . User´s Guide (Rev F), Literature number SLAU144H, Diciembre 2004,revisado Abril 2011. Texas Instruments.