Professional Documents
Culture Documents
with MSP430
Christian Hernitscheck
MSP430 FAE Europe
Texas Instruments
© 2006 Texas Instruments Inc, Slide 1
Agenda
• Introduction to Ultra-Low Power
• Looking for Ultra-Low Power Parts
• MSP430 – The Ultra-Low Power MCU
• Low-Power Efficient Coding Techniques
• Summary
On demand
CPU
CPUOff
Off Active
Active Off
DCO Off
DCO
DCOon
on DCOonon All
All
ACLK
ACLKon ACLK
ACLKon on Clocks
on ClocksOff
Off
35uA
35uA 250uA
250uA <6us
0.1uA
0.1uA
Modern CPU
Minimum cycles per task
Intelligent peripherals
Instant-on stable high-speed clock
© 2006 Texas Instruments Inc, Slide 6
Power Consumption in CMOS Designs
• CMOS Inverter: Vin
Vcc
CH2
MSP430
+ AVcc
Vcc
- AVss
DVcc
DVss
CH1 Reset
CPU Clock
MSP430F16x LPM3
LFXT1
MSP430F20xx LPM3
VLO
Comparator_A
P1OUT
P1OUT |=
|= 0x02;
0x02; //
// Power
Power divider
divider
CACTL1
CACTL1 = CARSEL ++ CAREF_2
= CARSEL CAREF_2 ++ CAON;
CAON; //
// Comp_A on
Comp_A on
if
if (CAOUT
(CAOUT && CACTL2)
CACTL2)
P1OUT
P1OUT |=
|= 0x01;
0x01; //
// Fault
Fault
else
else
P1OUT
P1OUT &=
&= ~0x01;
~0x01;
P1OUT &= ~0x02;
P1OUT &= ~0x02; //
// de-power
de-power divider
divider
CACTL1
CACTL1 == 0;
0; //
// Disable
Disable Comp_A
Comp_A
DAC12
OA
Interrupt
DCO
LPM0 0 0 0 1 ~ 35uA
LPM3 1 1 0 1 ~ 0.8uA
LPM4 1 1 1 1 ~ 0.1uA
• C Code Example:
_BIS_SR
_BIS_SR (CPUOFF);
(CPUOFF); //
// LPM0
LPM0
© 2006 Texas Instruments Inc, Slide 16
Interrupt Processing
Item1 Prior to ISR
Item2 SP
Item1 WDT_ISR
WDT_ISR bic.w
bic.w #CPUOFF,0(SP)
#CPUOFF,0(SP)
Item2 reti
reti
PC
SR=0008 ORG
ORG 0FFFEh
0FFFEh
DW
DW RESET
RESET
ORG
ORG 0FFF4h
0FFF4h
Item1
Item2 SP DW
DW WDT_ISR
WDT_ISR
PC
SR
UART
RX
9600 baud TX
//
// Polling
Polling UART
UART Receive
Receive //
// UART
UART Receive
Receive Interrupt
Interrupt
for
for (;;)
(;;) #pragma vector=UART_VECTOR
#pragma vector=UART_VECTOR
{{ __interrupt
__interrupt void
void rx
rx (void)
(void)
while
while (!(IFG2&URXIFG0));
(!(IFG2&URXIFG0)); {{
TXBUF0
TXBUF0 == RXBUF0;
RXBUF0; TXBUF0
TXBUF0 == RXBUF0;
RXBUF0;
}} }}
//
// Endless
Endless Loop
Loop //
// Setup
Setup output
output unit
unit
for
for (;;)
(;;) CCTL1
CCTL1 == OUTMOD0_1;
OUTMOD0_1;
{{ _BIS_SR(CPUOFF);
_BIS_SR(CPUOFF);
P1OUT
P1OUT |=
|= 0x04;
0x04; //// Set
Set
delay1();
delay1();
P1OUT
P1OUT &=
&= ~0x04;
~0x04; //
// Reset
Reset
delay2();
delay2();
}}
ADC
//
// Interrupt
Interrupt CPU
CPU cycles
cycles
;; MSP430
MSP430 ISR
ISR to
to start
start conversion
conversion 66
BIS
BIS #ADC12SC,&ADC12CTL0
#ADC12SC,&ADC12CTL0 ;; Start
Start conversion
conversion 55
RETI
RETI ;; Return
Return 55
;; 16
16
AUTO
Data2
ADC Data1
DTC Data0
Data2
//
// Software
Software //
// Autoscan
Autoscan ++ DTC
DTC
Res[pRes++]
Res[pRes++] == ADC10MEM;
ADC10MEM; _BIS_SR(CPUOFF);
_BIS_SR(CPUOFF);
ADC10CTL0
ADC10CTL0 &=
&= ~ENC;
~ENC;
if (pRes < NR_CONV)
if (pRes < NR_CONV)
{{
CurrINCH++;
CurrINCH++;
if
if (CurrINCH
(CurrINCH ==== 3)
3)
CurrINCH
CurrINCH == 0;
0;
ADC10CTL1
ADC10CTL1 &=
&= ~INCH_3;
~INCH_3;
ADC10CTL1
ADC10CTL1 |=
|= CurrINCH;
CurrINCH;
ADC10CTL0
ADC10CTL0 |=
|= ENC+ADC10SC;
ENC+ADC10SC;
}}
//
// Interrupt
Interrupt CPU
CPU cycles
cycles DMA
DMA clocks
clocks
;; MSP430
MSP430 ISR
ISR for
for one
one output
output waveform
waveform 66 00
MOV
MOV @R5+,&DAC12_0DAT
@R5+,&DAC12_0DAT ;; Update
Update DAC0
DAC0 55 22
AND
AND #1F,R5
#1F,R5 ;; Modulo
Modulo pointer
pointer 22 00
RETI
RETI ;; Return
Return 55 00
;; 18
18 22
;; MSP430
MSP430 ISR
ISR for
for two
two output
output waveforms
waveforms 66 00
MOV
MOV @R5+,&DAC12_0DAT
@R5+,&DAC12_0DAT ;; Update
Update DAC0
DAC0 55 22
MOV
MOV @R5+,&DAC12_1DAT
@R5+,&DAC12_1DAT ;; Update
Update DAC1
DAC1 55 22
AND
AND #3F,R5
#3F,R5 ; Modulo pointer
; Modulo pointer 22 00
RETI
RETI ;; Return
Return 55 00
;; 23
23 44
40
MSP430
3.0V I Vcc
30
Vss
Icc [uA]
20
P1.0
10
0
0.0 V 0.5 V 1.0 V 1.5 V 2.0 V 2.5 V 3.0 V
Vin at P1.0 [V]
;; 8-bit
8-bit addition
addition
5445
5445 add.b
add.b R4,R5
R4,R5 ;; 1/1
1/1
52D202000202
52D202000202 add.b
add.b &0200,&0202
&0200,&0202 ;; 3/6
3/6
D0F200100021
D0F200100021 bis.b
bis.b #010h,&P1OUT
#010h,&P1OUT ;; Without
Without CG
CG
• Completely Automatic!
Products Applications
Amplifiers amplifier.ti.com Audio www.ti.com/audio
Data Converters dataconverter.ti.com Automotive www.ti.com/automotive
DSP dsp.ti.com Broadband www.ti.com/broadband
Interface interface.ti.com Digital Control www.ti.com/digitalcontrol
Logic logic.ti.com Military www.ti.com/military
Power Mgmt power.ti.com Optical Networking www.ti.com/opticalnetwork
Microcontrollers microcontroller.ti.com Security www.ti.com/security
RFID www.ti-rfid.com Telephony www.ti.com/telephony
Low Power www.ti.com/lpw Video & Imaging www.ti.com/video
Wireless
Wireless www.ti.com/wireless
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2007, Texas Instruments Incorporated