Sie sind auf Seite 1von 107

1

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Reset, interrupciones y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

Finalidad / Orientacin de MSP430

APLICACIONES

Sistemas alimentados con bateras (low power) Sistemas de procesamiento de seales Sistemas de tamao limitado Sistemas de control en general. Sistemas de control numrico

Caractersticas generales (Rangos de operacin)

CPU RISC de 16-bit de Arquitectura Von Neuwman Solo 27 instrucciones bsica a aprender. (+24 emuladas) Mltiples 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) Alimentacin : 1.8 ~ 3.8v (operacin) Alimentacin : 2.7 ~ 3.8v (programacin) Frecuencia: DC ~ 8MHz Temperatura: - 40 ~ + 85C Desarrollo y depuracin IN-CIRCUIT
4

MPS430 Posee arquitectura ortogonal


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

Set de instrucciones reducido Instrucciones fciles de aprender. Sin instrucciones especiales Bajo consumo Cdigo eficiente Cdigo compacto

MSP430

Address Modes Destination

Instructions

Source

Otros Micros

Address Modes Destination

Set de instrucciones complejo Instrucciones especiales a aprender Poco eficiente Mayor rea de silicio.
5

Instructions

Mapa de memoria:
Vectores de Interrupcin
FFFFh

Vectores de interrupcin de 16-bit


Memoria de Programa

Memoria Flash, OTP o ROM para cdigo. 128/256 Bytes de memoria Flash de informacin.
1000h

Memoria de Datos
Bootstrap Loader

0C00h

ROM Bootstrap loader SRAM

RAM
200h

Registros de Perifricos SFRs

Registros de perifricos (SFRs)

Distribucin de Memoria y Perifricos:


0FFFFh Segmento 0
Con vectores de interrupcin

ROM, RAM, Flash y SFRs 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 Programacin va JTAG o BSL in-circuit. Proteccin por contrasea o fusible fsico de seguridad
Vectores de interrupcin

0FE00h 0FC00h 0FA00h

Segmento 1 Segmento 2

Memoria de Programa

0F400h Segmento 6
Memoria de INFORMACION
Bootstrap Loader

0F200h
1000h

0F000h

Segmento 7

RAM

01080h
Registros de perifricos

Segmento A Segmento B

01000h
7

MSP430 v/s CPU de 8 bits

Por que una nueva CPU?


Ciclos de CPU: 8+8 ADD 8x8 MPY 16+16 ADD 16x16 MPY Binary to BCD Total MSP430/ CPU de 8 bit 1 1 63 71 1 8 150 333 96 719 311 1132 Instrucciones MSP430/ CPU de 8 bits 1 1 7 16 1 7 12 33 9 30 30 87

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

MSP430 v/s otras CPUs


Comparacin respecto a otros microcontroladores:
Tamao del cdigo (bytes)

Frente a similares funciones matemticas y en condiciones similares.

Ciclos de instruccin

MSP430 v/s otras CPUs


MSP430F135
Bytes Mat. 8b Matr. 8b Swt. 8b Mat 16b Matr. 16b Swt. 16b Mat 32b Mat P.F. Filtro FIR Mult. Matr. Total Normal. 172 118 180 172 156 178 250 662 668 252 2808 1.00 Ciclos 299 2899 50 343 5784 49 792 1207 152193 6633 170249 1.00

ATmega8
Bytes 116 364 342 174 570 388 316 1042 1292 510 5114 1.82 Ciclos 157 5300 131 319 24426 144 782 1601 164793 16027 213680 1.26

PIC18F242
Bytes 386 676 404 598 846 572 960 1778 2146 936 9302 3.31 Ciclos 318 20045 109 625 27021 163 1818 1599 248655 36190 336543 1.98

8051
Bytes 141 615 209 361 825 326 723 1420 1915 345 6880 2.45 Ciclos 112 17744 84 426 29468 120 2937 2487 206806 9454 269638 1.58

H8/300L
Bytes 354 356 362 564 450 404 876 1450 1588 462 6866 2.45 Ciclos 680 9098 388 802 15280 398 1756 2458 245588 26750 303198 1.78

MC68HC11
Bytes 285 380 387 315 490 405 962 1429 1470 499 6622 2.46 Ciclos 387 15412 214 508 23164 230 1446 4664 567139 26874 640038 3.76

10

Lnea de productos MSP430


FLASH
1.8 - 3.6v
Basic Clock Timer_A Comparator_A

FLASH
1v, 50MHz USB, DMA 4Mb memory Integrated RF

FLASH+LCD
1.8 - 3.6v FLL+ SVS Timer_A/B, Basic Timer Comparator_A

F5xx

Caractersticas/Desempeo

ROM/OTP+LCD
2.5 - 5v FLL Basic Timer, 8-bit T/C Timer/Port Slope ADC

F15x
ADC12 Timer_A/B (2) USART MPY, DAC12

F44x
LCD160 ADC12 Timer_A/B (2) USART MPY

F14x
ADC12 Timer_A/B (2) USART MPY

x33x
LCD120 Timer_A USART MPY

F13x
ADC12 Timer_A/B USART

F43x

x32x
LCD84 ADC14

F12x
USART

F43x F41x
LCD96

x31x
LCD92

F11x
$0.99

11

MSP430x11x(1)
XIN XOUT VCC VSS RST/NMI P1.x 8 ACLK

8Mhz Basic Clock

FLASH 1/4kB

RAM 128/256B

Power-On Reset

Port 1 with IRQ capability

SMCLK

MCLK

RISC CPU 16-bit

JTAG/DeBUG

MAB

MDB

TEST

ACLK

Watchdog 15-bit

Timer_A3 16-bit

Comp_A

Port2 with IRQ capability


P2

SMCLK 6 P1.x

MSP430F1101 1kB Flash $0.99

12

MSP430x13x
LFXT1 2 XT2 2 ACLK VCC VSS AVCC AVSS RST/NMI P1.x 8 P2.x 8 P3.x 8 P4.x 8 P5.x 8 P6.x 8

8Mhz Basic Clock

FLASH 8/16kB

RAM 512/256B

Power-On Reset

Port 1/2 with IRQ capability

Port 3/4

Port 5/6

SMCLK

MCLK

RISC CPU 16-bit

JTAG/DeBUG

MAB

MDB

JTAG

ACLK

Watchdog 15-bit

Timer_A3 16-bit

Timer_B3 16-bit

SMCLK

ADC12 200ksps Autoscan Vref Temp

Comp_A

USART0 UART/SPI

VRef+ VeRef+ VRef-

64 TQFP

MSP430F133 8kB Flash $2.95

13

MSP430x14x
LFXT1 2 XT2 2 ACLK VCC VSS AVCC AVSS RST/NMI P1.x 8 P2.x 8 P3.x 8 P4.x 8 P5.x 8 P6.x 8

8Mhz Basic Clock

FLASH 32 - 60kB

RAM 1/2kB

Power-On Reset

Port 1/2 with IRQ capability

Port 3/4

Port 5/6

SMCLK

MCLK

RISC CPU 16-bit

JTAG/DeBUG

MAB

MDB

JTAG

MPY/MAC 8/16-bit

ACLK

Watchdog 15-bit

Timer_A3 16-bit

Timer_B7 16-bit

SMCLK

ADC12 200ksps Autoscan Vref Temp

Comp_A

USART0 UART/SPI USART1 USART/SPI

VRef+ VeRef+ VRef-

64 TQFP

MSP430F149 60kB Flash $5.95

14

MSP430x31x
XIN XOUT XBUF VCC VSS RST/NMI P0.x 8 ACLK

4Mhz FLL Oscillator

MCLK

ROM 2-16kB or OTP 16kB

RAM 128-512B

Power-On Reset

8b Timer/ Counter UART

Port0 with IRQ capability

MCLK

RISC CPU 16-bit

JTAG/TEST

MAB

MDB

JTAG

ACLK

Watchdog 15-bit

Timer/Port slope ADC (2) 8-bit

Basic Timer 1 (2) 8-bit

LCD Driver 23 92 Seg.


4

Sx/0x

MCLK 6 CIN TP.x Rx 4

COMx

MSP430C311S 2kB ROM $1.75

15

MSP430x32x
XIN XOUT XBUF VCC VSS AVCC AGND RST/NMI P0.x 8

4Mhz FLL Oscillator

ACLK

MCLK

ROM 8/16kB or OTP 16kB

RAM 256/512B

Power-On Reset

8b Timer/ Counter UART

Port0 with IRQ capability

MCLK

RISC CPU 16-bit

JTAG/TEST

MAB

MDB

JTAG

ACLK

Watchdog 15-bit

ADC14 12+2 bit

Timer/Port slope ADC (2) 8-bit

Basic Timer 1 (2) 8-bit

LCD Driver 21 Sx/0x 84 Seg.


4 COMx

MCLK 6 Rext Ax SVcc CIN 6 TP.x Rx


16

MSP430x33x
XIN XOUT XBUF VCC 3 ACLK VSS 3 RST/NMI P1.x 8 P2.x 8 P3.x 8 P4.x 8 P0.x 8

4Mhz FLL Oscillator

MCLK

ROM 24/32kB or OTP 32kB

RAM 1kB

Power-On Reset

Port 1/2 with IRQ capability

Port 3/4

Port 0 with IRQ capability

MCLK

RISC CPU 16-bit

JTAG/TEST

MAB

MDB

JTAG ACLK

MPY/MAC 8/16-bit

Watchdog 15-bit

Timer_A5 16-bit

Timer/Port Slope ADC (2) 8-bit

8b Timer/ Counter UART

USART UART/SPI

Basic Timer 1 (2) 8-bit

LCD Driver 30 120 Seg.


4

Sx/0x

MCLK

COMx

6 CIN TP.x Rx

17

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Reset, interrupciones y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

18

MPS430 Posee arquitectura ortogonal


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

Set de instrucciones reducido Instrucciones fciles de aprender. Sin instrucciones especiales Bajo consumo Cdigo eficiente Cdigo compacto

MSP430

Address Modes Destination

Instructions

Source

Otros Micros

Address Modes Destination

Set de instrucciones complejo Instrucciones especiales a aprender Poco eficiente Mayor rea de silicio.
19

Instructions

MSP430 Tipos de intrucciones:


51 instrucciones disponibles en assembler: 27 instrucciones bsicas RISC 24 instrucciones emuladas CISC 7 modos de direccionamiento para origen , y 4 para destino Modo de Registro (directo) Modo indexado Modo Simblico Modo Absoluto Modo Indirecto Modo Indirecto c/Auto incremento Modo Inmediato Procesamiento por Bit, byte o word. Instrucciones y modos de direccionamiento idnticos para RAM, ROM, EPROM, Flash y Perifricos.

20

Arquitectura de MSP430
ALU de16-bit Buses de datos y direcciones de 16bit 16, registros multi propsito de 16-bit (acumuladores)
R0/PC (Program Counter) R1/SP (Stack Pointer) R2/SR (Status) R3/CG (Constant Gen.) R4 - R15 (Propsito general)
BUS DATOS MDBDE - meory data bus
15 R0/PC - Program Counter R1/SP - Stack Pointer R2/SR - Status

BUS DE address DIRECCIONES memory bus - MAB


0 0 0

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

Acceso total a todos los registros incluyendo PC, SP, SR y CG. Operaciones en un ciclo Soporte para operaciones Memoria~Memoria Diseo optimizado para programacin en C.

DST 16

SRC

16-bit ALU

16

21

MSP430 Program Counter y Stack Pointer


15 0 0 rw

R0/PC Contador de programa

Contador de programas de 16bits -> 64k de cdigo no paginado.


0 0

15

R1/SP - Stack Pointer

rw

push #01234h
Address 0xxxh 0xxxh - 2 0xxxh - 4 0xxxh - 6 0xxxh - 8 Word1 Word2 Word3 SP, TOS Address Address 0xxxh 0xxxh - 2 0xxxh - 4 0xxxh - 6 0xxxh - 8 Word1 Word2 Word3 01234h SP, TOS 0xxxh 0xxxh - 2 0xxxh - 4 0xxxh - 6 0xxxh - 8
TOS: top-of-stack

pop R8

Word1 Word2 Word3 SP, TOS

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

22

MSP430 SR (registro de estado)


15 Reservado rw-0 9 8 V rw-0 7 Osc SCG1 SCG0 Off rw-0 rw-0 rw-0 CPU Off rw-0 GIE rw-0 N rw-0 Z rw-0 0 C rw-0

R2/SR Registro de estado

; ;-----------------------------------------------------------------------; BITs 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

Bits que seleccionan el reloj a usar

Bits que definen los modos de bajo consumo.

23

MSP430 CG (Generador de constantes)


15 0 0 rw

R3/CG - Constant Generator

Registro usado para insertar constantes en el cdigo con instrucciones de solo un parmetro. (manipulado por el linker)

; 1

Ejemplos: CLR dst es reemplazado por: MOV R3,dst R3 ha sido cargado con 00h es reemplazado por: ADD 0(R3),dst R3 ha sido cargado con 01h

INC dst

El uso del generador de constantes queda restringido a solo constantes de uso comn como 00h, 01h, FFh, etc En general el uso de este registro esta orientado a la optimizacin del cdigo, razn por la que es manipulado solo por el Linker (assembler).

El compilador automticamente usa R3 para insertar valores inmediatos o constantes en el cdigo fuente. Estos valores inmediatos no requieren cdigo adicional.

24

MSP430 Registros multi propsito


15 0 0 rw

R4 ~ R15

Registro de propsito general de 16bits, usados como acumuladores.

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

25

Ventajas de arquitectura von-Neumann

add.w add.b add.w add.b add.w add.b add.w add.b add.w add.b add.w add.b

R5,R6 R5,R6 #02001h,R7 #099h,R7 0200h,R8 0200h,R8 0C100h,R9 0C100h,R9 0C100h,0200h 0C100h,0200h #01234h,&CCR0 #099h,&P1OUT

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

operacin Word registro a registro operacin Byte registro a registro operacin Word inmediato 2001 a registro operacin Byte inmediato 2001 a registro operacin Word RAM 200h a R8 operacin Byte RAM 200h a R8 operacin Word Flash C100h a R9 operacin Byte Flash C100h a R9 operacin Word Flash a RAM operacin Byte Flash a RAM operacin Word inmediato a Perifrico operacin Byte inmediato a Perifrico

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.

26

Modos de Direccionamiento:
; ; ; Modo de Registro (Directo), rpido, 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 Simblico, el contenido de la etiqueta se calcula como una diferencia desde PC add.w mov.w mov.b EDE,TONI EDE,R8 TONI,EDE ; (EDE) + (TONI) >> (TONI) ; (EDE) >> R8 ; Mueve byte (TONI) a (EDE)

; ; Modo Absoluto, la etiqueta es una direccin absoluta. add.w mov.w mov.b &CCR1,&CCR2 &TACTL,R8 &P1IN,&P2OUT ; (CCR1) + (CCR2) >> (CCR2) ; (TACTL) >> R8 ; Mueve (P1IN) a (P2OUT)

27

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 perifrico 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, despus de la instruccin sigue una constante. ; add.w #0A00h,R8 ; 0A00h + R8 >> R8 mov.w #0010,&TACTL ; 0Ah >> Timer_A Registro de perifrico 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.


28

MSP430 Set de Instrucciones


Formato I Origen,destino add(.b) addc(.b) and(.b) bic(.b) bis(.b) bit(.b) cmp(.b) dadd(.b) mov(.b) sub(.b) subc(.b) xor(.b) Formato II Origen,argumento Br call swpb sxt push(.b) pop.(b) rra(.b) rrc(.b) inv(.b) inc(.b) incd(.b) dec(.b) decd(.b) adc(b) sbc(.b) clr(.b) dadc(.b) rla(.b) rlc(.b) tst(.b) Formato III +/- Offset 9bit jmp jc Jnc jeq jne jge jl jn auxiliares Clrc setc clrz setz clrn setn dint eint nop ret reti

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)

29

MSP430 Instrucciones Emuladas


; ; ;

Se usan como cualquier instruccin incrustada, sin restricciones. Instrucciones con formato CISC (el cdigo 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 cdigo extra.

inc.w add.w clrc bic.w eint bis.w br mov.w ret mov.w

R5 #01h,R5

; Incremento (emulada) ; instruccin incrustada ; limpiar carry (emulada) ; instruccin incrustada ; habilitar interrupciones (emulada) ; instruccin incrustada ; saltar a la pos. contenida en R5 (emulada) ; instruccin incrustada ; Restorna desde una subrutina (emulada) ; instruccin incrustada

#01h,SR

#08h,SR R5 R5,PC

@SP+,PC

30

MSP430 Formato de instrucciones

Formato I

Op-Code add.w Add.b R7,R8 R7,R8

Source-Register

Ad B/W

As

Destination-Register

; 16 bits R7 + R8 >> R8 (16bits) ; 8 bits R7 + R8 >> R8 (8bits)

Formato II
rlc.w rlc.b R9 R9

Op-Code

B/W

Ad

D/S- Register

; 16b de R9 son desplazados a la izquierda a travs del carry ; 8b de R9 son desplazados a la izquierda a travs del carry

Formato III

Op-Code jmp Label

Condition

10-bit PC offset

; salta a la etiqueta Label

Ad = modo de direccionamiento usado para destino As = modo de direccionamiento usado para origen B/W = operacin como byte o como word Condition = Condicin para un salto condicional D-Register = registro usado como destino D/S-Register = registro usado como origen/destino Op-code = cdigo de la instruccin usada S-Register = registro usado como origen
31

Instrucciones para control de flujo:


jmp salta a una posicin del cdigo en forma incondicional

Es el mtodo incondicional mas rpido de controlar el flujo del programa con offsets de -511/+512 bytes. 1 word.

br

Salto largo incondicional a cualquier parte del cdigo.

Se carga una posicin de16-bit en el contador de programa. No es una llamada a subrutina ya que no se respalda posicin de retorno alguna. 2 words,.

call

Llamada a subrutinas

Se carga una posicin de 16-bit en el contador de programa, y la direccin de retorno y el contenido del registro de estado son automticamente puestos en el stack 2 words.

32

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

Un valor con signo de 10bits, permite saltos en el rango de - 511 a + 512 words relativos a la direccin actual. Los saltos requieren solo una Word de cdigo y dos ciclos. Se utilizan para controles el flujo con saltos cortos.

33

Ejemplos de Saltos Largos:


; ; ; Ejemplo de una tabla condicional de salto usando R15 clr.w br DW DW DW clr.b jmp mov.b jmp mov.b R15 Table(R15) Ref0 Ref1 Ref2 &CACTL1 Next #CAREF0+CAON,&CACTL1 Next #CAREF1+CAON,&CACTL1 ; limpia puntero para saltos ; salta

Mainloop Table

Ref0 ; Ref1 ; Ref2 ; next

; configura comparador A

; 0.25*Vcc en P2.3, activa comparador

; 0.5*Vcc en P2.3, activa comparador ; Incrementa puntero para saltos ; asegura salto dentro del rango?

incd.w R15 and #06h,R15

; ; 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. 34

Ejemplos de Llamadas a Subrutinas


; ; Ejemplo de llamada directa: call #Setup ; llama subrutina direccin de retorno >> TOS

; ; Ejemplo de llamadas segn tabla condicional Mainloop call xor.w jmp DW DW clr.b nop ret mov.b nop ret clr mov.b ret Table(R15) #02h,R15 Mainloop Sub1 Sub2 &P1OUT ; pone en 0 todas la salida de P1 ; retorna de subrutina (mov SP+,PC) #0FFh,P1OUT ; pone en 1 todas las salida de P1 ; retorna de subrutina (mov SP+,PC) R15 # 0FFh,&P1DIR ; limpia el puntero de llamadas ; puerto 1 como salida ; retorna de subrutina (mov SP+,PC) ; llama sub rutina direccin de retorno >> TOS ; conmuta puntero ; repite

; Table

Sub1

; Sub2

; Setup

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

35

Manipulacin de Bits:
bic(.b) Pone a 0 uno o mas bits en el destino.

Se operan lgicamente el inverso del origen y el destino. (and) El registro de estado no es afectado.

bis(.b)

Pone a 1 uno o mas bits en el destino.

se operan lgicamente 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 lgicamente 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.

36

Ciclos de instrucciones:

Ciclos de instrucciones:
Accion: N de ciclos
5 6 4 4

Largo de instruccion
1 -

Retorno desde interrupcion (reti) Interrupcion Reset por WDT Reset (RST / NMI)

37

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

38

MSP430 Vectores de Interrupcion


16 vectores disponibles Los vectores se cargan en el PC PC y SR se respaldan en el stack en forma automtica.
Fuente Flag Interr. Direccion Prior.

Pwr.Up. Wdt NMI, OF, FV. Timer B Timer B Comparador A WDT (interv) USART0 RX USART0 TX ADC12 Timer A Timer B

WDTIFG NMIIFG TBCCR0 TBCCR1-6 CAIFG WDTIFG URXIFG0 UTXIFG0 ADC12IFG TACCR0 TACCR1-2 P1IFG0-7 URXIFG1 UTXIFG1 P2IFG0-7

RESET No masc Masc Masc Masc Masc Masc Masc Masc Masc Masc Masc Masc Masc Masc

0FFFEh 0FFFCh 0FFFAh 0FFF8h 0FFF6h 0FFF4h 0FFF2h 0FFF0h 0FFEEh 0FFECh 0FFEAh 0FFE8h 0FFE6h 0FFE4h 0FFE2h 0FFE0h

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
39

Vectores de interrupcin MEMORIA DE PROGRAMA

0FFFFh

Memoria de info
Bootstrap Loader

I/O port P1 USART1 RX USART1 TX I/O port P2

RAM
Registros de perifricos

Procesamiento de Interrupciones:
Antes de una interrupcin:
Item1 Item2 SP, TOS

Item1 Item2 PC SR SP, TOS

Durante una interrupcin: 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) Despus de una interrupcin: SR es recuperado desde el stack PC es recuperado desde el stack

Item1 Item2 PC SR SP, TOS

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

MSP430 Ejemplo de interrupcin:


MSP430F11x1 posee capacidad de interrupcin en ambos flancos en todos sus pines Cualquier interrupcin habilitada saca de los modos de bajo consumo a la CPU
MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

; ; SetupP2_0

Mainloop

bic.b bis.b bis.b mov.w nop bic.b nop reti 0FFE6h DW

#01h,&P2DIR #01h,&P2IES #01h,&P2IE #LPM3+GIE,SR

P2_ISR

#01h,&P2IFG

; ; ; ; ; ; ; ; ;

P2.0 configurada como entrada Interrupcin en flanco H->L Interrupcin habilitada en P2.0 Entra en LPM3 con interrupciones habilitadas ciclo intil. limpia flag de interrupcin en P2.0 ciclo intil retorna al estado previo a la interrupcin. ; vector de Interrupcion de P2 ;

ORG

P2_ISR

41

MSP430 Power-UP
#include ; RESET StopWDT SetupP1 Mainloop "msp430x11x1.h ORG mov.w mov.w bis.b xor.b jmp ORG DW END MSP430F1121
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

; definicin de registros ; ; ; ; ; ; ; ; ; ; inicio de memoria de programa inicio de stack pointer detiene WDT configura P1.0 como salida cambia P1.0 (xor) salta a repetir vector de reset de MSP430x11x1 configura inicio de programa

0F000h #300h,SP #WDTPW+WDTHOLD,&WDTCTL #01h,&P1DIR #01h,&P1OUT Mainloop 0FFFEh RESET

1) 2)

ck Sta T WD

3)

ET S E eR d r to Vec
42

Modos de bajo consumo (Low Power)


Modo LP Activo LPM0 LPM1 LPM2 LPM3 LPM4 SCG1 0 0 0 1 1 1 SCG0 0 0 1 0 0 1 OSCOFF 0 0 0 0 0 1 CPUOFF 0 1 1 1 1 1 CPU ON OFF OFF OFF OFF OFF Mclk ON OFF OFF OFF OFF OFF SMclk ON ON ON OFF OFF OFF Aclk ON ON ON ON ON OFF DCO ON ON OFF* OFF* OFF OFF

* 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


43

MSP430 Aplicacin para RTC de 1 ao:


MSP430 6us wake-up*
f
1mA

Crystal

32,768

10-bit Frequency Integrator /(N+1)

2uA

1s

2s

Otra CPU 17,500us power-up**


1mA

Digitally Controller Osciallator DCO f System

FLL - US Patent # 5,877,641

9uA 1s 2s
44

**Microchip (AN606)

MSP430 Aplicacin para RTC de 1 ao:


MSP430x11x
Vcc CR2032 Vss RST/NMI Xin Xout P2.x P1.x

32768

UART, SPI, IIC ... Datos

RX TX

12 Pines disponibles

CR2032 180mAH. Corriente drenada para 10 aos de vida = 0.180A/ 10 aos / 365 das / 24 horas < 2.2uA

Ejemplo RTC : operacin en LPM3 con oscilador a 32KHz (1.5uA). 1Hz ISR. Consumo normal en LPM3 Rutina de interrupcin (50 ciclos/ISR) 1s x 1.50uA 50us x 400uA 1.50uA 0.02uA 1.52uA

MSP430 posee un wake-up de solo 6uS, que permite un uso extendido del modo de bajo consumo LPM3
45

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

46

MSP430x11x/12x Sistema de Reloj Bsico


DIVA 2 LFXTCLK /1, /2, /4, /8 OscOff XIN LFXT1 Oscillator XOUT SELM DIVM 2 3 0,1 /1, /2, /4, /8, off 2 DCOCLK Main System Clock MCLK 2 XTS Auxiliary Clock CPUOff ACLK

Vcc Vcc Rsel SCG0 3 0 DC- Gen P2.5/Rosc 1 DCOR DCO 3 MOD 5 SELS DIVS 2 0 /1, /2, /4, /8, off 1 Sub-System Clock SMCLK SCG1

Digital Controlled Oscillator + Modulator

47

MSP430x13x/14x/15x/16x Sistema de Reloj Bsico


Sistema de reloj F13x ~ F16x

DIVA 2 LFXTCLK /1, /2, /4, /8 OscOff XIN LFXT1 Oscillator XOUT SELM DIVM 2 3 0,1 /1, /2, /4, /8, off 2 XT2Off XT2IN XT2 Oscillator XT1OUT Vcc Vcc Rsel SCG0 3 0 DC- Gen P2.5/Rosc 1 DCOR DCO 3 MOD 5 SELS DIVS 2 0 /1, /2, /4, /8, off 1 Sub-System Clock
48

ACLK

XTS Auxiliary Clock CPUOff

2 MCLK

Main System Clock

DCOCLK

SCG1

Digital Controlled Oscillator + Modulator

SMCLK

MSP430x1xx LF XTAL (Cristal Baja Frec.)


Solo se requiere un cristal de reloj; No se necesitan componentes adicionales.
MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

ACLK= 32768 (o fraccin) MCLK~1MHz DCOCLK (o fraccin) SMCLK~1MHz DCOCLK (o fraccin)

32768

NOTA! Es necesario verificar el estado de flag OSCFAULT antes de cambiar MCLK a LFXT1. La operacin a prueba de fallas, automticamente cambia MCLK a DCO si es puesto el flag OSCFAULT (falla de cristal).
49

MSP430x1xx DCO como reloj.


Sin componentes externos; Solo el oscilador DCO interno.
MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

ACLK= 0 MCLK= DCOCLK (o fraccin) SMCLK= DCOCLK (o fraccin)

SetupBC Mainloop

bis jmp

#OSCOFF,SR Mainloop

; oscilador externo desactivado ; no hace nada

NOTA! La fuente por defecto de reloj al momento del Power UP es el DCO. La configuracin posterior define la fuente de reloj a utilizar.
50

MSP430x11x DCO Parameters

51

MSP430 Configuracin de DCO


La frecuencia nominal es definida por los bits RSEL La frecuencia generada por el DCO es estable, pero varia con la temperatura y tensin de alimentacin
Set_1MHz ; ; Set_2MHz ; ; Set_Fast ; ; Set_Slow bis.b #05h,&BCSCTL1 ; DCO~1MHz

bis.b

#06h,&BCSCTL1

; DCO~2MHz

bis.b mov.b

#07h,&BCSCTL1 #0E0h,&DCOCTL

; DCO~5Mhz ;

bic.b mov.b

#07h,&BCSCTL1 #DIVS1+DIVS0,&BCSCTL2

; DCO~100kHz ; SMCLK=DCOCLK/8

52

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


Cristal de alta frecuencia; Requiere condensadores apropiados.
MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

ACLK= LFXT1 (o fraccin) MCLK= LFXT1 o DCOCLK (o fraccin) SMCLK= LFXT1 o DCOCLK (o fraccin)

SetupBC Mainloop

bis.b jmp

#XTS,&BCSCTL1 Mainloop

; LFXT1/ACLK = XT XTAL ; hace nada.

NOTA! Es necesario verificar el estado de flag OSCFAULT antes de cambiar MCLK a LFXT1. La operacin a prueba de fallas, automticamente cambia MCLK a DCO si es puesto el flag OSCFAULT (falla de cristal).
53

MSP430x11x/12x Buffer de Reloj

Se pueden sacar por los pines las seales de reloj internas:

MSP430F11x1
P1.7 TEST P1.6 Vcc P1.5 P2.5 SMCLK/P1.4 Vss XOUT P1.3 XIN P1.2 RST P1.1 P2.0/ACLK P1.0 P2.4 P2.1 P2.2 P2.3

SMCLK

ACLK

; ; Out_ACLK Out_SMCLK

bis.b bis.b bis.b bis.b

#01h,&P2DIR #01h,&P2SEL #010h,&P1DIR #010h,&P1SEL

; ; ; ;

P2.0 P2.0 P1.4 P1.4

configurado configurado configurado configurado

como como como como

salida modulo salida modulo

54

Sistema de Reloj SW/HW FLL


(frequency Locked Loop)

Una frecuencia de referencia ej. ACLK o 50/60Hz es usada para medir DCOCLKs Manipulacin de software peridica o predefinida estabiliza DCOCLK DCOCLK es programable digitalmente en el rango de: 100kHz - 8Mhz

SW+HW Control de DCOCLK

Frecuencia de referencia. ACLK or 50/60Hz

Rsel SCG0

DCO
3

MOD
5

DCGenerator

Digital Controlled Oscillator DCO


+

DCOCLK

Modulator MOD

55

Sistema de Reloj SW/HW FLL


(frequency Locked Loop)
Ejemplo: DCOCLK= 1,000,000 si ACLK= 8192 ACLK (8192Hz) dispara una captura en CCI2B, DCOCLK es la fuente de reloj para el Timer_A DCOCLK es la fuente de reloj para timer_A , pensando en 1,000,000Hz. Captura debe ser = 1,000,000/8192 ~122 Destino 1,000,000Hz
CCI2B-ISR CCI2B_ISR

DCOCLK para timer

Captura 122us

15

CCI2B

1 2 3

Capture
15

Timer_A
0

Intervalo
CCI2B_ISR mov sub mov cmp jlo jeq dec.b jmp inc.b jmp clr reti &CCR2,R14 R15,R14 &CCR2,R15 #122,R14 IncDCO DoneDCO &DCOCTL Test_DCO &DCOCTL Test_DCO &CCTL2 ; ; ; ; ; ; ; ; ; ; ; ; R14 = R14 = R15 = Delta

CCR2

captura SMCLK captura diferencia captura SMCLK = SMCLK/(3278/4)

DecDCO IncDCO DoneDCO Test_DCO

si es igual termina decrementa si es mayor incrementa si es menor detiene CCR2 retorna de subrutina

56

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

57

MSP430F Registros de perifricos

MSP430 usa arquitectura Von Newan Todos los perifricos estn mapeados en memoria. Se puede utilizar cualquier instruccin con estos registros
Vectores de interrupcin
0FFFFH

Memoria de Programa

Info. Memory
Bootstrap Loader

RAM
Registros de Perifricos

0200h

000h

58

MSP430 Controlador de Memoria FLASH


MEMORIA FLASH Generador interno de voltaje de programacin. Programacin de Byte o word. Operacin Ultra low-power. Borrado de memoria por segmentos o masivo. Programacin desde 2.7v Generador de temporizacin interno (independiente) No se puede ejecutar cdigo desde la Flash (ROM) mientras se est escribiendo.
59

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 contrasea. 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 lgico de cada bit es 1, la escritura pone los bits en estado lgico 0.
60

MSP430 Supervisor de Alimentacin


SUPERVISOR DE ALIMENTACION Monitoreo de AVcc. Generacin de POR configurable. Salida del comparador SVS accesible por software. Condicin de Bajo voltaje Accesible por software. 14 niveles de lmite configurable por software. Canal Externo para monitorear voltaje. Presente en Micros MSP430F15x / F16x

61

MSP430 Supervisor de Alimentacin

62

MSP430 Multiplicador por Hardware


MULTIPLICADOR POR HARDWARE Multiplicacin sin signo Multiplicacin con signo Multiplicacin y acumulacin sin signo Multiplicacin y acumulacin con signo Operacin en 16x16, 16x8, 8x16 y 8x8 bits Operacin en un solo ciclo. Presente en Micros MSP430F14x ~ F16x
63

MSP430 Multiplicador por Hardware


15 0 MPY 130h 15 OP1 0 15 OP2 138h 0

MPY, MPYS, MAC, MACS 16 u 8-bit No hay instrucciones especiales. La operacin comienza moviendo el primer operando y termina moviendo el segundo operando. La multiplicacin esta lista en el siguiente ciclo.
mov.w mov.w #01234h,&MACS #04567h,&OP2

MPYS 132h MAC 134h

MACS 136h 16x16 Multiplier

32-Bit Adder Multiplexer SUMEXT 13Eh C S 31 RESHI 32-Bit 13Ch Multiplexer RESLO 013Ah 0

; Carga primer operando ; Carga segundo operando ; Operacin lista.


64

Controlador de Acceso Directo a memoria


CONTROLADOR DE DMA Transfiere datos sin intervencin 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:
Single Block Burst-Block

Presente en Micros MSP430F15x / F16x


65

Controlador de Acceso Directo a memoria

66

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacion Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

67

MSP430F Registros de perifricos


MSP430 usa arquitectura Von Newan Todos los perifricos estn mapeados en memoria. Se puede utilizar cualquier instruccin con estos registros

Vectores de interrupcin

0FFFFH

Memoria de Programa

Info. Memory
Bootstrap Loader

RAM
Registros de Perifricos

0200h

000h

68

MSP430 Puertos I/O


Puertos de Entrada / Salida Direccin de cada pin es configurable independientemente. Es posible cualquier combinacin de entrada / salida. Registros de datos independientes de entrada y salida. Interrupciones en todos los pines de los puertos P1 y P2. Habilitacin y seleccin de flanco independiente para cada pin Flags de interrupcin independientes para cada pin. Registros para habilitacin de mdulos perifricos independientes para cada puerto, y concentrados en un solo registro.

I/O
69

MSP430 Puertos I/O


Puertos Configurados por mltiples registros de 8 bits: P1 y P2 con capacidad de interrupcin. P3 en adelante sin capacidad de interrupcin. Cada pin posee proteccin ESD (Diodos para 2mA) Puertos P1 y P2: PxIN PxIN PxOUT PxOUT PxDIR PxDIR PxSEL PxSEL PxIFG PxIFG PxIES PxIES PxIE PxIE Puertos P3 en adelante. PxIN PxIN PxOUT PxOUT PxDIR PxDIR PxSEL PxSEL

70

MSP430 Watchdog Timer

WATCHDOG TIMER Puede operar como Watchdog Timer o temporizador. Cualquier acceso al registro WDTCTL esta protegido por contrasea. 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 energa.

71

MSP430 Watchdog Timer


Clk/32.768 Clk/8.192 Clk/512 Clk/64

WDTCTL 4 Interrupt Y 3 2 1 A B Clear CLK EQU Q6 Q9 Q13 Q15 16 bit Counter 0 1 0 1 1 0 1 Password Comparator 16 MSB MDB

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

PUC

0 EQU Write Enable Low Byte R/ W

SMCLK ACLK

1 HOLD 1 A EN NMIES NMI TMSEL CNTCL SSEL IS1 IS0 LSB


72

MSP430 Ejemplo Watchdog Timer

0120h

MDB, Byte Superior

R/W 7
EQU

MDB, Byte Inferior 0 NMIES NMI TMSEL CNTCL SSEL IS1 ISO HOLD

Comparacin de contrasea
Lectura: Escritura:

Byte Superior se lee como 069h Byte Superior se debe escribir como 05Ah, de otra forma se produce una violacin de contrasea y se efecta un PUC

WDT_key ; WDT_Stop ; WDT_250

equ mov.w mov.w

05A00h

; Contrasea de acceso a WDT ; detiene WDT ; Configura como timer.

#(WDT_Key+80h),&WDTCTL #(WDT_Key+1Dh),&WDTCTL

73

MSP430 Comparador A
COMPARADOR ANALOGO A Todos los terminales disponibles Referencia interna Filtro pasa bajos para salida. Salida asignable a captura de TA Control de energa por software Intercambio de entradas para compensacin de offset (CAEX) Generador de voltaje interno para referencia Referencia interna configurable por software.

74

MSP430 Comparador A

75

MSP430 Timers A y B
TIMERS Toda CPU MSP430 cuenta con Timer A3, algunas CPUs incluyen Timer B3 y otras Timer B7 Contadores de 16bits Interrupcin por rebalse del contador Fuentes de reloj seleccionadas y configuradas por software. Cuatro modos de operacin. 3 (o 7) registros de captura/comparacin. Salidas configurables con capacidad PWM (por hardware) Vector de interrupcin para decodificacin rpida de interrupcin. El Timer B puede contar en 8,10,12 o 16 bits.
76

MSP430 Timers Modos de cuenta


Modo Stop/Halt
Timer detenido permanentemente

Modo UP/DOWN
El timer cuenta entre 0 , CCR0 y 0
0FFFFh CCR0
UP/DOWN Mode

0h

Modo UP
El timer cuenta desde 0 hasta CCR0
0FFFFh

Modo Continuous
El timer cuenta hasta rebalsar.
Continuous Mode

0FFFFh

CCR0

0h

0h

77

MSP430 Timers Modos de salida


Los Registro CCR poseen salidas independientes Multiples modos de operacin. Salidas controladas por hardware.

78

MSP430 Timer A3
P1.0 ACLK SMCLK P2.1 15 Divider 1/2/4/8 16-bit Timer CLK RC 0 Mode Continous, UP, UP/Down

15 Capture P1.1 P2.2 GND VCC CCI0 15 CAOUT P1.2 GND VCC CCI1 15 Capture P1.3 ACLK GND VCC CCI2 Capture Mode Comparator 2 Capture/ Compare Register CCR2 Capture Mode Comparator 1 Capture Capture/ Compare Register CCR1 Capture Mode Comparator 0 Capture/ Compare Register CCR0

Set_TAIFG

OUT_0 Output Unit Equ0 0

P1.1 P1.5

OUT_1 Output Unit Equ1 0

P1.2 P1.6 P2.3

OUT_2 Output Unit Equ2

P1.3 P1.7 P2.4

79

MSP430 Timer A3 Unidades CCRx


Overflowx Logic CCISx1 CCISx0 CCIxA CCIxB GND VCC 0 1 2 3 CAPx Capture Mode CCMx1 CCMx0 0 0 1 1 0 1 0 1 Disabled Pos. Edge Neg. Edge Both Edges Comparator x to Port0 EQUx 0 1 EN A CCIx CCRx 0172h to 017Eh 15 2 15 rw(0) INPUT SELECT rw(0) rw(0) SCS SCCI rw(0) rw(0) unCAP used rw(0) rw(0) rw(0) OUTMODx rw(0) rw(0) CCIE CCI rw(0) r 0 2 0 Y SCCIx CAPx Set_CCIFGx Capture 15 0 COVx Data Bus Timer Bus

Capture/Compare Register CCRx

15 CCTLx 162h to 16Eh CAPTURE MODE rw(0) rw(0)

0 OUT COV CCIFG rw(0) rw(0) rw(0)

80

MSP430 Timer B3/7


P4.7 ACLK SMCLK P4.7 15 Divider 1/2/4/8

( F13x en adelante )
0 Mode Continous, UP, UP/Down

8, 10, 12 or 16-bit Timer CLK RC 15

0 Capture / Compare CCR0

Set_TBIFG

Capture P4.0 P4.0 GND VCC CCI0 P4.1 P4.2 P4.3 P4.4 P4.5 Capture Mode

Compare Latch TBCL0 OUT_0 Comparator 0 Equ0 Output Unit P4.0

ADC12I2

CCR1 - CCR6

P4.1 P4.2 P4.3 P4.4 P4.5 15 Capture/ Compare CCR7 0

Capture P4.6 ACLK GND VCC CCI7 Capture Mode

Compare Latch TBCL7 OUT_7 Comparator 7 Equ7 Output Unit P4.6

81

MSP430 Timer B3/7 Unidades CCRx


Logic CCISx1 CCISx0 CCIxA CCIxB GND VCC 0 1 2 3 CAPx 15 Capture Mode CCMx1 CCMx0 CCMx1 CCMx0 0 0 1 1 0 1 0 1 Disabled Pos. Edge Neg. Edge Both Edges CCDL0 CCLD1 CAP Capture 0 Capture/Compare Register CCRx Reset POR Reset to Port0 Load Capture Latch TBCLx Overflow x COVx Timer Bus

High Zero EQU0 Up/Down

Comparator to Port0 x CAPx EQUx 0 1 Set_CCIFGx

CCIx

15 CCTLx 182h to 19Ah CAPTURE MODE rw(0) rw(0) INPUT SELECT rw(0) rw(0) SCS rw(0) rw(0) CLLD rw(0) CAP rw(0) rw(0) OUTMODx rw(0) rw(0) CCIE CCI rw(0) r

0 OUT COV CCIFG rw(0) rw(0) rw(0)

82

Timer A Ejemplo de PWM Up-Mode


Ejemplo de generacin de PWM Sin intervencin de la CPU

MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 P1.7 P1.6 P1.5 P1.4 P1.3 TA1/P1.2 P1.1 P1.0 P2.4 P2.3

0 - CCR0

0 - CCR0

0 - CCR0

CCR1

CCR1

CCR1

SetupP1 SetupC0 SetupC1

bis.b bis.b mov.w mov.w mov.w mov.w jmp

#004h,&P1DIR #004h,&P1SEL #512-1,&CCR0 #OUTMOD2+OUTMOD1+OUTMOD0,&CCTL1 #128,&CCR1 #TASSEL1+MC0,&TACTL #Mainloop

; ; ; ; ;

P1.2 salida P1.2 TA1 configura modulo define periodo PWM CCR1 modo reset/set CCR1 ciclo til PWM

SetupTA Mainloop

; SMCLK, modo: up ; ; loop infinito


83

MSP430 Puertos Serie

Pueden operar como:


Modo USART Modo SPI Modo I2C (solo procesadores F15x y F16x)
CPUs con 1 y 2 puertos serie idnticos.

84

MSP430 Puerto Serie (Modo USART)


PUERTO SERIE: USART Datos de 7 u 8 bits. Generador / Detector de paridad por hardware: (odd, even, none) Registros de desplazamiento y buffers independientes para transmisin y recepcin Transmisin y recepcin de datos partiendo por bit LSB. Soporte por hardware para protocolos idle line y address-bit para sistemas multi-procesadores. Deteccin de bit de partida para salir de modos de bajo consumo. Generador de Baudios con modulacin. Flags de estado para deteccin de errores y deteccin de direccin. Interrupciones independientes para transmisin y recepcin.

85

MSP430 Puerto Serie (Modo USART)

86

MSP430 Puerto Serie (Modo SPI)


PUERTO SERIE: SPI Datos de 7 u 8 bits. Operacin como SPI de 3 o 4 pines. Modo Maestro o Esclavo Registros de desplazamiento y buffers independientes para transmisin y recepcin Polaridad y fase de reloj configurable. Frecuencia de reloj programable en modo Master Interrupciones independientes para transmisin y recepcin.

87

MSP430 Puerto Serie (Modo SPI)

88

MSP430 Puerto Serie (Modo I2C)


PUERTO SERIE: I2C Solo esta presente en CPUs F15x y F16x en USART0 Cumple con especificaciones de Philips (I2C v2.1)

Formato Byte/Word para transferencia. Direccionamiento de 7 o 10 bits Llamada general Start / restart / Stop Modo Multi Master transmitter / Slave Receiver Modo Multi Master Receive / Slave Transmitter Modo Combinado Master TX / RX y RX / TX Modo Standard (100kbps) y Modo Fast (400kbps)

FIFO incorporada para lectura/escritura. Generacin de reloj programable. Datos de 16 bits de ancho para aumentar ancho de banda Cuenta automtica de bytes de datos
89

MSP430 Puerto Serie (Modo I2C)

90

MSP430 ADC10 / ADC12


CONVERSORES ANALOGO / DIGITAL

Capacidad de muestreo de 200ksps+ 8 Canales externos / 4 Canales internos. Conversin iniciada por software, TA o TB* Auto-scan con 16 registros de conversin. Sample&hold programable. Medicin de referencias y tensin interna. Diodo de temperatura interno. 4 Modos de conversin:
Conversin Conversin

nica en un canal nica en secuencia de canales sucesivas en un canal sucesivas en secuencias de canales

ADC12 / ADC10

Conversiones Conversiones

91

MSP430 ADC10 (F11x2 ~ F12x2)


Ve REF+ V REF+ VREF-/ Ve REFAVSS AVCC Oscillator 1.5V or 2.5V Reference

A0 A1 A2 A3 A5 A5 A6 A7

Multiplexer

Sample & Hold

VR-

VR-

Conversion Clock

CLKSRCx

10bit SAR 12-bit SAR


Sampling Timer ADC12Ix

AVCC 16 x 12-bit 16 x 10bits Sample sample buffer Buffer 16 x 8-bit Buffer Control ADC12Intx

92

MSP430F14x ~ 16x ADC12


2_5V VeREF+ V REF+ V REF- / Ve REFADC12CTLx.0..3 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 12-bit S A R AVCC Ref_X 0140h 0142h 0144h 0146h 0148h T AVSS 014Ah 014Ch 014Eh 0150h 0152h 0154h 0156h 0158h 015Ah 015Ch 015Eh ADC12MEM0 ADC12MEM1 ADC12MEM2 ADC12MEM3 ADC12MEM4 ADC12MEM5 ADC12MEM6 ADC12MEM7 ADC12MEM8 ADC12MEM9 ADC12MEM10 ADC12MEM11 ADC12MEM12 ADC12MEM13 ADC12MEM14 ADC12MEM15 16 x 12-bit ADC Memory ADC12CTL0 ADC12CTL1 ADC12CTL2 ADC12CTL3 ADC12CTL4 ADC12CTL5 ADC12CTL6 ADC12CTL7 ADC12CTL8 ADC12CTL9 ADC12CTL10 ADC12CTL11 ADC12CTL12 ADC12CTL13 ADC12CTL14 ADC12CTL15 16 x 8-bit ADC Memory Control 080h 081h 082h 083h 084h 085h 086h 087h 088h 089h 08Ah 08Bh 08Ch 08Dh 08Eh 08Fh Analog Multiplexer 12 : 1 S/H SAMPCON Sample & Hold SHP Sampling Timer SHI MSC ISSH ADC12SC ADC12I1 ADC12I2 ADC12I3 12-bit A/D converter core SHT0 SHT1 V REF+ 1.5V or 2.5V AVSS AVCC Ref_X AVSS ADC12CTLx.4..6 ADC12ON ADC12SSEL ADC12DIV ADC12CLK Internal Oscillator ADC12OSC CLKSRC1 CLKSRC2 CLKSRC3 REFON INCH= 0Ah on AVCC on

Reference

V R-

V R+

Divide by 1,2,3,4,5,6,7,8

Conversion CTL SHS ENC

93

MSP430 DAC12
CONVERSORES DIGITAL / ANALOGO

2 Conversores Monolticos de 12bits con salida de voltaje. Resolucin configurable de 8 o 12 bits Settling time configurable (para ahorro de energa) Seleccin de referencia interna o externa. Formato de datos Binario o complemento de 2. Auto calibracin para correccin de offset. Capacidad de sincronizacin para mltiples dacs Presente en MicrosMSP430F15x/F16x
DAC12

94

MSP430 DAC12
Comparte referencias con el conversor Analogo / Digital

95

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacin Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.

96

Desarrollo con MSP430


CONCEPTO DE DESARROLLO Y DEPURACION

Programacin y depuracin IN-CIRCUIT va JTAG JTAG permite emulacin y control en tiempo real. JTAG permite acceso completo a registros, emulacin paso a paso, etc JTAG protegido por fusible FISICO Programador JTAG de bajo costo Programacin IN-CIRCUIT va BSL (produccin) BSL solo para propsitos de programacin

97

Desarrollo con MSP430x11x/12x

MSP430F11x1
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 TDO/P1.7 TDI/P1.6 TMS/P1.5 TCK/P1.4 P1.3 P1.2 P1.1 P1.0 P2.4 P2.3

Puerto Paralelo 7

TEST en alto, habilita JTAG Los terminales usados por JTAG estn compartidos con los terminales P1.7-P1.4 en los micros de 20 y 28 pines.

Adaptador de niveles MSP-FETxxxxxx

98

Desarrollo con MSP430 x13x ~ 4xx

MSP430F14x
VCC RST VSS Vss TDO TDI TMS TCK

Puerto Paralelo 7

Los terminales para JTAG son dedicados

Adaptador de niveles MSP-FETxxxxxx

99

Aplicacin REAL con MSP430F135

Conector JTAG

MSP430F135

100

Familia de Herramientas para MSP430

MCU: MSP-FET430X110 MSP-FET430P120 MSP-FET430P140 MSP-FET430P410 MSP-FET430P430 MSP-EVK430S320 MSP-EVK430S330

Variante: MSP430x11x(1) MSP430x12x MSP430x13x/14x MSP430x41x MSP430x42x/43x MSP430x31x/32x MSP430x33x

101

Herramientas de Desarrollo y Depuracin.


IAR Embedded Workbench Terminales disponibles. LED en P1.0

Interfaz nica para todas las variantes de MSP430. Kickstart IDE Emulacin In-Circuit / Software Ejecucin de cdigo en tiempo real. HW breakpoints/single step Visualizacin/modificacin de registros y memoria.
102

Herramientas de Desarrollo y Depuracin.


IAR Embedded Workbench Terminales disponibles. LED en P1.0

Interfaz nica para todas las variantes de MSP430. Kickstart IDE Emulacin In-Circuit / Software Ejecucin de cdigo en tiempo real. HW breakpoints/single step Visualizacin/modificacin de registros y memoria.
103

Bootstrap Loader en MSP430:


Los terminales P1.1 (RXD) y P2.2 (TXD) se usan como un puerto serie a 9600bps (automtico sin necesidad de cristal), Se efecta la secuencia requerida en los terminales TEST y RST/NMI para iniciar la transferencia de datos.
Vectores de Interrupcin

MSP430F1121
TEST Vcc P2.5 Vss XOUT XIN RST P2.0 P2.1 P2.2 RXD
0C00h

Puerto Serie

Memoria de programa

Falsh de datos
Bootstrap Loader

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

TXD

RS232 Driver

RAM
Registros de Perifricos SFRs

RST/NMI

Test Test (internal)

Bootloader starts
104

Programacin y depuracin en tiempo real aislada con MSP430


EMULACION AISALADA

Se utiliza una interfaz opto-aislada en lugar del Level Shiffter tradicional. La interfaz es de fcil construccin. Permite programar y depurar sistemas alimentados directamente desde las lneas de poder de AC

105

Seminario de MSP430: Programa

MSP430 Introduccin CPU de 16bits Interrupciones, Reset y modos de operacin Sistema de Reloj Perifricos auxiliares Perifricos comunes Desarrollo y depuracin Demostracin.
106

107