1
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.
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
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)
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
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
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
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?
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
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
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
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
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
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
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
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
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
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.
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
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:
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
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
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
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)
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.
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
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:
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.
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
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
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
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
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:
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:
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
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:
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:
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.
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
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:
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:
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
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
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:
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:
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.
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
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
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).
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.
51
MSP430x11x DCO Parameters
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
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.)
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:
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)
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)
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.
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
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.
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”.
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
62
MSP430 Supervisor de Alimentación
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
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
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
66
Controlador de Acceso Directo a memoria
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.
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
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
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.
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.
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
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
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.
75
MSP430 Comparador A
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.
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
78
MSP430 Timer’s Modos de salida
Los Registro CCR poseen salidas independientes
Multiples modos de operación.
Salidas controladas por hardware.
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
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
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 )
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
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
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.
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.
86
MSP430 Puerto Serie (Modo USART)
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.
88
MSP430 Puerto Serie (Modo SPI)
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
90
MSP430 Puerto Serie (Modo I2C)
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
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
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
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
95
MSP430 DAC12
Comparte referencias con el conversor Analogo / Digital
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.
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
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
99
VCCRSTVSSVss
TDOTDI
TMSTCK
MSP430F14x
Adaptador de niveles
Puerto Paralelo
MSP-FETxxxxxx
Desarrollo con MSP430 x13x ~ 4xx
Los terminales para JTAG son dedicados
7
100
Aplicación REAL con MSP430F135
Conector JTAG
MSP430F135
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
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.
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.
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
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
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.
107