Sie sind auf Seite 1von 39

Curso de Programacin de Microcontroladores MSP430 de 16 bits de TI en Lenguaje C.

Versin 1.7 Noviembre 2010 syhaconsulting@gmail.com Tel: 01 (55) 5398 6056

Contenido
Captulo 1. Introduccin 1.1 Acerca del manual. 1.2 Que aplicaciones podemos realizar con estos dispositivos? 1.3 Arquitectura 1.4 ALU 1.5 Registros de trabajo. 1.6 Caractersticas del microcontrolador MSP430-F2013. 1.7 Empleo de la IDE IAR Embedded Workbench. 1.8 Modo de empleo del kit de desarrollo eZ430-F2013 1.9 Operaciones binarias I/O digitales. 2.1 Configuracin de pines de I/O . Interrupciones. 3.1 Configuracin de registros de interrupcin I/O. Timer A. 4.1 Configuracin de registros del Timer A. 4.2 Interrupciones asociadas a TimerA. 4.3 Modos de operacin 4.4 Timer A Capture Compare Register 0 SD16 (Convertidor Analgico Digital Sigma Delta) 5.1 Configuracin de registros de SD16. 5.2 Formato de salida de datos 5.3 Modos de conversin 5.4 Uso del sensor de temperatura. 5.5 Manejo de Interrupciones. Comunicacin Serie 6.1 Configuracin de registros USART 6.2 Norma RS232 PWM 7.1 Consideraciones generales. 7.2 Configuracin de registros. Modos de ahorro de energa. 3 3 4 5 6 6 8 9 13 16 17 17 20 20 23 23 23 24 24 28 28 29 30 31 32 35 35 35 38 38 38 41

Captulo 2.

Captulo 3.

Captulo 4.

Captulo 5.

Captulo 6.

Captulo 7.

Apndice .

Capitulo 1.

Introduccin.
Con sus ms de 75 aos en el mercado, y desde sus orgenes en los campos petroleros en Texas, Estados Unidos, Texas Instuments se ha consolidado como una compaa lder en el mercado de la electrnica. Entre las personas que han contribuido a este esfuerzo, se encuentran premios Nobel (Jack Killby), incluyendo invenciones tales como los primeros transistores elaborados a base de silicn, los primeros circuitos integrados y las calculadoras de bolsillo. TI lindera actualmente los DSP (digital Signal Processing) y tecnologa analgica, inalmbrica, sistemas de audio.

Figura 1. Texas Instruments a travs del tiempo

Los microcontroladores MSP430 de Texas Instruments son dispositivos de 16 bits, con espacio de direccionamiento compartida por el procesador, memoria y perifricos. Esta familia de microcontroladores incluye una amplia variedad de chips que oscilan desde 20-pin packages con un 1K en ROM y 128 bytes en RAM( con un costo inferior a $1 USD) hasta 100-pin packages con 60K en ROM y 2K en RAM (hasta $100. USD). Una de las caractersticas ms importantes de estos dispositivos es su bajo consumo de energa. Por ejemplo, en una aplicacin como waterimetros, mediante una sola batera puede llegar operar durante 10 aos de forma continua. Su programacin puede realizarse en lenguaje ensamblador y lenguaje C/C++. En este curso emplearemos el Lenguaje C, ya que debido a su versatilidad (compatibilidad, portabilidad y robustez) su programacin es rpida y sencilla, nos concentraremos en el desarrollo del algoritmo.

1.1 Acerca de este manual.


A lo largo del manual observar que se hace mencin del microcontrolador como Controlador, para indicarlo de una forma ms abreviada.

4 Este manual es una recopilacin de documentacin proporcionada por Texas Instruments Corp. y que SyhaConsulting distribuye en este curso.

1.2 Que aplicaciones podemos realizar con estos dispositivos?


Como cualquier otro microcontrolador, el MSP430 puede realizar tareas de medicin y control, sin embargo su caracterstica principal se basa en aplicaciones de bajo consumo de energa. Equipos de instrumentacin y de medicin par la medicina (alcoholmetros, analizador de gas, medicin de humedad, temperatura, medidores de presin en la sangre y de glucosa, etc.) Equipos de medicin. (waterimetros, medidores de gas y electricidad) Equipos para deportes. (altmetros, Relojes a prueba de agua, computadoras para bicicletas). Seguridad (sensores para rupturas en vidrio, control de puertas automticas, detectores de gas/fuego/humo, etc.). Domtica (aire acondicionado, termostastatos, lnea blanca)

Miscelneos (taxmetros, lectores de smart cards, medicin en bateras)

Para la distincin de las caractersticas de cada microcontrolador:

1.3 Arquitectura.
Los controladores MSP430 emplean una arquitectura RISC de 16 bits, capaz de procesar instrucciones de bytes o words. La CPU consiste en : 3 stage instructtion pipeline. Instruction decoding. ALU de 16 bits. 4 registros dedicados. 12 registros de propsito general.

5 Toda la memoria esta contenida en un espacio contino de direccionamiento: RAM, ROM, funciones de registro especiales, registros de perifricos. Estas caractersticas le permite al desarrollador mayor flexibilidad y mejor administracin de la memoria. El siguiente diagrama ilustra las caractersticas antes mencionadas.

Figura 2. Arquitectura del CPU controlador MSP430.

1.4 ALU.
Esta seccin de la CPU realiza operaciones de adicin, sustraccin, comparacin operaciones lgicas (AND, OR y XOR), estas operaciones pueden afectar las banderas de overflow, zero, negative y de acarreo.

1.5 Registros de trabajo.


Se tienen 16 registros de trabajo, los cuales se distribuyen de la siguiente forma:

6 Item 1 Registro R0 - Program Counter (PC) Descripcin Es un registro de 20 bits que apunta a la siguiente instruccin a ser ejecutada. Cada instruccin emplea cierta cantidad de bytes (2,4,6 u 8), y el PC se incrementa de acuerdo a la cantidad de bytes.

R1 Stack Pointer (SP)

Este registro de 20 bits es empleado por la CPU para almacenar la direccin de retorno en la llamada a una subrutina o una interrupcin.

R2 Status Register (SR)

Registro de 16 bits, indica si la operacin que se realiz dio como resultado de acarreo, sobre flujo, entre otros y se refleja en la activacin de sus bits (banderas)

Bit

Nombre

