You are on page 1of 31

Microcontroladores

Grado en Ingeniera de Tecnologas de Telecomunicacin

Prctica 1: Tutorial bsico

CURSO ACADMICO 2011/2012

NDICE
1. 2. INTRODUCCIN ......................................................................................................................... 1 PRCTICA 1: TUTORIAL BSICO ................................................................................................ 3 1. Generacin de Proyectos. Espacio de Trabajo. ........................................................................ 3 2. Generacin de cdigo ejecutable. Deteccin de Errores ........................................................ 10 3. Depuracin Bsica. ................................................................................................................ 12 4. Depuracin Bsica: Puntos de Ruptura.................................................................................. 15 5. Depuracin Bsica: Medidas de Tiempo mediante bucles SW ................................................ 18 6. Depuracin Bsica: Representacin de la informacin en Memoria ....................................... 21 3. REFERENCIAS ......................................................................................................................... 28

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

1.

INTRODUCCIN

Este documento describe los conceptos bsicos 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 (tambin llamada Launchpad) y el entorno de desarrollo y depuracin IAR Embedded Workbench. La plataforma de desarrollo Launchpad proporciona algunos elementos tiles para implementar pequeos 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 diseos. Las Launchpad integran un sistema de depuracin que permite su conexin a un PC mediante un cable de conexin USB-miniUSB. Las caractersticas bsicas de esta placa as como su utilizacin para el desarrollo de aplicaciones se describen en el documento Manual de usuario del sistema de desarrollo MSP-EXP430G2 (Launchpad)1, disponible en la pgina de la asignatura del Campus Virtual. La aplicacin IAR Embedded Workbench constituye un entorno integrado que posee un Editor, un Ensamblador/Compilador, un Linkador y un Depurador. Con esta aplicacin se puede desarrollar cdigo 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 depuracin. De esta forma, la aplicacin IAR Embedded Workbench permite controlar por completo el ciclo de desarrollo de cualquier sistema basado en la familia de microcontroladores MSP430. La gua de usuario de la aplicacin IAR Embedded Workbench se describe en los documentos Manual del entorno de desarrollo IAR EW-MSP4302, y Manual del depurador C-Spy3, tambin disponibles en la pgina WEB de la asignatura.. La aplicacin 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 USBminiUSB a PC. En este tutorial se introduce el ciclo completo de utilizacin de la herramienta IAR Embedded Workbench para crear un espacio de trabajo, editar, ensamblar, enlazar y depurar una aplicacin sencilla o proyecto programado en ensamblador. Asimismo, se aprovechar para mostrar el funcionamiento de un programa y aclarar varios conceptos bsicos relacionados con la programacin en ensamblador.

MSPEXP430G2 Launchpad Experimenter Board Users Guide IAR Embedded Workbench IDE Project Management and Building Guide IAR Embedded Workbench C-SPY Debugging Guide

Prctica 1 Tutorial Bsico

Curso 2011/2012

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

2. PRCTICA 1: TUTORIAL BSICO


1. Generacin de Proyectos. Espacio de Trabajo. A continuacin 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 vaco para la Prctica 1 dentro del espacio de trabajo recin creado. Dicho proyecto se debe guardar en la ubicacin D:\USR\MC_GY_GrupoX\4 con el nombre Practica1.ewp, donde Y se corresponde con tu titulacin (SI: Sonido e Imagen; TST Telemtica o Sistemas de Telecomunicacin; E: Electrnica; y TT: Tecnologas de Telecomunicacin) y X se corresponde con el nmero reservado a cada grupo de alumnos en la asignatura: [Project Create New Project Empty Project]

Si no existe este directorio, deberis crearlo.

Prctica 1 Tutorial Bsico

Curso 2011/2012

1.4 Configura el proyecto recin creado Practica1 con las opciones adecuadas para su correcto uso con el sistema de desarrollo del que se dispone: [Project Options]

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

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 opcin:

Stack pointer(s) not valid until program reaches:

Prctica 1 Tutorial Bsico

Curso 2011/2012

1.5 Guarda el espacio de trabajo actual con el proyecto recin creado Practica1.ewp en la ubicacin D:\USR\MC_GY_GrupoX\ con el nombre Micro2011-12.eww5, donde Y se corresponde con tu titulacin (SI: Sonido e Imagen; TST Telemtica o Sistemas de Telecomunicacin; E: Electrnica; y TT: Tecnologas de Telecomunicacin) y X se corresponde con el nmero reservado por cada grupo de alumnos en la asignatura: [File Save Workspace]

