Microcontroladores

Grado en Ingeniería de Tecnologías de Telecomunicación

Práctica 1: Tutorial básico

CURSO ACADÉMICO 2011/2012

ÍNDICE
1. 2. INTRODUCCIÓN ......................................................................................................................... 1 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

la aplicación IAR Embedded Workbench permite controlar por completo el ciclo de desarrollo de cualquier sistema basado en la familia de microcontroladores MSP430. un Ensamblador/Compilador. La plataforma de desarrollo Launchpad proporciona algunos elementos útiles para implementar pequeños sistemas y aplicaciones basadas en la familia de microcontroladores MSP430G2.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 1. disponible en la página de la asignatura del Campus Virtual. así como transferirlo a cualquier placa de desarrollo compatible y ejecutarlo en modo depuración. La aplicación IAR Embedded Workbench constituye un entorno integrado que posee un Editor.. 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. INTRODUCCIÓN Este documento describe los conceptos básicos necesarios para comenzar a utilizar el sistema de desarrollo necesario para la asignatura Microcontroladores. ensamblar. se aprovechará para mostrar el funcionamiento de un programa y aclarar varios conceptos básicos relacionados con la programación en ensamblador. Las Launchpad integran un sistema de depuración que permite su conexión a un PC mediante un cable de conexión USB-miniUSB. que incluyen el modelo de microcontrolador MSP430G2533. editar. En el laboratorio de la asignatura se dispone de varias placas. Asimismo. De esta forma. y Manual del depurador C-Spy3. Con esta aplicación se puede desarrollar código tanto en ensamblador como en C para la familia de microcontroladores MSP430.30 – IAR Embedded Workbench]. 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. 1 MSPEXP430G2 Launchpad Experimenter Board User’s Guide IAR Embedded Workbench IDE Project Management and Building Guide IAR Embedded Workbench C-SPY Debugging Guide 2 3 1 . En este tutorial se introduce el ciclo completo de utilización de la herramienta IAR Embedded Workbench para crear un espacio de trabajo. que se utilizará como base de los diseños. también disponibles en la página WEB de la asignatura. enlazar y depurar una aplicación sencilla o proyecto programado en ensamblador. La aplicación IAR Embedded Workbench se ejecuta desde el menú Inicio: [Inicio – Programas – IAR Systems – IAR Embedded Workbench KickStart for MSP430 5. La placa Launchpad se alimenta a partir del puerto USB del PC con el cable USBminiUSB a PC. La guía de usuario de la aplicación IAR Embedded Workbench se describe en los documentos Manual del entorno de desarrollo IAR EW-MSP4302. un Linkador y un Depurador.

Práctica 1 – Tutorial Básico Curso 2011/2012 2 .

1. Generación de Proyectos. A continuación se enumeran los pasos necesarios para crear un espacio de trabajo. Dicho proyecto se debe guardar en la ubicación “D:\USR\MC_GY_GrupoX\4” con el nombre “Practica1. 3 . deberéis crearlo. editar.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. TST Telemática o Sistemas de Telecomunicación.3 Crea un nuevo proyecto vacío para la Práctica 1 dentro del espacio de trabajo recién creado. enlazar y depurar un proyecto en ensamblador. 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] 4 Si no existe este directorio.1 Ejecuta el programa IAR Embedded Workbench. PRÁCTICA 1: TUTORIAL BÁSICO 1.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 2. Espacio de Trabajo. 1. donde “Y” se corresponde con tu titulación (SI: Sonido e Imagen.ewp”. E: Electrónica.

Práctica 1 – Tutorial Básico Curso 2011/2012 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] 4 .

MSP430Gxxx Family .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 .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 .Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Establece las siguientes opciones: • General Options – Target – Device .