Descripcin. Se coloca en 1 cuando el resultado de una operacin aritmtica produce un sobreflujo. Se coloca en 1 cuando se apaga el generador DCO, si DCOCLK no es usado por MCLK o SMCLK. Se coloca en 1 cuando se apaga FLL+ loop control. Colocado en 1 cuando el se deshabilita el cristal LFXT1. Colocado en 1 cuando la CPU se apaga. Colocado en 1 cuando se activan la habilitacin para interrupciones. Colocado en 1 cuando el resultado de una operacin previo produjo un valor inferior a 0. Colocado en 1 cuando el resultado de una operacin previo produjo cero Colocado en 1cuando el resultado de una operacin previo produjo un acarreo

Oveflow bit. System Clock Generator 1 System Clock Generator 0 OSC off CPU off General Interruption Enable Negative Bit Zero Bit Carry Bit

SCG1 SCG0 OSCOFF CPUOFF GIE

N Z C

3 4

R3 Constant Generator Register R4 to R15 General Purpose Register.

En lenguaje ASM del MPS430, le permite emplear 24 instrucciones emuladas, de mayor complejidad. Registros de propsito general.
Tabla 1. Registros de trabajo.

1.6 Caractersticas del controlador MSP430-F2013.


La siguiente figura nuestra un diagrama a bloques sobre la arquitectura del controlador que emplearemos, as como el de los perifricos que se poseen.

Figura 3. Arquitectura del controlador MSP430x20x3.

De forma resumida, las caractersticas de este controlador son: 1. MSP430F2013: 2KB + 256B Flash Memory 128B RAM 2. Bajo consumo de voltaje: De 1.8 V a 3.6 V. 3. Consumo ultrabajo de poder: Modo activo: 300A en 1 MHz, a 2.2 V Standby Mode: 0.6 A Off Mode (RAM Retention): 0.1 A 4. Modos de ahorro de energa (Power-Saving Modes).
1

5. Arquitectura de 16-Bit RISC, 62.5 ns de tiempo de ciclos de instruccin. 6. Configuraciones bsicas para el mdulo de reloj : Frecuencias internas superiores a 16 MHz con 4 frecuencias de calibracin de 1% Oscilador interno de bajo consumo LF . Cristal 32-kHz. Fuente digital externa de reloj. 7. Timer_A de 16-Bit con Two Capture/Compare Registers

Para mayor informacin ver ANEXO 1.

8 8. 16-Bit Sigma-Delta A/D Converter With Differential PGA Inputs and Internal Reference . 9. Universal Serial Interface (USI) con soporte de SPI and I2C. 10. Detector Brownout. 11. No necesita de voltaje externo para su programacin. 12. Programmable Code Protection by Security Fuse 13. On-Chip Emulation Logic With Spy-Bi-Wire

Figura 4. Distribucin de pines del controlador MSP430x20x3.

