P. 1
Practica 1. Tutorial Basico

Practica 1. Tutorial Basico

|Views: 2.057|Likes:
Publicado porsan_repere

More info:

Published by: san_repere on Mar 15, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/23/2013

pdf

text

original

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

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

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

Generación de Proyectos. E: Electrónica.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. A continuación se enumeran los pasos necesarios para crear un espacio de trabajo.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 2. 1. Espacio de Trabajo. 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. TST Telemática o Sistemas de Telecomunicación. 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. donde “Y” se corresponde con tu titulación (SI: Sonido e Imagen.ewp”. Dicho proyecto se debe guardar en la ubicación “D:\USR\MC_GY_GrupoX\4” con el nombre “Practica1. editar. 3 . PRÁCTICA 1: TUTORIAL BÁSICO 1. deberéis crearlo.

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 .

eww”5. donde “Y” se corresponde con tu titulación (SI: Sonido e Imagen. 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. E: Electrónica.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. 5 6 . 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.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.Práctica 1 – Tutorial Básico Curso 2011/2012 1.

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

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

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

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

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

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

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. tras su ejecución. se puede comprobar. o el icono . Si se observa en la ventana Disassembly el código máquina de la siguiente instrucción a ejecutar. 13 . En la ventana de visualización de registros. que en la ventana Register el PC se pone en rojo.s43 y Disassembly).Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 3. reflejan que han sufrido un cambio respecto a la ejecución de la instrucción anterior. 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. F10.4 Ejecuta el programa Paso a Paso: [Debug – Step Over]. los registros que aparecen en rojo.

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. pulsa en el + y despliega el registro SR. 14 . observa el valor de los registros R5 y R6 y vuelve a ejecutar paso a paso. Consulta la guía de usuario de la familia MSP430x2xx. 3. observa como el bit Z se ha puesto a 1.Práctica 1 – Tutorial Básico Curso 2011/2012 En el ejemplo. el registro SR se pone rojo. 3. ejecuta las instrucciones paso a paso hasta llegar a la etiqueta BUCLE_S.5 Evidentemente la ejecución del bucle no se puede hacer paso a paso. para saber identificar los valores que toma el bit C durante la ejecución del bucle. editando el cambio en la ventana Practica1. modifica la constante CUENTA_200ms para darle el valor 5.6 Ejecuta el bucle etiquetado por BUCLE_4C paso a paso. observa como cuando el registro R6 llega a 0.s43 y luego ejecutando la acción [Project – Make&Restart Debugger] o pulsando en el icono . Vuelve a dar a la etiqueta CUENTA_200ms su valor original 0xD6D8. Esta acción puedes llevarla a cabo sin salirte del depurador. Observa los valores que va tomando el PC durante el bucle.

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. Por este motivo. La línea pasa a roja.w R5. vamos a establecer un punto de ruptura en la instrucción dec. para que vuelva a ejecutarse 15 . 4.2 Arranca la ejecución del programa:[Debug – Go] ó .3 Resetea el programa: [Debug – Reset] o pulsa la opción desde el inicio. 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.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 4. con un punto rojo delante. éste se detendrá antes de decrementar el registro R5. Como consecuencia del punto de ruptura. combinado la ejecución y la ejecución paso a paso. En la ventana Debug Log se indica que el programa ha alcanzado un punto de ruptura: Breakpoint hit: Code @ Practica1.s43:54. 4.11. sitúa el cursor en la línea de la instrucción y haz [Edit – Toggle Breakpoint] o pulsa sobre el icono . Depuración Básica: Puntos de Ruptura 4. que nos permitirá ver los cambios en el registro R5. Para establecer el Punto de Ruptura en la instrucción indicada. y por tanto a BUCLE_4C.1 En el programa aparecen tres bucles anidados.

Si ejecutamos de forma continua de nuevo [Debug – Go] programa en el punto de ruptura aunque pase por él. La línea pasa a un color rosa. y deshabilítalo temporalmente: [Edit – Enable/Disable Breakpoint].4 Pincha en la línea donde está colocado el punto de ruptura. 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).Práctica 1 – Tutorial Básico Curso 2011/2012 4. ya no se detendrá el delante. con un punto rojo “vacío” . 16 .

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

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

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

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

Guárdalo como “Practica1b.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. “D:\USR\MC_GY_GrupoX\” 7 El símbolo adelante.2 El código fuente que se va a incluir en el proyecto Practica1b es una modificación del código fuente “Practica1.Microcontroladores – Grado en Ingeniería de Tecnologías de Telecomunicación 7 Observa la instrucción xor.s43”. 6.&P1OUT ¿cuánto tarda en ejecutarse según CCSTEP? ¿Qué duración especifica el fabricante para una instrucción de formato I.s43”.1 Crea un nuevo proyecto con el nombre Practica1b en el espacio de trabajo Practica1.s43” [File-Open-File]. indica que la pregunta tiene cierto grado de dificultad. si ya lo tienes abierto no hace falta. en el mismo directorio en el que están guardado los proyectos Practica1 y Practica1b. Quizás quieras dejar esta parte para más 21 . y configúralo tal y como se indicó en el punto 1.b #BIT0. mediante las acciones [File-Save As]. 2. Para ello lleva a cabo las siguientes acciones: 1. Abre el fichero “Practica1. 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.S43 (v1. . La Pestaña Overview permite ver los proyectos que se tienen dentro del espacio de trabajo. . .4) . . . .0 en función del contenido de un array de 5 posiciones de tamaño byte. TECNOLOGIA ELECTRONICA **************************************************************************** PROGRAMA : Practica1b.----------------------------------------------------------------------------- 22 . Las posiciones se leen aprox. . .3 Incluye los siguientes cambios que se muestran en rojo y negrita sobre el fichero para implementar la nueva aplicación.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. Herrero) FECHA : 02-03-12 ESQUEMA : ACLK= Indiferente MCLK= SMCLK= por defecto DCO ~ 1. Si la posición está ON enciende el LED y si esta a OFF lo apaga.s43” al proyecto Practica1b.0) TARGET : Placa MSP-EXP430G2 (v1. . Añade el fichero “Practica1b. . .Microcontrolador MSP430G2533 DESCRIPCION : Enciende o apaga el LED conectado al P1. . . .----------------------------------------------------------------------------. cada segundo. **************************************************************************** UNIVERSIDAD DE MALAGA DPTO. .Práctica 1 – Tutorial Básico Curso 2011/2012 3. AUTOR : Eva González Parada (modificado por I. Practica1 y Practica1b. FICHEROS CABECERA . Trata de entender qué hace el nuevo programa antes de seguir adelante.

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

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

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

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

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

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->