Está en la página 1de 13

INSTITUTO TECNOLGICO

DE LEN





















Ingeniera Electrnica
Noveno Semestre


Microcontroladores y Microprocesadores



Practica III.

Circuitos secuenciales y temporizados controlados por
medio de comunicacin serial.
(Efecto ruleta).






Elaboro:
Aldape Negrete Juan Daniel.
Medina Muoz Samantha.
Plascencia Cruz Luis Emmanuel.
Puente Murgua Luis Felipe.



Asesoro:
Ing. Casillas Araiza Miguel ngel.




Len Gto. A 9 de Octubre de 2013

.
20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 2



2012 Instituto Tecnolgico de Len.

Prctica III.
Circuitos temporizados y secuenciales controlados por medio de
comunicacin serial.
(Efecto de ruleta).

Objetivo.
Efectuar la comunicacin serial del microprocesador LaunchPad va su mdulo SCI (Serial Communication Interface)
con Serial Monitor en la PC.

Objetivos Especficos.
1. Identificar y configurar el mdulo de comunicacin serial asncrono; bajo los parmetros siguientes: Baud Rate 9600, 8
Bits de datos, 1 Bit d parada, No paridad.
2. Combinar prctica previa de encendido secuencial de leds con la con la comunicacin con la PC.
3. Sincronizar va el teclado con el giro de la ruleta efectuada en la prctica #2. Iniciar la secuencia de giro y cambio de
velocidad de giro (con la tecla V o v con 5 niveles de velocidades)
4. Implementar un juego con la ruleta que permita capturar el giro, mediante el empleo de la letra c o C cuando pase
por un led de diferente color en la ruleta.

Material y Equipo.
1. Tarjeta de microprocesador LaunchPad.
2. 15 LEDs y uno de diferente color (cualquier color.)
3. 16 Resistencias 470 [ohms]
4. Osciloscopio.
5. Cable USB-Serial.

Desarrollo .
1. Realizar la investigacin documental para identificar el mdulo de comunicacin serial asncrona (SCI).
2. Instalar Serial Monitor
3. Configurar la comunicacin serial con el objetivo especfico 1
4. Implementar un programa que permita la comunicacin serial para la recepcin por poleo de los caracteres que se
tecleen en la computadora desde la Hiper-terminal / Serial Monitor.
5. El programa deber iniciar la secuencia de movimiento con la tecla v o V.
6. El programa deber incrementar hasta 5 velocidades conforme se teclee la tecla v o V repetidamente y regresar
cclicamente a la velocidad menor (arriba de cero).
7. El programa deber permitir capturar el giro cuando ste pase por el Led de otro color.
3 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.

Desarrollo de la prctica.
Retomando lo realizado en la prctica numero 2, en donde se peda realizar el encendido secuencial de 16 de leds de tal manera que
se apreciara visualmente el efecto ruleta, para describirlo de una manera breve, el efecto ruleta consiste en que el encendido de los
leds comience por el que se seleccione como primer led de encendido para seguir con el segundo y as sucesivamente hasta llegar
al que se denomina como ultimo led de encendido para regresar al primero. Para el desarrollo de esta practica se agregara el control
a travs de la comunicacin serial (serial monitor) que permitir manipular la velocidad del efecto ruleta y a su vez capturar un led
(seleccionado previamente) para capturarlo y que en ese momento el efecto ruleta se congele por un momento y si no es capturado
en el momento preciso el efecto deber continuar. Para realizar lo anterior desde el teclado de la PC se manada la letra v para
manipular la velocidad del efecto, la letra c para captura el led deseado.

Figura 1. Conexin de leds para el efecto ruleta.
Basndonos en la figura 1 que muestra la conexin de los led para obtener el efecto ruleta donde se puede observar que cada uno
de los nodos del led estn a la salida del Microcontrolador y que todos los ctodos de los leds estn comnmente conectados a
tierra.
Teniendo en cuanta la imagen anterior se procede a generar un programa que sea capaz de efectuar el efecto ruleta requerido para
esta prctica. Utilizando el software codecomposer estudio v5, que es el adecuado para utilizar este Microcontrolador que es el
MSP430g2553 de la familia valu line de Texas instruments. Se crea un proyecto especificando el numero del micro que vas a
utilizar como anteriormente se menciono en este caso ser el MSP430g2553. A continuacin se muestran una serie de imgenes
que muestran los pasos para generar el proyecto en codecomposer.

