31
  Microcontroladores Grado en Ingeniería de Tecnologías de Telecomunicación Práctica 1: Tutorial básico CURSO ACADÉMICO 2011/2012

Practica 1. Tutorial Basico

Embed Size (px)

Citation preview

Page 1: Practica 1. Tutorial Basico

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

Page 2: Practica 1. Tutorial Basico

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 

Page 3: Practica 1. Tutorial Basico

5/14/2018 Practica 1. Tutorial Basico - slidepdf.com

http://slidepdf.com/reader/full/practica-1-tutorial-basico 3/31

Page 4: Practica 1. Tutorial Basico

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  

Page 5: Practica 1. Tutorial Basico

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

Page 6: Practica 1. Tutorial Basico

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. 

Page 7: Practica 1. Tutorial Basico

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 ]

Page 8: Practica 1. Tutorial Basico

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: 

Page 9: Practica 1. Tutorial Basico

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. 

Page 10: Practica 1. Tutorial Basico

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  

Page 11: Practica 1. Tutorial Basico

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 ]

Page 12: Practica 1. Tutorial Basico

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

Page 13: Practica 1. Tutorial Basico

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:

Page 14: Practica 1. Tutorial Basico

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.

Page 15: Practica 1. Tutorial Basico

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 ]

Page 16: Practica 1. Tutorial Basico

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.

Page 17: Practica 1. Tutorial Basico

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.

Page 18: Practica 1. Tutorial Basico

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.

Page 19: Practica 1. Tutorial Basico

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).

Page 20: Practica 1. Tutorial Basico

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.

Page 21: Practica 1. Tutorial Basico

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.

Page 22: Practica 1. Tutorial Basico

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

Page 23: Practica 1. Tutorial Basico

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 

Page 24: Practica 1. Tutorial Basico

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. 

Page 25: Practica 1. Tutorial Basico

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;-----------------------------------------------------------------------------

Page 26: Practica 1. Tutorial Basico

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

Page 27: Practica 1. Tutorial Basico

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.

Page 28: Practica 1. Tutorial Basico

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)

Page 29: Practica 1. Tutorial Basico

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

Page 30: Practica 1. Tutorial Basico

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?

.

Page 31: Practica 1. Tutorial Basico

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.