MSP430MSP430 es una familia de microcontroladores fabricados por Texas Instruments. Construido con una CPU de 16 bits, el MSP430 está diseñado para aplicaciones embebidas de bajo costo, sistemas inalámbricos y/o de ultra bajo consumo de energía. Esta arquitectura tiene semejanzas con la del procesador DEC PDP-11. Este dispositivo tiene una gran variedad de configuraciones que se agrupan en familias, con velocidades máximas de procesamiento y capacidades de direccionamiento diferentes, y modelos con diferentes selecciones de entre los siguientes periféricos: diferentes bloques y capacidades de memoria, oscilador interno, temporizadores incluyendo un PWM, temporizador watchdog, USART, bus SPI, bus I²C, 10/12/14/16-bit conversores ADC, y circuitos de apagado y reinicio. Algunos periféricos opcionales no tan usuales incluyen comparadores (que se utilizan con el temporizador para funcionar como un ADC simple), amplificadores operacionales dentro del chip para el acondicionamiento de señales, conversores DAC de 12 bits, controlador de pantalla LCD, multiplicador hardware, y DMA para el manejo de datos entre zonas de memoria y/o los periféricos. A diferencia de las versiones anteriores con EPROM (PMS430E3xx) y ROM enmascarada (MSP430Cxxx), estos dispositivos son programables en sistema a través de JTAG o a través del bootstrap loader (BSL) usando RS-232. La CPU del MSP430La CPU usa una arquitectura von Neumann, con direccionamiento simple para las instrucciones y los datos. La memoria se direcciona por bloque de 1byte, y los pares de byte se combinan en forma endianness para hacer palabras de 16 bits. El procesador contiene 16 registros de 16 bits. R0 es el contador de programa, R1 es el puntero de pila, R2 es el registro de estado, y R3 es un registro especial denominado generador constante, que provee acceso a 6 valores constantes utilizados comúnmente, sin requerir el uso de un operando adicional. Los registros desde el R4 hasta el R15 son para uso general. El conjunto de instrucciones disponible es muy simple; hay 27 instrucciones agrupadas en tres familias. La mayoría de las instrucciones son de 8 bit (byte) y 16 bit (palabra), dependiendo del valor de un bit llamado B/W, este bit es 1 para instrucciones de 8 bits y 0 para las de 16 bits. Las operaciones de byte sobre la memoria afectan solo al byte direccionado, mientras que las operaciones de byte sobre los registros al byte más significativo.
NdT: "Palabra de extensión" es la traducción de "Extension Word" Las instrucciones están formadas por 16 bits, seguidas de hasta dos palabras de extensión de 16 bits. Hay cuatro modos de direccionamiento, especificados por el bit 2 como campo. Algunas versiones especiales pueden ser construidas usando R0, y otros modos a parte del acceso directo al registro usando R2 (el registro de estado) y R3 (el generador constante) son interpretados de manera especial. Los modos de direccionamiento indexado añaden una palabra de extensión de 16 bits a la instrucción.
Las instrucciones generalmente consumen un ciclo (de reloj) por palabra adquirida o almacenada, por lo que la duración de las instrucciones va desde 1 ciclo para instrucciones de registro a registro a 6 ciclos para una instrucción con los dos operandos indexados. Las operaciones de transferencia (Moves) al registro del contador de programa (PC) son posibles y conllevan saltos en el flujo continuo del programa. Los retornos de una subrutina por ejemplo, se implementan así: MOV @SP+, PC. En instrucciones con dos operandos, solo hay un bit "Ad" para especificar el modo de direccionamiento del destino, por lo que solo los modos 00 (directamente a registro) y 01 (indexado) están permitidos. Si tanto el origen como el destino son indexados, la palabra de extensión del origen va primero. Cuando R0 (PC) o (R1) SP son unsados con el modo de acceso de autoincremeto, siempre son incrementados en dos. Otros registros (desde R4 a R15) son incrementados en el tamaño del operador, 1 o 2 bytes. El registro de estado ('SR') contiene cuatro bits de estado aritmético, una activado global de las interrupciones, y 4 bits que desabilitan varios relojes para entrar en los modo de bajo consumo. Cuando se atiende una interrupción, el procesador almacena el registro de estado en la pila y limpia los bits de bajo consumo. Si el vector de interrupción no modifica el registro de estado almacenado, al volver de la interrupción, rehabilitara el modo de bajo consumo que estuviese habilitado previamente. Mapa de direcciones del MSP430La disposición general de las direcciones del MSP430 es:
Algunos modelos incluyen más the 2048 bytes de RAM; en ese caso la RAM comienza en 0x1100 los primeros 2048 bytes (0x1100–0x18FF) son llevados al intervalo 0x0200–0x09FF para cuestiones de compatibilidad. además, algunos modelos recientes unen las reglas para periféricos de 8 y 16 bits, permitiendo el uso de periféricos de 16-bit en el rango de direcciones de periféricos de 8 bits. Existe una nueva versión extendida de esta arquitectura (llamada MSP430X) que permite el uso de un espacio de direcciones de 20 bit. Esto permite iniciar la ROM en la dirección 0x10000. Familias del MSP430Existen cuatro familias principales del procesador MSP430. En orden de desarrollo, fueron: La familia '3xx, la familia '1xx, la familia '4xx, y la familia '2xx. Los dígitos después de la letra de familia, identifican el modelo (generalmente un número mayor representa un modelo más potente), el tercer dígito indica la cantidad de memoria integrada, y el cuarto (si es que existe), identifica una variante mínima del modelo.
PeriféricosLos periféricos del MSP430 generalmente son fáciles de utilizar, con direcciones compatibles para la mayoría de los modelos, y no únicamente con registros de solo escritura. Se detalla algunos periféricos como son los puertos, pero incluye otros como ADC, timer, memorias, etc. Pueden encontrar más detalles de los periféricos en TI_MSP430. Puertos de entrada-salida (E/S) de propósito generalTal y como suele ser habitual en microcontroladores, las mayoría de los pines pueden tener varias posibles funcionalidades, asignándose a funciones de periféricos o a pines de entrada/salida ('E/S') de propósito general. Estos pines de entrada/salida se agrupan en grupos de 8 denominados puertos, que se controlan como un bloque que se puede configurar mediante un conjunto de registros de 8 bits. La familia MSP430 define hasta 11 puertos E/S aunque no todos los modelos cuentan con todos ellos. Los siguientes son algunos de los registros de los pines (distinto a periférico).
Algunos pines tiene propósitos especiales cuando están como entradas o salidas. (Por ejemplo, los pines de temporizador pueden configurarse para capturar entradas o salidas PWM.) En este caso, el bit PxDIR controla cual de las dos funciones realiza el pin cuando el bit PxSEL se establece. Si hay una sola función especial, entonces generalmente se ignora a PxDIR. El registro PxIN siempre puede ser leído si se establece el bit PxSEL, pero la generación de interrupción queda deshabilitada. Sise borra PxSEL, las entradas de funciones especiales se congela y se desconecta del pin externo. También, configurando un pin para salida de propósito general no deshabilita la generación de interrupciones.
Los puertos P7 y P8 se pueden acceder usando cargas y almacenamientos de 16-bit; cuando se usa de esta forma, la combinación se conoce como PA. De forma similar, P9 y P10 pueden combinarse en 16-bit mediante PB. Multiplicador por hardwareAlgunos modelos de MSP430 incluyen un periférico de multiplicación por hardware mapeados por memoria el cual realiza operaciones de multiplicación-acumulación de 16×16+32→33-bits. En forma inusual para el MSP430, este periférico incluye un registro implícito de 2-bit de solo lectura, el cual lo hace efectivamente imposible para cambio de contexto. Los 8 registros usados son:
Herramientas de desarrolloTexas Instruments provee herramientas de desarrollo de software que pueden ser descargadas gratuitamente. El toolchain provisto por TI en la edición Kickstart del compilador C/C++ IAR, el cual está limitado a 4K de código C/C++ en el compilador y depurador (programas en lenguaje ensamblador de cualquier tamaño pueden ser desarrollados y depurados con este toolchain gratuito). TI además provee una versión de Eclipse llamada "Code Composer Essentials", para la cual la versión "Kickstart" puede ser descargada gratuitamente. La comunidad del código abierto produce un software de desarrollo "toolset" gratuitamente disponible (MSPGCC) basado en el GNU toolset, aunque el tamaño de tal código y su rapidez no son tan óptimas como los resultados obtenidos por el compilador comercial.[cita requerida] Además varios "toolset" comerciales de desarrollo, los cuales incluyen editor, compilador, "linker", ensamblador, depurador y en casos singulares asistentes de código, están disponibles. VisSim, un lenguaje de diagrama de bloques para desarrollo basado en modelos, puede generar eficiente código-C de punto fijo directamente desde el diagrama. Para un uso inteligente de funciones "inline interrupt", VisSim genera programas de control muy eficientes que pueden acceder a I2C, ADC, PWM etc, en un control de ciclo y usan menos de 1K flash y 128 bytes RAM. Plataformas de desarrolloLa familia MSP430 destaca por la disponibilidad de plataformas de desarrollo de bajo coste. TI ha desarrollado dispositivos con formato de llave USB, el eZ430-F2013, que contiene un MSP430F2013 con algunos pines de entrada y salida accesibles y hardware para funcionamiento, un sistema de programación y supervisión del procesador y un CD con software de desarrollo. Esta herramienta es muy útil para estudiantes y aficionados a la electrónica así como profesionales para el inicio de pequeños proyectos o aplicaciones. Existen plataformas de desarrollo que trabajan en GNU/Linux o en otros sistemas abiertos, pero no existe soporte directo de TI en estos entornos y las herramientas para la programación de los nuevos procesadores tardan en aparecer al depender del trabajo de voluntarios. Se encuentra la herramienta MSP430G Launchpad, en la cual se pueden trabajar 8 conversores análogo-digitales de 10Bits tipo SAR, viene equipada con dos módulos de comunicación seriales, en donde se incluyen el hardware del SPI, I2C, UART, IrDa, dos módulos timer. Con una memoria flash con capacidad de hasta 16Kb.[1] Interfaz de depuraciónAl igual que otros fabricantes de microcontroladores, TI ha desarrollado una interfaz de depuración con dos hilos que está reemplazando el anterior sistema 'JTAG' usado para esa función. La herramienta 'eZ430 Development Tool' contiene un sistema USB 'Flash Emulation Tool' ("FET") para la programación y simulación de esto microcontroladores usando este nuevo sistema simplificado denominado por TI "Spy-Bi-Wire". En la actualidad solamente se encuentra disponible en los modelos MSP430F20xx, MSP430F22x2 y MSP430F22x2.
Referencias
Enlaces externos
|