E: Electrónica.ewp” en la ubicación “D:\USR\MC_GY_GrupoX\” con el nombre “Micro2011-12. 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. donde “Y” se corresponde con tu titulación (SI: Sonido e Imagen.Práctica 1 – Tutorial Básico Curso 2011/2012 1. Para crear un fichero fuente es necesario llevar a cabo la siguiente secuencia: [File – New – File] Si quieres puedes usar un solo espacio de trabajo para todo el curso o crear distintos espacios de trabajo para las diferentes prácticas. TST Telemática o Sistemas de Telecomunicación.5 Guarda el espacio de trabajo actual con el proyecto recién creado “Practica1.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.eww”5. 5 6 .

puedes darle otro nombre al fichero añadiendo.6. o si se parte de uno ya creado.8 Tanto si el fichero se ha creado y guardado. incluye el archivo que va a contener el código fuente “Practica1.5 y 1.s43 6 7 .s43”.7 Guarda el archivo de código fuente del proyecto “Practica1. como se ha comentado en los puntos 1.s43” en el proyecto “Practica1”: [Project – Add Files] Si lo prefieres. donde “X” se corresponde con el número reservado por cada grupo de alumnos en la asignatura6: [File – Save] 1.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 1. por ejemplo. tu número de grupo y titulación: Practica1G3TT.ewp” en la ubicación “D:\USR\MC_GTST_GrupoX\” con el nombre “Practica1.

s43” (como se ha indicado en el punto 1. no olvides salvar el archivo ”: [File – Save] 8 . descarga el fichero “Practica1.10 Para proceder a trabajar con el primer ejemplo de código.Práctica 1 – Tutorial Básico Curso 2011/2012 1.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. Esta acción elimina el fichero del proyecto pero no lo elimina del directorio en el que se guardó. Si haces algún cambio.7). Una vez tengas el código. incluye en el proyecto “Practica1” el fichero “Practica1. selecciónalo dentro de la ventana del proyecto y ejecuta [Project – Remove]. 1. Para editar el archivo de código fuente puedes hacer doble clic sobre el nombre del fichero en la ventana proyecto.9 Si se desea eliminar un fichero del proyecto.

b #BIT0. PROGRAMA : Practica1. (no se necesita conectar HW adicional a la placa) . **************************************************************************** .4) .----------------------------------------------------------------------------#include "msp430G2533.----------------------------------------------------------------------------.w jnz #BIT0. FECHA : 02-03-12 . **************************************************************************** .h" . **************************************************************************** . ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1.0) .s43”: .1MHz . 55000 veces (0xD6D8) .b bic.----------------------------------------------------------------------------.----------------------------------------------------------------------------. . realiza mediante dos bucles software anidados.----------------------------------------------------------------------------ORG VARIABLES . Desactiva WDT CONFIG_P1_0 bis.w mov.&P1DIR #BIT0.&P1OUT jmp BUCLE_S nop .&P1OUT #CUENTA_1S.SP . Definición de etiquetas .w nop jnz dec.S43 (v1. TARGET : Placa MSP-EXP430G2 (v1. El parpadeo del LED se . Configura el P1. PROGRAMA PRINCIPAL . FICHEROS CABECERA . Inicializa base pila Mov #WDTPW+WDTHOLD. AUTOR : Eva González Parada (modificado por I.b mov.0 salida . Herrero) .&WDTCTL . DESCRIPCION : Implementa el parpadeo del LED de la placa conectado .El bucle inteno .w dec.----------------------------------------------------------------------------.----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR . MSP430 Vector de RESET DW INICIO END 9 .Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Código fuente del fichero “Práctica1.----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400.R5 #CUENTA_200ms. TECNOLOGIA ELECTRONICA . DEFINICIÓN DE VARIABLES . DEFINICIÓN DE CONSTANTES .Microcontrolador MSP430G2533 . Pone P1. al terminal 0 del puerto 1. UNIVERSIDAD DE MALAGA DPTO.----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_200ms EQU 0xD6D8 CUENTA_1S EQU 5 .0 a 0. VECTORES DE INTERRUPCIÓN . tarda 4 ciclos de reloj en ejecutarse y se ejecuta un total de . Apaga el LED BUCLE_S BUCLE_200ms BUCLE_4C xor.----------------------------------------------------------------------------.R6 R6 BUCLE_4C R5 BUCLE_200ms .

se indicará en dicha ventana. Si ahora generamos el ejecutable con [Project – Make] se indicará el error: 10 . modificamos una línea de código cambiando un nemónico a un valor inexistente. Detección de Errores Curso 2011/2012 2.Build]. Por ejemplo. Además. también se puede indicar con la tecla de función F7 ó pulsando el icono Aparece la ventana “Build” (debajo). Si existe un error en el código.1 Ensambla y linka el código fuente “Practica1. se marca el error con un círculo rojo al principio de la línea donde se ha producido. que indica el resultado del proceso de generación de código ejecutable. y los posibles errores. Se cierra pinchando la “X”.s43” para generar el programa ejecutable correspondiente a la Práctica1: [Project – Make]. Generación de código ejecutable. También se puede abrir con [View – Messages .Práctica 1 – Tutorial Básico 2.

Transfiere el programa ejecutable “Practica1. si tanto el PC como el kit MSP430 son de su propiedad. En caso contrario tendrá que conseguir una versión más antigua de la aplicación IAR-Embedded Workbench. 11 .2 Rectifica el error anterior. consulte al profesor de la asignatura antes de continuar. le recomendamos que pulse Sí. 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. 2. Si es la primera vez que se utiliza el sistema de desarrollo. es decir. es decir. Conecta la placa de desarrollo al puerto USB del PC si no se ha hecho anteriormente. En cualquier otro caso.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Un doble click sobre un mensaje de error te lleva directamente a la línea del fichero donde está el mismo. el kit de desarrollo o ambos son propiedad de la Universidad. Consulte a los profesores de la asignatura en tal caso.d43” a la placa de desarrollo para ser depurado: [Project – Download and Debug]. tecla CTRL-D o icono . si el PC.

Dissasembly (a la derecha). Depuración Básica. y Debug Log (debajo) que muestra información relacionada con la depuración del código (modelo de micro. o el icono Curso 2011/2012 Observa la aparición de 2 nuevas ventanas. 3. tensión de alimentación.2 Detén la ejecución del programa: [Debug – Break] 12 . y con las etiquetas sustituidas por sus valores reales.Práctica 1 – Tutorial Básico 3. e incidencias durante ésta). F5. 3. que muestra el programa en código máquina. éxito o no del inicio de la depuración.1 Inicia la ejecución del programa: [Debug – Go] .

Si se observa en la ventana Disassembly el código máquina de la siguiente instrucción a ejecutar. que en la ventana Register el PC se pone en rojo.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 3. tras su ejecución. o el icono . reflejan que han sufrido un cambio respecto a la ejecución de la instrucción anterior. los registros que aparecen en rojo.3 Observa el contenido de los registros: [View – Register] 3. El resaltado en verde indica la instrucción que se va ejecutar a continuación (en ambas ventanas Practica1. se puede comprobar.4 Ejecuta el programa Paso a Paso: [Debug – Step Over]. 13 .s43 y Disassembly). En la ventana de visualización de registros. F10. 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 Evidentemente la ejecución del bucle no se puede hacer paso a paso. observa el valor de los registros R5 y R6 y vuelve a ejecutar paso a paso. pulsa en el + y despliega el registro SR.Práctica 1 – Tutorial Básico Curso 2011/2012 En el ejemplo. observa como cuando el registro R6 llega a 0. observa como el bit Z se ha puesto a 1. 3. para saber identificar los valores que toma el bit C durante la ejecución del bucle.6 Ejecuta el bucle etiquetado por BUCLE_4C paso a paso. Observa los valores que va tomando el PC durante el bucle. 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.s43 y luego ejecutando la acción [Project – Make&Restart Debugger] o pulsando en el icono . Consulta la guía de usuario de la familia MSP430x2xx. 3. Esta acción puedes llevarla a cabo sin salirte del depurador. modifica la constante CUENTA_200ms para darle el valor 5. ejecuta las instrucciones paso a paso hasta llegar a la etiqueta BUCLE_S. 14 . Vuelve a dar a la etiqueta CUENTA_200ms su valor original 0xD6D8. editando el cambio en la ventana Practica1. el registro SR se pone rojo.

3 Resetea el programa: [Debug – Reset] o pulsa la opción desde el inicio. 4. Como consecuencia del punto de ruptura.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 4. Por este motivo.w R5. con un punto rojo delante. Depuración Básica: Puntos de Ruptura 4. vamos a establecer un punto de ruptura en la instrucción dec.2 Arranca la ejecución del programa:[Debug – Go] ó . éste se detendrá antes de decrementar el registro R5. y por tanto a BUCLE_4C. 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. para que vuelva a ejecutarse 15 .11. 4. 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.s43:54. que nos permitirá ver los cambios en el registro R5. combinado la ejecución y la ejecución paso a paso.1 En el programa aparecen tres bucles anidados. En la ventana Debug Log se indica que el programa ha alcanzado un punto de ruptura: Breakpoint hit: Code @ Practica1. La línea pasa a roja. 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 un color rosa. 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). ya no se detendrá el delante.4 Pincha en la línea donde está colocado el punto de ruptura. con un punto rojo “vacío” . Si ejecutamos de forma continua de nuevo [Debug – Go] programa en el punto de ruptura aunque pase por él. 16 . y deshabilítalo temporalmente: [Edit – Enable/Disable Breakpoint].Práctica 1 – Tutorial Básico Curso 2011/2012 4.

