Sei sulla pagina 1di 12

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SECCION ELECTRICIDAD Y ELECTRONICA

LABORATORIO 1

FAMILIARIZACIN CON EL MDULO DE DESARROLLO STELLARIS EKSLM3S6965 Y MANEJO DE LOS PUERTOS E/S

I.

OBJETIVO
Aprender a manejar el entorno de desarrollo Code Compose Studio 5.5 para editar, compilar y
ejecutar un programa con el mdulo Stellaris EKS-LM3S6965, basado en un microcontrolador ARM
de 32 bits.
Aprender a desarrollar programas elementales en lenguaje C para programar puertos de E/S del
microcontrolador LM3S6965..

II.

MATERIALES

1 Mdulo de desarrollo Stellaris EKS-LM3S6965 de Texas Instruments


1 cable de extensin USB
Entorno de desarrollo Code Composer Studio 5.5
1 computadora personal

III. PROCEDIMIENTO
Mediante 4 proyectos desarrollados se practicar con el IDE Code Composer Studio (CCS) V5.5
para aprender a programar el microcontrolador LM3S6965 del mdulo de desarrollo Stellaris. CCS
permite:
Editar un programa en lenguaje C o ensamblador
Compilar y ejecutar un programa.
El primer proyecto, consiste en prender y apagar un led ejecutando las instrucciones paso a paso.
El segundo proyecto consiste en hacer parpadear un led con un tiempo de retardo.
El tercer proyecto consiste en leer el estado de un pulsador para prender un led.
El Cuarto proyecto consiste en presionar y soltar un pulsador para prender un led.
A continuacin se implementar el primer proyecto utilizando el entorno de desarrollo CODE
COMPOSER STUDIO para programar el microcontrolador LM3S6965.
IV.

CODE COMPOSER STUDIO IDE

1. Ejecute el entorno de desarrollo CODE COMPOSER STUDIO V.5, inicialmente se mostrar una
pantalla como la mostrada en la Fig.1

Fig.1 Pantalla de inicio del CCS


IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

2.

Creacin del proyecto en una ruta especfica


El entorno de desarrollo Code Composer Studio le pide crear un directorio de trabajo (Workspace)
donde guardar sus proyectos creados. Para esta primera sesin, por ejemplo puede crear su
carpeta de trabajo (D:\IEE256\Lab1), tal como se muestra en la Fig.2 , luego haga clic en OK.

Fig.2 Creacin de una carpeta de trabajo (wordspace)


Al hacer clic en OK aparecer una figura similar a la Fig.3. Ingrese el nombre del proyecto (por
ejemplo proyecto_1), seleccione la familia ARM, su variante Stellaris Cortex LM3S6xxx y elija el
dispositivo Stellaris LM3S6965. Adems en el cuadro inferior izquierdo escoja la opcin Empty
Proyect (with main.c) para editar el nuevo proyecto en lenguaje C. Luego de ingresar todos estos
datos haga clic en el cuadro finish para seguir el siguiente paso.

Fig.3 Nombre del primer proyecto y configuracin del hardware


IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

3.

Agregar archivos
Aparecer un archivo vaco en C <main.c>. En el cuadro Project Explorer, que se encuentra en
el lado izquierdo del cuadro principal, puede crear mas archivos fuente o de cabecera o aadir
archivos al proyecto activo <proyecto_1> , haciendo clic derecho y seleccionando Add Files, como
se observa en la Fig.4 y copie el archivo lm3s6965.h de C:\StellarisWare\inc\ y aparecer una
figura similar al lado izquierdo de la Fig.5. Asegrese que est seleccionada la opcin Copy files y
presione el botn OK. Se observar el archivo agregado lm3S6965.h.

Fig.4 Area de edicin main.c para editar

y la forma de agregar archivos

Fig.5 Se observa el archivo lm3S6965.h agregado al proyecto_1

4.

Edicin y compilacin
En esta parte vamos a editar el programa del proyecto_1 en lenguaje C.
El programa consta en su cabecera de una descripcin de lo que hace el proyecto, el autor del
programa y la fecha de realizacin.
Comienzo de la edicin:
Borre el texto preliminar que corresponde al programa principal main.c . y escriba el siguiente
programa en el area principal (main.c), como se muestra en la Fig.6.

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Cdigo del proyecto_1:


/*

Nombre: Proyecto_1
Mdulo: Stellaris LM3S6965
Descripcin: Prende y apaga un led en el pin 0 del puerto F.
Autor: Zenn Cucho /Hugo Pratt
Fecha: Semestre 2014.2

*/
#include "lm3s6965.h"
void main(void) {
unsigned long temp;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOF; // activa la seal de reloj para el puerto F
temp= SYSCTL_RCGC2_R; // y se debe esperar unos 3 ciclos de reloj
GPIO_PORTF_DIR_R |= 0x01; // Configura el bit 0 del puerto F como salida
GPIO_PORTF_DR8R_R |=0x01; // se activa el driver de 8 mA en el pin 0.
GPIO_PORTF_DEN_R |=0x01; // se activa el pin 0, como salida digital.
while(1){
GPIO_PORTF_DATA_R ^=0X01; // salida del dato en el pin 0, como pulsos.
}
}

