Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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.
1. Ejecute el entorno de desarrollo CODE COMPOSER STUDIO V.5, inicialmente se mostrar una
pantalla como la mostrada en la Fig.1
SEMESTRE 2014-2
ZCM
2.
SEMESTRE 2014-2
ZCM
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.
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.
SEMESTRE 2014-2
ZCM
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.
}
}
SEMESTRE 2014-2
ZCM
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.
SEMESTRE 2014-2
ZCM
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
Prender
Led
retardo
Apagar led
retardo
SEMESTRE 2014-2
ZCM
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
Leer estado
del pulsador
SI
pulsador
presionado
?
Prender
Led
NO
Led
apagado
SEMESTRE 2014-2
ZCM
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
SEMESTRE 2014-2
ZCM
Proyecto 4
Al presionar y soltar un pulsador se debe prender un diodo led. Inicialmente est led est apagado.
Diagrama de flujo
Inicio
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
SEMESTRE 2014-2
ZCM
//*********************************************************************************
// 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
www.ti.com
SEMESTRE 2014-2
ZCM
10
Anexos:
SEMESTRE 2014-2
ZCM
11
Nota:
Revisar el Manual del Mdulo Stellaris LM3S6965 Evaluation Board
SEMESTRE 2014-2
ZCM
12