seminario msp430

107
1

Upload: kaurvr

Post on 27-Oct-2015

166 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Seminario MSP430

1

Page 2: Seminario MSP430

2

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsReset, interrupciones y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 3: Seminario MSP430

3

Finalidad / Orientación de MSP430

APLICACIONESAPLICACIONES

Sistemas alimentados con baterías (low power)Sistemas de procesamiento de señalesSistemas de tamaño limitadoSistemas de control en general. Sistemas de control numérico

Page 4: Seminario MSP430

4

CPU RISC de 16-bit de Arquitectura Von NeuwmanSolo 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)

Page 5: Seminario MSP430

5

Source

AddressModesDestination Instructions

MSP430

Source

AddressModesDestination Instructions

Otros MicrosSet de instrucciones complejoInstrucciones especiales a aprenderPoco eficienteMayor área de silicio.

MPS430 Posee arquitectura ¨ortogonal¨

Ortogonal = todas las instrucciones funcionan con todos los modos de direccionamiento.

Set de instrucciones reducidoInstrucciones fáciles de aprender.Sin instrucciones especialesBajo consumoCódigo eficienteCódigo compacto

Page 6: Seminario MSP430

6

Memoria de Datos

Bootstrap Loader

RAM

Vectores deInterrupción

Memoria de Programa

1000h

Registros de Periféricos

SFR’s

Mapa de memoria:

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)200h

FFFFh

0C00h

p

Page 7: Seminario MSP430

7

Memoria deINFORMACION

Bootstrap Loader

RAM

Vectores de interrupción

Memoria dePrograma

1000h

Segmento 0Con vectores de interrupción

Segmento 1

Segmento 2

Segmento 6

Segmento 7

0FFFFh

0FA00h

0FE00h

0FC00h

0F400h

0F200h

01000h

0F000h

01080hSegmento A

Segmento BRegistros deperifé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

Page 8: Seminario MSP430

8

*MSP430 2000 Metering Application Report (SLAA024), Microchip (AN526)

Ciclos de CPU: Instrucciones

MSP430/ CPU de 8 bit MSP430/ CPU de 8 bits8+8 ADD 1 1 1 18x8 MPY 63 71 7 16 16+16 ADD 1 8 1 716x16 MPY 150 333 12 33 Binary to BCD 96 719 9 30

Total 311 1132 30 87

MSP430 v/s CPU de 8 bits

¿Por que una nueva CPU?

Page 9: Seminario MSP430

9

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

Page 10: Seminario MSP430

10

MSP430 v/s otras CPU’s

Bytes Ciclos Bytes Ciclos Bytes Ciclos Bytes Ciclos Bytes Ciclos Bytes Ciclos

Mat. 8b 172 299 116 157 386 318 141 112 354 680 285 387

Matr. 8b 118 2899 364 5300 676 20045 615 17744 356 9098 380 15412

Swt. 8b 180 50 342 131 404 109 209 84 362 388 387 214

Mat 16b 172 343 174 319 598 625 361 426 564 802 315 508

Matr. 16b 156 5784 570 24426 846 27021 825 29468 450 15280 490 23164

Swt. 16b 178 49 388 144 572 163 326 120 404 398 405 230

Mat 32b 250 792 316 782 960 1818 723 2937 876 1756 962 1446

Mat P.F. 662 1207 1042 1601 1778 1599 1420 2487 1450 2458 1429 4664

Filtro FIR 668 152193 1292 164793 2146 248655 1915 206806 1588 245588 1470 567139

Mult. Matr. 252 6633 510 16027 936 36190 345 9454 462 26750 499 26874

Total 2808 170249 5114 213680 9302 336543 6880 269638 6866 303198 6622 640038

Normal. 1.00 1.00 1.82 1.26 3.31 1.98 2.45 1.58 2.45 1.78 2.46 3.76

MSP430F135 ATmega8 PIC18F242 8051 H8/300L MC68HC11

Page 11: Seminario MSP430

11

F41xLCD96

F11x$0.99

x33xLCD120Timer_AUSARTMPY

ROM/OTP+LCD2.5 - 5v FLLBasic Timer, 8-bit T/CTimer/Port Slope ADC

x32xLCD84ADC14

x31xLCD92

FLASH1.8 - 3.6vBasic ClockTimer_AComparator_A

F12xUSART

F13xADC12Timer_A/BUSART

F14xADC12Timer_A/B(2) USARTMPY F43x

FLASH+LCD1.8 - 3.6vFLL+ SVSTimer_A/B, Basic TimerComparator_A

Car

acte

rístic

as/D

esem

peño

F44xLCD160 ADC12Timer_A/B(2) USARTMPY

Línea de productos MSP430

F5xx

F43x

FLASH1v, 50MHzUSB, DMA4Mb memoryIntegrated RF

F15xADC12Timer_A/B(2) USARTMPY, DAC12

Page 12: Seminario MSP430

12

FLASH

1/4kB

RAM

128/256B

Power-OnReset

8MhzBasicClock

Watchdog

15-bit

RISC CPU16-bit

JTA

G/D

eBU

G

ACLK

SMCLK

MAB

MDB

Timer_A3

16-bit

Comp_A

P2

Port 1with IRQcapability

Port2with IRQcapability

MCLK

ACLK

SMCLK

XIN XOUT VCC VSS RST/NMI P1.x

8

P1.x

6

TEST

MSP430x11x(1)

MSP430F1101 1kB Flash $0.99

Page 13: Seminario MSP430

13

FLASH

8/16kB

RAM

512/256B

Power-OnReset

Port 3/48MhzBasicClock

Watchdog

15-bit

Comp_A USART0UART/SPI

RISC CPU16-bit

JTA

G/D

eBU

G

Port 5/6

SMCLK

MAB

MDB

Timer_A3

16-bit

Timer_B3

16-bit

ADC12 200ksps Autoscan Vref Temp

Port 1/2with IRQcapability

MCLK

ACLK

SMCLK

JTAG 4

ACLK

LFXT1 XT2 VCC VSS RST/NMI P5.x P6.x

8 8

P3.x P4.x

8 8 2 2

P1.x P2.x

8

AVCC AVSS

VRef+ VRef-VeRef+

8

MSP430F133 8kB Flash $2.95

MSP430x13x

64 TQFP

Page 14: Seminario MSP430

14

FLASH

32 - 60kB

RAM

1/2kB

Power-OnReset

Port 3/48MhzBasicClock

Watchdog

15-bit

Comp_A USART0UART/SPIUSART1

USART/SPI

RISC CPU16-bit

JTA

G/D

eBU

G

Port 5/6

SMCLK

MAB

MDB

Timer_A3

16-bit

Timer_B7

16-bit

ADC12 200ksps Autoscan Vref Temp

Port 1/2with IRQcapability

MPY/MAC

8/16-bit

MCLK

ACLK

