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.
[Link]. 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