Paso1. Abril el codecomposer estudio.
Paso 2. Seleccionar la opcin File, seleccionar NUEVO CCS Project.
Paso 3. Adicionar el nombre de nuestro proyecto en este caso lo llamaremos p3_ruleta-SCI.
Paso 4. Seleccionar la familia de Microcontroladores (MSP430).
Paso 5. Seleccionar especficamente el numero del Microcontrolador a utilizar (MSP430g2553).
Paso 6. Seleccionar la opcin empty Project with main.c.
Paso 7 Dar click en el botn finalizar para generar el proyecto.
Paso 8. Generar nuestro cdigo.


20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 4



2012 Instituto Tecnolgico de Len.



Figura 2. Paso 1 y 2 de generacin de proyecto.


Figura 3. Pasos: 3, 4, 5, 6 y 7 para generar proyecto.


5 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.


Una vez que se realizo el proyecto se procede a generar el cdigo que propicie el efecto ruleta, al terminar el proyecto la primera
pantalla nos arroja el archivo main.c en donde es la parte principal del programa ya que sola ah deber de estar las funciones
mandadas llamar y todo el cuerpo de dichas funciones en archivos .c extras esto se debe a los lineamientos establecidos en la
documentacin de los programas.
Como en la prctica anterior se genero el programa que describe el efecto ruleta, a continuacin se retomara con una explicacin
breve de cada parte que lo compone con las adecuaciones necesarias para trabajo con el Microcontrolador MSP430g2553 ya que la
prctica anterior se trabajo con el Microcontrolador MC9XDP512 de Freescale.
Teniendo en cuanta la figura 4 que describe los pines que posee el Microcontrolador MSP430g2553 nos basaremos para
seleccionar los pines y los puertos que los contienen para la salida que se conectaran al matriz de leds mostrada en la figura 1.


Figura 4. Pines del Microcontrolador MSP430g2553.
Como se puede apreciar el puerto 1 y 2 de la tarjeta cuentan con 8 pines de salida cada uno lo que se ajusta perfecto a las
necesidades de la prctica sin, embargo se debe de tener en cuenta que dichos pines algunos poseen ms de una funcin por lo que
es necesario definir la prioridad de la funcin con la que el pin se activara. Por ejemplo el pin p1_0 y el pin p1_1 son los
encargados de la comunicacin serial cosa que se debe de tener en cuenta para la generacin de nuestro cdigo.
El primer paso de generacin de cdigo para el efecto ruleta es habilitar los puertos 1 y 2 como salida, para realizar este proceso se
genera un archivo .c(source file) llamado en este caso muy especifico habilitacin_puertos , cuyo cdigo se muestra en la
siguiente figura con su respectiva descripcin.
En este archivo habilitacin_puertos se habilitan los puertos 1 y 2 del Microcontrolador a su vez los puertos 1 y 2 se acti van
como salidas. por otro lado este archivo tambin contiene la instruccin de detener el llamado perro guardia del Microcontrolador
que impide que el Microcontrolador se resetie de forma automtica y genere problemas. Todo esto contenido en una funcin
llamada Port_out que en futuro se mandara llamar en el archivo main.c.


20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 6



2012 Instituto Tecnolgico de Len.













Figura 5. Habilitacin_puertos.c

Como se puede observar en la parte superior del archivo se contienen dos archivos .h (header file) que son los
llamados prototipos de la funcin pero se describirn a detalle ms adelante. La instruccin PxDIR habilita los puertos
mientras que la instruccin PxOUT los habilita como salidas.
una vez habilitados los puertos 1 y 2 se procede a generar un archivo .h que en este caso se le nombro
prototipo_ruleta.h que se denomina el prototipo de la funcin que contiene declaradas todas las funciones que no
estn en el main y tambin se declara las constantes o variables utilizadas en el cdigo.