Para la programacin de este dispositivo, durante este curso emplearemos la siguiente relacin de manuales: eZ430-F2013_Development_Tool_User's_Guide_(Rev._B)_slau176b instalacin del kit eZ420-F2013) msp430f2013 (Hoja de datos del los dispositivos MSP430x20xx). MSP430x2xx_Family_User's_Guide_(Rev._D)_slau144d (Manual de usuario sobre el manejo de los registros de los dispositivos MSP430x20xx) (Manual sobre la

1.7 Empleo de la IDE IAR Embedded Workbench.


Primeramente realicemos la instalacin del kit eZ430-F2013, sigamos las instrucciones que se indican en el manual eZ430-F2013_Development_Tool_User's_Guide_(Rev._B)_slau176b.pdf Ahora realicemos un primer programa. Carguemos la IDE IAR Embedded Workbech: Men INICIO Todos los programas IAR System for MSP430 VA IAR Embedded Workbech. IAR Embedded Workbech KickStar

1. Abra el workspace Flashing the LED.eww : Men File Open Workspace C:\ProgramFiles\IAR Systems\Embedded Workbench 4.0\430\FET_examples\Flashing the LED.eww. (Se abrir el workspace correspondinte). 2. De click en la pestaa msp430x2xx (C SpyBiWire), el cual corresponde al programa del eZ430-F2013. 3. Indiquemos el correcto dispositivo a programar en : Men Projects Options General Options Target y seleccione MSP430F2013 de la lista de dispositivos.

9 4. Seleccione la opcin FET Debugger indicar la interfaz por USB 5. Seleccione men Project Setup Connection TI USB FET para

Rebuild All para hacer compilar los archivos.

6. Seleccione men Project Debug para iniciar el C-SPY debugger. C-SPY borrar el contenido actual del dispositivo y cargar la apliacin actual en la memoria Flash del controlador (NOTA: En antes de ejecutar esta instruccin, ya debe estar conectado el kit eZ430-F2013). 7. Seleccione men Debug Go para iniciar la aplicacin, el led empezar a destellar.

8. Para finalizar la sesin de depurado y regresar a la sesin de Workbench, seleccione men Debug Stop Debugging . 9. Para cerrar la aplicacin, seleccione el men File Exit.

Como ver, la aplicacin esta programada en el controlador. Ahora realizaremos un programa desde el inicio (algunos de los pasos que seguiremos ya los realizamos en el programa anterior).

1.7.1 Creacin de un proyecto:


Men INICIO Todos los programas IAR System for MSP430 VA IAR Embedded Workbech. IAR Embedded Workbech KickStar

Seleccionar la primera opcin Create new Project in current workspace.

Figura 5. Seleccione Create new Project in current workspace para iniciar.

Enseguida aparecer la siguiente ventana, seleccione C

main.

10

Figura 6 . En la ventana de Create New Projct , selecciones C

main.

En este punto, el programa le pedir un nombre para el archivo, crea una nueva carpeta donde se almacenarn los archivos.

1.7.2 Configuracin de opciones del proyecto.


Vamos a indicar el tipo de dispositivo a programar, para este paso seleccione men Project Options. De acuerdo a la siguiente ventana, seleccione el tipo de dispositivo a programar: MSP430F2013.

Figura 7. Seleccin del tipo de controlador a programar.

Seleccione la opcin de Debugger y coloque en la pestaa de SetUp FET Debugger.

11

Figura 8. Seleccin del tipo de controlador a programar.

Para finalizar, en la seccin de FET Debugger, realice la seleccin como aparece a continuacin.

Figura 9. Configuracin del FET Debbuger.

Su proyecto ha sido creado, en este punto ya estamos en posicin de aadir cdigo. Tome en cuenta que solo se puede tener un proyecto abierto a la vez. La siguiente pantalla muestra los comandos ms empleados:

12

Figura 10 . Comandos clave para la elaboracin de un proyecto.

1. Make / Debbug. 2. Go. 3. Stop Debbug. 4. Dissassembly. 5. Current Location.

Esta opcin, compila, carga y corre el programa en el dispositivo Ejecuta el programa en el chip Se detiene el proceso de depurado, si desea hacer modificaciones en el cdigo del programa, ustede debe de seleccionar esta opcin. Este es el mapa de memoria del ez430. Indica la instruccin que se esta ejecutando

1.8 Modo de empleo del Kit de desarrollo eZ430-F2013.


El kit eZ430-F2013 de Texas Instruments esta constituido por : El programador/depurador eZ430. Microcontrolador MSP430F2013 CD con documentacin y programas.

Los dos primeros elementos vienen en un encapsulado de plstico; lo que pareciera ser una memoria USB convencional; se trata nada menos que de uno de los programadores ms innovadores en el mundo de la electrnica. 1.8.1 Descripcin de programador/depurador eZ430. Este programador / depurador es combatible con los microcontroladores de la serie MSP430F20xx, como se puede apreciar en la siguiente imagen se muestran cada una de las secciones que lo constituyen. En la tarjeta de prueba removible se encuentra adems del microcontrolador MSP430F2013 un led de montaje superficial, el cual nos permitir probar diferentes programas de forma rpida.

13

Figura 11 . Programador / Depurador eZ430

El encapsulado de plstico es fcilmente removible, para ello emplee un pequeo desarmador plano, para hacer palanca en una de las muescas de dicho encapsulado. Una vez que su programa este listo, deberemos de remover la Tarjeta de pruebas y acceder a cada uno de los pines del microcontrolador; pare ello soldaremos una vaina o header en la zona que se indica como Pines accesibles.

Figura 12 . Como remover el encapsulado de plstico.

Figura 13. Tarjeta de prueba removible lista para emplearse

Figura 14. Un ejemplo de aplicacin del MSP430 con la tarjeta removible.

Notas importantes: Durante la etapa de programacin/ depuracin, usted no necesitar una fuente de alimentacin externa; ya que el dispositivo consume corriente del mismo puerto USB para funcionar. Muchos de los programas de prueba pueden funcionar con el programador conectado al puerto USB, esto lo podemos hacer mediante el led de montaje superficial. Cuando se trate de introducir datos a uno de los pines del microcontrolador MSP430F2013, o hacer aplicaciones ms complicadas, ser necesario remover la tarjeta de de prueba removible y alimentarlo mediante una fuente externa. Recuerde que la alimentacin de este dispositivo es de 1.8 a 3.6 volts. (ver pgina 8).

14 Durante este curso, en cada uno de los programas se indicar que circuitera se necesita realizar; en la cual se asume que el microcontrolador MSP430F2013 recibe una alimentacin de entre 1.8 a 3.6 volts.

1.9 Operaciones binarias.


Las operaciones fundamentales en lgica booleana son NOT, OR y AND. Realicemos un breve repaso a cerca de estas operaciones las cuales emplearemos en la programacin de los perifricos: Supongamos que tenemos las siguientes asignaciones en C:
int A = 0b1101; int B = 0b0101; int C;

Item 1

Operacin C = ~A ;

Resultado C = 0b0010; C = 0b1101 (OR) 0b0101 0b1101 C= 0b1101 (AND) 0b0101 0b0101 C= 0b1101 (XOR) 0b0101 0b1000

Descripcin Operacin lgica NOT. Operacin lgica OR, instruccin empleada para realizar la activacin de bits sin afectar los restantes. Operacin lgica AND, instruccin empleada para realizar la activacin de bits sin afectar los restantes. Operacin lgica XOR, de acuerdo a la naturaleza de esta instruccin el resultado se coloca en 1 cuando los operandos son diferentes. Esta instruccin, es equivalente a C=C|A;

C = A | B;

C = A & B;

C = A ^ B;

( indicar el resultado) 5 C |= A; ( indicar el resultado) 6 C ^= A;

Esta instruccin, es equivalente a C=C^A;

Tabla 2 . Operaciones binarias

NOTAS:

15

Captulo 2.

I/O digitales.
Todo controlador posee perifricos para poder interactuar con el exterior, los dispositivos MSP430 de TI pueden configurarse para que se comporten como de perifricos de entrada o de salida, cada uno de estos perifricos pueden ser accedidos de forma independiente haciendo referencia a los pines del controlador.

2.1 Configuracin de pines de I/O .


Los registros que se emplean para configuracin de las I/O digitales son: Item 1 2 Registros PxIN PxOUT Descripcin del estado del bit Bit = 0 La entrada esta en 0 Bit = 1 La entrada esta en 1 Bit = 0 La salida esta en 0 Bit = 1 La salida esta en 1 Bit = 0 El pin del puerto esta configurado como de entrada Bit = 1 El pin del puerto esta configurado como de salida Bit = 0 Deshabilitacin de las resistencias de pull up / pull down . Bit = 1 Habilitacin de las resistencias de pull up / pull down . Notas Cada bit del puerto PxIN refleja el estado actual en la seal de entrada Adems de enviar datos lgicos en alto o bajo, las resistencias pull up/down estan deshabilitadas Cada pin del puerto PxDIR esta configurado de forma independiente como de entrada o como de salida. Por default los pines de I/O estan configurados como de entrada. Habilitacin / Deshabilitacin de resistencias Pull up / Pull down.

PxDIR

PxREN

Tabla 3. Registros para la configuracin de pines I/O (donde x, corresponde al numero de puerto).

Para poder activar (colocar en 1) o desactivar (colocar en 0) los bits de forma individual o conjunta de los registros, emplearemos los siguientes operadores: Item 1 2 3 4 Operacin OR AND NOT XOR Smbolo | & ~ ^

Tabla 4. Operaciones a nivel de bits

Ejemplo, si deseamos que el pin 7 del puerto 1 (P1.7 ) este configurado como salida, entonces: P1DIR = P1DIR | 0x80. O de forma ms abreviada: P1DIR | = 0x80.

El uso del operador | nos permite que no se modifiquen los pines previamente configurados. Si quisiramos encender un led o bien enviar un 1 lgico en el pin P1.7, sin modificar otros registros: P1DIR | = 0x80.

16 Ahora bien, si deseramos apagar este led, o bien enviar un cero lgico, podemos emplear la siguiente instruccin: P1OUT &= ~0x80;

Note que ~0x80 = 0x7F, que es su complemento Si quisiramos leer el estado de un push button, emplearemos la instruccin PxIN. Para detectar que un push button fue presionado en el pin P1.1, de la siguiente forma: while( ( P1IN & 0x01 )); o if( ( P1IN & 0x01) ); El operador OR exclusivo, permite colocar en 1 o en 0 un bit dependiendo del estado anterior en el que se encontraba: Si despus de ejecutar la siguiente lnea, el pin P1.0 se colocara en 1: P1OUT ^= 0x01; Se ejecutara nuevamente, el pin P1.0 se colocara en 1. Note que podemos emplear notacin hexadecimal o decimal. Analicemos el primer programa que destella el led colocado en el puerto 1 (pin P1.0 ).
#include <msp430x20x3.h>

int main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; for (;;) { volatile unsigned int i; P1OUT ^= 0x01; i = 5000; do i--; while (i != 0); } }

