MSP:Blink a Led

Blinking Led MSP430
Esta pagina brinda un ejemplo básico para la configuración y utilización de los puertos del MSP430 donde se enciende y apaga un Led. El proyecto puede ser compilado con CCS4, a continuación se explica paso a paso el código

El siguiente ejemplo corresponde a un microcontrolador msp430f2274, la librería necesaria para la utilización de herramientas comunes de este microcontrolador esta dada por:

En el programa primero se inicializa el WatchDogTimer para que no interrumpa el microcontrolador durante su operación. Para esto se configura el registro WDTCTL, en este registro se debe ubicar un 1 en el bit de deshabilitación del contador y la clave de aceptación de configuración del registro. Dado que se usa la librería del microcontrolador se puede usar el valor WDTPW que corresponde a la clave de autorización de escritura, de igual manera con todos los campos de los registros escritos en la hoja de datos.

Observar siguiente figura correspondiente a la pagina 380 de la hoja de datos.



Para configurar las fuentes de reloj del microcontrolador se hace uso de los registros Basic clock system control 1 BCSCTL1 y DCO control register DCOCTL, estos registros permiten configurar la fuente de reloj del sistema, para este caso se utiliza valores de calibración para obtener un reloj interno de 1 MHZ

La configuración de los puertos GPIO se realiza mediante los registros PxDIR donde la x representa el número del puerto de microcontrolador. La organización de los pines de salida están dados por Px.z donde x representa el puerto y z representa el pin utilizado. Para este ejemplo se desea utilizar un led que esta conectado al puerto P1.1 por este motivo se ubica 1 en el bit 1 de registro de selección de dirección P1DIR.

Para la manipulación del puerto se hace uso de la misma nomenclatura para el registro P1OUT ubicando 1 y ceros en un ciclo infinito for. Entre cada cambio se llama una función de retardo llamada delay_ms.

Función de retraso
La función de delay es básicamente un contador descendente, si se sabe que el reloj esta configurado a 1 MHz hacen falta 1000 ciclos de máquina para configurar un retardo de 1 ms, además, haciendo uso de la función del compilador __delay_cycles se puede poner al procesador ha hacer un retardo en determinados ciclos de máquina. Para este ejemplo sencillo donde el tiempo no es critico se puede realizar este tipo de programación pero para proyectos mas elaborados se puede utilizar los recursos del microcontrolador como por ejemplo deep sleep, que pone al microcontrolador en estado de ultrabajo consumo y espera a que se despierte por acciones externas al núcleo como por ejemplo un temporizador.