figura











Figura 6. Prototipo.h
#include <msp430g2553.h>
#include "Prototipo.h"

// Habilitacion de puertos //


void Port_out(void)

{

WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xFF; // Habilitacion de puerto 1 // // 0 entrada 1 salida //
P2DIR = 0xFF; // habilitacion de puerto 2 //

P1OUT = 0x00; // puertos 1 y 2 salidas //
P2OUT = 0x00;
}
#ifndef PROTOTIPO_H_
#define PROTOTIPO_H_

// COSNTANTES //

unsigned int i;
unsigned int espera = 5000;
unsigned int a = 0x01;
unsigned char b = 0x0;
unsigned char c = 0x00;
unsigned char d = 0x00;
unsigned char bandera = 0x00;
char LETRA;

// FUNCIONES //

void Port_out(void);
void SCI(void);
void Efecto_p1(void);
void Efecto_p2(void);
void delay(unsigned int tiempo);
void Efecto_ruleta(void);


#endif /* PROTOTIPO_H_ */
7 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.

En la figura 5 se muestra el prototipo de la funcin y como se menciono contiene las funciones y variables que se declaran en los
archivos .c del proyecto y que a su vez es te archivo .h se incluir en el archivo principal main.c. Como se puede ver la funcin
Port_out descrita en la figura 5 se incluye en el archivo .h descrito por la figura. Esa es la manera que se manejara cada funcin que
se declare. Por otro lado el archivo msp430g2553.h es el que contiene la sintaxis de los puertos y palabras reservadas del
Microcontrolador en especfico por lo que tambin se incluye en cada archivo.c que se crea.
Hecho lo anterior se crea un source file que genere el efecto ruleta como tal esto se describe en la figura 7.










fii












Figura 7. Efecto_p1p2.c
#include <msp430g2553.h>
#include "Prototipo.h"

// Rutina de dezplazamiento puerto 1 //

void Efecto_p1(void){

P1OUT = a; // puerto 1 = 00000001 //
P2OUT = 0; // puerto 2 apagado //

if(a==256)
{
bandera = 1;
c= 1;

}

else
{
a = a<<1;
}

}

// Rutina de dezplazamiento puerto 2 //

void Efecto_p2(void){

P1OUT = 0; // puerto 1 apagado //
P2OUT = c; // puerto 2 = 00000001 //

if(c==32)
{
a = 1;
c = 0;
bandera = 0;
}

else
{
a = a<<1;
c = c<<1;
}
}

20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 8



2012 Instituto Tecnolgico de Len.

El archivo Efecto_p1p2.c contiene dos funciones llamadas Efecto_p1 y Efecto_p2 que a su vez estn declaras en header file de la
figura 6, como se menciono anteriormente que se realizara.
La funcin Efecto_p1 se inicializa con el puerto uno igualado a la variable a, que el header file se iguala a su vez a 0x01 en
hexadecimal que es igual a 00000001 en binario, esto quiere decir que ese sera el buzz de salida del puerto 1 al iniciar la rutina. El
puerto 2 como se puede ver se iguala a 0 que es lo mismo que tenerlo apagado. Al pasar esto se entra a una condicin de que si es
puerto 1 es igual a 256 en decimal que equivale a 10000000 en binario, otra variable llamada bandera de va a uno y la variable c se
iguala a 1, si no se indica el corrimiento de bits hacia la izquierda del puerto uno. La variable c y bandera estn declaras en el
header file inicializadas en o como una variable tipo char. (Figura 6).
La funcin Efecto_p2 tambin inicializa los puertos 1 como apagado y el 2 como encendido igualndolo a la variable c que es
igual a 0x01 en hexadecimal y en binario 00000001. Como se menciono el puerto 2 solo llega la combinacin 0x20 que en
hexadecimal equivale 1000000 por la inactividad de los 2 ltimos pines del puerto 2. Si esta condicin se cumple de que el puerto
2 sea igual a 0x20 se apaga el puerto 2 y se enciende nuevamente el puerto 1, la variable bandera se va a 0. Si no se aplican los
corrimientos a la izquierda de ambos puertos.
Como se ha mencionado la variable bandera en el caso anterior se va a 1 para despus volver a 0 en la figura 8 se describe este
funcionamiento que a fin de cuenta da como resultado el efecto de la ruleta que es el que se declara en el archivo main.c.
















