Sei sulla pagina 1di 12

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Inicio Quienes Somos Noticias Tutoriales Tienda Servicios Contacto

LPC1768 MSP430 MSP430 EN VIVO PIC18F PIC18F EN VIVO RTOS ANSI C

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Segmentos
mayo 22, 2013 MSP430 EN VIVO, TUTORIALES No comments

En este segundo tutorial del MSP430F5438 vamos a utilizar los 8 displays de 7 segmentos que vienen en la placa de desarrollo, y explicaremos un poco sobre el UCS (Unified Clock System) ya que por defecto el MSP430F5438 funciona con un clock interno que proviene del FLL (Frequency Locked Loop) que gestiona y estabiliza el clock del DCO (Digitally Controlled Oscillator) que viene a ser el oscilador del main clock en nuestra aplicacin. Haremos que en cada display se muestre un digito a la vez durante 1 segundo cada uno.

1 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

En esta oportunidad vamos a trabajar con los 8 displays que tenemos disponibles, nos referimos a estos:

La distribucin elctriconica es la siguiente imagen, fjense que el control de cada dgito es DIG1,DIG2,DIG3,DIG4,DIG5,DIG6,DIG7,DIG8, y que se activan con cero lgico debido al arreglo con el transistor cuya base cada uno dispara, adems notar que los displays son de nodo comn:

2 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Los 7 segmentos ms el segmento de punto decimal de cada display estn todos multiplexados cada 4 dgitos en un solo bloque, por ello para tener los 8 displays se requieren 2 de estos bloques, observar que como son de anodo comun entonces los 7 segmentos y el segmento de punto decimal se activan con cero lgico:

Una vez aclarado podemos tocar el tema de la multiplexacin. Tal como se mencion al principio vamos a mostrar un nmero en cada digito de forma automtica por 1 segundo en cada posicin. La pregunta que aparece es: cmo saber cuantos ciclos de reloj debo retardar el cambio de cada dgito?

Unified Clock System Frequency Locked Loop


An no vamos a profundizar en el estudio del UCS (Unified Clock System), sin embargo es necesario mencionar cmo obtener el valor de cada ciclo de reloj del microcontrolador para poder estimar un retardo equivalente u aproximado a 1 segundo. Por ello lo explicar en el video sin embargo mencionar que en el MSP430F5438 suceden muchas cosas interesantes en el arranque del sistema con respecto al UCS. Como recordarn del post del DCO en el tutorial del msp430 con proteus, existentes muchas fuentes de reloj para generar el clock del sistema, en este micro por defecto el ciclo de reloj del cpu depende exclusivamente del mdulo FLL (Frequency Locked Loop) el cual toma como referencia de reloj al XT1CLK, sin embargo como en nuestro caso no vamos a configurar dicho XT1 entonces se producir una interrupcin de falla del clock, lo que provocar que la

3 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

referencia el FLL dependa de un oscilador interno llamado REFOCLK cuyo valor nominal es 32768Hz.

El FLL se encarga en adelante de generar 2 seales de reloj, el DCOCLK y el DCOCLKDIV, de los cuales el MainClock por defecto estar tomando como referencia al DCOCLKDIV, siendo precisamente el MainClock de quien depende nuestro retarde de 1 segundo, entonces para conocer la frecuencia de oscilacin que recibe el MainClock proveniente de la seal DCOCLKDIV debemos conocer 2 ecuaciones:

4 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Estas dos ecuaciones ingresan al mdulo 10-bit Frequency Integrator del FLL para generar los valores DCO y MOD que a su vez generan luego la seal DCOCLK, sin embargo esos valores DCO y MOD son manipulados automticamente por el FLL. Naturalmente este comportamiento es por defecto y podemos cambiarlo para que el DCO depende exclusivamente de los valores de DCO, MOD y DCORSEL que podamos escribirle desde el programa. Entonces asignemos valores a cada variable, dichos valores son los que recibe por defecto:

De esto resulta que: f DCOCLK = 2.097152MHz f DCOCLKDIV = 1.048576MHz Dichos valores por defecto se encuentran definidos en los registros del UCS que son un total de 9 registros:

5 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Entonces los bits que se encargan de seleccionar la referencia para el FLL es decir la seal FLLREFCLK se llaman SELREF, y estn en el registro UCSTL3. Por defecto tienen el valor 000 pero luego de detectar la inactividad en XT1 el MSP430 selecciona la fuente REFOCLK con el valor 010.

El fator n que divide la referencia FLLREFCLK esta dado por los bits FLLREFDIV los cuales estn en el registro UCSCTL3 y por defecto tienen el valor 000 es decir /1.

6 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

El factor multiplicador N para determinar la seal estabilizada del DCO viene dado por los bits FLLN que estn en el registro UCSCTL2 y su valor por defecto es 31 en binario.

El factor D que determina el prescaler del DCOCLK para ser la seal de retroalimentacin del FLL viene dado por los bits FLLD que estn en el registro UCSTL2 y su valor por defecto es 001 es decir /2.

Finalmente como el MainClock depende de la seal DCOCLKDIV, entonces nuestro cpu corre a 1.048576MHz y cada instruccin se ejecuta en un ciclo de reloj, por lo tanto para tener un retardo de 1 segundo tenemos que contar 1.048576 ciclos. Programa:
#include "io430.h" #include "intrinsics.h" #define POWER BIT4 #define POWER_PORT P5OUT #define #define #define #define #define #define #define #define #define #define DIG1 BIT0 DIG2 BIT1 DIG3 BIT2 DIG4 BIT3 DIG14_PORT P9OUT DIG5 BIT4 DIG6 BIT5 DIG7 BIT6 DIG8 BIT7 DIG58_PORT P1OUT