Otra posibilidad podría ser no poner ninguna condición. Escribe la expresión “R5=1” y comprueba que está activado el botón Condition true. 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. y colocar en el campo Skip un 3. el programa en el que se definió. su tipo. se activa cada vez que se ejecuta la instrucción correspondiente.5 El punto de ruptura que se ha colocado. De esta forma. el punto de ruptura se activará cuando el registro R5 llegue a 1. agrupada con Debug Log (se puede cambiar de una a otra pinchando la pestaña correspondiente). abre la ventana BreakPoints con [View – Breakpoints]. 17 . En la ventana se ve el punto de ruptura definido. También es posible establecer un cambio de condición [Condition changed ] como causa de la activación del punto de ruptura activado. 4. De esta forma se esperará a pasar 3 veces por el punto de ruptura antes de detenerse en éste. Aparecerá en la parte de abajo. Para ello. Podemos establecer que solo se detenga cuando se cumpla una determinada condición.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.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Depuración Avanzada: Puntos de Ruptura Condicionales 4.

4.1 Entra en modo depuración. Tras comprobar el funcionamiento. 18 . Ejecuta el código de forma continua con [Debug – Go] o pulsando F5.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. . Depuración Básica: Medidas de Tiempo mediante bucles SW 5. pulsar el botón derecho. y elimina el punto de ruptura: [Toggle Breakpoint].s43” con los cambios que se muestran en rojo y en negrita en el código que aparece a continuación.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. La línea deja de tener color. Observa como el LED amarillo de la placa de desarrollo se enciende y apaga cada cierto tiempo.Práctica 1 – Tutorial Básico Curso 2011/2012 4. O también puedes pinchar en la línea donde está colocado el punto de ruptura. finaliza la ejecución de la sesión de depuración y modifica el fichero fuente “Ejemplo1.