Figura 8. Efecto_total.c

Nuevamente la funcin Efecto_ruleta esta declara en el header file, que a su vez tambin esta declara en el main.c que se
describir en un futuro. La funcin es inicializada que una condicin que consiste en que si la variable bandera es 0, la funcin
Efecto_p1 entra en juego, si no Efecto_p2 es el que se inicializa. Ambas funciones descritas en la figura 7. Todo esto en
conjunto es lo que propicia el efecto ruleta. Sin embargo vemos en la figura 8 la incursin de una nueva variable llamada delay
esta variable es la encargada de generar un retardo de efecto para que sea visiblemente captado, ya que la frecuencia natural del
Microcontrolador es imperceptible para el ojo humano. Todo descrito en la figura 9.






#include <msp430g2553.h>
#include "Prototipo.h"


// efecto de ruleta total //


void Efecto_ruleta(void)

{

if(bandera==0)
{
Efecto_p1();
}

if(bandera==1)
{
Efecto_p2();
}

delay(espera);
}
9 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.










Figura 9. retardo.c
La funcin delay es una funcin de tipo entera sin signo, en donde entran dos variables i y time que son las encargadas de
generar el retraso para la visualizacin del efecto, ya que vernos que esta variable delay se le asigna un valor.
Por ltimo se adicionan las funciones de Port_out y Efecto_ruleta al archivo principal main.c, que se describe en la figura
10.












Figura 10. main.c.

La figura 10 muestra a la parte principal de nuestro cdigo, los caracteres en ver indican los comentarios, por lo que la parte inicial
de archivo pertenece a la documentacin del programa. El main.c contiene la habilitacin de los puertos y dentro del ciclo for
infinito el efecto de la ruleta que es el que nos interesa.
En la figura se puede apreciar la incursin de la funcin SCI, que corresponde al modulo de la comunicacin serial, que es la clave
o el punto principal de desarrollo.






#include <msp430g2553.h>
#include "Prototipo.h"


// Rutina de retardo //


void delay(unsigned int tiempo)

{

for(i=0; i<tiempo; i++);
}


#include <msp430g2553.h>
#include "Prototipo.h"

void main(void)
{
Port_out(); // habilitacion de puertos //
SCI(); // configuracion de la comunicacion serial UART //
__bis_SR_register(GIE); // Enter LPM3, interrupts enabled

for (;;)

{

Efecto_ruleta();
}

}

20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 10



2012 Instituto Tecnolgico de Len.

A continuacin se decribira el modulo SCI de la comunicacin serial de nuestro proyecto.












Figura 10. modulo SCI

La seccin de cdigo mostrada en la figura 10 pertenece al modulo serial para este Microcontrolador, para describirlo nos basamos
en el manual User Guide (MSP430gx2xx). Los parmetros (BCSCTL1 = CALBC1_1MHZ), permite seleccionar la frecuencia del
reloj del sistema interno del micrcontrolador que en este caso equivale a 1MHz., EL CALB1 equivale a la calibracin del DCO
(paginas 595-600) y (288-290).
El parmetro P1SEL y P2SEL equivalen a una especie de mascara que permite seleccionar la funcin del pin seleccionado, ya que
se menciono que algunos pines o la mayora de ellos que posee la tarjeta tiene varias funciones y con PxSEL es posible decirle al
micrcontrolador como seleccionar dicha funcin. Este parmetro se describe a continuacin.


Tabla 1. Seleccin de la funcin del pin (PxSEL).