// Stop watchdog timer // Set P1.0 to output direction

// volatile to prevent optimization // Toggle P1.0 using exclusive-OR // SW Delay

Para esta ejercicio no se necesita fuente de alimentacin externa. Una vez que haya compilado y descargado el programa al microcontrolador, el led que se encuentra en la terminal P1.0 destellar a una cierta frecuencia. Conteste lo siguiente: 1. Modifique la lnea del programa:
i = 5000; // SW Delay

A un valor ms grande o ms pequeo. Qu efecto produce?. 2. Qu operacin binaria es la responsable de que se apague y encienda el led?

17 Otra forma para hacer referencia a la activacin de pines es mediante el empleo de las definiciones BIT_X donde X corresponde al nmero de bit. Por ejemplo, si deseramos activar el bit 7 y el bit 0, podramos realizarlo de la siguiente manera
P1DIR = BIT7 + BIT0;

Que equivale a :
P1DIR = 0x81;

Ejercicios.
1. Suponga que se tienen los siguientes valores en los puertos P1 y P2. P1 = 0xF3 y P2 = 0x4D

Que operacin realizara para que el estado en tres pines (P1.7, P2.2 y P2.3) cambie a estado bajo sin afectar a los otros pines? 2. Que operacin realizara para que el estado de los tres pines anteriores cambie a estado alto sin afectar los restantes? 3. Realice un esquema sobre la colocacin de un pushbutton para la lectura de datos. 4. Realice un programa de flujo y de conexiones que cumpla con los siguientes requerimientos. Si el pin P1.2 detecta que un push button ha sido presionado, que se encienda un led colocado en el pin P1.0. (Recuerde que en el pin P1.0 se tiene conectado un led) Si el pin P1.3 detecta que un push button ha sido presionado, que se encienda un led colocado en el pin P1.1.

NOTAS:

18

Captulo 3.

Interrupciones.
Una interrupcin, como su nombre lo indica es una indicacin de paro a una actividad o evento, debido a una actividad de mayor prioridad. Imagine una aplicacin en la que el sistema de seguridad contra incendio, cuando el sistema recibe una seal de alarma debida a la aparicin de fuego, el sistema inmediatamente detendr toda actividad (por ejemplo, apagar un motor de ventilador colocado en el techo) para activar un sistema de agua contra incendio. En los controladores MSP430, las interrupciones se clasifican de la siguiente manera: Interrupciones No mascarables (NMI) Interrupciones Mascarables

Una interrupcin no mascarable, es aquella que puede ocurrir por la transicin de flancos de bajada, falla en el oscilador y violacin al acceso de la memoria flash. Una interrupcin mascarable, es aquella que es causada por perifricos, incluyendo la interrupcin por sobreflujo del watchdog timer. Tanto interrupciones Mascarables como No Mascarables puede ser activada de forma individual y son habilitadas por el bit GIE del Status Register. Cada uno de los pines de los puertos P1 y P2 del controlador MSP430, pueden configurarse como interrupciones externas. Los registros que intervienen en la configuracin de interrupciones para los puertos de I/O son:

3.1 Configuracin de registros de interrupcin I/O.


Item Registros Descripcin del estado del bit Interrupt Flag Bit = 0 No hay interrupciones para atender. Bit = 1 Hay interrupciones para atender Interrupt Enable Bit = 0 interrupcin deshabilitada. Bit = 1 interrupcin habilitada. Interrupt Edge Selected Bit = 0 Transicin de bajo alto Bit = 1 Transicin de alto bajo Notas Indican cuando una interrupcin se ha ejecutado.

PxIFG

Habilitacin de las interrupciones.

PxIE

PxIES

Configuracin de transicin de alto bajo y viceversa.

Tabla 5. Registros para manejo de interrupciones I/O.

El siguiente programa activa la interrupcin del PIN 4 del puerto 1(P1.4), cuando sucede una transicin de alto a bajo, se ejecuta la interrupcin.

19

#include

<msp430x20x3.h>

void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; P1IE |= 0x10; P1IES |= 0x10; P1IFG &= ~0x10; _BIS_SR(LPM4_bits + GIE); while(1); } // Port 1 interrupt service routine #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { P1OUT ^= 0x01; P1IFG &= ~0x10; }

// // // // //

Stop watchdog timer Set P1.0 to output direction P1.4 interrupt enabled P1.4 Hi/lo edge P1.4 IFG cleared

// Enter LPM4 w/interrupt

// P1.0 = toggle // P1.4 IFG cleared

Considere el siguiente diagrama para la conexin para el Pin 4 del puerto 1( P1.4 ), fsicamente el Pin 6 del Controlador. Adicionalmente se muestra el esquema para conectar un led, para el envo de datos. Para evitar efectos de ruido, se recomienda agregar un capacitor de 47 microFaradios por cada Push Button que se conecte.

Figura 16. Diagrama de conexin para una entrada de datos.

Figura 17. Diagrama de conexin para salida de datos

El diagrama resultante para esta prctica es el siguiente, recuerde que para esta prctica, necesitamos de una fuente de alimentacin externa:

20

Figura 18. Diagrama de conexiones.

Ejercicios.
1. Elabore el diagrama de flujo y el diagrama de conexiones que realice los siguientes requerimientos. Cuando un dato 1 lgico sea ledo por el pin P1.4 (mediante un interruptor), se enva la siguiente secuencia de datos por el Puerto 1: 1,2 4,8,1,2,4,8 .. En caso contrario, cuando un dato 0 lgico sea ledo por el pin P1.4, se enva la siguiente secuencia de datos por el Puerto 1: 8,4,2,1,8,4,2,1. 2. Del ejercicio anterior, asigne al pin 1.5 otro interruptor, de tal manera que cuando este se ejecute, se lleva a cabo una interrupcin que enviar la siguiente secuencia de datos por el Puerto 1: 8,4,2,1,8,4,2,1.

NOTAS:

21

Captulo 4.

