Document

Anuncio
1
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Reset, interrupciones y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
2
Finalidad / Orientación de MSP430
APLICACIONES
† Sistemas alimentados con baterías (low power)
† Sistemas de procesamiento de señales
† Sistemas de tamaño limitado
† Sistemas de control en general.
† Sistemas de control numérico
3
Características generales (Rangos de operación)
† CPU RISC de 16-bit de Arquitectura Von Neuwman
† Solo 27 instrucciones básica a aprender. (+24 emuladas)
† Múltiples y flexibles tipos de Reloj.
† Versiones disponibles en Flash, ROM y OTP.
† Precios desde US$0.99 ( MSP430F1101 @10ku )
† Consumo nominal de 0.1 ~ 250uA, (@ 2.2v/1MIPS)
† Alimentación : 1.8 ~ 3.8v (operación)
† Alimentación : 2.7 ~ 3.8v (programación)
† Frecuencia: DC ~ 8MHz
† Temperatura: - 40 ~ + 85C
† Desarrollo y depuración IN-CIRCUIT
4
MPS430 Posee arquitectura ¨ortogonal¨
Ortogonal = todas las instrucciones funcionan con todos los modos de
direccionamiento.
Source
†
†
†
†
†
†
Set de instrucciones reducido
Instrucciones fáciles de aprender.
Sin instrucciones especiales
Bajo consumo
Código eficiente
Código compacto
Source
Address
Modes
Destination
Address
Modes
Destination
Otros Micros
Instructions
MSP430
Instructions
† Set de instrucciones complejo
† Instrucciones especiales a
aprender
† Poco eficiente
† Mayor área de silicio.
5
Mapa de memoria:
Vectores de
Interrupción
FFFFh
† Vectores de interrupción de 16-bit
Memoria de
Programa
Memoria
de Datos
p
† Memoria Flash, OTP o ROM para código.
† 128/256 Bytes de memoria Flash de
información.
1000h
Bootstrap Loader
0C00h
† ROM Bootstrap loader
† SRAM
RAM
200h
Registros de
Periféricos
SFR’s
† Registros de periféricos (SFRs)
6
Distribución de Memoria y Periféricos:
0FFFFh
† ROM, RAM, Flash y SFR’s
distribuidos en memoria única
no paginada.
0FE00h
Segmento 1
0FC00h
† Memoria Flash de datos en
segmentos de 128 Bytes.
0FA00h
† Posibilidad de escribir un bit, un
byte o word (solo de 1->0)
Vectores de
interrupción
† Borrado de segmentos
completos
Memoria de
Programa
† Programación vía JTAG o BSL
in-circuit.
† Protección por contraseña o
fusible físico de seguridad
Segmento 0
Con vectores de interrupción
Segmento 2
0F400h
Segmento 6
Memoria de
INFORMACION
Bootstrap Loader
0F200h
1000h
0F000h
RAM
01080h
Registros de
periféricos
Segmento 7
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)
8
MSP430 v/s otras CPU’s
Comparación respecto a otros
microcontroladores:
Tamaño del código (bytes)
Frente a similares funciones
matemáticas y en condiciones
similares.
Ciclos de instrucción
9
MSP430 v/s otras CPU’s
MSP430F135
Bytes
ATmega8
Ciclos
Bytes
PIC18F242
Ciclos
Bytes
8051
Ciclos
Bytes
H8/300L
Ciclos
Bytes
MC68HC11
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
10
Línea de productos MSP430
1v, 50MHz
USB, DMA
4Mb memory
Integrated RF
FLASH
Características/Desempeño
1.8 - 3.6v
Basic Clock
Timer_A
Comparator_A
F43x
F13x
ADC12
Timer_A/B
USART
x32x
LCD92
LCD160 ADC12
Timer_A/B
(2) USART
MPY
ADC12
Timer_A/B
(2) USART
MPY
LCD120
Timer_A
USART
MPY
F5xx
F44x
F14x
x33x
x31x
1.8 - 3.6v
FLL+ SVS
Timer_A/B, Basic Timer
Comparator_A
ADC12
Timer_A/B
(2) USART
MPY, DAC12
2.5 - 5v
FLL
Basic Timer, 8-bit T/C
Timer/Port Slope ADC
LCD84
ADC14
FLASH+LCD
F15x
ROM/OTP+LCD
FLASH
F12x
F43x
USART
F11x
F41x
$0.99
LCD96
11
MSP430x11x(1)
XIN
XOUT
VCC
VSS
RST/NMI
P1.x
8
ACLK
8Mhz
Basic
Clock
FLASH
RAM
1/4kB
128/256B
Power-On
Reset
Port 1
with IRQ
capability
Comp_A
Port2
with IRQ
capability
SMCLK
MCLK
JTAG/DeBUG
RISC CPU
16-bit
MAB
MDB
TEST
ACLK
Watchdog
Timer_A3
15-bit
16-bit
SMCLK
P2
6
P1.x
MSP430F1101 1kB Flash $0.99
12
MSP430x13x
LFXT1
XT2
VCC
VSS
AVCC AVSS
RST/NMI
2
2
8Mhz
Basic
Clock
ACLK
FLASH
RAM
8/16kB
512/256B
P1.x
P2.x
P3.x
P4.x
P5.x
P6.x
8
8
8
8
8
8
Power-On
Reset
Port 1/2
with IRQ
capability
Port 3/4
Port 5/6
ADC12
200ksps
Autoscan
Vref
Temp
Comp_A
USART0
UART/SPI
SMCLK
MCLK
JTAG/DeBUG
RISC CPU
16-bit
MAB
JTAG
MDB
4
ACLK
SMCLK
Watchdog
Timer_A3
Timer_B3
15-bit
16-bit
16-bit
VRef+ VeRef+ VRef-
64 TQFP
MSP430F133 8kB Flash $2.95
13
MSP430x14x
LFXT1
XT2
VCC
VSS
AVCC AVSS
RST/NMI
2
2
8Mhz
Basic
Clock
ACLK
FLASH
RAM
32 - 60kB
1/2kB
P1.x
P2.x
P3.x
P4.x
P5.x
P6.x
8
8
8
8
8
8
Power-On
Reset
Port 1/2
with IRQ
capability
Port 3/4
Port 5/6
ADC12
200ksps
Autoscan
Vref
Temp
Comp_A
USART0
UART/SPI
USART1
USART/SPI
SMCLK
MCLK
JTAG/DeBUG
RISC CPU
16-bit
MAB
JTAG
MDB
4
MPY/MAC
ACLK
8/16-bit
SMCLK
Watchdog
Timer_A3
Timer_B7
15-bit
16-bit
16-bit
VRef+ VeRef+ VRef-
64 TQFP
MSP430F149 60kB Flash $5.95
14
MSP430x31x
XIN
XOUT XBUF
VCC
VSS
RST/NMI
P0.x
8
4Mhz
FLL
Oscillator
ACLK
ROM
2-16kB
or
OTP
16kB
MCLK
RAM
Power-On
Reset
8b Timer/
Counter
UART
Timer/Port
slope ADC
(2) 8-bit
Basic
Timer 1
(2) 8-bit
128-512B
Port0
with IRQ
capability
MCLK
JTAG/TEST
RISC CPU
16-bit
MAB
JTAG
MDB
4
ACLK
Watchdog
15-bit
LCD Driver 23
92 Seg.
Sx/0x
4
COMx
MCLK
6
CIN
TP.x
MSP430C311S 2kB ROM $1.75
4
Rx
15
MSP430x32x
XIN
XOUT XBUF
VCC
VSS
AVCC AGND
RST/NMI
P0.x
8
4Mhz
FLL
Oscillator
ACLK
ROM
8/16kB
or
OTP
16kB
MCLK
RAM
Power-On
Reset
8b Timer/
Counter
UART
Timer/Port
slope ADC
(2) 8-bit
Basic
Timer 1
(2) 8-bit
256/512B
Port0
with IRQ
capability
MCLK
JTAG/TEST
RISC CPU
16-bit
MAB
JTAG
MDB
4
ACLK
Watchdog
ADC14
15-bit
12+2 bit
LCD Driver 21 Sx/0x
84 Seg.
4
COMx
MCLK
6
Rext
Ax SVcc
6
CIN
TP.x
4
Rx
16
MSP430x33x
XIN
XOUT XBUF
VCC
VSS
3
3
4Mhz
FLL
Oscillator
ACLK
ROM
24/32kB
or
OTP
32kB
MCLK
RST/NMI
RAM
Power-On
Reset
1kB
P1.x
P2.x
P3.x
P4.x
P0.x
8
8
8
8
8
Port 1/2
with IRQ
capability
Port 3/4
USART
UART/SPI
Basic
Timer 1
(2) 8-bit
Port 0
with IRQ
capability
MCLK
JTAG/TEST
RISC CPU
16-bit
MAB
JTAG
MDB
4
MPY/MAC
ACLK
8/16-bit
Watchdog
Timer_A5
15-bit
16-bit
Timer/Port
Slope ADC
(2) 8-bit
8b Timer/
Counter
UART
LCD Driver 30
120 Seg.
MCLK
TP.x
COMx
4
6
CIN
4
Sx/0x
Rx
17
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Reset, interrupciones y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
18
MPS430 Posee arquitectura ¨ortogonal¨
Ortogonal = todas las instrucciones funcionan con todos los modos de
direccionamiento.
Source
†
†
†
†
†
†
Set de instrucciones reducido
Instrucciones fáciles de aprender.
Sin instrucciones especiales
Bajo consumo
Código eficiente
Código compacto
Source
Address
Modes
Destination
Address
Modes
Destination
Otros Micros
Instructions
MSP430
Instructions
† Set de instrucciones complejo
† Instrucciones especiales a
aprender
† Poco eficiente
† Mayor área de silicio.
19
MSP430 Tipos de intrucciones:
†
†
†
†
51 instrucciones disponibles en assembler:
27 instrucciones básicas
Ö RISC
24 instrucciones emuladas
Ö CISC
7 modos de direccionamiento para origen , y 4 para destino
Modo de Registro (directo)
Modo indexado
Modo Simbólico
Modo Absoluto
Modo Indirecto
Modo Indirecto c/Auto incremento
Modo Inmediato
Procesamiento por Bit, byte o word.
Instrucciones y modos de direccionamiento idénticos para RAM,
ROM, EPROM, Flash y Periféricos.
20
Arquitectura de MSP430
† ALU de16-bit
† Buses de datos y direcciones de 16bit
† 16, registros multi propósito de 16-bit
(acumuladores)
R0/PC (Program Counter)
R1/SP (Stack Pointer)
R2/SR (Status)
R3/CG (Constant Gen.)
R4 - R15 (Propósito general)
† Acceso total a todos los registros
incluyendo PC, SP, SR y CG.
† Operaciones en un ciclo
† Soporte para operaciones
Memoria~Memoria
† Diseño optimizado para
programación en C.
BUS
DATOS
MDBDE
- meory
data bus
BUS
DE address
DIRECCIONES
memory
bus - MAB
15
0
R0/PC - Program Counter
0
R1/SP - Stack Pointer
0
R2/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
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 código no
paginado.
15
0
0
R1/SP - Stack Pointer
rw
push #01234h
Address
pop R8
Address
Address
0xxxh
Word1
0xxxh - 2
Word2
0xxxh - 4
Word3
0xxxh - 6
0xxxh - 8
SP, TOS
0xxxh
Word1
0xxxh - 2
Word2
0xxxh
Word1
0xxxh - 4
Word3
0xxxh - 2
Word2
0xxxh - 6
01234h
0xxxh - 4
Word3
0xxxh - 8
SP, TOS
SP, TOS
0xxxh - 6
0xxxh - 8
TOS: top-of-stack
Los registros PC y SP son completamente manipulables como
cualquier registro. (ambos están mapeados en RAM)
22
MSP430 SR (registro de estado)
15
9
Reservado
rw-0
8
V
rw-0
Bit’s que seleccionan
el reloj a usar
7
0
Osc
SCG1 SCG0 Off
CPU
Off
GIE
rw-0
rw-0
rw-0
rw-0
rw-0
N
Z
C
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
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
23
MSP430 CG (Generador de constantes)
15
0
0
R3/CG - Constant Generator
rw
Registro usado para insertar constantes en el código con
instrucciones de solo un parámetro. (manipulado por el linker)
;
Ejemplos:
1
CLR dst
es reemplazado por: MOV R3,dst
R3 ha sido cargado con 00h
2
INC dst
es reemplazado por: ADD 0(R3),dst
R3 ha sido cargado con 01h
El uso del generador de constantes queda restringido a solo constantes de uso
comú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.
24
MSP430 Registros multi propósito
15
0
0
R4 ~ R15
rw
Registro de propósito general de 16bits, usados como
acumuladores.
MSP430 dispone de 12 registros (R4 ~ R15) de propósito general para ser usados como
acumuladores.
25
Ventajas de arquitectura von-Neumann
add.w
add.b
R5,R6
R5,R6
add.w
add.b
#02001h,R7
#099h,R7
add.w
add.b
0200h,R8
0200h,R8
add.w
add.b
0C100h,R9
0C100h,R9
add.w
add.b
0C100h,0200h
0C100h,0200h
add.w
add.b
#01234h,&CCR0
#099h,&P1OUT
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
operación Word registro a registro
operación Byte registro a registro
operación Word inmediato 2001 a registro
operación Byte inmediato 2001 a registro
operación Word RAM 200h a R8
operación Byte RAM 200h a R8
operación Word Flash C100h a R9
operación Byte Flash C100h a R9
operación Word Flash a RAM
operación Byte Flash a RAM
operación Word inmediato a Periférico
operación Byte inmediato a Periférico
No existe “cuello de botella” en el acumulador.
Todas las instrucciones en MSP430 son consistentes en todo el rango
de memoria, no hay instrucciones especiales que aprender.
26
Modos de Direccionamiento:
;
;
; Modo de Registro (Directo), rápido, de solo un ciclo entre registros R0 ~ R15
;
add.w
R7,R8
; R7 + R8 >> R8
mov.w
R7,R8
; R7 >> R8
mov.b
R5,R10
; Byte inferior de R5 >> R10
;
; Modo Indexado, el índice se suma como offset a cualquier registro.
;
addc.w
-2(R5),4(R7)
; ((R5)-2)+((R7)+4)+C >> ((R7)+4)
mov.w
2(SP),R7
; Mueve el segundo ítem del stack a R7
mov.b
R5,9(R10)
; Byte inferior de R5 >> (R10+9)
;
; Modo Simbólico, el contenido de la “etiqueta” se calcula como una diferencia desde PC
add.w
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 dirección 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 periférico
dec.w
@R9
; (R9) -1 >> (R9)
;
; Modo Indirecto con auto incremento, cualquier registro es usado como puntero y
; posteriormente se incrementa
;
add.w
@R10+,R9
; (R10) + R9 >> R9,R10+2 >> R10
mov.w
@R10+,0(R12)
; (R10) >> (R12+0),R10+2 >> R10
mov.b
@R5+,&P2OUT
; (R5) >> P2OUT, R5+1 >> R5
inc.w
@R5+
; (R5) + 1 >> (R5), R5+2 >> R5
;
; Modo Inmediato, después de la instrucción sigue una constante.
;
add.w
#0A00h,R8
; 0A00h + R8 >> R8
mov.w
#0010,&TACTL
; 0Ah >> Timer_A Registro de periférico
bit.w
#0100h,4(R9)
; Prueba si Bit 8=1 ? En la 4ta word.
mov.b
#01Fh,0(R12)
; 01Fh >>(R12+0)
Se usa un offset de “0” y direccionamiento indexado para el destino de las
operaciones.
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 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.
†
†
†
†
;
;
;
R5
#01h,R5
; Incremento (emulada)
; instrucción incrustada
#01h,SR
; limpiar carry (emulada)
; instrucción incrustada
eint
bis.w
#08h,SR
; habilitar interrupciones (emulada)
; instrucción incrustada
;
br
mov.w
R5
R5,PC
; saltar a la pos. contenida en R5 (emulada)
; instrucción incrustada
;
ret
mov.w
@SP+,PC
; Restorna desde una subrutina (emulada)
; instrucción incrustada
;
;
inc.w
add.w
clrc
bic.w
30
MSP430 Formato de instrucciones
Formato I
Op-Code
add.w
Add.b
R7,R8
R7,R8
Formato II
R9
R9
Op-Code
jmp
Label
Ad B/W
As
Destination-Register
; 16 bits R7 + R8 >> R8 (16bits)
; 8 bits R7 + R8 >> R8 (8bits)
Op-Code
rlc.w
rlc.b
Formato III
Source-Register
B/W
Ad
D/S- Register
; 16b de R9 son desplazados a la izquierda a través del carry
; 8b de R9 son desplazados a la izquierda a través del carry
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
= operación como byte o como word
Condition
= Condición para un salto condicional
D-Register = registro usado como destino
D/S-Register = registro usado como origen/destino
Op-code
= código de la instrucción usada
S-Register = registro usado como origen
31
j
Instrucciones para control de flujo:
†
jmp
Ö salta a una posición del código en forma incondicional
Es el método incondicional mas rápido de controlar el flujo del programa con offset’s
de -511/+512 bytes.
1 word.
†
br
Ö Salto largo incondicional a cualquier parte del código.
Se carga una posición de16-bit en el contador de programa. No es una llamada a subrutina ya
que no se respalda posición de retorno alguna.
2 words,.
†
call
Ö Llamada a subrutinas
Se carga una posición de 16-bit en el contador de programa, y la dirección de retorno y el
contenido del registro de estado son automáticamente puestos en el stack
2 words.
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 dirección actual. Los saltos requieren solo una Word de código 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
Mainloop
Table
Ref0
;
Ref1
;
Ref2
;
next
clr.w
br
DW
DW
DW
R15
Table(R15)
Ref0
Ref1
Ref2
; limpia puntero para saltos
; salta
clr.b
jmp
&CACTL1
Next
; configura comparador A
mov.b
jmp
#CAREF0+CAON,&CACTL1
Next
; 0.25*Vcc en P2.3, activa comparador
mov.b
#CAREF1+CAON,&CACTL1
; 0.5*Vcc en P2.3, activa comparador
incd.w R15
and
#06h,R15
; Incrementa puntero para saltos
; 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.
34
Ejemplos de Llamadas a Subrutinas
;
; Ejemplo de llamada directa:
call
#Setup
; llama subrutina dirección de retorno >> TOS
;
; Ejemplo de llamadas según tabla condicional
Mainloop
;
Table
Sub1
;
Sub2
;
Setup
call
xor.w
jmp
Table(R15)
#02h,R15
Mainloop
DW
DW
Sub1
Sub2
clr.b
nop
ret
&P1OUT
mov.b
nop
ret
#0FFh,P1OUT
clr
mov.b
ret
R15
# 0FFh,&P1DIR
; llama sub rutina dirección de retorno >> TOS
; conmuta puntero
; repite
; pone en “0” todas la salida de P1
; retorna de subrutina (mov SP+,PC)
; pone en “1” todas las salida de P1
; retorna de subrutina (mov SP+,PC)
; limpia el puntero de llamadas
; puerto 1 como salida
; 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).
35
Manipulación de Bit’s:
†
bic(.b)
Ö Pone a “0” uno o mas bit’s en el destino.
Se operan lógicamente el inverso del origen y el destino. (and)
El registro de estado no es afectado.
†
bis(.b)
Ö Pone a “1” uno o mas bit’s en el destino.
se operan lógicamente el origen y el destino (or),
El registro de estado no es afectado.
†
bit(.b)
Ö Prueba uno o mas bits en el destino.
Se operan lógicamente el origen y el destino (and)
El resultado afecta solo al registro de estado.
†
cmp(.b)
Ö Compara Origen con Destino.
El origen es restado del destino.
El resultado afecta solo al registro de estado.
36
Ciclos de instrucciones:
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
-
37
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
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 automática.
Vectores de
interrupción
MEMORIA DE
PROGRAMA
Memoria de info
Bootstrap Loader
RAM
Registros de
periféricos
0FFFFh
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
39
Procesamiento de Interrupciones:
Antes de una interrupción:
Item1
Item2
SP, TOS
Item1
Item2
PC
SR
SP, TOS
Después de una interrupción:
† SR es recuperado desde el stack
† PC es recuperado desde el stack
Item1
Item2
PC
SR
Durante una interrupción:
† PC copiado en stack
† SR copiado en stack
† GIE, CPUOFF, OscOFF y SCG1 son limpiados
† los flag IFG son limpiados cuando provienen de
una fuente única (ej. Usart)
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 interrupción:
† MSP430F11x1 posee capacidad de interrupción en ambos flancos en todos sus pines
† Cualquier interrupción habilitada saca de los modos de bajo consumo a la CPU
MSP430F11x1
;
;
SetupP2_0
TEST
Vcc
P2.5
Vss
XOUT
XIN
RST
P2.0
P2.1
P2.2
bic.b
bis.b
bis.b
mov.w
nop
#01h,&P2DIR
#01h,&P2IES
#01h,&P2IE
#LPM3+GIE,SR
P2_ISR
bic.b
nop
reti
#01h,&P2IFG
ORG
0FFE6h
DW
Mainloop
P2_ISR
;
;
;
;
;
;
;
;
;
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.4
P2.3
P2.0 configurada como entrada
Interrupción en flanco H->L
Interrupción habilitada en P2.0
Entra en LPM3 con interrupciones habilitadas
ciclo inútil.
limpia flag de interrupción en P2.0
ciclo inútil…
retorna al estado previo a la interrupción.
; vector de Interrupcion de P2
;
41
MSP430 Power-UP
#include
;
RESET
StopWDT
SetupP1
Mainloop
"msp430x11x1.h”
ORG
mov.w
mov.w
bis.b
0F000h
#300h,SP
#WDTPW+WDTHOLD,&WDTCTL
#01h,&P1DIR
xor.b
jmp
#01h,&P1OUT
Mainloop
ORG
DW
END
0FFFEh
RESET
; definición 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
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
1)
2)
ck
Sta
T
WD
3)
T
ESE
R
r de
o
t
Vec
42
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
Consumo en uA @ 1MHz
* DCO esta deshabilitado, pero el generador de DC sigue activo a menos que se manipule sus bits de control.
Modos de Bajo Consumo
43
MSP430 Aplicación para RTC de 1 año:
MSP430 6us wake-up*
f
1mA
Crystal
32,768
10-bit Frequency Integrator
2uA
1s
2s
Otra CPU 17,500us “power-up**”
1mA
/(N+1)
Digitally Controller Osciallator
DCO
f System
FLL - US Patent # 5,877,641
“
9uA
1s
**Microchip (AN606)
2s
44
MSP430 Aplicación para RTC de 1 año:
MSP430x11x
CR2032
UART, SPI, IIC ...
Datos…
Vcc
Xin
Vss
Xout
RST/NMI
P2.x
RX
TX
P1.x
32768
12 Pines disponibles
CR2032 180mAH. Corriente drenada para 10 años de vida = 0.180A/ 10 años / 365 días / 24 horas < 2.2uA
Ejemplo RTC : operación en LPM3 con oscilador a 32KHz (1.5uA). 1Hz ISR.
Consumo normal en LPM3
Rutina de interrupción (50 ciclos/ISR)
1s x 1.50uA
1.50uA
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
45
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
46
MSP430x11x/12x
Sistema de Reloj Básico
DIVA
2
LFXTCLK
/1, /2, /4, /8
OscOff
ACLK
XTS
Auxiliary Clock
XIN
SELM DIVM
LFXT1 Oscillator
2
CPUOff
2
3
XOUT
0,1
/1, /2, /4, /8, off
MCLK
2
DCOCLK
Main System Clock
Vcc
Vcc
Rsel SCG0
3
0
DC- Gen
P2.5/Rosc
1
DCOR
DCO
3
MOD
5
Digital Controlled Oscillator
+
Modulator
SELS DIVS
2
SCG1
0
/1, /2, /4, /8, off
SMCLK
1
Sub-System Clock
47
MSP430x13x/14x/15x/16x
Sistema de Reloj Básico
Sistema de reloj F13x ~ F16x
DIVA
2
LFXTCLK
/1, /2, /4, /8
OscOff
ACLK
XTS
Auxiliary Clock
XIN
SELM DIVM
LFXT1 Oscillator
2
CPUOff
2
3
XOUT
0,1
/1, /2, /4, /8, off
MCLK
2
XT2Off
Main System Clock
XT2IN
XT2 Oscillator
DCOCLK
XT1OUT
Vcc
Vcc
Rsel SCG0
3
0
DC- Gen
P2.5/Rosc
1
DCOR
DCO
3
MOD
5
Digital Controlled Oscillator
+
Modulator
SELS DIVS
2
SCG1
0
/1, /2, /4, /8, off
SMCLK
1
Sub-System Clock
48
MSP430x1xx LF XTAL (Cristal Baja Frec.)
† Solo se requiere un cristal de reloj; No se necesitan componentes adicionales.
MSP430F11x1
32768
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 fracción)
MCLK~1MHz DCOCLK (o fracción)
SMCLK~1MHz DCOCLK (o fracción)
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).
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
SetupBC
Mainloop
bis
jmp
#OSCOFF,SR
Mainloop
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 fracción)
SMCLK= DCOCLK (o fracción)
; oscilador externo desactivado
; no hace nada
NOTA! La fuente por defecto de reloj al momento del Power UP es el DCO. La
configuración posterior define la fuente de reloj a utilizar.
50
MSP430x11x DCO Parameters
51
MSP430 Configuración 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
tensión de alimentación
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
SetupBC
Mainloop
bis.b
jmp
#XTS,&BCSCTL1
Mainloop
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.4
P2.3
ACLK= LFXT1 (o fracción)
MCLK= LFXT1 o DCOCLK
(o fracción)
SMCLK= LFXT1 o DCOCLK
(o fracción)
; LFXT1/ACLK = XT XTAL
; 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).
53
MSP430x11x/12x Buffer de Reloj
Se pueden sacar por los pines las señales 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
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
SMCLK
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 DCOCLK’s
† Manipulación de software periódica o predefinida estabiliza DCOCLK
† DCOCLK es programable digitalmente en el rango de: 100kHz - 8Mhz
Frecuencia de referencia.
ACLK or 50/60Hz
SW+HW
Control de DCOCLK
Rsel SCG0
MOD
DCO
3
DCGenerator
5
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
DCOCLK para timer
CCI2B_ISR
Captura 122us
15
0
CCI2B
3
Intervalo
CCI2B_ISR
DecDCO
IncDCO
DoneDCO
Test_DCO
mov
sub
mov
cmp
jlo
jeq
dec.b
jmp
inc.b
jmp
clr
reti
1
2
&CCR2,R14
R15,R14
&CCR2,R15
#122,R14
IncDCO
DoneDCO
&DCOCTL
Test_DCO
&DCOCTL
Test_DCO
&CCTL2
;
;
;
;
;
;
;
;
;
;
;
;
R14 =
R14 =
R15 =
Delta
0
Timer_A
Capture
15
0
CCR2
captura SMCLK
captura diferencia
captura SMCLK
= SMCLK/(3278/4)
si es igual termina
decrementa si es mayor
incrementa si es menor
detiene CCR2
retorna de subrutina
56
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
57
MSP430F Registros de periféricos
MSP430 usa arquitectura Von Newan
† Todos los periféricos están mapeados
en memoria.
† Se puede utilizar cualquier instrucción
con estos registros
Vectores de
interrupción
0FFFFH
Memoria de
Programa
Info. Memory
Bootstrap Loader
RAM
0200h
Registros de
Periféricos
000h
58
MSP430 Controlador de Memoria FLASH
MEMORIA 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.
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 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”.
60
MSP430 Supervisor de Alimentación
SUPERVISOR 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
61
MSP430 Supervisor de Alimentación
62
MSP430 Multiplicador por Hardware
MULTIPLICADOR 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
63
MSP430 Multiplicador por Hardware
0
15
† MPY, MPYS, MAC, MACS 16 u 8-bit
MPY
130h
MAC
† No hay instrucciones
especiales.
0
15
0
OP2 138h
OP1
134h
MACS 136h
16x16 Multiplier
† La operación comienza
moviendo el primer
operando y termina
moviendo el segundo
operando.
32-Bit Adder
Multiplexer
32-Bit
SUMEXT 13Eh
† La multiplicación esta
lista en el siguiente ciclo.
mov.w
mov.w
15
MPYS 132h
#01234h,&MACS
#04567h,&OP2
C
S
31
RESHI
13Ch
Multiplexer
RESLO
013Ah
0
; Carga primer operando
; Carga segundo operando
; Operación lista.
64
Controlador de Acceso Directo a memoria
CONTROLADOR 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:
†Single
†Block
†Burst-Block
† Presente en Micros MSP430F15x / F16x
65
Controlador de Acceso Directo a memoria
66
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operacion
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
67
MSP430F Registros de periféricos
MSP430 usa arquitectura Von Newan
† Todos los periféricos están mapeados
en memoria.
† Se puede utilizar cualquier instrucción
con estos registros
Vectores de
interrupción
0FFFFH
Memoria de
Programa
Info. Memory
Bootstrap Loader
RAM
0200h
Registros de
Periféricos
000h
68
MSP430 Puertos I/O
Puertos 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 pin
† Flags 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
69
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)
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 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.
71
MSP430 Watchdog Timer
Clk/32.768
Clk/8.192
WDTCTL
Clk/512
4
Clk/64
† Cualquier acceso al
registro WDTCTL debe
incluir 05Axxh a modo de
contraseña
† Registro de control
mapeado en ram,
completamente
configurable por software.
Interrupt
Y
3
2
1
Q6
MSB
Q9
0
Q13
1
Q15
0
1
16 bit
Counter
A
1
B
MDB
Password
Comparator
0
16
1
PUC
Clear
0
CLK
EQU
Write Enable Low
Byte
R/ W
EQU
SMCLK
1
HOLD
ACLK
1
NMIES
NMI
A
EN
TMSEL
CNTCL
SSEL
IS1
IS0
LSB
72
MSP430 Ejemplo Watchdog Timer
MDB, Byte Superior
0120h
MDB, Byte Inferior
R/W
7
Comparación de contraseña
Lectura:
Escritura:
EQU
HOLD
0
NMIES
NMI
TMSEL CNTCL SSEL
IS1
ISO
Byte Superior se lee como 069h
Byte Superior se debe escribir como 05Ah,
de otra forma se produce una violación de
contraseña y se efectúa un PUC
WDT_key
;
WDT_Stop
;
WDT_250
equ
05A00h
; Contraseña de acceso a WDT
mov.w
#(WDT_Key+80h),&WDTCTL
; detiene WDT
mov.w
#(WDT_Key+1Dh),&WDTCTL
; Configura como timer.
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 energía por software
† Intercambio de entradas para compensación 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 CPU’s incluyen
Timer B3 y otras Timer B7
† Contadores de 16bits
† Interrupción por rebalse del contador
† Fuentes 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.
76
MSP430 Timer’s Modos de cuenta
Modo UP/DOWN
Modo Stop/Halt
Timer detenido permanentemente
El timer cuenta entre 0 , CCR0 y 0
0FFFFh
UP/DOWN Mode
CCR0
0h
Modo UP
Modo Continuous
El timer cuenta hasta rebalsar.
El timer cuenta desde 0 hasta CCR0
0FFFFh
Continuous Mode
0FFFFh
CCR0
0h
0h
77
MSP430 Timer’s Modos de salida
Los Registro CCR poseen
salidas independientes
† Multiples modos de
operación.
† Salidas controladas por
hardware.
78
MSP430 Timer A3
15
P1.0
ACLK
SMCLK
P2.1
Divider
1/2/4/8
0
16-bit Timer
CLK
RC
Mode Continous,
UP, UP/Down
Capture
P1.1
P2.2
GND
VCC
Set_TAIFG
0
15
Capture/ Compare Register
CCR0
Capture
Mode
OUT_0
Output
Unit
Comparator 0
0
15
Capture
CAOUT
P1.2
Capture/ Compare Register
CCR1
Capture
Mode
OUT_1
Output
Unit
Comparator 1
15
Capture
P2.3
0
Capture/ Compare Register
CCR2
Capture
Mode
OUT_2
Output
Unit
Comparator 2
CCI2
P1.2
P1.6
Equ1
CCI1
P1.3
ACLK
GND
VCC
P1.5
Equ0
CCI0
GND
VCC
P1.1
Equ2
P1.3
P1.7
P2.4
79
MSP430 Timer A3 Unidades CCRx
Overflowx
Logic
CCISx1 CCISx0
Data Bus
Timer Bus
CAPx
0
1
2
3
CCIxA
CCIxB
GND
VCC
COVx
15
Capture
Capture
Mode
0
Capture/Compare Register
CCRx
CCMx1 CCMx0
0
0
1
1
0
1
0
1
Disabled
Pos. Edge
Neg. Edge
Both Edges
Comparator x
to Port0
EQUx
0
CAPx
Set_CCIFGx
Y
SCCIx
1
EN
A
CCIx
CCRx
0172h
to
017Eh
15
2
0
15
2
rw(0)
15
CCTLx
162h
to
16Eh
CAPTURE
MODE
rw(0)
rw(0)
INPUT
SELECT
rw(0)
rw(0)
SCS SCCI
unCAP
used
rw(0)
rw(0)
rw(0)
rw(0)
0
0
OUTMODx
rw(0)
rw(0)
rw(0)
CCIE CCI
OUT COV CCIFG
rw(0)
rw(0)
r
rw(0)
rw(0)
80
MSP430 Timer B3/7
( F13x en adelante )
15
P4.7
ACLK
SMCLK
P4.7
Divider
1/2/4/8
0
8, 10, 12 or 16-bit Timer
CLK
RC
Mode Continous,
UP, UP/Down
15
0
Set_TBIFG
Capture / Compare CCR0
Capture
P4.0
P4.0
GND
VCC
Compare Latch TBCL0
OUT_0
Capture
Mode
Output
Unit
Comparator 0
P4.0
ADC12I2
Equ0
CCI0
P4.1
P4.2
P4.3
P4.4
P4.5
P4.1
P4.2
P4.3
P4.4
P4.5
CCR1 - CCR6
15
0
Capture/ Compare CCR7
Capture
P4.6
ACLK
GND
VCC
Capture
Mode
Compare Latch TBCL7
OUT_7
Output
Unit
Comparator 7
P4.6
Equ7
CCI7
81
MSP430 Timer B3/7 Unidades CCRx
Overflow x
COVx
Logic
CAPx
CCISx1 CCISx0
15
0
1
2
CCIxA
CCIxB
GND
VCC
Capture
Capture
Mode
3
0
Capture/Compare Register
CCRx Reset
POR
CCMx1 CCMx0
CCMx1 CCMx0
0
0
1
1
Timer Bus
0
1
0
1
Disabled
Pos. Edge
Neg. Edge
Both Edges
Reset
to Port0
Load
Capture Latch TBCLx
CAP
CCDL0
CCLD1
Comparator
to Port0 x
High
Zero
CAPx
EQUx 0
EQU0
Up/Down
1
CCIx
Set_CCIFGx
15
CCTLx
182h
to
19Ah
0
CAPTURE
MODE
rw(0)
rw(0)
INPUT
SELECT
rw(0)
rw(0)
CLLD
SCS
rw(0)
rw(0)
rw(0)
OUTMODx
CAP
rw(0)
rw(0)
rw(0)
rw(0)
CCIE CCI
OUT COV CCIFG
rw(0)
rw(0)
r
rw(0)
rw(0)
82
Timer A Ejemplo de PWM Up-Mode
† Ejemplo de generación de PWM Sin intervención de la CPU
MSP430F11x1
TEST
Vcc
P2.5
Vss
XOUT
XIN
RST
P2.0
P2.1
P2.2
SetupP1
P1.7
P1.6
P1.5
P1.4
P1.3
TA1/P1.2
P1.1
P1.0
P2.4
P2.3
0 - CCR0
CCR1
0 - CCR0
CCR1
0 - CCR0
CCR1
bis.b
bis.b
mov.w
mov.w
mov.w
#004h,&P1DIR
#004h,&P1SEL
#512-1,&CCR0
#OUTMOD2+OUTMOD1+OUTMOD0,&CCTL1
#128,&CCR1
;
;
;
;
;
SetupTA
mov.w
#TASSEL1+MC0,&TACTL
Mainloop
jmp
#Mainloop
; SMCLK, modo: up
;
; loop infinito
SetupC0
SetupC1
P1.2 salida
P1.2 TA1 configura modulo
define periodo PWM
CCR1 modo reset/set
CCR1 ciclo útil PWM
83
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.
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 transmisión
y recepción
† Transmisió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.
85
MSP430 Puerto Serie (Modo USART)
86
MSP430 Puerto Serie (Modo SPI)
PUERTO SERIE: SPI
†
†
†
†
Datos de 7 u 8 bits.
Operación como SPI de 3 o 4 pines.
Modo Maestro o Esclavo
Registros de desplazamiento y buffers independientes para
transmisión y recepción
† Polaridad y fase de reloj configurable.
† Frecuencia de reloj programable en modo Master
† Interrupciones independientes para transmisión y recepción.
87
MSP430 Puerto Serie (Modo SPI)
88
MSP430 Puerto Serie (Modo I2C)
PUERTO SERIE: I2C
† Solo esta presente en CPU’s 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.
Generación de reloj programable.
Datos de 16 bits de ancho para aumentar ancho de banda
Cuenta automática 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.
† 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 canal
†Conversión
única en secuencia de canales
†Conversiones
sucesivas en un canal
†Conversiones
sucesivas en secuencias de canales
ADC12 / ADC10
91
MSP430 ADC10 (F11x2 ~ F12x2)
Ve REF+
V REF+
A0
A1
A2
A3
A5
A5
A6
A7
Ve REF-
AVSS
AVCC
Oscillator
Multiplexer
VREF-/
1.5V or 2.5V
Reference
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
REFON
VeREF+
V REF+
1.5V or 2.5V
V REF+
V REF- / Ve REFADC12CTLx.0..3
AVSS
INCH= 0Ah
on
on
AVCC
Reference
AVCC
Ref_X
AVSS
a0
a1
a2
a3
ADC12ON
ADC12CTLx.4..6
Analog
a4
a5
V R-
ADC12DIV
ADC12CLK
V R+
&
Internal
Oscillator
ADC12OSC
CLKSRC1
Divide by
1,2,3,4,5,6,7,8
Sample
Multiplexer
a6
a7
ADC12SSEL
CLKSRC2
CLKSRC3
SHT0
12-bit A/D converter core
SHT1
Hold
SHP
12 : 1
S/H
a8
SAMPCON
a9
a10
Sampling
Timer
SHI
a11
12-bit S A R
ISSH
MSC
Conversion CTL
AVCC
Ref_X
T
AVSS
0140h
0142h
0144h
0146h
ADC12MEM0
ADC12MEM1
ADC12MEM2
ADC12MEM3
0148h
ADC12MEM4
ADC12MEM5
ADC12MEM6
ADC12MEM7
ADC12MEM8
014Ah
014Ch
014Eh
0150h
0152h
0154h
0156h
0158h
015Ah
015Ch
015Eh
ADC12MEM9
ADC12MEM10
ADC12MEM11
ADC12MEM12
ADC12MEM13
ADC12MEM14
ADC12MEM15
16 x 12-bit
ADC Memory
ADC12SC
ADC12I1
ADC12I2
ADC12I3
ADC12CTL0
ADC12CTL1
ADC12CTL2
ADC12CTL3
ADC12CTL4
ADC12CTL5
ADC12CTL6
ADC12CTL7
ADC12CTL8
ADC12CTL9
ADC12CTL10
080h
081h
082h
SHS ENC
083h
084h
085h
086h
087h
ADC12CTL11
088h
089h
08Ah
08Bh
ADC12CTL12
ADC12CTL13
08Ch
08Dh
ADC12CTL14
ADC12CTL15
16 x 8-bit
ADC Memory Control
08Eh
08Fh
93
MSP430 DAC12
CONVERSORES DIGITAL / ANALOGO
† 2 Conversores Monolíticos de 12bit’s con salida de voltaje.
† Resolución configurable de 8 o 12 bit’s
† Settling 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’s
† Presente en MicrosMSP430F15x/F16x
DAC12
94
MSP430 DAC12
Comparte referencias con el
conversor Analogo / Digital
95
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operación
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
96
Desarrollo con MSP430
CONCEPTO DE DESARROLLO Y DEPURACION
† Programación y depuración IN-CIRCUIT vía JTAG
† JTAG permite emulación y control en tiempo real.
† JTAG permite acceso completo a registros, emulación paso a
paso, etc…
† JTAG protegido por fusible FISICO
† Programador JTAG de bajo costo
† Programación IN-CIRCUIT vía BSL (producción)
† BSL solo para propósitos de programación
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
TEST en alto, habilita JTAG
Los terminales usados por JTAG están
compartidos con los terminales
P1.7-P1.4 en los micros de 20 y 28
pines.
Puerto Paralelo
7
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
Aplicación REAL con MSP430F135
Conector JTAG
MSP430F135
100
Familia de Herramientas para MSP430
MCU:
Variante:
MSP-FET430X110
MSP430x11x(1)
MSP-FET430P120
MSP430x12x
MSP-FET430P140
MSP430x13x/14x
MSP-FET430P410
MSP430x41x
MSP-FET430P430
MSP430x42x/43x
MSP-EVK430S320
MSP430x31x/32x
MSP-EVK430S330
MSP430x33x
101
Herramientas de Desarrollo y Depuración.
IAR Embedded Workbench
Terminales disponibles.
LED en P1.0
Interfaz única
para todas
las variantes
de MSP430.
• 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.
102
Herramientas de Desarrollo y Depuración.
IAR Embedded Workbench
Terminales disponibles.
LED en P1.0
Interfaz única
para todas
las variantes
de MSP430.
• 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.
103
Bootstrap Loader en MSP430:
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.
MSP430F1121
Vectores de
Interrupción
TEST
Vcc
P2.5
Vss
XOUT
XIN
RST
P2.0
P2.1
P2.2
Memoria de
programa
Falsh de datos
RXD
Bootstrap Loader
0C00h
RAM
Registros de
Periféricos
SFR’s
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.4
P2.3
Puerto Serie
TXD
RS232
Driver
RST/NMI
Test
Test (internal)
Bootloader starts
104
Programación y depuración en tiempo real
aislada con MSP430
EMULACION 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
105
Seminario de MSP430: Programa
† MSP430 Introducción
† CPU de 16bits
† Interrupciones, Reset y modos de operación
† Sistema de Reloj
† Periféricos auxiliares
† Periféricos comunes
† Desarrollo y depuración
† Demostración.
106
107
Descargar