Como podemos observar la seleccin de la funcin secundaria de los pines 0 y 1 del puerto uno se tienes que mandar a 1 ambas
para que en este caso esos pines funciones como RX y TX del modulo (UART), con esto garantizamos que cuando el cdigo entre
a esta parte, la funcin de trasmisin y recepcin del modulo se habilitara.(pgs. 337).

El parametro UCA0CTL1 es un registro del modulo USCI, es un registro tanto de lectura como de escritura, y equivale a
USCO_A0 registro de control =1; al igualarlo a UCSSEL_2 tenemos que equivale a la seleccin del reloj interno que en este caso
equivale a SMCKL como lo muestra el cdigo, (pgs 439,441).
UCA0BR0 y UCA0BR1 son registros de control del baud rate (pgs. 439), El UCA0BR0 es igualado a 104 para la generacin del
Baud Rate a 9600 debido a la siguiente frmula:
#include <msp430g2553.h>
#include "Prototipo.h"

// Configuramos el SCI //

void SCI(void)
{
BCSCTL1 = CALBC1_1MHZ; //Set DCO to 1MHz
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2; //Set P1.1 and P1.2 to RX to TX
P1SEL2 = BIT1 + BIT2;
UCA0CTL1 |= UCSSEL_2; //SMCLK
UCA0BR0 = 104; //9600
UCA0BR1 = 0; //9600
UCA0MCTL = UCBRS_1; //Modulation
UCA0CTL1 &= ~UCSWRST; //Start USCI
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
}



11 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.




De esta manera es generado el Baud Rate deseado sabiendo que la frecuencia de reloj esta a 1MHz.(pgs. 495).
Por ltimo el parmetro UCSWRST es el encargado de inicializar la comunicacin serial y teniendo en cuanta lo mostrado en la
pgina 424 del manual se establece en 1 para inicializar la comunicacin serial.
Por ltimo la figura 11 nos muestra el cdigo necesario para la transmisin de datos desde la PC al Microcontrolador y asi
manipularlo en cuanto a su velocidad y captura de un bit en especfico.

























Figura 11. Trasnmicin y recepcin de datos USCI .

Como se puede observar la comunicacin serial en este caso se da a travs de interrupciones es decir que el Microcontrolador
cuando detecta una interrupcin deja de hacer lo que hace inicialmente para atender la interrupcin, para esta prctica la
interrupcin se dara al enviar una V , v y c para manipular la velocidad del efecto y la captura del led seleccionado.
La figura 12 muestra la pantalla del serial monitor que es utilizado para esta prctica que es a travs de Energa especializado en
este tipo de Microcontroladores.
// USCI A0/B0 Transmit ISR //
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void){
UCA0TXBUF = LETRA; // TX next character
IE2 &= ~UCA0TXIE; // Disable USCI_A0 TX interrupt
}
// USCI A0/B0 Receive ISR //
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
LETRA = UCA0RXBUF;

if( ((LETRA=='c')||(LETRA=='C')) ){

if(a==2){
for(d=0;d<=8;d++){
delay(60000);
}
}
}
if( (LETRA=='v')||(LETRA=='V') )
{
b++;
if(b<=5){
espera = espera+10000;
}
if((b>5)&&(b<=10)){
espera = espera-10000;
}
if(b>10){
b= 0;
espera = 5000;
}
delay(2500);
}
IE2 |= UCA0TXIE; // Enable USCI_A0 TX interrupt
}

20 de Marzo de 2013/Prctica / Microcontroladores y Microprocesadores. 12



2012 Instituto Tecnolgico de Len.

Cuestionario.