Luego de terminar la edicin, compile el programa con el botn


men principal del entorno CCS.

que aparece en la cinta del

Al compilar, se observa en el area de consola inferior 2 errores y un advertencia (warning), se nota


tambin que las instrucciones donde est el error estn marcadas con x ya que se copi mal.
Corrija y vuelva a compilar hasta que deje de mostrar algn mensaje de error, como en la Fig.7,
puede presentarse algunas advertencias (warning) pero no afectan la ejecucin del programa.

Fig.6 Resultado de la compilacin con 2 errores y una advertencia (Warning)

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Fig.7 Resultado de la compilacin sin errores y con 2 advertencias (Warning)


5.

Ejecucin del cdigo

Si la configuracin del Hardware ha sido correcta y no se presenta errores durante la compilacin, se


podr ejecutar el programa. Con este proyecto demostraremos el uso del depurador (debugger).

Siga los siguientes pasos:

Conecte el mdulo Stellaris LM3S6965, mediante un cable USB a la computadora (las


conexiones en ambos extremos debe hacerlo con cuidado a fin de no daar el puerto USB del
mdulo Stellaris,hay una sola manera de conectar).

Haga clic en el botn

de la barra del men del entorno CCS o presione la tecla F11 para
iniciar la ejecucin con el debugger. Al presionar se observa (ver Fig.8) que la primera linea del
cdigo principal se resalta y tambin aparece en la parte izquierda superior las herramientas de
depuracin : Resume(F8), Terminate, Step into(F5), Step over(F6).
Y en la parte derecha superior se pueden ver las variables, los registros y las propiedades, en
este caso se han presionado la pestaa Register.
Ahora presione la tecla F6 o el botn respectivo, e inicie la ejecucin del programa paso a paso,
observe los valores de los registros que se emplean en el programa. Al ejecutarse la ltima
instruccin varias veces compruebe el encendido y el apagado del diodo led STATUS del mdulo
Stellaris (ubicado en en el lado derecho de uno de los pulsadores).
Presione el botn Resume (F8) Qu sucede? Por qu no se observa el parpadeo del diodo led)
Para finalizar la ejecucin del programa, presione el botn Terminate.

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Fig.8 Empleo del debugger

Proyecto 2
Con respecto al proyecto 1, se modificar el programa para ver oscilando el diodo led con un tiempo de
retardo usando la opcin F8 o el smbolo
para ejecutar todo el programa. (En el primer proyecto el
programa se ejecut paso a paso con la tecla F6 y no haba retardo)
Diagrama de flujo:
Inicio

Configurar registros y puerto


Salida: 1 led

Prender
Led

retardo

Apagar led

retardo

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Cdigo:
/***********************************************************************************
Nombre: Proyecto_2
Mdulo: Stellaris LM3S6965
Descripcin: Prende y apaga un led en el pin 0 del puerto F.
Autor: Zenn Cucho /Hugo Pratt
Fecha: Semestre 2014.2
**********************************************************************************
*/
#include "lm3s6965.h"
void main(void) {
unsigned long temp,n;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOF; //activa el reloj del puerto F
temp= SYSCTL_RCGC2_R; // y espera algunos ciclos de reloj
GPIO_PORTF_DIR_R |= 0x01; // Configura el bit 0 del puerto F como salida
GPIO_PORTF_DR8R_R |=0x01; // se activa el driver de 8 mA en el pin 0.
GPIO_PORTF_DEN_R |=0x01; // se activa el pin 0, como salida digital.
while(1){
// se prende un led en el puerto F
GPIO_PORTF_DATA_R |=0X01;
//retardo
for(n = 0; n < 800000; n++)
{
}
// se apaga el led
GPIO_PORTF_DATA_R &= ~(0X01);
// retardo
for(n = 0; n < 800000; n++);
{
}
}
}

Proyecto 3
El mdulo Stellaris LM3S6965, tiene 6 pulsadores (SW1..SW6), cinco son de propsito general. En este
proyecto se demostrar el uso de un pulsador SW4 para prender y apagar un diodo led
Diagrama de flujo
Inicio

Configurar Registros y Puertos


Salida: 1 led
Entrada: 1 pulsador

Leer estado
del pulsador

SI

pulsador
presionado
?

Prender
Led

IEE 256 SISTEMAS DIGITALES - LABORATORIO

NO