Timer (Temporizador).
Es muy comn ver aplicaciones donde estn inmersos los sistemas de reloj y de temporizaciones para la ejecucin de ciertas tareas. Tal es el caso de los semforos que tienen cierto retardo para el encendido de las lmparas para el control de flujo de automviles, el control de tiempos para los limpiaparabrisas de un automvil, el control de tiempo para el calentado de alimentos en un horno de microondas, entre otros. En los controladores MSP430, el sistema de timers se divide en: Timer A. Timer B. Watchdog timer.

El Timer B es ms grande y ms verstil que el Timer A, para el caso de controlador MSP430 F2013 tenemos un Timer_A2, el cual es un 16-bit timer/counter con dos registros de capture/compare, salidas de PWM e intervalos de tiempo. Entre los registros principales que intervienen en el control de Timer A son los siguientes:

4.1 Configuracin de registros del Timer A.


Item 1 Registros TACTL Timer_A counter Timer_A capture/compare control 0 Timer_A capture/compare 0 4 TACCR0 Descripcin del estado del bit Timer_A control Notas Definicin de la fuente de reloj, configuracin del divisor, modos de operacin, habilitacin de interrupcin. Registro de 16 bits que lleva a cabo el conteo del Timer A. Configuracin de modo de capture/compare Almacena el dato del conteo del registro TAR en los modos de capture / compare.

2 3

TAR TACCTL0

Tabla 6. Registros para manejo del Timer A.

4.2 Interrupciones asociadas a TimerA.


1.- Interrupcin generada por TimerA Capture/Compare Control 0 (TACCR0) En esta interrupcin se activa el flag CCIFG, automticamente se resetea cuando se ejecuta la interrupcin de TACCR0. En modo captura (capture mode) cualquier bandera CCIFG es activada cuando el valor del timer es capturado en TACCRx. En mode comparacin (compare mode) cualquier bandera CCIFG es activada si el registro TAR cuenta al valor asociado a TACCRx.

22 2.- Interrupcin generada por TimerA interrupt vector (TAIV) En esta interrupcin, las banderas CCIFG de TACCR1, TACCR2 y TAIFG estn asociadas a un nico vector de interrupcin. El registro de vector de interrupcin TAIV, se emplea para determinar el tipo de interrupcin.

4.3 Modos de operacin


Existen cuatro modos de operacin para llevar acabo el conteo, este se configura en los bits MCx del registro TACTL (Timer A Control Register) La descripcin de estos modos de operacin, se muestran a continuacin: Item 1 Modo Stop Descripcin. El contador esta detenido El counter cuenta ascendente desde 0 hasta el valor indicado en TACL0(Timer A Capture Match 0), cuando alcanza este valor, se resetea y se coloca en 0. Si el valor en TACL0 es ms grande que el mximo valor del Timer A counter, el counter se comporta como en modo continuo El counter cuenta ascendente desde 0 hasta el valor mximo del timer (0xFFFF), cuando el counter alcanza el mximo valor este resete y coloca en 0. El counter cuanta ascendente desde 0 hasta el valor indicado en TACL0(Timer A Capture Match 0), y despus desciende hasta 0 . 4 Up/down Si el valor en TACL0 es ms grande que el mximo valor del Timer A counter, el counter se comporta como en modo continuo
Tabla 7. Modos de operacin del Timer A.

Up

Continuous

4.4 Timer A Capture Compare Register 0


Existen dos registros de comparacin en el Timer A, y un solo registro de counter, cada uno de estos registros puede operar el counter de forma independiente. El modulo 0 es el mas importante por que puede controlar el timer con el registro TACL0,adicionalmente posee su propias interrupciones. Para los programas mostrados en esta seccin no se requiere fuente de alimentacin externa. El siguiente programa realiza una temporizacin que se refleja en el encendido y apagado del led del pin P1.0, en una configuracin de modo continuo.
#include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01;

// Stop WDT // P1.0 output

// TACCTL0 /* Timer A Capture/Compare Control 0 */ // Capture/ compare interrupt enable CCTL0 = CCIE; // TACCR0 /* Timer A Capture/Compare 0 */

23
CCR0 = 10000; // Registro de Control Timer_A // TASSEL_2 -> source SMLK // ID_3 -> input divider : 3 // MC_2 -> Continuous Mode (cuenta hasta 0xFFFF) TACTL = TASSEL_2 + ID_3 + MC_2; _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt // equivalente a : // eint(); // enable the global interrupt // LPM0; // Enter low power mode while(1); }

// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P1OUT ^= 0x01; TAR = 0; }

// Toggle P1.0

La interrupcin se ejecuta cuando TAR alcanza el valor indicado en CCR0 (10000), entonces TAR se reinicia en 0. Nota: La linea TAR = 0, puede sustituirse por CCR0 += 10000; ya que se actualiza la referencia, y TAR realizara la misma cantidad de conteos (continuara el conteo por encima de 10000).

NOTAS:

24

Ejercicios.
1.- Modifique la lnea de programa para el registro de control Timer_A para que opere en modo ascendente (Up mode). TACTL = TASSEL_2 + ID_3 + MC_1; Cual es la diferencia? En este modo de operacin, la interrupcin ocurrir cuando TAR alcanza el valor CCR0, y automticamente este registro se colocar en 0, para nuevamente realizar el conteo hasta CCR0. Por tanto la linea TAR = 0 (o CCR0 +=10000) ya no se colocara. El cdigo quedara como sigue:
#include <msp430x20x3.h> int contador; void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01;

// Stop WDT // P1.0 output

// TACCTL0 /* Timer A Capture/Compare Control 0 */ // Capture compare interrupt enable CCTL0 = CCIE; // TACCR0 /* Timer A Capture/Compare 0 */ CCR0 = 10000; // Registro de Control Timer_A // TASSEL_2 -> source SMLK // ID_2 -> input divider : 3 // MC_1 -> Up Mode (cuenta desde 0 hasta CCR0) TACTL = TASSEL_2 + ID_3 + MC_1; _BIS_SR(LPM0_bits + GIE); while(1); } // Enter LPM0 w/ interrupt

// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P1OUT ^= 0x01; }

// Toggle P1.0

2.- Calculo de tiempos para 0.5 segundo. Mediante la siguiente ecuacin se determina el tiempo en el que el Timer se ejecuta en Modo Continuo (MC_2). P1.0 = Overflow (Frecuencia) = 1MHz / (2 x TAR x ID_x ) Donde: TAR es el registro contador del Timer A. ID_x es el divisior Si quisiramos que el encendido y apago del LED sucediera cada 1 segundo, con un ID_3 (igual a 8) sustituimos en la ecuacin:

25 Overflow (Frecuencia) = 1MHz / (2 x TAR x 8 ) Como la frecuencia es el inverso del tiempo: 1/ 0.5seg = 1MHz / (2 x TAR x 8 ) 2 Hz = 1MHz / (2 x TAR x 8 ) Despejamos a TAR. TAR = 1MHz / ( 2 x 2 x 8 ) = 1MHz / 32 = 31,150. El resultado anterior, indica que el registro TAR debe de realizar 31,250 cuentas para desbordarse y dar paso a la interrupcin. Por lo tanto al registro TAR lo debemos de cargar previamente con el siguiente valor: TAR = 65,535 31,150 = 34,385.

26

Captulo 5.

SD16 (Convertidor Analgico Digital Sigma Delta)


Son muy comunes los instrumentos de medicin de seales analgicas que digitalizan estas seales para su posterior procesamiento. Una aplicacin muy comn es el monitoreo y control de temperatura. Un factor considerable cuando se trata de convertidores analgicos a digitales (ADC) es el grado de resolucin que estos poseen, el cual esta definido por la cantidad de bits que lo constituyen. De este modo, un convertidor de 16 bits tendr mayor precisin que uno de 8 bits, ya que en el 8 primer caso obtendramos 216 -1 (65535 )valores diferentes en comparacin a un 2 (255) valores analgicos. Entre las caractersticas ms importantes del Convertidor Analgico Digital del controlador MSP430F2013 se encuentran: 16 bit sigma delta. 8 entradas analgicas multiplexadas Seleccin de voltaje de referencia (1.2 volt) va software. Seleccin de referencia externo/interno va software. Sensor de temperatura integrado. Modulacin de frecuencia de entrada arriba de 1.1 MHz Buffer con alta impedancia de entrada Seleccin de modo de bajo consumo.

5.1 Configuracin de registros de SD16.


Item 1 2 Registros
SD16CTL

Descripcin
SD16_A control

NOTAS
Divisor de reloj, modo de consumo bajo, fuentes de reloj, habilitacin de interrupcin. Seleccin de interrupcin:

SD16IV

SD16_A interrupt vector

- SD16MEMx overflow - SD16_A Interrupt

SD16CCTL0

SD16_A channel 0 control

Habilitacin de buffer de alta impedancia, seleccin de modo unipolar, modos de conversin, oversampling, LSB toogle, banderas de interrupcin por sobreflujo, habilitacin de interrupcin, habilitacin de conversin. En este registro se almacena el resultado de la conversin. Generacin de retardo despus del inicio de conversin, preamplificacin de ganancia, seleccin de canal de entrada diferencial (sensor de temperatura). Habilitacin de entradas externas

SD16MEM0

SD16_A conversin Memory

SD16INCTL0

SD16_A input control

SD16AE

SD16_A analog enable

Tabla 8. Registros para manejo del convertidor AD Sigma/Delta .

27 En el registro SD16MEM0 este registro almacena el resultado de la conversin (por cada paso de decimacin en el filtro digital). El bit SD16IFG se coloca en 1 cuando un nuevo dato es escrito en el registro SD16MEM0

5.2 Formato de salida de datos


Los modos de salida datos en el registro SD16MEM0 son: Complemento a 2. Offset Binario Modo unipolar Se selecciona de acuerdo a la seleccin de los bits SD16DF y SD16UNI (del registro SD16CCTL0).

Tabla 9. Configuracin de formato de salida de datos.

La siguiente imagen ilustra el resultado de la conversin de la entrada de voltaje

Figura 19. Conversin del voltaje de entrada

28

5.3 Modos de conversin


Para la configuracin de los modos de conversin, se habilita un bit SD16SNGL del registro SD16CCTL0 (SD16_A Control Register)

Tabla 10. Seleccin del modo de conversin.

Single Conversion.
Para el inicio de conversin, colocamos en 1 el bit SD16SC del registro SD16CCTL0 (SD16_A Control Register 0), y SD16SNGL = 1. El bit SD16SC se limpiar automticamente una vez que se haya completado la conversin. Es recomendable que el resultado de la conversin almacenado en el registro SD16MEM0 sea leido antes de que el bit SD16SC sea limpiado, ya que pudiera leerse un valor invlido

Continuous Conversion.
Cuando el bit SD16SNGL = 0, la conversin en modo continua es seleccionada e iniciar la conversin cuando el bit de SD16SC sea colocado en 1. El siguiente diagrama ilustra la diferencia de los diferentes modos de conversin :

Figura 20. Modos de conversin Analgico / Digital

29

5.4 Uso del sensor de temperatura.


Para el uso del sensor de temperatura SD16INCHx = 110 and sets SD16REFON = 1. No es posible emplear referencias externas para la conversin del sensor de temperatura. El offset de error del sensor de temperatura puede ser grande, por lo que ha que calibrarlo en la mayora de las aplicaciones.

Figura 21. Sensor de temperatura para el controlador MSP430F2013

Consultando la hoja de datos del MSP430F2013, se emplea la siguiente formula para calcular el voltaje de salida del sensor:

30

5.5 Manejo de Interrupciones.


Las dos fuentes de interrupciones por ADC son:

SD16IFG
SD16_A interruption flag. Se habilita cuando una nueva conversin esta disponible, este registro se resetea cuando el registro SD16MEM0 es leido o limpiado via software. NOTA : Cuando el bit SD16SC = 1 (registro SD16CCTL0), inicia la conversin.

SD16OVIFG
SD16_A overflow interruption flag El bit SD16IFG es colocado en 1, cuando en el registro SD16MEM0 se ha colocado el resultado de la conversin. Un requerimiento de interrupcin es generada, cuando los bits SD16IE y GIE son habilitados. El siguiente programa realiza un conversin Analgico Digital.
#include <msp430x20x3.h>

void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; // Registro de control SD16CTL = SD16REFON + SD16SSEL_1;

// Stop watchdog timer // Set P1.0 to output direction

// 1.2V ref, SMCLK

// Registro de control de entrada SD16INCTL0 = SD16INCH_1; // Registro de control SD16_A SD16CCTL0 = SD16UNI + SD16IE;

// A1+/-

// 256OSR, unipolar, interrupt enable

// Registro de habilitacion de entrada Analogica SD16AE = SD16AE2; // P1.1 A1+, A1- = VSS SD16CCTL0 |= SD16SC; _BIS_SR(LPM0_bits + GIE); while(1); } #pragma vector = SD16_VECTOR __interrupt void SD16ISR(void) { // El resultado de la conversion se coloca en SD16MEM0 if (SD16MEM0 < 0x7FFF) // SD16MEM0 > 0.3V?, clears IFG P1OUT &= ~0x01; else P1OUT |= 0x01; } // Set bit to start conversion