SMCLK

JTAG 4

ACLK

LFXT1 XT2 VCC VSS RST/NMI P5.x P6.x

8 8

P3.x P4.x

8 8 2 2

P1.x P2.x

8

AVCC AVSS

VRef+ VRef-VeRef+

8

MSP430x14x

64 TQFP MSP430F149 60kB Flash $5.95

Page 15: Seminario MSP430

15

ROM2-16kB

orOTP16kB

RAM

128-512B

Power-OnReset

8b Timer/Counter

UART

4MhzFLL

Oscillator

Watchdog

15-bit

BasicTimer 1(2) 8-bit

LCD Driver

92 Seg.

RISC CPU16-bit

JTA

G/T

EST

Port0with IRQcapability

ACLK

MCLK

MAB

MDB

Timer/Portslope ADC

(2) 8-bit

ACLK

MCLK

MCLK

XIN XOUT XBUF VCC VSS RST/NMI P0.x

CIN TP.x

Sx/0x

COMx

Rx

4 6

23

4

8

JTAG 4

MSP430x31x

MSP430C311S 2kB ROM $1.75

Page 16: Seminario MSP430

16

ROM8/16kB

orOTP16kB

RAM

256/512B

Power-OnReset

8b Timer/Counter

UART

4MhzFLL

Oscillator

Watchdog

15-bit

BasicTimer 1(2) 8-bit

LCD Driver

84 Seg.

RISC CPU16-bit

JTA

G/T

EST

Port0with IRQcapability

ACLK

MCLK

MAB

MDB

ADC14

12+2 bit

Timer/Portslope ADC

(2) 8-bit

ACLK

MCLK

MCLK

XIN XOUT XBUF VCC VSS RST/NMI P0.x

CIN TP.x

Sx/0x

COMx

AVCC AGND

AxRext Rx

4 6 6

21

4

8

JTAG 4

SVcc

MSP430x32x

Page 17: Seminario MSP430

17

Power-OnReset

4MhzFLL

Oscillator

BasicTimer 1(2) 8-bit

LCD Driver

120 Seg.

RISC CPU16-bit

JTA

G/T

EST

Port 0with IRQcapability

ACLK

MCLK

MAB

MDB

Timer/PortSlope ADC

(2) 8-bit

8b Timer/CounterUART

ACLK

MCLK

MCLK

ROM24/32kB

orOTP32kB

RAM

1kB

Port 3/4

Watchdog

15-bit

Timer_A5

16-bit

Port 1/2with IRQcapability

USARTUART/SPI

MPY/MAC

8/16-bit

XIN XOUT XBUF VCC VSS RST/NMI P0.xP3.x P4.x

8 8 8

P1.x P2.x

8 8

TP.x Rx

4 6

CIN

Sx/0x

COMx

30

4

3 3

JTAG 4

MSP430x33x

Page 18: Seminario MSP430

18

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsReset, interrupciones y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 19: Seminario MSP430

19

Source

AddressModesDestination Instructions

MSP430

Source

AddressModesDestination Instructions

Otros MicrosSet de instrucciones complejoInstrucciones especiales a aprenderPoco eficienteMayor área de silicio.

MPS430 Posee arquitectura ¨ortogonal¨

Ortogonal = todas las instrucciones funcionan con todos los modos de direccionamiento.

Set de instrucciones reducidoInstrucciones fáciles de aprender.Sin instrucciones especialesBajo consumoCódigo eficienteCódigo compacto

Page 20: Seminario MSP430

20

51 instrucciones disponibles en assembler: 27 instrucciones básicas RISC24 instrucciones emuladas CISC

7 modos de direccionamiento para origen , y 4 para destinoModo de Registro (directo)Modo indexadoModo SimbólicoModo AbsolutoModo IndirectoModo Indirecto c/Auto incrementoModo Inmediato

Procesamiento por Bit, byte o word.Instrucciones y modos de direccionamiento idénticos para RAM, ROM, EPROM, Flash y Periféricos.

MSP430 Tipos de intrucciones:

Page 21: Seminario MSP430

21

ALU de16-bitBuses de datos y direcciones de 16-bit16, 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 cicloSoporte para operaciones Memoria~MemoriaDiseño optimizado para programación en C.

Arquitectura de MSP430

015 0R0/PC - Program Counter

16-bit ALUDST SRC

MDB - meory data bus memory address bus - MAB

16

0R1/SP - Stack PointerR2/SR - Status V SCG1 SCG0 OscOff CPUOff GIE N Z C

R3/CG - Constant Generator

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15

16

BUS DE DATOS BUS DE DIRECCIONES

Page 22: Seminario MSP430

22

Los registros PC y SP son completamente manipulables como cualquier registro. (ambos están mapeados en RAM)

Contador de programas de 16bits -> 64k de código no paginado.

push #01234hpop R8

Word1Word2Word3

0xxxh0xxxh - 20xxxh - 40xxxh - 60xxxh - 8

Address

SP, TOS

TOS: top-of-stack

SP, TOS SP, TOS01234h

Word1Word2Word3

Word1Word2Word3

0xxxh0xxxh - 20xxxh - 40xxxh - 60xxxh - 8

Address

0xxxh0xxxh - 20xxxh - 40xxxh - 60xxxh - 8

Address

0

15 0

rw

R0/PC – Contador de programa

0

15 0

rw

R1/SP - Stack Pointer

MSP430 Program Counter y Stack Pointer

Page 23: Seminario MSP430

23

CZNGIECPUOff

OscOffSCG0SCG1VReservado

15 9 8 7 0

rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

R2/SR – Registro de estado

Bit’s que definen los modos de bajo consumo.

;;------------------------------------------------------------------------; BIT’s del registro de estado;------------------------------------------------------------------------CPUOFF equ 00010hOSCOFF equ 00020hSCG0 equ 00040hSCG1 equ 00080hGIE equ 00008hLPM3 equ SCG1+SCG0+CPUOFF+GIELPM4 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

MSP430 SR (registro de estado)

Bit’s que seleccionan el reloj a usar

Page 24: Seminario MSP430

24

; Ejemplos:

1 CLR dst es reemplazado por: MOV R3,dstR3 ha sido cargado con 00h

2 INC dst es reemplazado por: ADD 0(R3),dstR3 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.

0

15 0

rw

R3/CG - Constant Generator

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)

Page 25: Seminario MSP430

25

MSP430 dispone de 12 registros (R4 ~ R15) de propósito general para ser usados como acumuladores.

0

15 0

rw

R4 ~ R15

MSP430 Registros multi propósito

Registro de propósito general de 16bits, usados como acumuladores.

Page 26: Seminario MSP430

26

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.

add.w R5,R6 ; operación Word registro a registroadd.b R5,R6 ; operación Byte registro a registro

;add.w #02001h,R7 ; operación Word inmediato 2001 a registroadd.b #099h,R7 ; operación Byte inmediato 2001 a registro