Led
apagado

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Cdigo
/***************************************************************************
*Nombre: Proyecto 3
* Descripcin: Al presionar (sin soltarlo) el pulsador SW4 se prende el led
*
y al soltarlo se apaga
* Conexiones: SW4 a PE1
*
Led a PF0
* Fecha: Semestre 2014.2
* Autor: Zenn Cucho/Hugo Pratt
****************************************************************************
*/
#include "lm3s6965.h"
//**************************************************************************
// funcin config_portE para configurar 4 pines del puerto E como entrada
// se activa las 4 resistencias pull up
void config_portE(void) {
unsigned long temp;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOE; //reloj activo para el puerto E
temp= SYSCTL_RCGC2_R; // esperar algunos ciclos de reloj
GPIO_PORTE_DIR_R &= ~0x0F; // Configura 4 pines de entrada
GPIO_PORTE_AFSEL_R &= ~0x0F; // configurar pines como GPIO
GPIO_PORTE_PUR_R |=0x0F; //activar resistencias pull up
GPIO_PORTE_DEN_R |=0x0F; //activar 4 pines para acceso digital
} // fin Config_portE
//**************************************************************************
// funcion config_led para configurar el puerto F como salida
void config_led(void) {
unsigned long temp;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOF; // (0X20) reloj activo en el puerto F
temp= SYSCTL_RCGC2_R; // espera unos 3 ciclos de reloj
GPIO_PORTF_DIR_R |= 0x01; // configura el pin 0 del puerto F como salida
GPIO_PORTF_AFSEL_R &= ~0x01; // configura el pin como GPIO
GPIO_PORTF_DR8R_R |=0x01;
// activa el driver a 8mA
GPIO_PORTF_DEN_R |=0x01; //activa el pin para acceso digital
} // fin Config_led
//**************************************************************************
// Programa principal
void main (void){
unsigned long temp;
config_portE();
config_led();
while (1){
temp=GPIO_PORTE_DATA_R;
if((temp&0x02)==0) // analiza si esta presionado PE1 (bit 1)
GPIO_PORTF_DATA_R |=0X01; // la salida del led es en PF0
else
GPIO_PORTF_DATA_R &= ~0x01;
} //fin de while
} //fin de main

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Proyecto 4
Al presionar y soltar un pulsador se debe prender un diodo led. Inicialmente est led est apagado.
Diagrama de flujo
Inicio

Configurar Reg. Y Puertos


Salida: 1 led
Entrada: 1 pulsador

Apagar Led

Pulsador
presionado?

NO

SI

Pulsador
soltado?

NO

SI

prender Led

Fin

Cdigo:
/*****************************************************************************
* Nombre: Proyecto 4
* Descripcin: Al presionar y soltar el pulsador SW4 se prende el led
* Conexiones: SW4 a PE1
*
Led a PF0
* Fecha: Semestre 2014.2
* Autor: Zenn Cucho
******************************************************************************
*/
#include "lm3s6965.h"
//*********************************************************************************
// funcin config_portE para configurar 4 pines del puerto E como entrada
// se activa las 4 resistencias pull up
void config_portE(void) {
unsigned long temp;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOE; //reloj activo para el puerto E
temp= SYSCTL_RCGC2_R; // esperar algunos ciclos de reloj
GPIO_PORTE_DIR_R &= ~0x0F; // Configura 4 pines de entrada
GPIO_PORTE_AFSEL_R &= ~0x0F; // configurar pines como GPIO
GPIO_PORTE_PUR_R |=0x0F; //activar resistencias pull up
GPIO_PORTE_DEN_R |=0x0F; //activar 4 pines para acceso digital
} // fin Config_portE

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

//*********************************************************************************
// funcion config_led para configurar el puerto F como salida
void config_led(void) {
unsigned long temp;
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOF; // (0X20) reloj activo en el puerto F
temp= SYSCTL_RCGC2_R; // espera unos 3 ciclos de reloj
GPIO_PORTF_DIR_R |= 0x01; // configura el pin 0 del puerto F como salida
GPIO_PORTF_AFSEL_R &= ~0x01; // configura el pin como GPIO
GPIO_PORTF_DR8R_R |=0x01;
// activa el driver a 8mA
GPIO_PORTF_DEN_R |=0x01; //activa el pin para acceso digital
GPIO_PORTF_DATA_R &= ~0X01; // inicialmente led apagado
} // fin Config_led
//*********************************************************************************
// Programa principal
void main (void){
unsigned long temp,pulsador;
config_portE();
config_led();
// espera a que se presione y suelte el pulsador
do{temp=GPIO_PORTE_DATA_R;
pulsador = temp &0x02;
}while (pulsador == 0x02);
do{temp=GPIO_PORTE_DATA_R;
pulsador =temp &0x02;
}while (pulsador == 0);
GPIO_PORTF_DATA_R |=0X01; // se enciende el led
while(1); // bucle infinito
// } //fin de while
} //fin de main

Material de trabajo del laboratorio de sistemas digitales


Elaborado por:
Ing. Zenn Cucho
zcucho@pucp.pe
Revisado por: Ing. Hugo Pratt hpratt@pucp.edu.pe
Semestre: 2014.2
Bibliografa:

www.ti.com

Separatas del curso preparado por el Ing. Hugo Pratt

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

10

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Anexos:

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

11

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Disposicin de los pulsadores:

Circuito del diodo Led

Puertos disponibles del mdulo:

Nota:
Revisar el Manual del Mdulo Stellaris LM3S6965 Evaluation Board

IEE 256 SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-2

ZCM

12

Potrebbero piacerti anche