26/09/2012 PROCESADORES DE TEXAS INSTRUMENTS ORGANIZACIÓN INTERNA DE LOS MICROCONTROLADO RES Microcontroladores 1 F. Hugo Ramírez Leyva Octubre 2012 2 FAMILIA DE MICROCONTROLADORES MSP430 MICRCONTROLADOR (MCU) MSP430 El MCU MSP430 son fabricados por Texas Instruments (TI) CPU de 16 bits Tienen un bajo consumo de energía Existen modelos con: Velocidad del CPU de 8MHz a 25 MHz Memoria flash de 0.5kB a 256kB RAM de 128B a 18kB De 14 a 113 terminales Mas de25 empaques Página del micro: www.ti.com/msp430 3 RECURSOS DEL MICROCONTROLADOR MSP430 USB Radio Frecuencia (RF) Manejador de despegadores de cristal líquido (LCD) Convertidores ADC sigman delta Moduladores de ancho de pulso (PWM) Comparadores Comunicaciones seriales (I2C, LIN/IrDA, UART) Teclado Capacitivo 4 FAMILIA DE MICROCONTROLADORES MSP430 5 El MSP430 tiene una arquitectura RISC Su CPU es de 16 bits y la lectura la realiza en un ciclo 27 instrucciones Los kits de desarrollo inician en $4.30 dls Ambientes de desarrollo Code Composer Studio (CCS), IDE, IAR Embeded Workbench Tiene soporte para Linux 6 1 26/09/2012 USOS DEL MSP430 APLICACIONES DEL MSP430 Mediciones: www.ti.com/430metering Comunicaciones inalámbricas: www.ti.com/430medical Teclados capacitivos: www.ti.com/cc430 Equipo portable médico: www.ti.com/capacitivetouch Data Logging: www.ti.com/fram Salud personal y fitness: www.ti.com/chronos 7 APLICACIONES DEL MSP430 Energy Harvesting: www.ti.com/energyharves ting Control de Motores: www.ti.com/motorcontrol Seguridad: www.ti.com/430security 8 HERRAMIENTAS DE DESARROLLO TI suministra un conjunto de herramientas para hacer desarrollos en el MSP430Ware La página donde se encuentra información es: www.ti.com/msp43 0ware 9 DRIVER DE LIBRERÍAS DEL MSP430 Facilidad de uso en el llamado a periféricos Incluyen convertidores, temporizadores, comunicaciones seriales y mas Se tienen soporte para las familias MSP430F5xx y F6xx Documentación completa con un API gráfica Marca y código libre Se tiene un api (GRACE) par la configuración de periféricos 10 GRACE Grace permite generar rápidamente y documentar programas en C Facilita la configuración de los perifericos 11 12 2 26/09/2012 HERRAMIENTAS DE SOFTWARE EL MSP-EXP430G2 LAUNCHPAD El MSP-EXP430G2 LaunchPad development kit suministra todo el hardware y software necesario para inciar Soporta toda la líne de MCUs MSP430G2xx www.ti.com/launchpad Caracteristicas: Emulador en la tarjeta 20-pin DIP Socket 2 on-board LEDs and 2 onboard switches El Kit incluye, el cable USB, la guia de inicio rápido 2x 10-pin male and female headers Trae 2 MSP430 MCUs 13 HERRAMIENTAS DE DESARROLLO EZ430 14 TARJETAS DE DESARROLLO Los kits eZ430 permite probar otros módulos del MSP430 en un empaque como una memoria USB Los precios varia desde 10 dlls hasta 199dlls 15 TARJETAS DE DESARROLLO 16 TARJETAS DE DESARROLLO 17 18 3 26/09/2012 EMPAQUES PROGRAMA UNIVERSITARIO 19 20 MSP430G2XX SERIES – UP TO 16 MHZ (CONTINUED) MSP430G2XX SERIES – UP TO 16 MHZ 21 MSP430G2XX SERIES – UP TO 16 MHZ (CONTINUED) 22 CARACTERÍSTICAS DEL DEL MSP430G2231 Bajo rango de voltajes de 1.8V a 3.6V Ultra bajo consumo de energía Cuatro modos de ahorro de energía Despertado ultra ràpido en menos de 1us Arquitectura RISC, con un ciclo de instrucción de 62.5ns Modos de configuración del Reloj MSP430G2452IN20 23 Modo activo 220 uA a 1MHz, 2.2V Modo de Standby 0.4uA Modo de apagado (Retención de RAM) 0.1uA Temporizador A de 16 bits con 2 registros de comparación y captura Interfaz Universal Serial (USI) que soporta SPI e I2C Detector de Brownout Convertidor ADC de 10 bits a 200ksps con referencia interna, sample-andHold y autoescan Programación serial en tarjeta, no requiere voltaje de alimentación para la programación, protección del código Emulación en circuito con interfaz Spy-Bi-Wire Frecuencia interna de asta 16MHz con una frecuencia sin calibrar Oscilador interno de baja frecuencia (LF) cristal de 32kHz Fuente externa de reloj 24 4 26/09/2012 ARQUITECTURA DEL MSP430G2231 MSP430G2231 25 TERMINALES MSP430G2231 26 TERMINALES MSP430G2231 27 28 ESPACIO DE MEMORIA REGISTROS ESPECIALES El MSP430 utiliza una arquitectura tipo von-Newmann que tiene un espacio de memoria compartido entre registros de funciones especiales (SFRs), periféricos, RAM y memoria Flash/ROM Puede direccionar hasta 128kB 29 El CPU esta integrado por 16 registros especiales. El tiempo de ejecución entre ellos es de 1 ciclo de reloj Los 4 registros R0 a R3 son dedicados como contadores de programa, apuntador de stack, registro de estatus y generador de constantes Los registros restantes de R4 a R15 son de propósito general Los periféricos se conectan al CPU usando los buses de direcciones y de datos El conjunto de instrucciones es de 51, con tres formatos, 7 modos de direccionamiento. Cada instrucción puede operar en formato de palabra o byte 30 5 26/09/2012 MEMORIA El inicio de direcciones de la memoria Flash/ROM depende de la cantidad de memoria del dispositivo. El fin es 0x1FFFF la memoria Flash puede ser usada para mantener dados o programa ya que se pueden almacenar tablas sin necesidad de copiarlas a RAM El vector de interrupciones es mapeada in las 16 palabras superiores del espacio de direcciones flash/ROM. La de mayor prioridad es la que se encuentra en 0X1FFFF REGISTROS PC La memoria RAM inicia en 0x02000. La dirección final depende de la cantidad de memoria que disponga el dispositivo Los periféricos están mapeados en espacio de direcciones. El rango es de 0x0100 a 0x01FF. Estos módulos deben se accedidos con instrucciones de palabras, solo el byte bajo contiene información valida Los bytes son localizados en direcciones pares e impares. El byte bajo se almacena en la dirección par y el alto en la impar El CPU posee un conjunto de 16 registros los cuales son: El contador de programa PC El Stack Pointer 31 PROGRAM COUNTER (PC) El contador de programa (Program Counter PC) registros (PC/R0), apunta a la siguiente instrucción a ejecutar Cada instrucción usa un número par de bytes y de esta forma se incrementa Formato de direccionamiento: 32 STACK POINTER (SP) El estack pointer (SP/R1) es usado por el CPU para almacenar la dirección de retorno de una llamada a subrutina e interrupciones Se puede usar con todas las instrucciones y modos de direccionamiento El SP es inicializado por el usuario desde la RAM y se alinea a direcciones pares MOV #LABEL,PC ; Branch to address LABEL MOV LABEL,PC ; Branch to address contained in LABEL MOV @R14,PC ; Branch indirect to address in R14 33 34 STACK POINTER (SP) REGISTRO DE ESTATUS MOV.W 2(SP),R6 ; Copy Item I2 to R6 MOV.W R7,0(SP) ; Overwrite TOS with R7 PUSH #0123h ; Put 0123h on stack POP R8 ; R8 = 0123h El registro de estatus (SR/R2) es de 16 bits y es usado como fuente o destino Puede ser usado como modo de direccionamiento de registro con instrucciones en formato de palabra 35 36 6 26/09/2012 REGISTRO DE ESTATUS REGISTRO DE ESTATUS 15 R2: Status Register (SR): Stores status and control bits; System flags are changed automatically by the CPU; Reserved bits are used to support the constant generator. 14 13 12 11 10 9 8 Reserved for CG1 Bit 37 7 V 6 SCG1 SCG0 5 OSCOFF 4 CPUOFF 3 GIE 2 N 1 Z 0 C Description 8 V Overflow bit. V = 1 ⇒ Result of an arithmetic operation overflows the signed-variable range. 7 SCG1 System clock generator 0. SCG1 = 1 ⇒ DCO generator is turned off – if not used for MCLK or SMCLK 6 SCG0 System clock generator 1. SCG0 = 1 ⇒ FLL+ loop control is turned off 5 OSCOFF Oscillator Off. OSCOFF = 1 4 CPUOFF CPU off. CPUOFF = 1 3 GIE General interrupt enable. GIE = 1 2 N Negative flag. N = 1 ⇒ 1 Z Zero flag. Z = 1 result of a byte or word operation is 0. 0 C Carry flag. C = 1 ⇒ ⇒ ⇒ ⇒ turns off LFXT1 when it is not used for MCLK or SMCLK disable CPU core. ⇒ enables maskable interrupts. result of a byte or word operation is negative. result of a byte or word operation produced a carry. 38 CONSTANT GENERATOR REGISTERS REGISTROS DE PROPÓSITO GENERAL Los registros generadores de constantes CG1 y CG2 Son constantes que permiten expandir los modos de operación (de 27 mas 24 adicionales) Sus principales ventajas son: La instrucción: CLR dst Es emulado por el operador MOV R3,dst Donde #0 es remplazado por el esamblador, y R3 es usado con As=00. La instrucción INC dst Es reemplazado por: ADD 0(R3),dst No requiere instrucciones especiales No requiere palabras de código para las 6 constantes No requiere acceso a memoria para tomar el dato 39 MODOS DE DIRECCIONAMIENTO Las instrucciones del programa le dicen al procesador que hacer, donde encontrar la información El direccionamiento es necesario para dirigir al procesador la localización correcta Los modos de direccionamiento son la maneras en las cuales las instrucciones indican la direcciones Los 12 regsitros de R4 a R15 pueden contener datos de 8 bits, 16 bits o 20 bits Cualquier dato de byte escrito al CPU limpia los bits 19:8 Cualquier dato de palabra limpia los bits 19:16 La instrucción SXT extiende el signo a través de los 20 bits del registro 40 MODOS DE DIRECCIONAMIENTO Son 7 los modos de direccionamiento para el operando fuente y 4 para el operando destino En la tabla se muestran los modos donde As es el registro fuente y Ad el destino Los 7 modos son: Modo Registro Modo Indexado Modo simbólico Modo absoluto Modo indirecto Modo autoincremental indirecto Modo inmediato 41 42 7 26/09/2012 MODO REGISTRO MODO INDEXADO 43 MODO INDEXADO 44 MODO SIMBÓLICO 45 MODO SIMBÓLICO 46 MODO ABSOLUTO 47 48 8 26/09/2012 MODO ABSOLUTO MODO INDIRECTO 49 MODO INDIRECTO 50 MODO AUTO INCREMENTAL INDIRECTO 51 MODO AUTO INCREMENTAL INDIRECTO 52 MODO INMEDIATO 53 54 9 26/09/2012 MODO INMEDIATO EL CONJUNTO DE INSTRUCCIONES Son 27 el conjunto de instrucciones del MSP430 Las 24 instrucciones emuladas expanden las capacidades del CPU, se reemplazan automáticamente cuando se compila Son 3 los formatos de las instrucciones 55 FORMATO DE LAS INSTRUCCIONES Las instrucciones de fuente y destino usan los siguientes campos Src dst 56 FORMATO DE INSTRUCCIÓN DOBLE La fuente del operador defindo por As y S-reg El operando destino definido por Ad y D-reg Los bits direccionados responsables del modo de direccionamiento usado (src) S-reg Operando dual Un solo operando Salto Las instrucciones pueden ser en formato de byte o palabra (.B o .W) En byte se usa para tomar los datos de los periféricos Las instrucciones de palabra se usan para tomar datos con este formato, es la configuración por default As El registro de trabajo usado por la fuente (src) AD D-reg B/W Los bits de direccionamiento responsables por el modo de direccionamiento usado por el destino (dst) El registro de trabajo usado por el destino (dst) operación de Byte o palabra: 0: Operando de palabra 1: operador de byte 57 FORMATO DE INSTRUCCIÓN SIMPLE 58 FORMATO DE INSTRUCCIÓN DE SALTO 59 60 10 26/09/2012 INSTRUCCIONES EMULADAS 61 62 63 64 65 66 REFERENCIAS [1] MSP430TM Ultra-Low-Power Microcontrollers; Texas Instruments; N/S slab034v [2] MSP430x2xx Family, Texas instruments, N/P slau144e REGISTROS DE PROPÓSITO GENERAL R4 A R15 Los 12 registros de R4 a R15 pueden contener datos de 8 bits, 16 bits o 20 bits Cualquier dato de byte escrito al CPU limpia los bits 19:8 Cualquier dato de palabra limpia los bits 19:16 La instrucción SXT extiende el signo a través de los 20 bits del registro 11 26/09/2012 GENERADOR DE RELOJ CONFIGURACIÓN BÁSICA DEL RELOJ El MSP430 tiene construido un oscilador que usa un cristal externo comúnmente de 32.768kHz, pero usando un cristal de alta frecuencia puede generar frecuencias de 1MHZ a 8MHZ El sistema de tiene tres módulos DCOCTL (Digitally Controlled Oscilator Control Register) BCSCTL1 y BCSCTL1 (Basic Clock System Control Registers) Con cristal externo de 32.768kHz Oscilador interno de muy baja frecuencia (LF) Oscilador digitalmente controlado (DCO) Reloj auxiliar (ACLK) de 32768Hz del cristal externo o el oscilador LF Reloj principal (MCLK) usado por el CPU Reloj sub principal (SMCLK) usado por los periféricos En el registro DCOCTL se divide en 2 partes: DCOx (bits 7 a 5) Selecciona la frecuencia del DCO definidos en el registro RSELx MODx (bits 4 a 0) Define que tan seguido se usa la frecuencia fDCO+1 que puede ser usada como periodo de 32 DCOCLK ciclos, no se usa cuando DCOx=7 El DCO se estabiliza en menos de 1us. Éste proporciona 3 salidas: El reloj es configurado con los registros: 67 69 68 70 WATCHDOG TIMER 71 El registro de Watchdog timer es controlado por el registro WDTCTL y se divide en 8 secciones 72 12 26/09/2012 TIMER 73 74 EJEMPLO 1 EN ENSAMBLADOR ;******************************************************************* ************ .cdecls C,LIST,"msp430g2231.h" ; Include device header file ;------------------------------------------------------------------------------.text ; Progam Start ;------------------------------------------------------------------------------RESET mov.w #280h,SP stackpointer StopWDT SetupP1 ; Initialize 'x1121 mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT bis.b #001h,&P1DIR ; P1.0 output push #0001 ; Mainloop xor.b #001h,&P1OUT Wait L1 mov.w #050000,R15 dec.w R15 jnz jmp ; Toggle P1.0 ; Delay to R15 ; Decrement R15 L1 ; Delay over? Mainloop ; Again ; ;------------------------------------------------------------------------------; Interrupt Vectors ;------------------------------------------------------------------------------.sect ".reset" .short RESET 75 .end ; MSP430 RESET Vector ; 76 77 13