;add.w 0200h,R8 ; operación Word RAM 200h a R8add.b 0200h,R8 ; operación Byte RAM 200h a R8

;add.w 0C100h,R9 ; operación Word Flash C100h a R9add.b 0C100h,R9 ; operación Byte Flash C100h a R9

;add.w 0C100h,0200h ; operación Word Flash a RAMadd.b 0C100h,0200h ; operación Byte Flash a RAM

;add.w #01234h,&CCR0 ; operación Word inmediato a Periféricoadd.b #099h,&P1OUT ; operación Byte inmediato a Periférico

Ventajas de arquitectura von-Neumann

Page 27: Seminario MSP430

27

;;; Modo de Registro (Directo), rápido, de solo un ciclo entre registros R0 ~ R15;

add.w R7,R8 ; R7 + R8 >> R8mov.w R7,R8 ; R7 >> R8mov.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 R7mov.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) >> R8mov.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) >> R8mov.b &P1IN,&P2OUT ; Mueve (P1IN) a (P2OUT)

Modos de Direccionamiento:

Page 28: Seminario MSP430

28

;;; Modo Indirecto, Cualquier registro es usado como puntero;

add.w @R8,R9 ; (R8) + R9 >> R9mov.w @R9,0(R12) ; (R9) >>(R12+0) >>> @R12 en destinomov.b @R8,&P2OUT ; (R8) >> P2 registro de periféricodec.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 >> R10mov.w @R10+,0(R12) ; (R10) >> (R12+0),R10+2 >> R10 mov.b @R5+,&P2OUT ; (R5) >> P2OUT, R5+1 >> R5inc.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 >> R8mov.w #0010,&TACTL ; 0Ah >> Timer_A Registro de periféricobit.w #0100h,4(R9) ; Prueba si Bit 8=1 ? En la 4ta word. mov.b #01Fh,0(R12) ; 01Fh >>(R12+0)

Modos de Direccionamiento

Se usa un offset de “0” y direccionamiento indexado para el destino de las operaciones.

Page 29: Seminario MSP430

29NOTA: 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)

Formato I Origen,destino

Formato II Origen,argumento

Formato III +/- Offset 9bit

auxiliares

add(.b) Br jmp Clrc addc(.b) call jc setc and(.b) swpb Jnc clrz bic(.b) sxt jeq setz bis(.b) push(.b) jne clrn bit(.b) pop.(b) jge setn cmp(.b) rra(.b) jl dint dadd(.b) rrc(.b) jn eint mov(.b) inv(.b) nop sub(.b) inc(.b) ret subc(.b) incd(.b) reti xor(.b) dec(.b) decd(.b) adc(b) sbc(.b) clr(.b) dadc(.b) rla(.b) rlc(.b) tst(.b)

MSP430 Set de Instrucciones

Page 30: Seminario MSP430

30

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

MSP430 Instrucciones Emuladas

Page 31: Seminario MSP430

31

Op-Code Source-Register As Destination-RegisterFormato I Ad B/W

Op-Code Ad D/S- RegisterFormato II B/W

Op-Code 10-bit PC offsetFormato III Condition

Ad = modo de direccionamiento usado para destinoAs = modo de direccionamiento usado para origenB/W = operación como byte o como wordCondition = Condición para un salto condicionalD-Register = registro usado como destino D/S-Register = registro usado como origen/destinoOp-code = código de la instrucción usadaS-Register = registro usado como origen

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 carryrlc.b R9 ; 8b de R9 son desplazados a la izquierda a través del carry

jmp Label ; salta a la etiqueta “Label”

MSP430 Formato de instrucciones

Page 32: Seminario MSP430

32

jmp salta a una posición del código en forma incondicionalEs el método incondicional mas rápido de controlar el flujo del programa con offset’sde -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 subrutinasSe 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 stack2 words.

Instrucciones para control de flujo:

j

Page 33: Seminario MSP430

33

Un valor con signo de 10bits, permite saltos en el rango de - 511 a + 512 wordsrelativos 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.

;;Mainloop;-----------------------------------------------------------------------------; Retardo por software en R5;-----------------------------------------------------------------------------

mov.w #1000, R5 ; carga cuenta de 1000Loop1 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:

Page 34: Seminario MSP430

34

;;; Ejemplo de una tabla condicional de salto usando R15

clr.w R15 ; limpia puntero para saltosMainloop br Table(R15) ; saltaTable DW Ref0

DW Ref1DW Ref2

Ref0 clr.b &CACTL1 ; configura comparador Ajmp 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 ;

Los Saltos Largos son posibles hacia cualquier parte de los 64k de memoria y se pueden utilizar con cualquier modo de direccionamiento.

Ejemplos de Saltos Largos:

Page 35: Seminario MSP430

35

;; 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 rutina dirección de retorno >> TOSxor.w #02h,R15 ; conmuta punterojmp Mainloop ; repite

;Table DW Sub1

DW Sub2

Sub1 clr.b &P1OUT ; pone en “0” todas la salida de P1nopret ; retorna de subrutina (mov SP+,PC)

;Sub2 mov.b #0FFh,P1OUT ; pone en “1” todas las salida de P1

nopret ; retorna de subrutina (mov SP+,PC)

;Setup clr R15 ; limpia el puntero de llamadas

mov.b # 0FFh,&P1DIR ; puerto 1 como salidaret ; retorna de subrutina (mov SP+,PC)

Las llamadas son posibles desde y hacia cualquier parte de los 64K de memoria (y en todos los modos de direccionamiento).

Ejemplos de Llamadas a Subrutinas

Page 36: Seminario MSP430

36

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.

Manipulación de Bit’s:

Page 37: Seminario MSP430

37

Ciclos de instrucciones:

Accion: Nº de ciclos

Largo de instruccion

Retorno desde interrupcion (reti) 5 1

Interrupcion 6 -

Reset por WDT 4 -

Reset (RST / NMI) 4 -

Ciclos de instrucciones:

Page 38: Seminario MSP430

38

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 39: Seminario MSP430

39

0FFFFh

16 vectores disponiblesLos vectores se cargan en

el PCPC y SR se respaldan en

el stack en forma automática.

MSP430 Vectores de Interrupcion

Memoria de info

Bootstrap Loader

RAM

Vectores de interrupción

MEMORIA DEPROGRAMA

Registros de periféricos

Fuente Flag Interr. Direccion Prior.

Pwr.Up. Wdt WDTIFG RESET 0FFFEh 15

NMI, OF, FV. NMIIFG No masc 0FFFCh 14

Timer B TBCCR0 Masc 0FFFAh 13

Timer B TBCCR1-6 Masc 0FFF8h 12

Comparador A CAIFG Masc 0FFF6h 11

WDT (interv) WDTIFG Masc 0FFF4h 10

USART0 RX URXIFG0 Masc 0FFF2h 9

USART0 TX UTXIFG0 Masc 0FFF0h 8

ADC12 ADC12IFG Masc 0FFEEh 7

Timer A TACCR0 Masc 0FFECh 6

Timer B TACCR1-2 Masc 0FFEAh 5

I/O port P1 P1IFG0-7 Masc 0FFE8h 4

USART1 RX URXIFG1 Masc 0FFE6h 3

USART1 TX UTXIFG1 Masc 0FFE4h 2

I/O port P2 P2IFG0-7 Masc 0FFE2h 1

0FFE0h 0

Page 40: Seminario MSP430

40

Item1Item2 SP, TOS

Item1Item2

SP, TOSPCSR

Item1Item2 SP, TOS

PCSR

Durante una interrupción:PC copiado en stackSR copiado en stackGIE, CPUOFF, OscOFF y SCG1 son limpiadoslos flag IFG son limpiados cuando provienen de

una fuente única (ej. Usart)

Después de una interrupción:SR es recuperado desde el stackPC 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.

Procesamiento de Interrupciones:

Antes de una interrupción:

Page 41: Seminario MSP430

41

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

MSP430F11x1 posee capacidad de interrupción en ambos flancos en todos sus pinesCualquier interrupción habilitada saca de los modos de bajo consumo a la CPU

;;SetupP2_0 bic.b #01h,&P2DIR ; P2.0 configurada como entrada

bis.b #01h,&P2IES ; Interrupción en flanco H->Lbis.b #01h,&P2IE ; Interrupción habilitada en P2.0

Mainloop mov.w #LPM3+GIE,SR ; Entra en LPM3 con interrupciones habilitadasnop ; 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 P2DW P2_ISR ;

MSP430 Ejemplo de interrupción:

Page 42: Seminario MSP430

42

#include "msp430x11x1.h” ; definición de registros;

ORG 0F000h ; inicio de memoria de programaRESET mov.w #300h,SP ; inicio de stack pointerStopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; detiene WDTSetupP1 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 MSP430x11x1DW RESET ; configura inicio de programaEND

MSP430 Power-UP

1) Stack

2) WDT

3) Vector de RESET

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F1121

Page 43: Seminario MSP430

43

Modos de bajo consumo (Low Power)

Modo LP SCG1 SCG0 OSCOFF CPUOFF CPU Mclk SMclk Aclk DCO

Activo 0 0 0 0 ON ON ON ON ON

LPM0 0 0 0 1 OFF OFF ON ON ON

LPM1 0 1 0 1 OFF OFF ON ON OFF*

LPM2 1 0 0 1 OFF OFF OFF ON OFF*

LPM3 1 0 0 1 OFF OFF OFF ON OFF

LPM4 1 1 1 1 OFF OFF OFF OFF OFF

* DCO esta deshabilitado, pero el generador de DC sigue activo a menos que se manipule sus bits de control.

Modos de Bajo Consumo

Con

sum

oen

uA

@ 1

MH

z

Page 44: Seminario MSP430

44

1mA

9uA

1s 2s

Otra CPU 17,500us “power-up**”

**Microchip (AN606)

MSP430 6us wake-up*

1mA

2uA1s 2s

10-bit Frequency Integrator

/(N+1)

f Crystal

f System

32,768

Digitally Controller OsciallatorDCO

FLL - US Patent # 5,877,641

MSP430 Aplicación para RTC de 1 año:

Page 45: Seminario MSP430

45

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

CR2032 180mAH. Corriente drenada para 10 años de vida = 0.180A/ 10 años / 365 días / 24 horas < 2.2uA

32768CR2032

MSP430x11xVcc Xin

Vss Xout

RST/NMI P2.x

RX P1.xTXDatos…

UART, SPI, IIC ... 12 Pines disponibles

MSP430 Aplicación para RTC de 1 año:

Page 46: Seminario MSP430

46

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 47: Seminario MSP430

47

MSP430x11x/12x Sistema de Reloj Básico

2

SMCLK

Sub-System Clock

SELS DIVS2

SCG1

/1, /2, /4, /8, off

ACLK

Auxiliary Clock

MCLK

Main System Clock

Digital Controlled Oscillator+

DCO3

SELM2

DIVM2

CPUOff

MOD5

LFXTCLK

Modulator

/1, /2, /4, /8, off

DCOCLK

XIN

XOUT

0

1

DCOR

1P2.5/Rosc

0

DC- Gen

SCG0

Vcc

OscOff

LFXT1 Oscillator

XTS

3

2

0,1

/1, /2, /4, /8

Rsel3

Vcc

DIVA

Page 48: Seminario MSP430

48

MSP430x13x/14x/15x/16xSistema de Reloj Básico

DIVA2

SMCLK

Sub-System Clock

SELS DIVS2

SCG1

/1, /2, /4, /8, off

ACLK

Auxiliary Clock

MCLK

Main System Clock

Digital Controlled Oscillator+

DCO3

SELM2

DIVM2

CPUOff

MOD5

LFXTCLK

Modulator

/1, /2, /4, /8, off

DCOCLK

XIN

XOUT

0

1

DCOR

1P2.5/Rosc

0

DC- Gen

SCG0

Vcc

OscOff

LFXT1 Oscillator

XTS

3

2

0,1

/1, /2, /4, /8

XT2IN

XT1OUT

XT2Off

XT2 Oscillator

Rsel3

Vcc

Sistema de reloj F13x ~ F16x

Page 49: Seminario MSP430

49

ACLK= 32768 (o fracción)

MCLK~1MHz DCOCLK (o fracción)

SMCLK~1MHz DCOCLK (o fracción)

32768

Solo se requiere un cristal de reloj; No se necesitan componentes adicionales.

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

MSP430x1xx LF XTAL (Cristal Baja Frec.)

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).

Page 50: Seminario MSP430

50

Sin componentes externos; Solo el oscilador DCO interno.

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

SetupBC bis #OSCOFF,SR ; oscilador externo desactivadoMainloop jmp Mainloop ; no hace nada

MSP430x1xx DCO como reloj.

ACLK= 0

MCLK= DCOCLK (o fracción)

SMCLK= DCOCLK (o fracción)

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.

Page 51: Seminario MSP430

51

MSP430x11x DCO Parameters

Page 52: Seminario MSP430

52

La frecuencia nominal es definida por los bits RSELLa frecuencia generada por el DCO es estable, pero varia con la temperatura y

tensión de alimentación

Set_1MHz bis.b #05h,&BCSCTL1 ; DCO~1MHz;;Set_2MHz bis.b #06h,&BCSCTL1 ; DCO~2MHz;;Set_Fast bis.b #07h,&BCSCTL1 ; DCO~5Mhz

mov.b #0E0h,&DCOCTL ; ;;Set_Slow bic.b #07h,&BCSCTL1 ; DCO~100kHz

mov.b #DIVS1+DIVS0,&BCSCTL2 ; SMCLK=DCOCLK/8

MSP430 Configuración de DCO

Page 53: Seminario MSP430

53

ACLK= LFXT1 (o fracción)

MCLK= LFXT1 o DCOCLK (o fracción)

SMCLK= LFXT1 o DCOCLK (o fracción)

Cristal de alta frecuencia; Requiere condensadores apropiados.

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

SetupBC bis.b #XTS,&BCSCTL1 ; LFXT1/ACLK = XT XTALMainloop jmp Mainloop ; hace nada.

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).

MSP430x11x/12x HF XTAL (Cristal Alta Frec.)

Page 54: Seminario MSP430

54

SMCLK

ACLK

;;Out_ACLK bis.b #01h,&P2DIR ; P2.0 configurado como salida

bis.b #01h,&P2SEL ; P2.0 configurado como “modulo”Out_SMCLK bis.b #010h,&P1DIR ; P1.4 configurado como salida

bis.b #010h,&P1SEL ; P1.4 configurado como “modulo”

TESTVccP2.5VssXOUTXINRSTP2.0/ACLKP2.1P2.2

P1.7P1.6P1.5

SMCLK/P1.4P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

MSP430x11x/12x Buffer de Reloj

Se pueden sacar por los pines las señales de reloj internas:

Page 55: Seminario MSP430

55

Digital Controlled Oscillator DCO+

DCO

3

MOD

5

Modulator MOD

DCOCLKDC-

Generator

SCG0Rsel

Frecuencia de referencia. ACLK or 50/60Hz

SW+HWControl de DCOCLK

Una frecuencia de referencia ej. ACLK o 50/60Hz es usada para medir DCOCLK’sManipulación de software periódica o predefinida estabiliza DCOCLKDCOCLK es programable digitalmente en el rango de: 100kHz - 8Mhz

Sistema de Reloj SW/HW FLL (frequency Locked Loop)

Page 56: Seminario MSP430

56

15 0

Timer_A0

123

15 0

CCI2B

CCR2

Capture

Destino 1,000,000Hz DCOCLK para timer

Captura 122us

Ejemplo: DCOCLK= 1,000,000 si ACLK= 8192ACLK (8192Hz) dispara una captura en CCI2B, DCOCLK es la fuente de reloj

para el Timer_ADCOCLK es la fuente de reloj para timer_A , pensando en 1,000,000Hz.Captura debe ser = 1,000,000/8192 ~122

CCI2B_ISR mov &CCR2,R14 ; R14 = captura SMCLKsub R15,R14 ; R14 = captura diferenciamov &CCR2,R15 ; R15 = captura SMCLKcmp #122,R14 ; Delta = SMCLK/(3278/4)jlo IncDCO ; jeq DoneDCO ; si es igual termina

DecDCO dec.b &DCOCTL ; decrementa si es mayorjmp Test_DCO ;

IncDCO inc.b &DCOCTL ; incrementa si es menorjmp Test_DCO ;

DoneDCO clr &CCTL2 ; detiene CCR2Test_DCO reti ; retorna de subrutina

Intervalo

CCI2B-ISR CCI2B_ISR

Sistema de Reloj SW/HW FLL (frequency Locked Loop)

Page 57: Seminario MSP430

57

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 58: Seminario MSP430

58

MSP430F Registros de periféricos

0FFFFH

0200h

000h

MSP430 usa arquitectura Von NewanTodos los periféricos están mapeados

en memoria.Se puede utilizar cualquier instrucción

con estos registros

Info. Memory

Bootstrap Loader

RAM

Vectores de interrupción

Memoria dePrograma

Registros de Periféricos

Page 59: Seminario MSP430

59

MSP430 Controlador de Memoria FLASH

MEMORIA FLASHMEMORIA FLASH

Generador interno de voltaje de programación.

Programación de Byte o word.

Operación Ultra low-power.

Borrado de memoria por segmentos o masivo.

Programación desde 2.7v

Generador de temporización interno (independiente)

No se puede ejecutar código desde la Flash (ROM) mientras se estáescribiendo.

Page 60: Seminario MSP430

60

MSP430 Controlador de Memoria FLASH

La memoria Flash está segmentada en bloques de 128byte para datos, y en bloques de 512bytes para programa.

Cualquier acceso a los registros de control de memoria Flash, esta protegido por una contraseña.

El borrado o escritura se puede efectuar desde la memoria de programa o desde RAM.

Si la escritura o borrado se inicia desde la memoria de programa, la CPU es detenida mientras dura el proceso.

Al borrar la memoria, el estado lógico de cada bit es ”1”, la escritura pone los bit’s en estado lógico “0”.

Page 61: Seminario MSP430

61

MSP430 Supervisor de Alimentación

SUPERVISOR DE ALIMENTACIONSUPERVISOR DE ALIMENTACION

Monitoreo de AVcc.

Generación de POR configurable.

Salida del comparador SVS accesible por software.

Condición de Bajo voltaje Accesible por software.

14 niveles de límite configurable por software.

Canal Externo para monitorear voltaje.

Presente en Micros MSP430F15x / F16x

Page 62: Seminario MSP430

62

MSP430 Supervisor de Alimentación

Page 63: Seminario MSP430

63

MSP430 Multiplicador por Hardware

MULTIPLICADOR POR HARDWAREMULTIPLICADOR POR HARDWARE

Multiplicación sin signo

Multiplicación con signo

Multiplicación y acumulación sin signo

Multiplicación y acumulación con signo

Operación en 16x16, 16x8, 8x16 y 8x8 bits

Operación en un solo ciclo.

Presente en Micros MSP430F14x ~ F16x

Page 64: Seminario MSP430

64

MAC 134h

MPYS 132h

MPY 130h

OP2 138h

16x16 Multiplier

32-Bit Multiplexer

32-Bit Adder

015

15 0

31 0RESLO 013AhRESHI 13ChC SSUMEXT 13Eh

Multiplexer

OP1015

MACS 136h

MPY, MPYS, MAC, MACS -16 u 8-bit

No hay instrucciones especiales.

La operación comienza moviendo el primer operando y termina moviendo el segundo operando.

La multiplicación esta lista en el siguiente ciclo.

mov.w #01234h,&MACS ; Carga primer operandomov.w #04567h,&OP2 ; Carga segundo operando

; Operación lista.

MSP430 Multiplicador por Hardware

Page 65: Seminario MSP430

65

Controlador de Acceso Directo a memoria

CONTROLADOR DE DMACONTROLADOR DE DMA

Transfiere datos sin intervención de la CPU.3 Canales de transferencia independientes.Prioridad de transferencia configurable.Requiere solo 2 Ciclos de MCLK.Capacidad de transferencia de byte, word, o combinaciones.Transferencia de bloques de hasta 64k (byte o word)Disparador de transferencia configurable.Flanco de disparo configurable.4 modos de direccionamiento.Modos de transferencia:

SingleBlockBurst-Block

Presente en Micros MSP430F15x / F16x

Page 66: Seminario MSP430

66

Controlador de Acceso Directo a memoria

Page 67: Seminario MSP430

67

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operacionSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 68: Seminario MSP430

68

MSP430F Registros de periféricos

0FFFFH

0200h

000h

MSP430 usa arquitectura Von NewanTodos los periféricos están mapeadosen memoria.Se puede utilizar cualquier instrucción con estos registros

Info. Memory

Bootstrap Loader

RAM

Vectores de interrupción

Memoria dePrograma

Registros de Periféricos

Page 69: Seminario MSP430

69

MSP430 Puertos I/O

Puertos de Entrada / SalidaPuertos de Entrada / Salida

Dirección de cada pin es configurable independientemente.Es posible cualquier combinación de entrada / salida.Registros de datos independientes de entrada y salida.

Interrupciones en todos los pines de los puertos P1 y P2.Habilitación y selección de flanco independiente para cada pinFlags de interrupción independientes para cada pin.

Registros para habilitación de módulos periféricos independientes para cada puerto, y concentrados en un solo registro.

I/O

Page 70: Seminario MSP430

70

MSP430 Puertos I/O

Puertos Configurados por múltiples registros de 8 bits:P1 y P2 con capacidad de interrupción.P3 en adelante sin capacidad de interrupción. Cada pin posee protección ESD (Diodos para 2mA)

PxINPxIN

PxOUTPxOUT

PxDIRPxDIR

PxSELPxSEL

PxINPxIN

PxOUTPxOUT

PxDIRPxDIR

PxSELPxSEL

PxIFGPxIFG

PxIESPxIES

PxIEPxIE

Puertos P1 y P2: Puertos P3 en adelante.

Page 71: Seminario MSP430

71

MSP430 Watchdog Timer

WATCHDOG TIMERWATCHDOG TIMER

Puede operar como Watchdog Timer o temporizador.Cualquier acceso al registro WDTCTL esta protegido por contraseña.8 Opciones de post-scaller configurables por software.Fuente de reloj seleccionable por software (dependiente).

Registro de control mapeado en ram.Completamente configurable por software.Puede ser detenido para ahorrar energía.

Page 72: Seminario MSP430

72

InterruptY

1

2

3

4Q6

Q9

Q13

Q15

16 bitCounter

CLK

A

B

1

1

A EN

PUC

SMCLK

ACLK

Clear

PasswordComparator

0

0

0

0

1

1

1

1

CNTCL

TMSEL

NMI

NMIES

IS1

SSEL

IS0

HOLD

EQU

EQU Write Enable LowByte R/ W

MDB

LSB

16

MSB

WDTCTL

MSP430 Watchdog Timer

Cualquier acceso al registro WDTCTL debe incluir 05Axxh a modo de contraseñaRegistro de control mapeado en ram, completamente configurable por software.

Clk/32.768

Clk/8.192

Clk/512

Clk/64

Page 73: Seminario MSP430

73

MDB, Byte Inferior

Comparación de contraseña

MDB, Byte Superior R/W

EQU

Lectura: Byte Superior se lee como 069hEscritura: Byte Superior se debe escribir como 05Ah,

de otra forma se produce una violación de contraseña y se efectúa un PUC

HOLD NMINMIES TMSEL CNTCL SSEL IS1

7 0

ISO

0120h

WDT_key equ 05A00h ; Contraseña de acceso a WDT;WDT_Stop mov.w #(WDT_Key+80h),&WDTCTL ; detiene WDT;WDT_250 mov.w #(WDT_Key+1Dh),&WDTCTL ; Configura como timer.

MSP430 Ejemplo Watchdog Timer

Page 74: Seminario MSP430

74

MSP430 Comparador A

COMPARADORCOMPARADOR ANALOGOANALOGO AA

Todos los terminales disponiblesReferencia internaFiltro pasa bajos para salida.Salida asignable a captura de TAControl de energía por softwareIntercambio de entradas para compensación de offset (CAEX)Generador de voltaje interno para referenciaReferencia interna configurable por software.

Page 75: Seminario MSP430

75

MSP430 Comparador A

Page 76: Seminario MSP430

76

MSP430 Timers A y B

TIMERSTIMERS

Toda CPU MSP430 cuenta con Timer A3, algunas CPU’s incluyen Timer B3 y otras Timer B7

Contadores de 16bitsInterrupción por rebalse del contadorFuentes de reloj seleccionadas y configuradas por software.Cuatro modos de operación.3 (o 7) registros de captura/comparación.Salidas configurables con capacidad PWM (por hardware)Vector de interrupción para decodificación rápida de interrupción.El Timer B puede contar en 8,10,12 o 16 bits.

Page 77: Seminario MSP430

77

0FFFFh

0h

CCR0

Modo Stop/HaltTimer detenido permanentemente

Modo UPEl timer cuenta desde 0 hasta CCR0

0FFFFh

0h

CCR0

UP/DOWN Mode

Continuous Mode

0FFFFh

0h

Modo ContinuousEl timer cuenta hasta rebalsar.

Modo UP/DOWNEl timer cuenta entre 0 , CCR0 y 0

MSP430 Timer’s Modos de cuenta

Page 78: Seminario MSP430

78

MSP430 Timer’s Modos de salida

Los Registro CCR poseen salidas independientes

Multiples modos de operación.

Salidas controladas por hardware.

Page 79: Seminario MSP430

79

Divider1/2/4/8

Mode Continous,UP, UP/Down

16-bit Timer CLK

RC

ACLKSMCLK

P1.0

P2.1

Set_TAIFG

15 0

P1.1

P1.5

OUT_0CaptureMode

OutputUnit

GNDVCC

P1.1P2.2

Comparator 0

Capture

Equ0CCI0

Capture/ Compare RegisterCCR0

15 0

P1.2

P1.6

P2.3

OUT_1CaptureMode

OutputUnit

GNDVCC

CCI1

P1.2CAOUT

Comparator 1

Capture

Equ1

Capture/ Compare RegisterCCR1

15 0

OUT_2 P1.3

P1.7

P2.4

CaptureMode

OutputUnit

GNDVCC

CCI2

P1.3ACLK

Comparator 2

Capture

Equ2

Capture/ Compare RegisterCCR2

15 0

MSP430 Timer A3

Page 80: Seminario MSP430

80

0

162h

CCTLx

rw-

15

un-SCS OUTMODx

(0)rw-(0)

CAPINPUTSELECT

CAPTUREMODE

rrw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

CCIFGCOVOUTCCICCIE

16Ehto rw-

(0)

SCCI used

015CCRx

rw-(0)

021520172hto017Eh

CCIx

to Port0

15 0Capture/Compare Register

CCRx

Comparator x

OverflowxLogic Data Bus Timer Bus

EQUx CAPx0

COVx

Capture

DisabledPos. EdgeNeg. EdgeBoth Edges1 1

010 10 0

CCMx1 CCMx0

CAPxCCISx0

23

CCISx1

01CCIxB

VCCGND

CCIxA

Set_CCIFGx

1

SCCIxENA Y

Capture Mode

MSP430 Timer A3 Unidades CCRx

Page 81: Seminario MSP430

81

CCR1 - CCR6

Divider1/2/4/8

Mode Continous,UP, UP/Down

8, 10, 12 or 16-bit Timer CLK

RC

ACLKSMCLK

P4.7

P4.7

Set_TBIFG

15 0

P4.0

ADC12I2

OUT_0CaptureMode Output

UnitGNDVCC

P4.0P4.0

Comparator 0

Capture

Equ0CCI0

Compare Latch TBCL0

15 0

OUT_7

P4.6

CaptureMode Output

UnitGNDVCC

CCI7

P4.6ACLK

Comparator 7

Capture

Equ7

Compare Latch TBCL7

15 0

Capture/ Compare CCR7

Capture / Compare CCR0

P4.1P4.2P4.3P4.4P4.5

P4.1P4.2P4.3P4.4P4.5

MSP430 Timer B3/7 ( F13x en adelante )

Page 82: Seminario MSP430

82

MSP430 Timer B3/7 Unidades CCRx

to Port0

15 0

Capture/Compare RegisterCCRx

Capture

Comparator x

Overflow xLogic

Timer Bus

EQUx

Set_CCIFGx

Capture

Mode

CCIx

CCISx0

CCMx1 CCMx0

23

CCISx101

CAPx

CCIxB

VCCGND

CCIxA

CAPx0

1

COVx

to Port0Capture Latch TBCLx

Reset

Reset

POR

DisabledPos. EdgeNeg. EdgeBoth Edges1 1

010 10 0

CCMx1 CCMx0 Load

HighZero

EQU0Up/Down

CAPCCDL0CCLD1

0

182h

CCTLx

rw-

15

SCS OUTMODx

(0)rw-(0)

CAPINPUTSELECT

CAPTUREMODE

rrw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

rw-(0)

CCIFGCOVOUTCCICCIE

19Ahto rw-

(0)

CLLD

Page 83: Seminario MSP430

83

Ejemplo de generación de PWM Sin intervención de la CPU

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3

TA1/P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

SetupP1 bis.b #004h,&P1DIR ; P1.2 salidabis.b #004h,&P1SEL ; P1.2 TA1 configura modulo

SetupC0 mov.w #512-1,&CCR0 ; define periodo PWM SetupC1 mov.w #OUTMOD2+OUTMOD1+OUTMOD0,&CCTL1 ; CCR1 modo reset/set

mov.w #128,&CCR1 ; CCR1 ciclo útil PWM

SetupTA mov.w #TASSEL1+MC0,&TACTL ; SMCLK, modo: up;

Mainloop jmp #Mainloop ; loop infinito

0 - CCR0

CCR1

0 - CCR0

CCR1

0 - CCR0

CCR1

Timer A Ejemplo de PWM Up-Mode

Page 84: Seminario MSP430

84

MSP430 Puertos Serie

Pueden operar como:Modo USART

Modo SPI

Modo I2C (solo procesadores F15x y F16x)

CPU’s con 1 y 2 puertos serie idénticos.

Page 85: Seminario MSP430

85

MSP430 Puerto Serie (Modo USART)

PUERTO SERIE: USARTPUERTO SERIE: USART

Datos de 7 u 8 bits.Generador / Detector de paridad por hardware: (odd, even, none)Registros de desplazamiento y buffers independientes para transmisión y recepciónTransmisión y recepción de datos partiendo por bit LSB.Soporte por hardware para protocolos “idle line” y “address-bit” para sistemas multi-procesadores.Detección de bit de partida para salir de modos de bajo consumo.Generador de Baudios con modulación.Flags de estado para detección de errores y detección de dirección.Interrupciones independientes para transmisión y recepción.

Page 86: Seminario MSP430

86

MSP430 Puerto Serie (Modo USART)

Page 87: Seminario MSP430

87

MSP430 Puerto Serie (Modo SPI)

PUERTO SERIE: SPIPUERTO SERIE: SPI

Datos de 7 u 8 bits.Operación como SPI de 3 o 4 pines.Modo Maestro o EsclavoRegistros de desplazamiento y buffers independientes para transmisión y recepciónPolaridad y fase de reloj configurable.Frecuencia de reloj programable en modo MasterInterrupciones independientes para transmisión y recepción.

Page 88: Seminario MSP430

88

MSP430 Puerto Serie (Modo SPI)

Page 89: Seminario MSP430

89

MSP430 Puerto Serie (Modo I2C)

PUERTO SERIE: IPUERTO SERIE: I22CC

Solo esta presente en CPU’s F15x y F16x en USART0Cumple con especificaciones de Philips (I2C v2.1)

Formato Byte/Word para transferencia.Direccionamiento de 7 o 10 bitsLlamada generalStart / restart / StopModo Multi Master transmitter / Slave ReceiverModo Multi Master Receive / Slave TransmitterModo Combinado Master TX / RX y RX / TXModo Standard (100kbps) y Modo Fast (400kbps)

FIFO incorporada para lectura/escritura.Generación de reloj programable.Datos de 16 bits de ancho para aumentar ancho de bandaCuenta automática de bytes de datos

Page 90: Seminario MSP430

90

MSP430 Puerto Serie (Modo I2C)

Page 91: Seminario MSP430

91

CONVERSORES ANALOGO / DIGITALCONVERSORES ANALOGO / DIGITAL

Capacidad de muestreo de 200ksps+8 Canales externos / 4 Canales internos.Conversión iniciada por software, TA o TB*Auto-scan con 16 registros de conversión.Sample&hold programable.Medición de referencias y tensión interna.Diodo de temperatura interno.4 Modos de conversión:

Conversión única en un canalConversión única en secuencia de canalesConversiones sucesivas en un canalConversiones sucesivas en secuencias de canales

MSP430 ADC10 / ADC12

ADC12 / ADC10

Page 92: Seminario MSP430

92

Mul

tiple

xer

AVCCAVSS

Sample&

Hold

CLKSRCx

ADC12Ix

Oscillator

SamplingTimer

Ve REF+

V REF+

VREF-/ Ve REF-

VR-

12-bit SAR

Reference1.5V or 2.5V

16 x 12-bitSampleBuffer

ConversionClock

VR-

AVCC

A0A1A2A3A5A5A6A7

16 x 8-bitBufferControl

ADC12Intx

MSP430 ADC10 (F11x2 ~ F12x2)

10bit SAR

16 x 10bits sample buffer

Page 93: Seminario MSP430

93

a0a1a2a3a4a5

a7a6

Analog

Multi-plexer

12 : 1

AVCC

AVSS

1.5V or 2.5V

AVSS

AVCCVREF+

AVCCAVSS

Sample&

Hold

CLKSRC1CLKSRC2CLKSRC3

ADC12OSC

InternalOscillator

ADC12CLK

S/H

Divide by1,2,3,4,5,6,7,8

SamplingTimer

a8a9a10a11

12-bit S A R

ADC12DIV

REFON2_5V

ISSHSHP

ADC12CTLx.0..3

ADC12CTLx.4..6

T

SHT1SHT0

ADC12ONADC12SSEL

SHS

VeREF+

VREF+V REF- / VeREF-

VR+VR-

12-bit A/D converter core

ENC

Conversion CTLMSC

Ref_X

INCH= 0Ah

Ref_X

SAMPCON

ADC12SCADC12I1ADC12I2ADC12I3

Referenceon on

0140h0142h

015Ch015Eh

080h081h

08Eh08Fh

ADC12MEM0ADC12MEM1

ADC12MEM14ADC12MEM15

16 x 12-bitADC Memory

16 x 8-bitADC Memory Control

ADC12MEM10ADC12MEM9ADC12MEM8

ADC12MEM6ADC12MEM7

ADC12MEM5

ADC12MEM11

ADC12MEM4

ADC12MEM3ADC12MEM2

ADC12MEM12ADC12MEM13

ADC12CTL0ADC12CTL1ADC12CTL2ADC12CTL3ADC12CTL4ADC12CTL5ADC12CTL6ADC12CTL7ADC12CTL8ADC12CTL9ADC12CTL10ADC12CTL11ADC12CTL12ADC12CTL13ADC12CTL14ADC12CTL15

082h083h084h085h086h

088h087h

089h08Ah08Bh08Ch08Dh

0144h0146h0148h014Ah014Ch014Eh0150h0152h0154h0156h0158h015Ah

SHI

MSP430F14x ~ 16x ADC12

Page 94: Seminario MSP430

94

CONVERSORES DIGITAL / ANALOGO CONVERSORES DIGITAL / ANALOGO

2 Conversores Monolíticos de 12bit’s con salida de voltaje.Resolución configurable de 8 o 12 bit’sSettling time configurable (para ahorro de energía)Selección de referencia interna o externa.Formato de datos Binario o complemento de 2.Auto calibración para corrección de offset.Capacidad de sincronización para múltiples dac’sPresente en MicrosMSP430F15x/F16x

MSP430 DAC12

DAC12

Page 95: Seminario MSP430

95

MSP430 DAC12

Comparte referencias con el conversor Analogo / Digital

Page 96: Seminario MSP430

96

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operaciónSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 97: Seminario MSP430

97

Desarrollo con MSP430

CONCEPTO DE DESARROLLO Y DEPURACIONCONCEPTO DE DESARROLLO Y DEPURACION

Programación y depuración IN-CIRCUIT vía JTAGJTAG permite emulación y control en tiempo real.JTAG permite acceso completo a registros, emulación paso a paso, etc…JTAG protegido por fusible FISICOProgramador JTAG de bajo costo

Programación IN-CIRCUIT vía BSL (producción)BSL solo para propósitos de programación

Page 98: Seminario MSP430

98

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

TDO/P1.7TDI/P1.6

TMS/P1.5TCK/P1.4

P1.3P1.2P1.1P1.0P2.4P2.3

MSP430F11x1

Adaptador deniveles

Puerto Paralelo

MSP-FETxxxxxx

Desarrollo con MSP430x11x/12x

TEST en alto, habilita JTAGLos terminales usados por JTAG están

compartidos con los terminales P1.7-P1.4 en los micros de 20 y 28

pines.

7

Page 99: Seminario MSP430

99

VCCRSTVSSVss

TDOTDI

TMSTCK

MSP430F14x

Adaptador de niveles

Puerto Paralelo

MSP-FETxxxxxx

Desarrollo con MSP430 x13x ~ 4xx

Los terminales para JTAG son dedicados

7

Page 100: Seminario MSP430

100

Aplicación REAL con MSP430F135

Conector JTAG

MSP430F135

Page 101: Seminario MSP430

101

MCU: Variante:MSP-FET430X110 MSP430x11x(1)MSP-FET430P120 MSP430x12xMSP-FET430P140 MSP430x13x/14xMSP-FET430P410 MSP430x41xMSP-FET430P430 MSP430x42x/43x MSP-EVK430S320 MSP430x31x/32xMSP-EVK430S330 MSP430x33x

Familia de Herramientas para MSP430

Page 102: Seminario MSP430

102

LED en P1.0

Terminales disponibles.

• Kickstart IDE• Emulación In-Circuit / Software • Ejecución de código en tiempo real.• HW breakpoints/single step• Visualización/modificación de registros y memoria.

Interfaz única para todas las variantes de MSP430.

IAR Embedded Workbench

Herramientas de Desarrollo y Depuración.

Page 103: Seminario MSP430

103

LED en P1.0

Terminales disponibles.

• Kickstart IDE• Emulación In-Circuit / Software • Ejecución de código en tiempo real.• HW breakpoints/single step• Visualización/modificación de registros y memoria.

Interfaz única para todas las variantes de MSP430.

IAR Embedded Workbench

Herramientas de Desarrollo y Depuración.

Page 104: Seminario MSP430

104

TESTVccP2.5VssXOUTXINRSTP2.0P2.1P2.2

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.4P2.3

TXD

RXD

MSP430F1121

Los terminales P1.1 (RXD) y P2.2 (TXD) se usan como un puerto serie a 9600bps

(automático sin necesidad de cristal), Se efectúa la secuencia requerida en los

terminales TEST y RST/NMI para iniciar la transferencia de datos.

Bootloader starts

RST/NMI

Test

Test (internal)

Puerto Serie

RS232 Driver

0C00h

Bootstrap Loader en MSP430:

Falsh de datos

Bootstrap Loader

RAM

Vectores deInterrupción

Memoria deprograma

Registros dePeriféricos

SFR’s

Page 105: Seminario MSP430

105

Programación y depuración en tiempo real aislada con MSP430

EMULACION AISALADAEMULACION AISALADA

Se utiliza una interfaz opto-aislada en lugar del Level Shiffter tradicional.La interfaz es de fácil construcción.Permite programar y depurar sistemas alimentados directamente desde las líneas de poder de AC

Page 106: Seminario MSP430

106

Seminario de MSP430: Programa

MSP430 IntroducciónCPU de 16bitsInterrupciones, Reset y modos de operaciónSistema de RelojPeriféricos auxiliaresPeriféricos comunesDesarrollo y depuraciónDemostración.

Page 107: Seminario MSP430

107