El voltaje de referencia interno que hace mencin el programa anterior es de 1.2 volts., el valor mximo que se puede leer va software es: V FSR (FULL SCALE RANGE) = V REF / 2 = (1.2)/ 2 = 0.6 volts De esta manera, cuando se leen 0.6 volts el registro SD16MEM0 tendra un valor mximo de 0xFFFF o bien 65,535. En la lnea del programa:
if (SD16MEM0 < 0x7FFF) // 0x7FFF = 32,767.

31 Se pregunta si se han leido menos de 0.3 volts. Por todo lo anterior, en el programa cuando se leen menos de 0.3 volts el led que esta en el pin P1.0 permanecer apagado y cuando se lee un valor mayor a este, se encender. El diagrama resultante para esta prctica es el siguiente.

Figura 22. Lectura de ADC

Para el caso del sensor de temperatura, se deber seleccionar en el registro SD16INCTL0 la configuracin correcta (SD16INCTL0 = 0x06). Capture el siguiente programa, en el cual el microcontrolador si detecta que hay ms de 30C, encender el led colocado en el pin P1.0.
#include <msp430x20x3.h> volatile unsigned int temp = 0; void main( void ) { int temperatura; WDTCTL = 0x5A80;

// Stop WDT

//Configure ADC and onboard Temperature Sensor P1DIR |= 0x01; SD16INCTL0 = 0x06; // Fourth input sample causes 1st Interrupt, // Gain = 1, Channel = Temp sensor SD16CTL = 0x00CC; // Clock divider = 8, low power mode is disabled, // SRC = MCLK , VMID Buffer on, Onboard Ref on SD16CCTL0 = 0x100A; //Unipolar, Offset Binary, Enable Interrupts start conv.

_BIS_SR(GIE); // Globally enable interrupts while(1) { // Se realiza la conversion de temperatura temperatura = (int)(100 * ((float)temp/65536)) - 25; // Si la temperatura excede los 30C se enciende el led if(temperatura { P1OUT |= 0x01; } else { P1OUT &= ~0x01; } }// fin de while }// fin de main > 30)

32
// Interrupt Handler for ADC Conversion Complete #pragma vector=SD16_VECTOR __interrupt void SD16ISR(void) { temp = SD16MEM0; // Copy ADC (T_sensor) reading to a global variable }

Note que en la lnea del programa:


temperatura = (int)(100 * ((float)temp/65536)) - 25;

Se realiza la conversin de datos digitales a datos analgicos reales, el valor de 25 corresponde a un offset que pudiese variar para calibrara el sensor de temperatura.

NOTAS:

33

Captulo 6.

Comunicacin Serie.
6.1 Universal Serial Interfase.
Los ucontroladores MSP430, poseen uno o varios mdulos Universal Serial Interface (USI) que a su vez proven del hardware necesario para realizar comunicacin serie bajos los modos SPI e I2C. Entre las caractersticas del mdulo USI se incluyen: Modo UART (Universal Asynchronous Receiver/Transmitter) Modo SPI(Serial Pheriferical Interface). Modo I2C(IC 2 active wires). Modo de transmisin maestro - esclavo. Longitud variable de datos. Programacin de generacin del reloj.

En esta prctica veremos la comunicacin en modo UART, cabe mencionar que el ucontrolador MSP430F2013 no posee el hardware para establecer esta comunicacin, sin embargo es posible implementarlo mediante el uso del TimerA.

6.2 Norma RS-232.


La norma RS-232 es un protocolo de comunicacin serial ya establecido que define la transmisin fsica entre una terminal DTE (Data Terminal Equipment) y un mdem DCE (Data Communication Equipment). Este protocolo define un uno lgico como una seal comprendida en el rango de -5V a -15 V y un cero lgico como una seal dentro del rango +5V a +15V. Bajo esta terminologa, la primera transicin de 1 a 0 lgico, define un bit de inicio (Star bit) a la que le siguen 5, 6, 7 u 8 bits de datos. El octavo bit se puede utilizar como un bit de paridad (mecanismo para deteccin de errores); al final de la transmisin, la seal debe regresar al valor lgico cero; esto se define como el bit de parada (stop bit), que puede configurarse en 1, 1.5 o 2 bits de parada. El conector normalizado para este protocolo es el conector V24 (25 pines); sin embargo, en equipos de cmputo es ms utilizado el conector DB9 de 9 pines (figura 15); los pines de este conector se muestran en la tabla 10.

Figura 23. Conector DB9 para RS232

Tabla 11. Pines de conexin RS232 conector DB9.

34

6.3 Desarrollo
Instrucciones: Arme el siguiente diagrama para establecer la comunicacin entre el ucontrolador MSP40F2013 y la PC (emplearemos la hyperterminal de Windows).

Figura. 24. Circuito para comunicacin serie.

El siguiente programa realiza la transmisin de datos mediante el protocolo RS232, bajo el siguiente formato de datos 2400 bps / 8 bits de datos / Sin paridad / 1 bit de stop.
#define RXD #define TXD // 0x02 0x20 // RXD on P1.1 // TXD on P1.5

Conditions for 2400 Baud SW UART, ACLK = 32768 0x06 0x0E // ~ 0.5 bit length + small adjustment // 427us bit length ~ 2341 baud

#define Bitime_5 #define Bitime

unsigned int RXTXData; unsigned char BitCnt; void TX_Byte (void); void RX_Ready (void); #include <msp430x20x3.h>

void main (void) { WDTCTL = WDTPW + WDTHOLD; CCTL0 = OUT; TACTL = TASSEL_1 + MC_2; P1SEL = TXD + RXD; P1DIR = TXD; // Mainloop for (;;) { RX_Ready(); _BIS_SR(LPM3_bits + GIE); TX_Byte(); } }

// Stop watchdog timer // TXD Idle as Mark // ACLK, continuous mode // //

// UART ready to RX one Byte // Enter LPM3 w/ interr until char RXed // TX Back RXed Byte Received

35
// Function Transmits Character from RXTXData Buffer void TX_Byte (void) { BitCnt = 0xA; while (CCR0 != TAR) CCR0 = TAR; CCR0 += Bitime; RXTXData |= 0x100; RXTXData = RXTXData << 1; CCTL0 = CCIS0 + OUTMOD0 + CCIE; while ( CCTL0 & CCIE ); } // Function Readies UART to Receive Character into RXTXData Buffer void RX_Ready (void) { BitCnt = 0x8; // Load Bit counter CCTL0 = SCS + OUTMOD0 + CM1 + CAP + CCIE; // Sync, Neg Edge, Cap } // Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { CCR0 += Bitime; // TX // // // // // // // // Load Bit counter, 8data + ST/SP Prevent async capture Current state of TA counter Some time till first bit Add mark stop bit to RXTXData Add space start bit TXD = mark = idle Wait for TX completion

// Add Offset to CCR0

if (CCTL0 & CCIS0) // TX on CCI0B? { if ( BitCnt == 0) CCTL0 &= ~ CCIE; // All bits TXed, disable interrupt else { CCTL0 |= OUTMOD2; // TX Space if (RXTXData & 0x01) CCTL0 &= ~ OUTMOD2; // TX Mark RXTXData = RXTXData >> 1; BitCnt --; } } // RX else { if( CCTL0 & CAP ) // Capture mode = start bit edge { CCTL0 &= ~ CAP; // Switch from capture to compare mode CCR0 += Bitime_5; } else { RXTXData = RXTXData >> 1; if (CCTL0 & SCCI) // Get bit waiting in receive latch RXTXData |= 0x80; BitCnt --; // All bits RXed? if ( BitCnt == 0) //>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< { CCTL0 &= ~ CCIE; // All bits RXed, disable interrupt _BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR) } //>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< } } }

NOTAS:

36

Captulo 7.

PWM (Pulse Width Modulation)


La gran mayora de los ucontroladores tienen la capacidad de implementar un convertidor analgico - digital, la operacin inversa para la generacin de voltajes analgicos basados en valores digitales, no esta disponible de forma directa para los ucontroladores MSP430. Sin embargo podemos emplear la funcionalidad del TimerA para emular un convertidor digital analgico. Una de las aplicaciones es el control de dispositivos de potencia. Note que en la generacin de seal de PWM no se genera un nivel analgico, mas bien se genera mediante un switcheo rpido en la seal digital (aplicacin de voltaje on / off muchas veces por segundo en el dispositivo de carga ) En el Timer A, se emplea el Modo de comparacin para la generacin de seales de salida de PWM, existen 8 modos de generacin de seales PWM. Los modos de salida son definidos por los bits OUTMODx (del registro TACCTLx, Capture/Compare Control Register), que se describen en la siguiente tabla:

Tabla 12.

37

7.1 Desarrollo
Instrucciones: Arme el siguiente diagrama el cual controla la velocidad de un motor de CD mediante la PWM emitida por el ucontrolador MSP40F2013. Note que la etapa de control y de potencia se encuentran aisladas mediante un optoacoplador (CI 4N32) y por tanto las fuentes de alimentacin se deben de encontrar aisladas y sus referencias (Tierra) no deben de ser comunes.

( donde +5 v < Vcc < +12 v )


Figura. 25. Circuito para control de velocidad por PMW.

El siguiente programa envia una salida de PWM a travs del pin P1.2 empleando el Timer_A en configuracin Up Mode. El valor en CCR0 (512-1) define el periodo y el valor en CCR1 los ciclos de la seal PWM. Un 75% de los ciclos se colcan en P1.2.
#include <msp430x20x3.h>

void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x0C; P1SEL |= 0x0C; CCR0 = 512; CCTL1 = OUTMOD_7; CCR1 = 384; TACTL = TASSEL_2 + MC_1; _BIS_SR(CPUOFF); }

// // // // // // //

Stop WDT P1.2 and P1.3 output P1.2 and P1.3 TA1/2 options PWM Period CCR1 reset/set CCR1 PWM duty cycle SMCLK, up mode

// Enter LPM0

38 Los bits de los registros P1SEL se emplean para definir la funcionalidad de los pines I/O o de los perifricos asociados. Cuando P1SELx = 1, las interrupciones de los pines de correspodientes se deshabilitan. ( Ver 8.2.5 del manual de operacin MSP430x2xx_Family_User's_Guide_(Rev._D)_slau144d.pdf) La salida OUTx es cambiada cuando el timer cuenta arriba del valor en CCR1 y regresa a CCR0 al valor 0, dependiendo del outputmode.

Figura 18. Salida de formas de onda de Timer_A en configuracin Up Mode.

Ejercicios.
1.- Compile y descargue el programa variando el valor del ciclo del pulso, en la lnea:
CCR1 = 384;

Qu cambios nota en la velocidad del motor en el motor? 2.- Disee un programa y agregue los componentes necesarios al diagrama anterior para que el motor aumente su velocidad, disminuya su velocidad y pare completamente. NOTA : Antes de realizar cualquiera de estas acciones, tome en cuenta que debe de detener al TIMER, por lo que hacer la modificacin correspondiente y posteriormente ejecuta el TIMER, considere la siguiente porcin de cdigo propuesto.
TACTL CCR1 TACTL |= MC_0 // Detiene el timer |= 50; // Incrementa el contenido del CCR1. |= TASSEL_2 + MC_1; //Ejecuta el timer

NOTAS:

39

Apndice Modos de consumo ultrabajo de energa.


La familia de los microcontroladores MSP430 esta diseada para aplicaciones de consumo ultrabajo de energa para ello, emplea diferentes modos de operacin: 1.- Consumo ultrabajo de energa. 2.- Rendimiento en velocidad de operacin. 3.- Reduccin individual de consumo de corriente en perifricos individuales. Para hacer referencia a los modos de ahorro de energa se emplea la sentencia LMP que significa Low - Power Mode. La siguiente figura muestra una grafica que indica el consumo de corriente en diferentes modos de operacin.

SCG1 0 0 0

SCG0 0 0 1

OSCOFF 0 0 0

CPUOFF 0 1 1

MODE Activo LPM0 LPM1

CPU & CLOCKS Estatus


- CPU esta activa, habilitacin de fuentes de reloj activas - CPU , MCLK estan deshabilitados. - SMCLK, ACLK estan activos - CPU , MCLK estan deshabilitados. - DCO y generador DC estan deshabilitados si DCO no es usado por SMCLK. - ACLK esta activo - CPU , MCLK, SMCLK, DCO deshabilitados - Generador DC habilitado. - ACLK esta activo. - CPU , MCLK, SMCLK, DCO y generador DC deshabilitado. - ACLK esta activo. - CPU y todas las fuentes de reloj deshabilitadas.

LPM2

1 1

1 1

0 1

1 1

LPM3 LPM4

Tabla 13 . Modos de ahorro de energa

Recuerde que los bits SCG1, SCG0, OSCOFF Y CPUOFF; corresponden a cuatro de los bits del SR (Status Register ver pag. 6 ), por lo que la activacin de estos modos de ahorro de energa se pueden ejecutar en una sola instruccin. Por ejemplo en la siguiente lnea del programa:
_BIS_SR( LPM4_bits); //Bits Set in Status Register( Activa los bits del modo LMP4 )