1.6 Para incluir el cdigo fuente en el proyecto creado existen dos posibilidades: crear un fichero fuente y aadirlo al proyecto o aadir al proyecto un fichero fuente ya creado. 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 prcticas.

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin 1.7 Guarda el archivo de cdigo fuente del proyecto Practica1.ewp en la ubicacin D:\USR\MC_GTST_GrupoX\ con el nombre Practica1.s43, donde X se corresponde con el nmero 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 cdigo fuente Practica1.s43 en el proyecto Practica1: [Project Add Files]

Si lo prefieres, puedes darle otro nombre al fichero aadiendo, por ejemplo, tu nmero de grupo y titulacin: Practica1G3TT.s43

Prctica 1 Tutorial Bsico

Curso 2011/2012

1.9 Si se desea eliminar un fichero del proyecto, seleccinalo dentro de la ventana del proyecto y ejecuta [Project Remove]. Esta accin 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 cdigo, descarga el fichero Practica1.s43 de la pgina web, en el directorio D:\USR\MC_GY_GrupoX\ o copia el cdigo que vers a continuacin en el fichero que has creado en los puntos anteriores. Una vez tengas el cdigo, incluye en el proyecto Practica1 el fichero Practica1.s43 (como se ha indicado en el punto 1.7). Para editar el archivo de cdigo fuente puedes hacer doble clic sobre el nombre del fichero en la ventana proyecto. Si haces algn cambio, no olvides salvar el archivo : [File Save]

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin Cdigo fuente del fichero Prctica1.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 Gonzlez 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" ; Definicin de etiquetas

;----------------------------------------------------------------------------; DEFINICIN DE CONSTANTES ;----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_200ms EQU 0xD6D8 CUENTA_1S EQU 5 ;----------------------------------------------------------------------------; DEFINICIN DE VARIABLES ;----------------------------------------------------------------------------ORG VARIABLES ;----------------------------------------------------------------------------; PROGRAMA PRINCIPAL ;----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400,SP ; Inicializa base pila Mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT CONFIG_P1_0 bis.b bic.b mov.w mov.w dec.w nop jnz dec.w jnz #BIT0,&P1DIR #BIT0,&P1OUT #CUENTA_1S,R5 #CUENTA_200ms,R6 R6 BUCLE_4C R5 BUCLE_200ms ; Configura el P1.0 salida ; Pone P1.0 a 0. Apaga el LED

BUCLE_S BUCLE_200ms BUCLE_4C

xor.b #BIT0,&P1OUT jmp BUCLE_S nop ;----------------------------------------------------------------------------; VECTORES DE INTERRUPCIN ;----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESET DW INICIO END

Prctica 1 Tutorial Bsico 2. Generacin de cdigo ejecutable. Deteccin de Errores

Curso 2011/2012

2.1 Ensambla y linka el cdigo fuente Practica1.s43 para generar el programa ejecutable correspondiente a la Prctica1: [Project Make]; tambin se puede indicar con la tecla de funcin F7 pulsando el icono

Aparece la ventana Build (debajo), que indica el resultado del proceso de generacin de cdigo ejecutable, y los posibles errores. Tambin se puede abrir con [View Messages - Build]. Se cierra pinchando la X. Si existe un error en el cdigo, se indicar en dicha ventana. Adems, se marca el error con un crculo rojo al principio de la lnea donde se ha producido. Por ejemplo, modificamos una lnea de cdigo cambiando un nemnico a un valor inexistente. Si ahora generamos el ejecutable con [Project Make] se indicar el error:

10

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin Un doble click sobre un mensaje de error te lleva directamente a la lnea 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 versin ms antigua de la aplicacin 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.

11

Prctica 1 Tutorial Bsico 3. Depuracin Bsica. 3.1 Inicia la ejecucin del programa: [Debug Go] , F5, o el icono

Curso 2011/2012

Observa la aparicin de 2 nuevas ventanas. Dissasembly (a la derecha), que muestra el programa en cdigo mquina, y con las etiquetas sustituidas por sus valores reales; y Debug Log (debajo) que muestra informacin relacionada con la depuracin del cdigo (modelo de micro, tensin de alimentacin, xito o no del inicio de la depuracin, e incidencias durante sta). 3.2 Detn la ejecucin del programa: [Debug Break]

12

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin 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 instruccin que se va ejecutar a continuacin (en ambas ventanas Practica1.s43 y Disassembly). En la ventana de visualizacin de registros, los registros que aparecen en rojo, reflejan que han sufrido un cambio respecto a la ejecucin de la instruccin anterior. Si se observa en la ventana Disassembly el cdigo mquina de la siguiente instruccin a ejecutar, se puede comprobar, tras su ejecucin, que en la ventana Register el PC se pone en rojo, y que ste se ha incrementado en tantas unidades como el nmero de bytes del cdigo mquina de la instruccin ejecutada.

