1.07k likes | 1.25k Views
___Introducción. Seminario de MSP430: Programa. MSP430 Introducción CPU de 16bits Reset, interrupciones y modos de operacion Sistema de Reloj Periféricos auxiliares Periféricos comunes Desarrollo y depuración Demostración. Finalidad / Orientación. Finalidad / Orientación de MSP430.
E N D
___Introducción Seminario de MSP430: Programa • MSP430 Introducción • CPU de 16bits • Reset, interrupciones y modos de operacion • Sistema de Reloj • Periféricos auxiliares • Periféricos comunes • Desarrollo y depuración • Demostración.
Finalidad / Orientación Finalidad / Orientación de MSP430 APLICACIONES • Sistemas alimentados con baterías (low power) • Sistemas de procesamiento de señales • Sistemas de tamaño limitado • Sistemas de control en general. • Sistemas de control numérico
CPU RISC de 16-bit de Arquitectura Von Neuwman Solo 27 instrucciones básica a aprender. (+24 emuladas) Múltiples y flexibles tipos de Reloj. Versiones disponibles en Flash, ROM y OTP. Precios desde US$0.99 ( MSP430F1101 @10ku ) Consumo nominal de 0.1 ~ 250uA, (@ 2.2v/1MIPS) Alimentación : 1.8 ~ 3.8v (operación) Alimentación : 2.7 ~ 3.8v (programación) Frecuencia: DC ~ 8MHz Temperatura: - 40 ~ + 85C Desarrollo y depuración IN-CIRCUIT Características generales (Rangos de operación)
Arquitectura ortogonal Source MSP430 Address Modes Destination Instructions Otros Micros Source Address Modes Destination Instructions MPS430 Posee arquitectura ¨ortogonal¨ Ortogonal = todas las instrucciones funcionan con todos los modos de direccionamiento. • Set de instrucciones reducido • Instrucciones fáciles de aprender. • Sin instrucciones especiales • Bajo consumo • Código eficiente • Código compacto • Set de instrucciones complejo • Instrucciones especiales a aprender • Poco eficiente • Mayor área de silicio.
Mapa de memoria Mapa de memoria: FFFFh Vectores de Interrupción Memoria de Programa • Vectores de interrupción de 16-bit • Memoria Flash, OTP o ROM para código. • 128/256 Bytes de memoria Flash de información. • ROM Bootstrap loader • SRAM • Registros de periféricos (SFRs) Memoria de Datos 1000h Bootstrap Loader 0C00h RAM 200h Registros de Periféricos SFR’s
Distribución de periféricos Distribución de Memoria y Periféricos: • ROM, RAM, Flash y SFR’s distribuidos en memoria única no paginada. • Memoria Flash de datos en segmentos de 128 Bytes. • Posibilidad de escribir un bit, un byte o word (solo de 1->0) • Borrado de segmentos completos • Programación vía JTAG o BSL in-circuit. • Protección por contraseña o fusible físico de seguridad 0FFFFh Segmento 0 Con vectores de interrupción 0FE00h Segmento 1 0FC00h Segmento 2 0FA00h Vectores de interrupción Memoria de Programa 0F400h Segmento 6 0F200h Memoria de INFORMACION 1000h Segmento 7 Bootstrap Loader 0F000h RAM Segmento A 01080h Registros de periféricos Segmento B 01000h
MSP430 v/s CPU de 8 bits ¿Por que una nueva CPU? Ciclos de CPU: Instrucciones MSP430/ CPU de 8 bit MSP430/ CPU de 8 bits 8+8 ADD 1 1 1 1 8x8 MPY 63 71 7 16 16+16 ADD 1 8 1 7 16x16 MPY 150 333 12 33 Binary to BCD 96 719 9 30 Total 311 1132 30 87 *MSP430 2000 Metering Application Report (SLAA024), Microchip (AN526)
MSP430 v/s otras CPU’s Comparación respecto a otros microcontroladores: Frente a similares funciones matemáticas y en condiciones similares. Tamaño del código (bytes) Ciclos de instrucción
MSP430 v/s otras CPU’s MSP430F135 ATmega8 PIC18F242 8051 H8/300L MC68HC11
Linea de productos Línea de productos MSP430 FLASH 1v, 50MHz USB, DMA 4Mb memory Integrated RF FLASH 1.8 - 3.6v Basic Clock Timer_A Comparator_A FLASH+LCD 1.8 - 3.6v FLL+ SVS Timer_A/B, Basic Timer Comparator_A F5xx F15x ADC12 Timer_A/B (2) USART MPY, DAC12 ROM/OTP+LCD 2.5 - 5v FLL Basic Timer, 8-bit T/C Timer/Port Slope ADC F44x LCD160 ADC12 Timer_A/B (2) USART MPY F14x ADC12 Timer_A/B (2) USART MPY Características/Desempeño x33x LCD120 Timer_A USART MPY F43x F13x ADC12 Timer_A/B USART x32x LCD84 ADC14 F43x F12x USART x31x LCD92 F41x LCD96 F11x $0.99
MSP430x11x(1) MSP430F1101 1kB Flash $0.99
MSP430x13x 64 TQFP MSP430F133 8kB Flash $2.95
MSP430x14x 64 TQFP MSP430F149 60kB Flash $5.95
MSP430x31x MSP430C311S 2kB ROM $1.75
___CPU de 16bits Seminario de MSP430: Programa • MSP430 Introducción • CPU de 16bits • Reset, interrupciones y modos de operacion • Sistema de Reloj • Periféricos auxiliares • Periféricos comunes • Desarrollo y depuración • Demostración.
Arquitectura ortogonal Source MSP430 Address Modes Destination Instructions Otros Micros Source Address Modes Destination Instructions MPS430 Posee arquitectura ¨ortogonal¨ Ortogonal = todas las instrucciones funcionan con todos los modos de direccionamiento. • Set de instrucciones reducido • Instrucciones fáciles de aprender. • Sin instrucciones especiales • Bajo consumo • Código eficiente • Código compacto • Set de instrucciones complejo • Instrucciones especiales a aprender • Poco eficiente • Mayor área de silicio.
Tipos de instrucciones MSP430 Tipos de intrucciones: • 51 instrucciones disponibles en assembler: 27 instrucciones básicas RISC 24 instrucciones emuladas CISC • 7 modos de direccionamiento para origen , y 4 para destino Modo de Registro (directo) Modo indexado Modo Simbólico Modo Absoluto Modo Indirecto Modo Indirecto c/Auto incremento Modo Inmediato • Procesamiento por Bit, byte o word. • Instrucciones y modos de direccionamiento idénticos para RAM, ROM, EPROM, Flash y Periféricos.
Registros: Arquitectura de MSP430 • ALU de16-bit • Buses de datos y direcciones de 16-bit • 16, registros multi propósito de 16-bit (acumuladores) R0/PC (Program Counter) R1/SP (Stack Pointer) R2/SR (Status) R3/CG (Constant Gen.) R4 - R15 (Propósito general) • Acceso total a todos los registros incluyendo PC, SP, SR y CG. • Operaciones en un ciclo • Soporte para operaciones Memoria~Memoria • Diseño optimizado para programación en C. BUS DE DATOS BUS DE DIRECCIONES
PC y SP 15 0 R0/PC – Contador de programa 0 rw 15 0 R1/SP - Stack Pointer 0 rw push #01234h pop R8 Address Address Address 0xxxh Word1 Word1 Word1 0xxxh 0xxxh - 2 Word2 Word2 Word2 0xxxh 0xxxh - 2 0xxxh - 4 Word3 Word3 Word3 SP, TOS SP, TOS 0xxxh - 2 0xxxh - 4 0xxxh - 6 SP, TOS 0xxxh - 4 0xxxh - 6 01234h 0xxxh - 8 0xxxh - 6 0xxxh - 8 0xxxh - 8 TOS: top-of-stack MSP430 Program Counter y Stack Pointer Contador de programas de 16bits -> 64k de código no paginado. Los registros PC y SP son completamente manipulables como cualquier registro. (ambos están mapeados en RAM)
SR MSP430 SR (registro de estado) 15 9 8 7 0 Osc CPU R2/SR – Registro de estado Reservado V GIE N SCG1 SCG0 Z C Off Off rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 Bit’s que seleccionan el reloj a usar Bit’s que definen los modos de bajo consumo. ; ;------------------------------------------------------------------------ ; BIT’s del registro de estado ;------------------------------------------------------------------------ CPUOFF equ 00010h OSCOFF equ 00020h SCG0 equ 00040h SCG1 equ 00080h GIE equ 00008h LPM3 equ SCG1+SCG0+CPUOFF+GIE LPM4 equ OSCOFF+CPUOFF+GIE ; bis.w #CPUOFF,SR ; Entra en LPM0 ; bis.w #LPM3,SR ; Entra en LMP3 ; bis.w #LPM4,SR ; Entra en LPM4
CG 15 0 R3/CG - Constant Generator 0 rw MSP430 CG (Generador de constantes) Registro usado para insertar constantes en el código con instrucciones de solo un parámetro. (manipulado por el linker) ; Ejemplos: • CLR dst es reemplazado por: MOV R3,dst R3 ha sido cargado con 00h 2 INC dstes reemplazado por: ADD 0(R3),dst R3 ha sido cargado con 01h El uso del generador de constantes queda restringido a solo constantes de usocomún como 00h, 01h, FFh, etc… En general el uso de este registro esta orientado a la optimización del código, razón por la que es manipulado solo por el Linker (assembler). El compilador automáticamente usa R3 para insertar valores inmediatos o constantes en el código fuente. Estos valores inmediatos no requieren código adicional.
R4~R15 15 0 R4 ~ R15 0 rw MSP430 Registros multi propósito Registro de propósito general de 16bits, usados como acumuladores. MSP430 dispone de 12 registros (R4 ~ R15) de propósito general para ser usados como acumuladores.
Ventajas von-neumann Ventajas de arquitectura von-Neumann add.w R5,R6 ; operación Word registro a registro add.b R5,R6 ; operación Byte registro a registro ; add.w #02001h,R7 ; operación Word inmediato 2001 a registro add.b #099h,R7 ; operación Byte inmediato 2001 a registro ; add.w 0200h,R8 ; operación Word RAM 200h a R8 add.b 0200h,R8 ; operación Byte RAM 200h a R8 ; add.w 0C100h,R9 ; operación Word Flash C100h a R9 add.b 0C100h,R9 ; operación Byte Flash C100h a R9 ; add.w 0C100h,0200h ; operación Word Flash a RAM add.b 0C100h,0200h ; operación Byte Flash a RAM ; add.w #01234h,&CCR0 ; operación Word inmediato a Periférico add.b #099h,&P1OUT ; operación Byte inmediato a Periférico No existe “cuello de botella” en el acumulador. Todas las instrucciones en MSP430 son consistentes en todo el rango de memoria, no hay instrucciones especiales que aprender.
Modos de direccionamiento Modos de Direccionamiento: ; ; ; Modo de Registro (Directo), rápido, de solo un ciclo entre registros R0 ~ R15 ; add.w R7,R8 ; R7 + R8 >> R8 mov.w R7,R8 ; R7 >> R8 mov.b R5,R10 ; Byte inferior de R5 >> R10 ; ; Modo Indexado, el índice se suma como offset a cualquier registro. ; addc.w -2(R5),4(R7) ; ((R5)-2)+((R7)+4)+C >> ((R7)+4) mov.w 2(SP),R7 ; Mueve el segundo ítem del stack a R7 mov.b R5,9(R10) ; Byte inferior de R5 >> (R10+9) ; ; Modo Simbólico, el contenido de la “etiqueta” se calcula como una diferencia desde PC add.w EDE,TONI ; (EDE) + (TONI) >> (TONI) mov.w EDE,R8 ; (EDE) >> R8 mov.b TONI,EDE ; Mueve byte (TONI) a (EDE) ; ; Modo Absoluto, la “etiqueta” es una dirección absoluta. add.w &CCR1,&CCR2 ; (CCR1) + (CCR2) >> (CCR2) mov.w &TACTL,R8 ; (TACTL) >> R8 mov.b &P1IN,&P2OUT ; Mueve (P1IN) a (P2OUT)
Modos de direccionamiento Modos de Direccionamiento ; ; ; Modo Indirecto, Cualquier registro es usado como puntero ; add.w @R8,R9 ; (R8) + R9 >> R9 mov.w @R9,0(R12) ; (R9) >>(R12+0) >>> @R12 en destino mov.b @R8,&P2OUT ; (R8) >> P2 registro de periférico dec.w @R9 ; (R9) -1 >> (R9) ; ; Modo Indirecto con auto incremento, cualquier registro es usado como puntero y ; posteriormente se incrementa ; add.w @R10+,R9 ; (R10) + R9 >> R9,R10+2 >> R10 mov.w @R10+,0(R12) ; (R10) >> (R12+0),R10+2 >> R10 mov.b @R5+,&P2OUT ; (R5) >> P2OUT, R5+1 >> R5 inc.w @R5+ ; (R5) + 1 >> (R5), R5+2 >> R5 ; ; Modo Inmediato, después de la instrucción sigue una constante. ; add.w #0A00h,R8 ; 0A00h + R8 >> R8 mov.w #0010,&TACTL ; 0Ah >> Timer_A Registro de periférico bit.w #0100h,4(R9) ; Prueba si Bit 8=1 ? En la 4ta word. mov.b #01Fh,0(R12) ; 01Fh >>(R12+0) Se usa un offset de “0” y direccionamiento indexado para el destino de las operaciones.
Set de instrucciones MSP430 Set de Instrucciones NOTA: No hay micro-codigo todas las instrucciones estan incrustadas por hardware en la CPU. Las instrucciones emuladas usan las instrucciones basicas mas registros dedicados como R3 (CG)
Instrucciones emuladas MSP430 Instrucciones Emuladas • Se usan como cualquier instrucción incrustada, sin restricciones. • Instrucciones con formato CISC – (el código es simple de entender) • Son reemplazadas con instrucciones RISC incrustadas y con el uso de CG/PC/SP por el assembler. • No se pierde velocidad ni se requiere código extra. ; ; ; inc.w R5 ; Incremento (emulada) add.w #01h,R5 ; instrucción incrustada ; clrc ; limpiar carry (emulada) bic.w #01h,SR ; instrucción incrustada ; eint ; habilitar interrupciones (emulada) bis.w #08h,SR ; instrucción incrustada ; br R5 ; saltar a la pos. contenida en R5 (emulada) mov.w R5,PC ; instrucción incrustada ; ret ; Restorna desde una subrutina (emulada) mov.w @SP+,PC ; instrucción incrustada
Formato de instrucciones MSP430 Formato de instrucciones Formato I Op-Code Source-Register Ad B/W As Destination-Register add.w R7,R8 ; 16 bits R7 + R8 >> R8 (16bits) Add.b R7,R8 ; 8 bits R7 + R8 >> R8 (8bits) rlc.w R9 ; 16b de R9 son desplazados a la izquierda a través del carry rlc.b R9 ; 8b de R9 son desplazados a la izquierda a través del carry jmp Label ; salta a la etiqueta “Label” Formato II Op-Code B/W Ad D/S- Register Formato III Op-Code 10-bit PC offset Condition Ad = modo de direccionamiento usado para destino As = modo de direccionamiento usado para origen B/W = operación como byte o como word Condition = Condición para un salto condicional D-Register = registro usado como destino D/S-Register = registro usado como origen/destino Op-code = código de la instrucción usada S-Register = registro usado como origen
Instrucciones para control de flujo Instrucciones para control de flujo: • jmp salta a una posición del código en forma incondicional Es el método incondicional mas rápido de controlar el flujo del programa con offset’s de -511/+512 bytes. 1 word. • br Salto largo incondicional a cualquier parte del código. Se carga una posición de16-bit en el contador de programa. No es una llamada a subrutina ya que no se respalda posición de retorno alguna. 2 words,. • call Llamada a subrutinas Se carga una posición de 16-bit en el contador de programa, y la dirección de retorno y el contenido del registro de estado son automáticamente puestos en el stack 2 words.
Un valor con signo de 10bits, permite saltos en el rango de - 511 a + 512 words relativos a la dirección actual. Los saltos requieren solo una Word de código y dos ciclos. Se utilizan para controles el flujo con saltos cortos. Ejemplos de saltos: Ejemplos de Saltos: ; ; Mainloop ;----------------------------------------------------------------------------- ; Retardo por software en R5 ;----------------------------------------------------------------------------- mov.w #1000, R5 ; carga cuenta de 1000 Loop1 dec.w R5 ; decrementa R5 jnz Loop1 ; R5 = 0?, no? >> Loop1 ; ;----------------------------------------------------------------------------- ; espera que &CCR1=5555 ;----------------------------------------------------------------------------- Loop2 cmp.w #05555,&CCR1 ; #05555=CCR1 jne Loop2 : si no es igual >> Loop2 ; ;----------------------------------------------------------------------------- ; salta a Mainloop ;----------------------------------------------------------------------------- jmp Mainloop ; salta en forma incondicional a Mainloop
Ejemplos de Saltos Largos: ; ; ; Ejemplo de una tabla condicional de salto usando R15 clr.w R15 ; limpia puntero para saltos Mainloop br Table(R15) ; salta Table DW Ref0 DW Ref1 DW Ref2 Ref0 clr.b &CACTL1 ; configura comparador A jmp Next ; Ref1 mov.b #CAREF0+CAON,&CACTL1 ; 0.25*Vcc en P2.3, activa comparador jmp Next ; Ref2 mov.b #CAREF1+CAON,&CACTL1 ; 0.5*Vcc en P2.3, activa comparador ; next incd.w R15 ; Incrementa puntero para saltos and #06h,R15 ; asegura salto dentro del rango? ; ; Ejemplo de salto largo directo br #Mainloop ; Ejemplos de saltos largos • Los Saltos Largos son posibles hacia cualquier parte de los 64k de memoria y se pueden utilizar con cualquier modo de direccionamiento.
Ejemplos de Llamadas a Subrutinas ; ; Ejemplo de llamada directa: call #Setup ; llama subrutina dirección de retorno >> TOS ; ; Ejemplo de llamadas según tabla condicional Mainloop call Table(R15) ; llama sub rutinadirección de retorno >> TOS xor.w #02h,R15 ; conmuta puntero jmp Mainloop ; repite ; Table DW Sub1 DW Sub2 Sub1 clr.b &P1OUT ; pone en “0” todas la salida de P1 nop ret ; retorna de subrutina (mov SP+,PC) ; Sub2 mov.b #0FFh,P1OUT ; pone en “1” todas las salida de P1 nop ret ; retorna de subrutina (mov SP+,PC) ; Setup clr R15 ; limpia el puntero de llamadas mov.b # 0FFh,&P1DIR ; puerto 1 como salida ret ; retorna de subrutina (mov SP+,PC) Ejemplo de llamadas a subrutinas • Las llamadas son posibles desde y hacia cualquier parte de los 64K de memoria (y en todos los modos de direccionamiento).
Manipulación de Bits Manipulación de Bit’s: • bic(.b) Pone a “0” uno o mas bit’s en el destino. Se operan lógicamente el inverso del origen y el destino. (and) El registro de estado no es afectado. • bis(.b) Pone a “1” uno o mas bit’s en el destino. se operan lógicamente el origen y el destino (or), El registro de estado no es afectado. • bit(.b) Prueba uno o mas bits en el destino. Se operan lógicamente el origen y el destino (and) El resultado afecta solo al registro de estado. • cmp(.b) Compara Origen con Destino. El origen es restado del destino. El resultado afecta solo al registro de estado.
Ciclos de Instrucciones: Ciclos de instrucciones: Ciclos de instrucciones:
___Reset, interrupciones y modos de op Seminario de MSP430: Programa • MSP430 Introducción • CPU de 16bits • Interrupciones, Reset y modos de operacion • Sistema de Reloj • Periféricos auxiliares • Periféricos comunes • Desarrollo y depuración • Demostración.
Vectores de int MSP430 Vectores de Interrupcion • 16 vectores disponibles • Los vectores se cargan en el PC • PC y SR se respaldan en el stack en forma automática. Vectores de interrupción MEMORIA DE PROGRAMA 0FFFFh Memoria de info Bootstrap Loader RAM Registros de periféricos
Procesamiento de interrupciones Item1 Item1 Item1 Item2 Item2 Item2 PC PC SR SR SP, TOS SP, TOS SP, TOS Procesamiento de Interrupciones: Antes de una interrupción: Durante una interrupción: • PC copiado en stack • SR copiado en stack • GIE, CPUOFF, OscOFF y SCG1 son limpiados • los flag IFG son limpiados cuando provienen de una fuente única (ej. Usart) Después de una interrupción: • SR es recuperado desde el stack • PC es recuperado desde el stack El contexto del registro de estado es respaldado en el stack junto con el contador de programa. El proceso de interrupciones requiere un total de 11 ciclos adicionales.
TEST P1.7 Vcc P1.6 P2.5 P1.5 Vss P1.4 XOUT P1.3 XIN P1.2 RST P1.1 P2.0 P1.0 P2.1 P2.4 P2.2 P2.3 MSP430 Ejemplo de interrupción: • MSP430F11x1 posee capacidad de interrupción en ambos flancos en todos sus pines • Cualquier interrupción habilitada saca de los modos de bajo consumo a la CPU Ejemplo de interrupción MSP430F11x1 ; ; SetupP2_0 bic.b #01h,&P2DIR ; P2.0 configurada como entrada bis.b #01h,&P2IES ; Interrupción en flanco H->L bis.b #01h,&P2IE ; Interrupción habilitada en P2.0 Mainloop mov.w #LPM3+GIE,SR ; Entra en LPM3 con interrupciones habilitadas nop ; ciclo inútil. ; P2_ISR bic.b #01h,&P2IFG ; limpia flag de interrupción en P2.0 nop ; ciclo inútil… reti ; retorna al estado previo a la interrupción. ORG 0FFE6h ; vector de Interrupcion de P2 DW P2_ISR ;
TEST P1.7 Vcc P1.6 P2.5 P1.5 Vss P1.4 XOUT P1.3 XIN P1.2 RST P1.1 P2.0 P1.0 P2.1 P2.4 P2.2 P2.3 MSP430 Power-UP Power-UP #include "msp430x11x1.h” ; definición de registros ; ORG 0F000h ; inicio de memoria de programa RESET mov.w #300h,SP ; inicio de stack pointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; detiene WDT SetupP1 bis.b #01h,&P1DIR ; configura P1.0 como salida ; Mainloop xor.b #01h,&P1OUT ; cambia P1.0 (xor) jmp Mainloop ; salta a repetir ; ORG 0FFFEh ; vector de reset de MSP430x11x1 DW RESET ; configura inicio de programa END MSP430F1121 1) Stack 2)WDT 3) Vector de RESET
Modos de bajo consumo (Low Power) * DCO esta deshabilitado, pero el generador de DC sigue activo a menos que se manipule sus bits de control. Consumo en uA @ 1MHz Modos de Bajo Consumo
Aplicación RTC 1 ano 1mA 2uA 1s 2s 1mA “ 9uA 1s 2s MSP430 Aplicación para RTC de 1 año: MSP430 6us wake-up* Otra CPU 17,500us “power-up**” FLL - US Patent # 5,877,641 **Microchip (AN606)
32768 Aplicación RTC 1 ano MSP430 Aplicación para RTC de 1 año: MSP430x11x Vcc Xin Vss Xout RST/NMI P2.x RX P1.x TX CR2032 UART, SPI, IIC ... 12 Pines disponibles Datos… CR2032 180mAH. Corriente drenada para 10 años de vida = 0.180A/ 10 años / 365 días / 24 horas < 2.2uA Ejemplo RTC : operación en LPM3 con oscilador a 32KHz (1.5uA). 1Hz ISR. Consumo normal en LPM3 1s x 1.50uA 1.50uA Rutina de interrupción (50 ciclos/ISR) 50us x 400uA 0.02uA 1.52uA MSP430 posee un “wake-up” de solo 6uS, que permite un uso extendido del modo de bajo consumo LPM3
___Sistema de Reloj Seminario de MSP430: Programa • MSP430 Introducción • CPU de 16bits • Interrupciones, Reset y modos de operacion • Sistema de Reloj • Periféricos auxiliares • Periféricos comunes • Desarrollo y depuración • Demostración.
Sistema de reloj Fx11x/Fx12x MSP430x11x/12x Sistema de Reloj Básico DIVA 2 LFXTCLK ACLK /1, /2, /4, /8 OscOff XTS Auxiliary Clock XIN DIVM CPUOff SELM LFXT1 Oscillator 2 2 3 XOUT 0,1 MCLK /1, /2, /4, /8, off 2 DCOCLK Main System Clock Vcc Vcc Rsel SCG0 DCO MOD SELS DIVS SCG1 3 3 5 2 0 0 Digital Controlled Oscillator DC- Gen SMCLK /1, /2, /4, /8, off + Modulator 1 P2.5/Rosc 1 Sub-System Clock DCOR
Sistema de reloj F13x ~ F16x MSP430x13x/14x/15x/16xSistema de Reloj Básico DIVA 2 LFXTCLK ACLK /1, /2, /4, /8 OscOff XTS Auxiliary Clock XIN DIVM CPUOff SELM LFXT1 Oscillator 2 2 3 XOUT 0,1 MCLK /1, /2, /4, /8, off 2 XT2Off Main System Clock XT2IN XT2 Oscillator DCOCLK XT1OUT Vcc Vcc Rsel SCG0 DCO MOD SELS DIVS SCG1 3 3 5 2 0 0 Digital Controlled Oscillator DC- Gen SMCLK /1, /2, /4, /8, off + Modulator 1 P2.5/Rosc 1 Sub-System Clock DCOR
TEST P1.7 Vcc P1.6 P2.5 P1.5 Vss P1.4 XOUT P1.3 XIN P1.2 RST P1.1 P2.0 P1.0 P2.1 P2.4 P2.2 P2.3 MSP430x1xx LF XTAL (Cristal Baja Frec.) • Solo se requiere un cristal de reloj; No se necesitan componentes adicionales. MSP430F11x1 ACLK= 32768 (o fracción) MCLK~1MHz DCOCLK (o fracción) SMCLK~1MHz DCOCLK (o fracción) 32768 NOTA! Es necesario verificar el estado de flag OSCFAULT antes de cambiar MCLK a LFXT1. La operación a prueba de fallas, automáticamente cambia MCLK a DCO si es puesto el flag OSCFAULT (falla de cristal).
TEST P1.7 Vcc P1.6 P2.5 P1.5 Vss P1.4 XOUT P1.3 XIN P1.2 RST P1.1 P2.0 P1.0 P2.1 P2.4 P2.2 P2.3 MSP430x1xx DCO como reloj. • Sin componentes externos; Solo el oscilador DCO interno. MSP430F11x1 ACLK= 0 MCLK= DCOCLK (o fracción) SMCLK= DCOCLK (o fracción) SetupBC bis #OSCOFF,SR ; oscilador externo desactivado Mainloop jmp Mainloop ; no hace nada NOTA! La fuente por defecto de reloj al momento del Power UP es el DCO. La configuración posterior define la fuente de reloj a utilizar.