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.
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.
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.
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
Top Related