1. Qu es le comunicacin serial asncrona?
R=Cuando se opera en modo asncrono no existe una lnea de reloj comn que establezca la duracin de un bit y el carcter
puede ser enviado en cualquier momento. Esto conlleva que cada dispositivo tiene su propio reloj y que previamente se ha
acordado que ambos dispositivos transmitirn datos a la misma velocidad. No obstante, en un sistema digital, un reloj es
normalmente utilizado para sincronizar la transferencia de datos entre las diferentes partes del sistema. El reloj definir el inicio
y fin de cada unidad de informacin as como la velocidad de transmisin. Si no existe reloj comn, algn modo debe ser utilizado
para sincronizar el mensaje. En realidad, la frecuencia con que el reloj muestrea la lnea de comunicacin es mucho mayor que la
cadencia con que llegan los datos. Por ejemplo, si los datos estn llegando a una cadencia de 2400 bps, el reloj examinar la
lnea unas 19200 veces por segundo, es decir, ocho veces la cadencia binaria. La gran rapidez con que el reloj muestrea la lnea,
permite al dispositivo receptor detectar una transmisin de 1 a 0 o de 0 a 1 muy rpidamente, y mantener as la mejor
sincronizacin entre los dispositivos emisor y receptor. El tiempo por bit en una lnea en que se transfiere la informacin a 2400
bps es de unos 416 microsegundos (1 seg/2400). Una frecuencia de muestreo de 2400 veces por segundo nos permitir muestrear
el principio o el final del bit. En ambos casos detectaremos el bit, sin embargo, no es extrao que la seal cambie ligeramente, y
permanezca la lnea con una duracin un poco ms larga o ms corta de lo normal. Por todo ello, una frecuencia de muestreo
lenta no sera capaz de detectar el cambio de estado de la seal a su debido tiempo, y esto dara lugar a que la estacin terminal
no recibiera los bits correctamente.
2. Qu parmetros son importantes definir este tipo de comunicacin en el transmisor y receptor?
1. La velocidad de comunicacin tiene que ser la misma para ambos dispositivos , expresada en Baudios (bits/seg).
2. Cuantos bits de datos se van a enviar/recibir: 5, 6, 7, 8, 9.
3. Qu bit de dato se enva/recibe en primer lugar: LSB, es decir el de menor peso.
4. Qu paridad se utiliza en la comunicacin: PAR, IMPAR, NO, etc.
5. Cuntos bits de STOP se van a enviar/recibir: 1, 1'5, 2.
3. Qu es el mdulo del Timer?.
R= Es un contador temporizado de 16 bits para este tipo de Microcontroladores (MSP430g2553), este modulo es el encargado de
definir la frecuencia de reloj a la que opera el micrcontrolador, tambin es posible utilizarlo para que en cierto lapso de tiempo
lance las interrupciones del programa y las tome el Microcontrolador.
4. Qu otro tipo de juego puede desarrollar empleando los elementos usados en esta prctica?.
R= pues tal vez sera que a travs del serial monitor elijas que led que enciende en base a su posicin, o que al azar el serial
monitor elije que led debes capturar.

Conclusiones.
La comunicacin serial es una herramienta que sirve para conocer mediante un monitor lo que esta haciendo exactamente el cdigo
que este en prueba, para el desarrollo de esta prctica gracias a la comunicacin serial pudimos observar la variacin en la
velocidad del efecto y la captura de un bit que se selecciono previamente. Por otro lado es posible intercomunicar objetos como en
este caso el teclado de una PC directamente con el funcionamiento del circuito propuesto a travs de presionar una opcin del
teclado de la PC para propiciar un cambio en el efecto. Con este tipo de herramientas es posible manipular procesos a distancia y
de una manera muy sencilla, gracias ala comunicacin serial asncrona donde el transmisor y el receptor deben de estar a la misma
velocidad de transmicin y solo se necesita una solo lnea de transmisin y un timer que genera la transmicin y la recepcin por
pulsos de reloj.
13 Microcontroladores y Microprocesadores/ Prctica 1II/ 20 de marzo de 2013.

2012 Instituto Tecnolgico de Len.


Bibliografa.
1. Boylestad Robert, Electrnica teora de circuitos, cap. Circuitos osciladores, pgs.934-955. Editorial pearson, decima
edicin.
2. Texas Instruments, Users Guide (MSP430x2xx), Literature Number: SLAU144I, December 2004Revised January 2012.

También podría gustarte