jueves, 13 de diciembre de 2012

MSP430: Shift Register + Led Bar

Como de costumbre, vamos a intentar demostrar las explicaciones dadas en este blog mediante ejemplos ilustrativos. En este caso, nos referimos al control del dispositivo registro de desplazamiento (shift register) descrita en el siguiente capítulo: MSP430: Registro de Desplazamiento.

Vamos a trabajar sobre la placa MSP430 Launchpad y en este caso, usaremos el microcontrolador MSP430G2231.

Y para ser fiel a nuestra metodología, vamos a exponer un ejemplo sencillo donde abordará el problema principal (control y manipulación del dispositivo registro de desplazamiento) y además, otras cuestiones útiles tales como, bajo consumo, empleo de interrupciones, etc.

El material que vamos a necesitar y su función es la que se muestra a continuación:

· MSP430 Launchpad: Evidentemente, nuestra placa de desarrollo con el microcontrolador MSP430G2231.
· CD74HCT164: Registro de desplazamiento serie-paralelo.
· 8 Leds: En este caso, emplearemos una barra de leds (no leds sueltos, aunque se pueden usar igualmente).

El funcionamiento es simple, tendremos dos formas de iluminar los 8 leds a tres intervalos de tiempo establecidas:

· Inicial: Cada, aproximadamente 50 ms, los leds se intercambian su iluminación.
· Intermedia: Cada, aproximadamente 366.67 ms, los leds se intercambian su iluminación.
· Final:  Cada, aproximadamente 1 s, los leds se intercambian su iluminación.

Y la manera de cambiar dicha frecuencia de cambio de iluminación de los leds es mediante el pulsador conectado a la patita P1.3.

Pero esto no es todo, el programa muestra como poner o sumir al microcontrolador en el modo ahorro de energía LMP3 (todo apagado menos el reloj ACLK), y solo se saldrá de dicho estado, para cambiar el estado de los leds o a cada pulsación del pulsador para cambiar la frecuencia de cambio de los mismos.

Para una explicación más detallada, se recomienda que se lean los comentarios del programa que está más abajo para disposición del usuario su descarga.

El código del programa principal, es el siguiente:

//*----------------------------------------------------------------------
    AqueronteBlog@gmail.com            
                                                      
Este archivo es propiedad intelectual del blog Aqueronte,  
cuya dirección web, es la siguiente:                       
                                                       
  http://unbarquero.blogspot.com/           
                                                       
Se permite cualquier modificación del archivo siempre y cuando
se mantenga la autoría del autor.                          
                                                      
----------------------------------------------------------------------
                                                       
Filename:      main.c                              
Date:          10-December-12                                
File Version:  vs0.0                                     
Compiler:      IAR 5.50.1 [Kickstart]   

Author:        Manuel Caballero                           
Company:       Hades                          
                       
----------------------------------------------------------------------
                                                      
Notes:   En este programa vamos a mostrar como trabajar con el 
         dispositivo registro de desplazamiento (CD74HCT164)
         tipo serie-paralelo, donde veremos que simplemente con dos 
         patitas del microcontrolador, son capaces de 
         controlar 8 patitas de salida.

         En nuestro programa, dichas salidas irán conectadas a una barra
         de leds que iremos encendiendo alternativamente (un led si, 
         otro no).

         La velocidad de secuencia de encendido irá controlada mediante 
         un pulsador, y ésta será desde los 50ms hasta el segundo.
         Como dato adicional, el microcontrolador estará en modo ahorro
         de consumo LPM3 hasta que se deba cambiar el estado de los leds
         o la frecuencia del cambio.
*/

#include "io430.h"
#include "variables.h"
#include "funciones.c"

void main( void )
{  
   conf_WDT ();          // Configura WDT del sistema
   conf_CLK ();          // Configura CLK del sistema                                              
   conf_IO ();           // Configura Entradas/Salidas
   conf_TimerA ();       // Configura Timer A 
  
   __enable_interrupt(); // Interrupt enable
  
   do{

     ShiftRegister(ledOn);
  
     LPM3;               // Enter LPM3 w/interrupt              
              
   }while(1);
}

Como vemos, el ejemplo es bastante simple, se recomienda bajar los archivos disponibles más abajo para indagar entre sus librerías y leer sus funciones de manera más detallada.

Un vídeo que demuestra lo explicado anteriormente se presenta a continuación:


Os pongo a vuestra disposición el programa en lenguaje C (IAR y MSPGCC) para que lo podáis descargar y probar:

MSP430: CD74HCT164 + 8 Leds 
Compilador IARCompilador MSPGCC
CC
MSP430: CD74HCT164 + 8 LEDS
MSP430: CD74HCT164 + 8 LEDS
MSP430: CD74HCT164 + 8 LEDS
MSP430: CD74HCT164 + 8 LEDS
MSP430: CD74HCT164 + 8 LEDS
MSP430: CD74HCT164 + 8 LEDS

Como se ha podido ver en el transcurso de este capítulo, es fácil y muy útil trabajar y saber controlar los dispositivos llamados registros de desplazamiento a la hora de ahorrar patitas de nuestro microcontrolador y aprovechar de camino, poner a éste en modo ahorro de energía.

0 comentarios: