Este es el primero de una serie de artículos dedicados al microcontrolador MSP430 de Texas Instrument. Este microcontrolador de 16 bits está especialmente pensado para aplicaciones embebidas en las que el costo y el consumo son elementos fundamentales. En realidad, se trata de toda una familia de microcontroladores en las que, dependiendo del modelo, encontraremos diferentes características y periféricos. ¿Busca un microcontrolador de consumo ultrabajo para optimizar sus aplicaciones de medición portátiles? ¡No busque más, la familia MSP430 de Texas Instruments es lo que necesita! Con múltiples dispositivos que incluyen diversos conjuntos de periféricos diseñados para aplicaciones específicas, la familia MSP430 es una solución potente y eficiente para sus necesidades.
El microordenador de un solo chip de la serie MSP430 es un procesador de señal mixta con un conjunto de instrucciones reducido (RISC). Con una potente CPU RISC de 16 bits, registros de 16 bits y generadores de constantes, está diseñado para ofrecer la máxima eficiencia de código. Además, con cinco modos de bajo consumo y un oscilador controlado digitalmente (DCO), puede lograr una mayor duración de la batería y tiempos de activación rápidos desde los modos de bajo consumo al modo activo en menos de 6 µs. El MSP430 tiene un consumo energético extremadamente bajo gracias a sus características únicas que ayudan a reducir el voltaje del chip y a controlar la frecuencia del reloj. Su rango de suministro de voltaje para el MSP430 es de 1,8 a 3,6 V. El consumo energético ultrabajo es el siguiente: 0,1 μA RAM (modo de espera), 2,5 μA (modo de reloj en tiempo real), 165 μA/MIPS (modo activo), Activación rápida desde el modo de hibernación en menos de 5 μs.
Entendiendo los Puertos del MSP430
Como ya sabemos todo microcontrolador posee periféricos para poder interactuar con el exterior, por su puesto los dispositivos MSP430 de TI también pueden configurarse para que se comporten como periféricos de entrada o de salida. Dependiendo del modelo concreto dispondremos de más o menos puertos de entrada/salida. En el MSP430F5529 disponemos de cuatro bloques de puertos denominados PA, PB, PC y PD. Cada uno de estos bloques dispone de dos puertos de ocho bits cada uno. Los puertos están mapeados en memoria, lo que quiere decir que para gestionarlos hay que acceder a direcciones de memoria específicas para cada uno. Estas direcciones de memoria, por comodidad, tienen asignado un nombre que podremos usar cuando programamos el microcontrolador. La gestión de los puertos se realiza activando y desactivando bits en las direcciones de memoria donde están mapeados.
Registros Clave para la Configuración de Pines de Entrada
Para configurar los pines de entrada/salida en el MSP430, se utilizan varios registros específicos:
- PxDIR: Este registro configura los pines como entradas o salidas, ya sea manipulando el registro completo o bit por bit. Un bit establecido a '0' en el registro PxDIR configura el pin como entrada, mientras que un '1' lo configura como salida.
- PxREN: Si el puerto está configurado como entrada, este registro permite activar o desactivar las resistencias de pull-up/pull-down.
- PxSEL: Selecciona si el puerto funciona como E/S de propósito general o como puerto de propósito específico (según el puerto, podrá tener una función específica concreta).
- PxIES: Los puertos 1 y 2 permiten el uso de interrupciones, gestionando el flanco de la interrupción.
Cuando un pin está configurado como entrada, su valor se lee a través del registro PxIN, donde cada bit representa el estado lógico (alto o bajo) del pin correspondiente.
Lea también: IVA 21% Excel
Declaración de Pines de Entrada
Para declarar un pin como entrada en el MSP430, el proceso implica configurar el bit correspondiente en el registro PxDIR a '0'. Si se requieren resistencias internas de pull-up o pull-down, se habilitan o deshabilitan mediante el registro PxREN.
Ejemplo de Configuración de Entradas/Salidas
Vamos a ver cómo funciona la configuración de puertos a partir de un sencillo ejemplo. En el esquemático vemos que el pulsador S1 está conectado al puerto P2.1 (puerto 2, bit 1) y el pulsador S2 al puerto P1.1. En el caso de los LEDs, el LED1 se conecta al puerto P1.0 y el LED2 al P4.7. La etiqueta P1OUT es una definición en C equivalente a la dirección de memoria del puerto 1. Por otra parte, la etiqueta BIT0 equivale al valor 00000001b, la etiqueta BIT1 equivale a 00000010b, y así sucesivamente. Podemos comprobar si se ha pulsado el botón chequeando el bit 1 de P1IN. El siguiente código de ejemplo utiliza el pulsador S2 y el LED1. Al pulsar el botón se encenderá el LED. El código es bastante autoexplicativo, y muestra los fundamentos de la entrada/salida en MSP430. La primera línea detiene el watchdog, que es un contador externo que cuenta hacia atrás. Si llega a cero, resetea el microcontrolador. La idea es que un programa debe ir actualizando el watchdog cada poco tiempo, de forma que nunca llegue a cero. Si esto ocurre querrá decir que el programa no ha podido actualizarlo por alguna causa no controlada (por ejemplo, un cuelgue del programa), y por lo tanto se reinicia todo el sistema para ponerlo de nuevo a funcionar.
También es posible leer entradas analógicas. En un ejemplo, se leerá el valor de una entrada analógica pin A3 (P1.3) de la tarjeta MSP430 Launchpad Rev. 1.5 con el microcontrolador M430G2553 (en la cual se conectará un potenciómetro de 10KΩ), y se enviará el valor correspondiente (previo ajuste de rango) a una computadora usando comunicación serial, y en ésta última se controlará el color de fondo de una figura usando Processing.
Programación del MSP430
Para programar el MSP430, se requiere una serie de pasos y herramientas. En este proyecto, utilizaremos la placa MSP430F5529.
- Elija una placa de desarrollo o un programador que sea compatible con el microcontrolador MSP430. Entre las opciones más populares se incluyen MSP430 LaunchPad y MSP430 Programmer. El precio es un factor, no sabemos de otra placa de desarrollo con las mismas características a un precio tan bajo, normalmente tienden a costar no menos de $20.- en EEUU (alrededor de el doble en Latinoamérica) y SIN INCLUIR algún tipo de programador/depurador.
- Instale las herramientas de software necesarias para programar el MSP430, como Code Composer Studio o Energia.
- Conecte la placa de desarrollo o el programador a su ordenador mediante USB. La placa debería encenderse y los LED de la placa deberían parpadear, indicando que la placa está encendida y funciona correctamente.
- Escriba su código en un editor de texto o en un entorno de desarrollo integrado (IDE) y guárdelo como un archivo .c o .cpp.
- Abra su código en Code Composer Studio y configure los ajustes del proyecto según sea necesario.
- Compile el proyecto para comprobar si hay errores y generar un archivo binario.
- Programe el microcontrolador MSP430 utilizando el programador o la placa de desarrollo y el archivo binario generado.
- Pruebe el código en el MSP430 y realice los ajustes o modificaciones necesarios.
Las herramientas necesarias incluyen:
Lea también: Guía IVA reducido
- Code Composer Studio (CCS).
- Emulador MSP430: MSP-FET, MSP430-JTAG-TINY-V2, MSP-GANG, MSP430-BSL.
- Placa de desarrollo MSP430: MSP430 Launchpad, MSP-EXP430G2ET o cualquier otra.
- Programador MSP430: MSP430 Launchpad, MSP-FET, Black Magic Probe, etc.
Nota: Si no tiene acceso a una placa de desarrollo MSP430 real, puede utilizar un emulador MSP430 para simular el comportamiento del microcontrolador en su ordenador. Esta puede ser una herramienta útil para depurar y probar su código antes de programarlo en un dispositivo real.
MSP430 frente a MSP432
MSP430 y MSP432 son dos familias de microcontroladores de Texas Instruments. La MSP430 es una familia de microcontroladores de 16 bits, mientras que la MSP432 es una familia de microcontroladores de 32 bits. A continuación se muestra una comparación de algunas de sus características principales:
| Feature | MSP430 | MSP432 |
|---|---|---|
| Architecture | 16-bit RISC | 32-bit ARM Cortex-M4F |
| Clock Speed | Up to 25 MHz | Up to 48 MHz |
| Operating Voltage | 1.8 V to 3.6 V | 1.62 V to 3.7 V |
| Flash Memory | Up to 256 KB | Up to 512 KB |
| RAM | Up to 16 KB | Up to 64 KB |
| ADC | 10-bit, up to 16 channels | 14-bit, up to 24 channels |
| DAC | No | 2 x 12-bit |
| Timers | Up to 6 | Up to 8 |
| Communication Interfaces | UART, SPI, I2C | UART, SPI, I2C, USB, Ethernet, CAN |
| Package Types | DIP, QFP, BGA | DIP, QFP, BGA |
En resumen, el MSP432 ofrece un mayor rendimiento y más funciones que el MSP430, pero también tiene un coste más elevado.
Lea también: ¿Cómo localizar tus XML del SAT?