Pone P1. **************************************************************************** .----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR . FICHEROS CABECERA . Configura el P1.S43 (v1.s43” con las modificaciones que se deben realizar .----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_20us EQU 5 CUENTA_1S EQU 0x94CF .0 salida .&P1DIR #BIT0. tarda 4 ciclos de reloj en ejecutarse y se ejecuta un total de . MSP430 Vector de RESET DW INICIO END 19 .b #BIT0.0 a 0. **************************************************************************** .&P1OUT #CUENTA_1S.----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400.0) . **************************************************************************** .R6 R6 BUCLE_4C R5 BUCLE_20us . PROGRAMA : Practica1. Inicializa base pila Mov #WDTPW+WDTHOLD.----------------------------------------------------------------------------. al terminal 0 del puerto 1.&P1OUT jmp BUCLE_S nop .w nop jnz dec.w jnz #BIT0.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Código “Practica1.----------------------------------------------------------------------------ORG VARIABLES . . TARGET : Placa MSP-EXP430G2 (v1. TECNOLOGIA ELECTRONICA . Herrero) .1MHz . ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1. realiza mediante dos bucles software anidados.w dec.b bic.----------------------------------------------------------------------------#include "msp430G2533. (no se necesita conectar HW adicional a la placa) . VECTORES DE INTERRUPCIÓN . Desactiva WDT CONFIG_P1_0 bis. AUTOR : Eva González Parada (modificado por I. UNIVERSIDAD DE MALAGA DPTO.R5 #CUENTA_20us.----------------------------------------------------------------------------. DESCRIPCION : Implementa el parpadeo del LED de la placa conectado .w mov.&WDTCTL .h" . DEFINICIÓN DE VARIABLES .----------------------------------------------------------------------------. 55000 veces (0xD6D8) . FECHA : 02-03-12 . Definición de etiquetas .4) .El bucle interno .SP . DEFINICIÓN DE CONSTANTES .----------------------------------------------------------------------------. PROGRAMA PRINCIPAL . Apaga el LED BUCLE_S BUCLE_20us BUCLE_4C xor. El parpadeo del LED se .b mov.----------------------------------------------------------------------------.Microcontrolador MSP430G2533 .

Desactiva WDT CONFIG_P1 _0 bis. PROGRAMA PRINCIPAL .Práctica 1 – Tutorial Básico Curso 2011/2012 A continuación.&P1OUT . Inici aliza base pila mov #WDTPW+WDTHOLD. las variables y la pila? ¿Qué efecto tiene la instrucción xor. BUCLE_S).1 MHz.------------.b #BIT0.s43”: .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). 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.---------------------------------------------------------------.w #CUENTA_20us. Considerando que.0 a 0. 20 . indica el número de ciclos de reloj que tarda en ejecutarse cada uno de los bucles (BUCLE_4C.0 salida .SP .5 s.b #BIT0.&P1DIR bic.&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].5 segundos. 2 segundos y 0.w #CUENTA_1S. Para ello.---------------------------------------------------------------. BUCLE_20us. Configura el P1. en primer lugar analiza el código y contesta a las siguientes preguntas. b) para que ambos estados duren 0. al arrancar el sistema. 5. Pone P1.b #BIT0. el reloj de CPU está por defecto a 1. 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.R6 dec. cada uno de ellos.R5 mov. y que se tarda un ciclo de reloj en ejecutar un ciclo de instrucción. Extracto de código del fichero “Practica1.b #BIT0.&WDTCTL .w R5 jnz BUCLE_20us xor.w R6 nop jnz BUCLE_4C dec. Apaga el LED BUCLE_S BUCLE_20us BUCLE_4C mov. Da las expresiones del número de ciclos en función de R5 y R6.------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400.&P1OUT jmp BUCLE_S nop BUCLE_4C BUCLE_20us BUCLE_S ¿En qué tipos de memoria se emplaza el programa.

y configúralo tal y como se indicó en el punto 1. Abre el fichero “Practica1. indica que la pregunta tiene cierto grado de dificultad.s43”. 2. 6.3 de esta guía 6. modo de direccionamiento inmediato para la fuente y modo absoluto para el operando destino? ¿A qué crees que se debe la discrepancia? 6.s43”.s43” [File-Open-File]. Quizás quieras dejar esta parte para más 21 .&P1OUT ¿cuánto tarda en ejecutarse según CCSTEP? ¿Qué duración especifica el fabricante para una instrucción de formato I.b #BIT0. mediante las acciones [File-Save As]. si ya lo tienes abierto no hace falta. Guárdalo como “Practica1b.1 Crea un nuevo proyecto con el nombre Practica1b en el espacio de trabajo Practica1.2 El código fuente que se va a incluir en el proyecto Practica1b es una modificación del código fuente “Practica1. Para ello lleva a cabo las siguientes acciones: 1. “D:\USR\MC_GY_GrupoX\” 7 El símbolo adelante. 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.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 7 Observa la instrucción xor. en el mismo directorio en el que están guardado los proyectos Practica1 y Practica1b.

----------------------------------------------------------------------------.s43” al proyecto Practica1b. TECNOLOGIA ELECTRONICA **************************************************************************** PROGRAMA : Practica1b. .4) .3 Incluye los siguientes cambios que se muestran en rojo y negrita sobre el fichero para implementar la nueva aplicación. . Practica1 y Practica1b.Práctica 1 – Tutorial Básico Curso 2011/2012 3. . FICHEROS CABECERA .S43 (v1. Las posiciones se leen aprox. AUTOR : Eva González Parada (modificado por I. cada segundo.Microcontrolador MSP430G2533 DESCRIPCION : Enciende o apaga el LED conectado al P1. . **************************************************************************** UNIVERSIDAD DE MALAGA DPTO. . Añade el fichero “Practica1b. 6. .1MHz (no se necesita conectar HW adicional a la placa) ***************************************************************************** . . siguiendo las opciones [Project-Add Files] Observa que ahora en la ventana del espacio de trabajo aparecen tres pestañas Overview. Trata de entender qué hace el nuevo programa antes de seguir adelante.----------------------------------------------------------------------------- 22 . . . Herrero) FECHA : 02-03-12 ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1. .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. .0) TARGET : Placa MSP-EXP430G2 (v1. . . . La Pestaña Overview permite ver los proyectos que se tienen dentro del espacio de trabajo.

SP . DEFINICIÓN DE VARIABLES .&P1DIR bic.w #N_ESTADOS_LED.ON n_on DS8 1 n_off DS8 1 .&P1OUT inc.Indice jnz BUCLE_S fin jmp fin nop .w #CUENTA_20us.b n_on clr.b #BIT0.----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_20us EQU 4 CUENTA_1S EQU 0x94CF N_ESTADOS_LED EQU 5 . PROGRAMA PRINCIPAL .b #ON.w Indice mov.w Indice cmp. MSP430 Vector de RESET DW INICIO END .0 a 0. DEFINICIÓN DE CONSTANTES . Pone P1.ON.0 salida . Inicializa base pila mov #WDTPW+WDTHOLD.----------------------------------------------------------------------------. Apaga el LED INICIA_VBLES BUCLE_S BUCLE_20us BUCLE_4C 23 . Configura el P1.----------------------------------------------------------------------------.w R6 nop jnz BUCLE_4C dec.ON.----------------------------------------------------------------------------.b #BIT0.&P1OUT clr.&WDTCTL .R5 mov.----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR .----------------------------------------------------------------------------ORG VARIABLES ESTADOS_LED DC8 ON.----------------------------------------------------------------------------.&P1OUT inc.b #BIT0.b #BIT0.b n_off clr.R6 dec.OFF.ESTADOS_LED(Indice) jz ENCENDER APAGAR bic. DEFINICIÓN DE CONSTANTES . Desactiva WDT CONFIG_P1_0 bis. VECTORES DE INTERRUPCIÓN .----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400.b n_off jmp fin_n_estados ENCENDER bis.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación #include "msp430G2533.w R5 jnz BUCLE_20us cmp.h" .w #CUENTA_1S. Definición de etiquetas .b n_on fin_n_estados inc.----------------------------------------------------------------------------#define ON 1 #define OFF 0 #define Indice R7 .----------------------------------------------------------------------------.

Elige el formato hexadecimal y que la muestre como 8 bit sin signo. También puedes cambiar la forma en que se representa la memoria pulsando en el menú desplegable del botón con la flecha. 24 . conecta la placa de desarrollo al puerto USB. pinchando sobre la “x” de su esquina superior izquierda. hasta el primer cuadro libre bajo Expressions. a la que se accede pulsando las siguientes opciones: [View . para ello escribe el nombre de la variable n_on en la ventana Goto. Haz lo mismo con la variable “n_off”. como alternativa remarca la palabra “n_off” en la ventana de código. Pincha en el cuadro bajo Expressions y escribe “n_on”. Cierra la ventana Debug-Log. e inicia el modo de depuración. 6. Abre una ventana de observación de variables Watch: [View-Watch]. Se puede elegir el formato de representación de la variable en el menú desplegable que aparece pulsando el botón derecho sobre ella.Práctica 1 – Tutorial Básico Curso 2011/2012 6.4 Genera el programa ejecutable. En la ventana de memoria aparece recuadrada en negro la zona de memoria correspondiente a la variable.5 Los cambios que se producen en memoria física se pueden ver a través de la ventana de memoria. En la ventana de memoria también se pueden ver las variables. 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. Observa como aparece su valor actual en el campo Value.Memory]. o bien pon la dirección de memoria donde se localiza la variable. y arrástrala con el botón izquierdo pulsado.

si es que hay alguna.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 6. 8 Te será más sencillo visualizar esto representando los datos en memoria a tamaño WORD (2xunits) 25 . Extiende la ventana Disassembly para ver mejor su contenido. 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 Memory8. Esta ventana es el equivalente a la ventana del código fuente en ensamblador pero en código máquina. 3) La instrucción en ensamblador otra vez. y justo debajo hay 3 columnas con: 1) La dirección de memoria donde está colocada la instrucción.3 de esta guía. Resetea el programa tal y como se indicó en el punto 4.6 Cierra la ventana Workspace para tener más espacio. la etiqueta asociada a la instrucción. Dentro de esta ventana se puede observar como aparece cada instrucción en ensamblador en gris. La instrucción en curso también se encuentra en verde. 2) La instrucción en código máquina.