#define DISPLAY_PORT P8OUT unsigned char digitos[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98}; int main( void )

7 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

{ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //Configura digitos 1 al 4 P9DIR |= (DIG1+DIG2+DIG3+DIG4);//set bits 0 al 3 del registro P9DIR DIG14_PORT |= (DIG1+DIG2+DIG3+DIG4);//apagando los digitos 1 al 4 //Configura digitos 5 al 8 P1DIR |= (DIG5+DIG6+DIG7+DIG8);//set bits 4 al 7 del registro P1DIR DIG58_PORT |= (DIG5+DIG6+DIG7+DIG8);//apagando los digitos 5 al 8 //Configura los segmentos P8DIR = 0xFF;//set todos los bits del registro P8DIR DISPLAY_PORT = 0xFF; //Configurando el pin power como salida P5DIR |= POWER;//set bit 4 del registro P5DIR POWER_PORT |= POWER;//set bit 4 del registro P5OUT // while(1){ //Mostrar en cada digito un valor unsigned char i; for(i = 0; i < 8; i++){ DISPLAY_PORT = digitos[i+1];//mostrar numero DIG14_PORT |= (DIG1+DIG2+DIG3+DIG4);//apagar digitos DIG58_PORT |= (DIG5+DIG6+DIG7+DIG8);//apagar digitos switch(i){ case 0: DIG14_PORT &= ~DIG1; break; case 1: DIG14_PORT &= ~DIG2; break; case 2: DIG14_PORT &= ~DIG3; break; case 3: DIG14_PORT &= ~DIG4; break; case 4: DIG58_PORT &= ~DIG5; break; case 5: DIG58_PORT &= ~DIG6; break; case 6: DIG58_PORT &= ~DIG7; break; case 7: DIG58_PORT &= ~DIG8; break; } //Retardo de 1 seg __delay_cycles(1048576); } } //return 0; }

Videos: Parte 1:

8 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Parte 2:

Archivos: 4Shared, Boxnet. Henry Laredo Q.

9 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Comprtelo:

32768, 4shared, 7, board, boxnet, c, clock, dco, DCOCLK, DCOCLKDIV, DCORSEL, debugger, display, fet430, fll, FLLD, FLLN, FLLREFCLK, FLLREFDIV, frequency, henry, HZ, IAR, interno, laredo, locked, loop, MAINCLOCK, microembebidos, mod, msp430, msp430f5438, oscilador, programmer, REFOCLK, segmentos, SELREF, system, tutorial, ucs, UCSCTL, unified, video, vivo, youtube

Deja un comentario

Recientes
Tutorial MSP430 en vivo Pantalla TFT de 2.8 con driver LGDP4535 Parte 2 Tutorial MSP430 en vivo Pantalla TFT de 2.8 con driver LGDP4535 Parte 1 Tutorial ANSI C para Microcontroladores Operadores Tutorial ANSI C para Microcontroladores Declaracion de Variables Tutorial ANSI C para Microcontroladores Tipos de Constantes

Archivos
julio 2013 junio 2013 mayo 2013 abril 2013

Categorias
ANSI C INDICES LPC1768 MSP430 MSP430 EN VIVO NOTICIAS PIC18F EN VIVO RTOS TUTORIALES

10 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Etiquetas
18f4550

block blueboard Boot Bootloader

c c18

code

Cortex hardware

henry IAR III instruments interrupcion

lenguaje LPC1768 M3 microchip microcontrolador microembebidos msp430 msp430f2132 NXP pdfsusb proteus real RTOS simulacion software system teoria texas time tutorial uC/OS USB usci video youtube
Keil kernel
LCD

laredo

led

Meta
Acceder RSS de las entradas RSS de los comentarios WordPress.org

Suscrbete por email


Introduce tu correo electrnico para suscribirte a este blog y recibir notificaciones de nuevas entradas. nete a otros 14 suscriptores

Recientes
Tutorial MSP430 en vivo Pantalla TFT de 2.8 con driver LGDP4535 Parte 2 Tutorial MSP430 en vivo Pantalla TFT de 2.8 con driver LGDP4535 Parte 1 Tutorial ANSI C para Microcontroladores Operadores Tutorial ANSI C para Microcontroladores Declaracion de Variables Tutorial ANSI C para Microcontroladores Tipos de Constantes

Etiquetas
18f4550

block blueboard Boot Bootloader

c c18

code

Cortex hardware

henry IAR III instruments interrupcion

lenguaje LPC1768 M3 microchip microcontrolador microembebidos msp430 msp430f2132 NXP pdfsusb proteus real RTOS simulacion software system teoria texas time tutorial uC/OS USB usci video youtube
Keil kernel
LCD

laredo

led

Contacto
Escribeme al correo: henry.laredo@microembebidos.com

11 de 12

08/08/2013 06:37 p.m.

Tutorial MSP430 en vivo Unified Clock System FLL con Display 7 Se...

http://microembebidos.com/2013/05/22/tutorial-msp430-en-vivo-unified-...

Bienvenidos al mundo de los microcontroladores y sistemas embebidos. MicroEmbebidos la Web. Powered by WordPress | Theme Designed by: http://fthemes.com | Thanks to WordPress4Themes.com, Magazine WordPress Themes and

12 de 12

08/08/2013 06:37 p.m.

Potrebbero piacerti anche