13

Prctica 1 Tutorial Bsico

Curso 2011/2012

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 ejecucin del bucle etiquetado por BUCLE_4C. Observa los valores que va tomando el PC durante el bucle. 3.5 Evidentemente la ejecucin del bucle no se puede hacer paso a paso, modifica la constante CUENTA_200ms para darle el valor 5. Esta accin puedes llevarla a cabo sin salirte del depurador, editando el cambio en la ventana Practica1.s43 y luego ejecutando la accin [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 gua de usuario de la familia MSP430x2xx, para saber identificar los valores que toma el bit C durante la ejecucin del bucle. Vuelve a dar a la etiqueta CUENTA_200ms su valor original 0xD6D8.

14

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin 4. Depuracin Bsica: 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 ejecucin 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 instruccin dec.w R5, que nos permitir ver los cambios en el registro R5, combinado la ejecucin y la ejecucin paso a paso. Para establecer el Punto de Ruptura en la instruccin indicada, sita el cursor en la lnea de la instruccin y haz [Edit Toggle Breakpoint] o pulsa sobre el icono . La lnea pasa a roja, con un punto rojo delante.

4.2 Arranca la ejecucin 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 opcin desde el inicio. para que vuelva a ejecutarse

15

Prctica 1 Tutorial Bsico

Curso 2011/2012

4.4 Pincha en la lnea donde est colocado el punto de ruptura, y deshabiltalo temporalmente: [Edit Enable/Disable Breakpoint]. La lnea pasa a un color rosa, con un punto rojo vaco , ya no se detendr el delante. Si ejecutamos de forma continua de nuevo [Debug Go] programa en el punto de ruptura aunque pase por l. Tambin puedes hacerlo pinchando sobre la lnea y pulsando el botn derecho del ratn (el botn derecho permite acceder a muchos de los mens de la barra superior segn el lugar donde se pinche).

16

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin Depuracin Avanzada: Puntos de Ruptura Condicionales 4.5 El punto de ruptura que se ha colocado, se activa cada vez que se ejecuta la instruccin correspondiente. Podemos establecer que solo se detenga cuando se cumpla una determinada condicin. 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 pestaa correspondiente). En la ventana se ve el punto de ruptura definido, su tipo, el programa en el que se defini, y la condicin (ahora mismo no hay ninguna). Pincha con el botn derecho sobre el punto de ruptura y selecciona Edit en el men que aparece.

4.6 Coloca la condicin que se debe cumplir para que salte el punto de ruptura en la casilla Expression situada en el cuadro Conditions. Escribe la expresin R5=1 y comprueba que est activado el botn Condition true. De esta forma, el punto de ruptura se activar cuando el registro R5 llegue a 1. Otra posibilidad podra ser no poner ninguna condicin, 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. Tambin es posible establecer un cambio de condicin [Condition changed ] como causa de la activacin del punto de ruptura activado.

17

Prctica 1 Tutorial Bsico

Curso 2011/2012

4.7 Para eliminar el punto de ruptura selecciona [Edit Toggle Breakpoint] con el cursor situado en la lnea donde est el punto de ruptura a eliminar. O tambin puedes pinchar en la lnea donde est colocado el punto de ruptura, pulsar el botn derecho, y elimina el punto de ruptura: [Toggle Breakpoint]. La lnea deja de tener color. 4.8 Finaliza la ejecucin de la sesin de depuracin con [Debug Stop Debugging] o pulsa Volveremos a la ventana de edicin de proyectos. .

5. Depuracin Bsica: Medidas de Tiempo mediante bucles SW 5.1 Entra en modo depuracin. Ejecuta el cdigo 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 ejecucin de la sesin de depuracin y modifica el fichero fuente Ejemplo1.s43 con los cambios que se muestran en rojo y en negrita en el cdigo que aparece a continuacin.

18

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin Cdigo 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 Gonzlez 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" ; Definicin de etiquetas

;----------------------------------------------------------------------------; DEFINICIN DE CONSTANTES ;----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_20us EQU 5 CUENTA_1S EQU 0x94CF ;----------------------------------------------------------------------------; DEFINICIN DE VARIABLES ;----------------------------------------------------------------------------ORG VARIABLES ;----------------------------------------------------------------------------; PROGRAMA PRINCIPAL ;----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400,SP ; Inicializa base pila Mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT CONFIG_P1_0 bis.b bic.b mov.w mov.w dec.w nop jnz dec.w jnz #BIT0,&P1DIR #BIT0,&P1OUT #CUENTA_1S,R5 #CUENTA_20us,R6 R6 BUCLE_4C R5 BUCLE_20us ; Configura el P1.0 salida ; Pone P1.0 a 0. Apaga el LED

BUCLE_S BUCLE_20us BUCLE_4C

xor.b #BIT0,&P1OUT jmp BUCLE_S nop ;----------------------------------------------------------------------------; VECTORES DE INTERRUPCIN ;----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESET DW INICIO END

19

Prctica 1 Tutorial Bsico

Curso 2011/2012

A continuacin, se va a determinar la duracin 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 cdigo y contesta a las siguientes preguntas. Extracto de cdigo del fichero Practica1.s43:
;---------------------------------------------------------------- ------------; 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 bic.b #BIT0,&P1OUT

; Configura el P1.0 salida ; Pone P1.0 a 0. Apaga el LED

BUCLE_S BUCLE_20us BUCLE_4C

mov.w #CUENTA_1S,R5 mov.w #CUENTA_20us,R6 dec.w R6 nop jnz BUCLE_4C dec.w R5 jnz BUCLE_20us xor.b #BIT0,&P1OUT jmp BUCLE_S nop

BUCLE_4C

BUCLE_20us BUCLE_S

En qu tipos de memoria se emplaza el programa, las variables y la pila? Qu efecto tiene la instruccin xor.b #BIT0,&P1OUT sobre el LED? Cuntas veces se ejecuta el bucle etiquetado BUCLE_4C en cada ejecucin del bucle etiquetado por BUCLE_20us? y cuntas en la ejecucin del bucle etiquetado por BUCLE_S? Atendiendo a las tablas de tamao y ciclos de ejecucin de las instrucciones dadas por el fabricante en la gua de usuario de la familia 2 de los microcontroladores MSP [4], indica el nmero de ciclos de reloj que tarda en ejecutarse cada uno de los bucles (BUCLE_4C, BUCLE_20us, BUCLE_S). Da las expresiones del nmero de ciclos en funcin 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 instruccin, 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 ejecucin de cada instruccin a travs del valor CCSTEP en la ventana de registros (combinando la ejecucin paso a paso con la insercin de puntos de ruptura).

20

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

Observa la instruccin xor.b #BIT0,&P1OUT cunto tarda en ejecutarse segn

CCSTEP? Qu duracin especifica el fabricante para una instruccin 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. Depuracin Bsica: Representacin de la informacin 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 configralo tal y como se indic en el punto 1.3 de esta gua 6.2 El cdigo fuente que se va a incluir en el proyecto Practica1b es una modificacin del cdigo 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. Gurdalo como Practica1b.s43, mediante las acciones [File-Save As], en el mismo directorio en el que estn guardado los proyectos Practica1 y Practica1b, D:\USR\MC_GY_GrupoX\

El smbolo adelante.

indica que la pregunta tiene cierto grado de dificultad. Quizs quieras dejar esta parte para ms

21

Prctica 1 Tutorial Bsico

Curso 2011/2012

3. Aade 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 pestaas Overview, Practica1 y Practica1b. La Pestaa 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 aplicacin. 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 funcin del contenido de un array de 5 posiciones de tamao byte. Si la posicin est ON enciende el LED y si esta a OFF lo apaga. Las posiciones se leen aprox. cada segundo. AUTOR : Eva Gonzlez 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 ;-----------------------------------------------------------------------------

22

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

#include

"msp430G2533.h"

; Definicin de etiquetas

;----------------------------------------------------------------------------; DEFINICIN DE CONSTANTES ;----------------------------------------------------------------------------#define ON 1 #define OFF 0 #define Indice R7 ;----------------------------------------------------------------------------; DEFINICIN DE CONSTANTES ;----------------------------------------------------------------------------PROGRAMA_PRINCIPAL EQU 0xC000 BASE_VECT EQU 0xFFE0 VARIABLES EQU 0x0220 CUENTA_20us EQU 4 CUENTA_1S EQU 0x94CF N_ESTADOS_LED EQU 5 ;----------------------------------------------------------------------------; DEFINICIN DE VARIABLES ;----------------------------------------------------------------------------ORG VARIABLES ESTADOS_LED DC8 ON,ON,ON,OFF,ON n_on DS8 1 n_off DS8 1 ;----------------------------------------------------------------------------; PROGRAMA PRINCIPAL ;----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400,SP ; Inicializa base pila mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT CONFIG_P1_0 bis.b #BIT0,&P1DIR bic.b #BIT0,&P1OUT clr.b n_on clr.b n_off clr.w Indice mov.w #CUENTA_1S,R5 mov.w #CUENTA_20us,R6 dec.w R6 nop jnz BUCLE_4C dec.w R5 jnz 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,Indice jnz BUCLE_S fin jmp fin nop ;----------------------------------------------------------------------------; VECTORES DE INTERRUPCIN ;----------------------------------------------------------------------------ORG BASE_VECT+RESET_VECTOR ; MSP430 Vector de RESET DW INICIO END ; Configura el P1.0 salida ; Pone P1.0 a 0. Apaga el LED

