Tutorial MSP430 Prender Led

4
Tutorial MSP430 – Prender un Led Posted on julio 15, 2012 Tutorial MSP430 – Prender un Led “Bienvenido a mi casa. Venga libremente, váyase a salvo, y deje algo de la alegría que trae consigo” Dracula, de Bram Stoker Vamos a trabajar con el microcontrolador MSP430F2011, debido a que tiene sólo 14 pines, de los cuales podemos utilizar 10 pines como I/O, 2KB de memoria de programa (Flash Memory) y 12MB de memoria de datos (RAM). Naturalmente si en algún momento nos queda chico este micro migraremos a otro con mayor recursos. En esta direccion de la empresa Texas Instruments se encuentran dos archivos que necesitamos tener a nuestro lado como material de consulta absoluto: 1. Datasheet del MSP430F2011 2. Guia de Usuario de la Familia MSP430X2XX Como podemos ver en la imagen, vamos a realizar un código que active un nivel high en el pin 2 del MSP430F2011.

description

Tutorial MSP430 Prender Ledwww.microembebidos.wordpress.com

Transcript of Tutorial MSP430 Prender Led

Page 1: Tutorial MSP430 Prender Led

Tutorial MSP430 – Prender un Led

Posted on julio 15, 2012

Tutorial MSP430 – Prender un Led

“Bienvenido a mi casa. Venga libremente, váyase a salvo, y deje algo de la alegría que trae consigo”

Dracula, de Bram Stoker

Vamos a trabajar con el microcontrolador MSP430F2011, debido a que tiene sólo 14 pines, de los cuales

podemos utilizar 10 pines como I/O, 2KB de memoria de programa (Flash Memory) y 12MB de memoria de

datos (RAM). Naturalmente si en algún momento nos queda chico este micro migraremos a otro con mayor

recursos.

En esta direccion de la empresa Texas Instruments se encuentran dos archivos que necesitamos tener a nuestro

lado como material de consulta absoluto:

1. Datasheet del MSP430F2011

2. Guia de Usuario de la Familia MSP430X2XX

Como podemos ver en la imagen, vamos a realizar un código que active un nivel high en el pin 2 del

MSP430F2011.

Page 2: Tutorial MSP430 Prender Led

El código que realizará esta tarea se muestra a continuación

01 #include "io430.h"//libreria del propio IDE

02

03 #define LED1 P1OUT_bit.P1OUT_0//definicion del pin LED

04

05 int main( void ) //funcion principal

06 {

07 // Stop watchdog timer to prevent time out reset

08 WDTCTL = WDTPW + WDTHOLD;

09

10 CAPD = 0x00;//Habilitamos el output driver de todos los pines del puerto 1.

11 P1SEL = 0x00;//Seteamos la funcion de I/O en todos los pines del puerto 1.

12 P1DIR = 0xFF;//Seteamos todos los pines del puerto 1 como salida.

13

14 LED1 = 1;//nivel high en el pin LED

15

16 while(1);//bucle infinito

17 }

Como pueden notar se trata de un lenguaje C que respeta el formato del ANSI C, prácticamente no hemos

tocado aún varios aspectos como el oscilador, modo de arranques, etc. Estos temas los iremos vislumbrando

conforme avance el curso.

Pero por ahora toca entender que significan estos 3 registros: CAPD, P1SEL, P1DIR, y que significa el label

LED1.

Page 3: Tutorial MSP430 Prender Led

CAPD, P1SEL, P1DIR se necesitan configurar de la siguiente manera para poder utilizar el pin 2 que

corresponde con el P1.0, como output:

Observen que para que el pin P1.0 se comporte como un pin de salida (o de entrada) necesita que el bit 0 del

registro P1DIR sea cero, debido a que ese registro define el comportamiento de entrada o salida del pin, donde

un “1 ” significa “salida” y un “0″ es “entrada” (contrario a cómo trabajan los PICs por ejemplo).

Así mismo el bit 0 de P1SEL tiene que ser cero, pues esto le indica al pin que se comporte como un pin I/O,

otro valor configuraría al pin para que trabaje con algún periférico que tiene multiplexado. En otro proyecto

usaremos esta configuración.

Y el bit 0 del registro CAPD también tiene que ser seteado a cero, para que habilite los buffers de entrada/salida

del pin. Este registro tiene mayor relevancia cuando se usa el pin P1.0 en el modo comparador.

Page 4: Tutorial MSP430 Prender Led

Después de todo esto ya tenemos el pin P1.0 configurado como salida (en el código lo hemos aplicado a todos

los pines del puerto 1), entonces creamos el label LED1 que referencia al bit 0 del registro P1OUT (quien

controla los pines de salida del puerto 1).

#define LED1 P1OUT_bit.P1OUT_0, donde:

P1OUT_bit = registro P1OUT

P1OUT_0 = bit 0 del registro P1OUT