INSTRUCCIÓN 1 cmp. 3) La instrucción en ensamblador otra vez.s43” tras la instrucción que se encarga de parar el Watchdog escribe las tres instrucciones siguientes: .7 Vuelve a la ventana de edición y en el código fuente “Practica1b.0(R5) . la etiqueta asociada a la instrucción. y justo debajo hay 3 columnas con: 1) La dirección de memoria donde está colocada la instrucción.----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400.----------------------------------------------------------------------------.0(R5) . ¿Qué variables y constantes tienen que ser modificadas? ¿Con qué valores se modifican? 6.&WDTCTL .INSTRUCCIÓN 3 26 .SP . Inicializa base pila mov #WDTPW+WDTHOLD.Práctica 1 – Tutorial Básico Curso 2011/2012 Observa como aparece cada instrucción en ensamblador en gris. 2) La instrucción en código máquina.0(R5) .INSTRUCCIÓN 2 cmp. genera la siguiente secuencia de encendido del LED: Encendido durante 3 segundos. apagado durante un segundo y encendido indefinidamente. Cambiando únicamente el valor de las variables y de las constantes que sean necesarias. Desactiva WDT cmp #0xFF.b #0xFF. pero colocando los valores reales de las etiquetas y símbolos.b #0xF8. PROGRAMA PRINCIPAL . apagado durante 3 segundos. encendido durante un segundo. si es que hay alguna.

Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación Ensambla.8 Comenta las instrucciones que se incluyeron en el punto 6. linka y transfiere el nuevo código fuente a la placa de desarrollo.7 y modifica ahora la instrucción inc. linka y transfiere el nuevo código fuente a la placa de desarrollo.&P1OUT n_on Indice ¿Ves algo extraño? ¿A qué crees que se debe? . 27 . 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. Ensambla.b n_on para cambiarla a inc n_on.w #BIT0. 6. pon en marcha el programa y observa el valor final de las variables n_on y n_off.b inc inc. … ENCENDER fin_n_estados … bis.

[4] MSP430x2xx Family. User´s Guide (Rev F). Literature number SLAU144H. Noviembre 2010. Literature number SLAU318A. C-SPY® Debugging Guide for Texas Instruments’ MSP430 Microcontroller Family.Práctica 1 – Tutorial Básico Curso 2011/2012 3. Mayo 2011. IDE Project Management and Building Guide. REFERENCIAS [1] MSP-EXP430G2 LaunchPad Experimenter Board. IAR Systems AB. Texas Instruments. revisado Abril 2011. revisado Diciembre 2011. User´s Guide. [3] IAR Embedded workbench. Texas Instruments [2] IAR Embedded workbench. IAR Systems AB. Julio 2010. Diciembre 2004. 28 .

Sign up to vote on this title
UsefulNot useful