INICIA_VBLES

BUCLE_S BUCLE_20us BUCLE_4C

23

Prctica 1 Tutorial Bsico

Curso 2011/2012

6.4 Genera el programa ejecutable, conecta la placa de desarrollo al puerto USB, e inicia el modo de depuracin. Cierra la ventana Debug-Log, pinchando sobre la x de su esquina superior izquierda. Abre una ventana de observacin 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 cdigo, y arrstrala con el botn izquierdo pulsado, hasta el primer cuadro libre bajo Expressions. Observa como aparece su valor actual en el campo Value. Se puede elegir el formato de representacin de la variable en el men desplegable que aparece pulsando el botn 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 fsica se pueden ver a travs de la ventana de memoria, a la que se accede pulsando las siguientes opciones: [View - Memory]. En la ventana de memoria tambin se pueden ver las variables, para ello escribe el nombre de la variable n_on en la ventana Goto, o bien pon la direccin de memoria donde se localiza la variable. En la ventana de memoria aparece recuadrada en negro la zona de memoria correspondiente a la variable. Tambin puedes cambiar la forma en que se representa la memoria pulsando en el men desplegable del botn con la flecha.

24

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin

6.6 Cierra la ventana Workspace para tener ms espacio. Resetea el programa tal y como se indic en el punto 4.3 de esta gua. Extiende la ventana Disassembly para ver mejor su contenido. Esta ventana es el equivalente a la ventana del cdigo fuente en ensamblador pero en cdigo mquina. La instruccin en curso tambin se encuentra en verde. Dentro de esta ventana se puede observar como aparece cada instruccin en ensamblador en gris, la etiqueta asociada a la instruccin, si es que hay alguna, y justo debajo hay 3 columnas con: 1) La direccin de memoria donde est colocada la instruccin; 2) La instruccin en cdigo mquina; 3) La instruccin en ensamblador otra vez. Visualiza en la ventana de memoria el programa y comprueba como los cdigos mquina de las instrucciones estn almacenados en la memoria cotejando la informacin de las ventanas Disassembly y Memory8.

Te ser ms sencillo visualizar esto representando los datos en memoria a tamao WORD (2xunits) 25

Prctica 1 Tutorial Bsico

Curso 2011/2012

Observa como aparece cada instruccin en ensamblador en gris, la etiqueta asociada a la instruccin, si es que hay alguna, y justo debajo hay 3 columnas con: 1) La direccin de memoria donde est colocada la instruccin; 2) La instruccin en cdigo mquina; 3) La instruccin en ensamblador otra vez, pero colocando los valores reales de las etiquetas y smbolos. 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 edicin y en el cdigo fuente Practica1b.s43 tras la instruccin que se encarga de parar el Watchdog escribe las tres instrucciones siguientes:
;----------------------------------------------------------------------------; PROGRAMA PRINCIPAL ;----------------------------------------------------------------------------ORG PROGRAMA_PRINCIPAL INICIO mov #0x0400,SP ; Inicializa base pila mov #WDTPW+WDTHOLD,&WDTCTL ; Desactiva WDT cmp #0xFF,0(R5) ;INSTRUCCIN 1 cmp.b #0xFF,0(R5) ;INSTRUCCIN 2 cmp.b #0xF8,0(R5) ;INSTRUCCIN 3

26

Microcontroladores Grado en Ingeniera de Tecnologas de Telecomunicacin Ensambla, linka y transfiere el nuevo cdigo fuente a la placa de desarrollo, observa la ventana Disassembly y contesta a las siguientes preguntas Con cuntas 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 instruccin inc.b n_on para cambiarla a inc n_on. Ensambla, linka y transfiere el nuevo cdigo 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 fin_n_estados bis.b inc inc.w #BIT0,&P1OUT n_on Indice

Ves algo extrao? A qu crees que se debe?

27

Prctica 1 Tutorial Bsico

Curso 2011/2012

3. REFERENCIAS

[1] MSP-EXP430G2 LaunchPad Experimenter Board. Users 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. Users Guide (Rev F), Literature number SLAU144H, Diciembre 2004, revisado Abril 2011. Texas Instruments.

28

You might also like