msp430 - general.pdf

945
MSP430x4xx Family January 2010 MSP430 User’s Guide SLAU056J

Upload: dangnhan

Post on 08-Jan-2017

289 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: MSP430 - general.pdf

MSP430x4xx Family

January 2010 MSP430

User’s Guide

SLAU056J

Page 2: MSP430 - general.pdf
Page 3: MSP430 - general.pdf

Related Documentation From Texas Instruments

iii

Preface

Read This First

About This Manual

This manual discusses modules and peripherals of the MSP430x4xx family ofdevices. Each discussion presents the module or peripheral in a generalsense. Not all features and functions of all modules or peripherals are presenton all devices. In addition, modules or peripherals may differ in their exactimplementation between device families, or may not be fully implemented onan individual device or device family.

Pin functions, internal signal connections and operational parameters differfrom device to device. The user should consult the device-specific data sheetfor these details.

Related Documentation From Texas Instruments

For related documentation see the web site http://www.ti.com/msp430.

FCC Warning

This equipment is intended for use in a laboratory test environment only. Itgenerates, uses, and can radiate radio frequency energy and has not beentested for compliance with the limits of computing devices pursuant to subpartJ of part 15 of FCC rules, which are designed to provide reasonable protectionagainst radio frequency interference. Operation of this equipment in otherenvironments may cause interference with radio communications, in whichcase the user at his own expense will be required to take whatever measuresmay be required to correct this interference.

Notational Conventions

Program examples, are shown in a special typeface.

Page 4: MSP430 - general.pdf

Glossary

iv

Glossary

ACLK Auxiliary Clock See Basic Clock Module

ADC Analog-to-Digital Converter

BOR Brown-Out Reset See System Resets, Interrupts, and Operating Modes

BSL Bootstrap Loader See www.ti.com/msp430 for application reports

CPU Central Processing Unit See RISC 16-Bit CPU

DAC Digital-to-Analog Converter

DCO Digitally Controlled Oscillator See FLL+ Module

dst Destination See RISC 16-Bit CPU

FLL Frequency Locked Loop See FLL+ Module

GIE General Interrupt Enable See System Resets Interrupts and Operating Modes

INT(N/2) Integer portion of N/2

I/O Input/Output See Digital I/O

ISR Interrupt Service Routine

LSB Least-Significant Bit

LSD Least-Significant Digit

LPM Low-Power Mode See System Resets Interrupts and Operating Modes

MAB Memory Address Bus

MCLK Master Clock See FLL+ Module

MDB Memory Data Bus

MSB Most-Significant Bit

MSD Most-Significant Digit

NMI (Non)-Maskable Interrupt See System Resets Interrupts and Operating Modes

PC Program Counter See RISC 16-Bit CPU

POR Power-On Reset See System Resets Interrupts and Operating Modes

PUC Power-Up Clear See System Resets Interrupts and Operating Modes

RAM Random Access Memory

SCG System Clock Generator See System Resets Interrupts and Operating Modes

SFR Special Function Register

SMCLK Sub-System Master Clock See FLL+ Module

SP Stack Pointer See RISC 16-Bit CPU

SR Status Register See RISC 16-Bit CPU

src Source See RISC 16-Bit CPU

TOS Top-of-Stack See RISC 16-Bit CPU

WDT Watchdog Timer See Watchdog Timer

Page 5: MSP430 - general.pdf

Register Bit Conventions

v

Register Bit Conventions

Each register is shown with a key indicating the accessibility of the eachindividual bit, and the initial condition:

Register Bit Accessibility and Initial Condition

Key Bit Accessibility

rw Read/write

r Read only

r0 Read as 0

r1 Read as 1

w Write only

w0 Write as 0

w1 Write as 1

(w) No register bit implemented; writing a 1 results in a pulse.The register bit is always read as 0.

h0 Cleared by hardware

h1 Set by hardware

−0,−1 Condition after PUC

−(0),−(1) Condition after POR

Page 6: MSP430 - general.pdf

vi

Page 7: MSP430 - general.pdf

Contents

vii

Contents

1 Introduction 1-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Architecture 1-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Flexible Clock System 1-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Embedded Emulation 1-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Address Space 1-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.1 Flash/ROM 1-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 RAM 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3 Peripheral Modules 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.4 Special Function Registers (SFRs) 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.5 Memory Organization 1-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 System Resets, Interrupts, and Operating Modes 2-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 System Reset and Initialization 2-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.1 Brownout Reset (BOR) 2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Device Initial Conditions After System Reset 2-4 . . . . . . . . . . . . . . . . . . . . . . .

2.2 Interrupts 2-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 (Non)-Maskable Interrupts (NMI) 2-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Maskable Interrupts 2-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Interrupt Processing 2-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Interrupt Vectors 2-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Special Function Registers (SFRs) 2-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3 Operating Modes 2-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Entering and Exiting Low-Power Modes 2-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4 Principles for Low-Power Applications 2-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Connection of Unused Pins 2-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 8: MSP430 - general.pdf

Contents

viii

3 RISC 16-Bit CPU 3-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 CPU Introduction 3-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 CPU Registers 3-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2.1 Program Counter (PC) 3-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Stack Pointer (SP) 3-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Status Register (SR) 3-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Constant Generator Registers CG1 and CG2 3-7 . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 General-Purpose Registers R4 to R15 3-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3 Addressing Modes 3-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Register Mode 3-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Indexed Mode 3-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Symbolic Mode 3-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 Absolute Mode 3-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 Indirect Register Mode 3-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.6 Indirect Autoincrement Mode 3-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.7 Immediate Mode 3-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4 Instruction Set 3-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Double-Operand (Format I) Instructions 3-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Single-Operand (Format II) Instructions 3-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Jumps 3-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4 Instruction Cycles and Lengths 3-72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.5 Instruction Set Description 3-74 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 16-Bit MSP430X CPU 4-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 CPU Introduction 4-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Interrupts 4-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 CPU Registers 4-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3.1 The Program Counter PC 4-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Stack Pointer (SP) 4-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Status Register (SR) 4-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.4 The Constant Generator Registers CG1 and CG2 4-11 . . . . . . . . . . . . . . . . . . . 4.3.5 The General Purpose Registers R4 to R15 4-12 . . . . . . . . . . . . . . . . . . . . . . . . .

4.4 Addressing Modes 4-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Register Mode 4-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2 Indexed Mode 4-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Symbolic Mode 4-24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.4 Absolute Mode 4-29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.5 Indirect Register Mode 4-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.6 Indirect, Autoincrement Mode 4-33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.7 Immediate Mode 4-34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5 MSP430 and MSP430X Instructions 4-36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 MSP430 Instructions 4-37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 MSP430X Extended Instructions 4-44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.6 Instruction Set Description 4-58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 Extended Instruction Binary Descriptions 4-59 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2 MSP430 Instructions 4-61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.3 Extended Instructions 4-113 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4 Address Instructions 4-156 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 9: MSP430 - general.pdf

Contents

ix

5 FLL+ Clock Module 5-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 FLL+ Clock Module Introduction 5-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 FLL+ Clock Module Operation 5-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2.1 FLL+ Clock features for Low-Power Applications 5-8 . . . . . . . . . . . . . . . . . . . . 5.2.2 Internal Very Low-Power, Low-Frequency Oscillator 5-9 . . . . . . . . . . . . . . . . . 5.2.3 LFXT1 Oscillator 5-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 XT2 Oscillator 5-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.5 Digitally Controlled Oscillator (DCO) 5-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.6 Frequency Locked Loop (FLL) 5-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.7 DCO Modulator 5-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.8 Disabling the FLL Hardware and Modulator 5-13 . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.9 FLL Operation from Low-Power Modes 5-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.10 Buffered Clock Output 5-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.11 FLL+ Fail-Safe Operation 5-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.3 FLL+ Clock Module Registers 5-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Flash Memory Controller 6-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Flash Memory Introduction 6-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Flash Memory Segmentation 6-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.1 SegmentA on MSP430FG47x, MSP430F47x, MSP430F47x3/4, andMSP430F471xx Devices 6-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.3 Flash Memory Operation 6-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Flash Memory Timing Generator 6-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2 Erasing Flash Memory 6-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.3 Writing Flash Memory 6-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.4 Flash Memory Access During Write or Erase 6-17 . . . . . . . . . . . . . . . . . . . . . . . 6.3.5 Stopping a Write or Erase Cycle 6-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.6 Marginal Read Mode 6-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.7 Configuring and Accessing the Flash Memory Controller 6-18 . . . . . . . . . . . . . 6.3.8 Flash Memory Controller Interrupts 6-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.9 Programming Flash Memory Devices 6-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.4 Flash Memory Registers 6-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 Supply Voltage Supervisor 7-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 SVS Introduction 7-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 SVS Operation 7-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.2.1 Configuring the SVS 7-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2 SVS Comparator Operation 7-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.3 Changing the VLDx Bits 7-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.4 SVS Operating Range 7-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.3 SVS Registers 7-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 16-Bit Hardware Multiplier 8-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 Hardware Multiplier Introduction 8-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Hardware Multiplier Operation 8-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.2.1 Operand Registers 8-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.2 Result Registers 8-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.3 Software Examples 8-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.4 Indirect Addressing of RESLO 8-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.5 Using Interrupts 8-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.3 Hardware Multiplier Registers 8-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 10: MSP430 - general.pdf

Contents

x

9 32-Bit Hardware Multiplier 9-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 32-Bit Hardware Multiplier Introduction 9-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 32-Bit Hardware Multiplier Operation 9-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.2.1 Operand Registers 9-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2 Result Registers 9-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.3 Software Examples 9-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.4 Fractional Numbers 9-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.5 Putting It All Together 9-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.6 Indirect Addressing of Result Registers 9-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.7 Using Interrupts 9-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.8 Using DMA 9-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3 32-Bit Hardware Multiplier Registers 9-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 DMA Controller 10-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1 DMA Introduction 10-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 DMA Operation 10-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.2.1 DMA Addressing Modes 10-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.2 DMA Transfer Modes 10-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.3 Initiating DMA Transfers 10-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.4 Stopping DMA Transfers 10-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5 DMA Channel Priorities 10-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 DMA Transfer Cycle Time 10-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Using DMA with System Interrupts 10-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.8 DMA Controller Interrupts 10-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.9 DMAIV, DMA Interrupt Vector Generator 10-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.10 Using the USCI_B I2C Module with the DMA Controller 10-19 . . . . . . . . . . . . . . 10.2.11 Using ADC12 with the DMA Controller 10-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.12 Using DAC12 With the DMA Controller 10-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.13 Using SD16 or SD16_A With the DMA Controller 10-20 . . . . . . . . . . . . . . . . . . . . 10.2.14 Writing to Flash With the DMA Controller 10-20 . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.3 DMA Registers 10-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11 Digital I/O 11-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Digital I/O Introduction 11-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Digital I/O Operation 11-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.2.1 Input Register PxIN 11-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2 Output Registers PxOUT 11-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.3 Direction Registers PxDIR 11-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.4 Pullup/Pulldown Resistor Enable Registers PxREN

(MSP430F47x3/4 and MSP430F471xx only) 11-4 . . . . . . . . . . . . . . . . . . . . . . . . 11.2.5 Function Select Registers PxSEL 11-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.6 P1 and P2 Interrupts 11-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.7 Configuring Unused Port Pins 11-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.3 Digital I/O Registers 11-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 11: MSP430 - general.pdf

Contents

xi

12 Watchdog Timer, Watchdog Timer+ 12-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1 Watchdog Timer Introduction 12-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Watchdog Timer Operation 12-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.2.1 Watchdog Timer Counter 12-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2 Watchdog Mode 12-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.3 Interval Timer Mode 12-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.4 Watchdog Timer Interrupts 12-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.5 WDT+ Enhancements 12-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.6 Operation in Low-Power Modes 12-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.7 Software Examples 12-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.3 Watchdog Timer Registers 12-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13 Basic Timer1 13-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.1 Basic Timer1 Introduction 13-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 Basic Timer1 Operation 13-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13.2.1 Basic Timer1 Counter One 13-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.2 Basic Timer1 Counter Two 13-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.3 16-Bit Counter Mode 13-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.4 Basic Timer1 Operation: Signal fLCD 13-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.5 Basic Timer1 Interrupts 13-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13.3 Basic Timer1 Registers 13-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14 Real Time Clock 14-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1 RTC Introduction 14-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 Real-Time Clock Operation 14-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14.2.1 Counter Mode 14-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.2 Calendar Mode 14-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.3 RTC and Basic Timer1 Interaction 14-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2.4 Real-Time Clock Interrupts 14-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14.3 Real-Time Clock Registers 14-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15 Timer_A 15-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.1 Timer_A Introduction 15-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2 Timer_A Operation 15-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15.2.1 16-Bit Timer Counter 15-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2.2 Starting the Timer 15-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2.3 Timer Mode Control 15-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2.4 Capture/Compare Blocks 15-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2.5 Output Unit 15-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15.2.6 Timer_A Interrupts 15-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15.3 Timer_A Registers 15-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 12: MSP430 - general.pdf

Contents

xii

16 Timer_B 16-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.1 Timer_B Introduction 16-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.1.1 Similarities and Differences From Timer_A 16-2 . . . . . . . . . . . . . . . . . . . . . . . . . 16.2 Timer_B Operation 16-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.2.1 16-Bit Timer Counter 16-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2.2 Starting the Timer 16-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2.3 Timer Mode Control 16-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2.4 Capture/Compare Blocks 16-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2.5 Output Unit 16-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2.6 Timer_B Interrupts 16-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.3 Timer_B Registers 16-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 USART Peripheral Interface, UART Mode 17-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.1 USART Introduction: UART Mode 17-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2 USART Operation: UART Mode 17-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17.2.1 USART Initialization and Reset 17-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.2 Character Format 17-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.3 Asynchronous Communication Formats 17-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.4 USART Receive Enable 17-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.5 USART Transmit Enable 17-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.6 USART Baud Rate Generation 17-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2.7 USART Interrupts 17-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17.3 USART Registers: UART Mode 17-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18 USART Peripheral Interface, SPI Mode 18-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.1 USART Introduction: SPI Mode 18-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2 USART Operation: SPI Mode 18-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18.2.1 USART Initialization and Reset 18-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2.2 Master Mode 18-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2.3 Slave Mode 18-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2.4 SPI Enable 18-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2.5 Serial Clock Control 18-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2.6 SPI Interrupts 18-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18.3 USART Registers: SPI Mode 18-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 13: MSP430 - general.pdf

Contents

xiii

19 Universal Serial Communication Interface, UART Mode 19-1 . . . . . . . . . . . . . . . . . . . . . . . . . 19.1 USCI Overview 19-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.2 USCI Introduction: UART Mode 19-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3 USCI Operation: UART Mode 19-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19.3.1 USCI Initialization and Reset 19-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.2 Character Format 19-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.3 Asynchronous Communication Formats 19-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.4 Automatic Baud Rate Detection 19-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.5 IrDA Encoding and Decoding 19-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.6 Automatic Error Detection 19-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.7 USCI Receive Enable 19-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.8 Receive Data Glitch Suppression 19-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.9 USCI Transmit Enable 19-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.10 UART Baud Rate Generation 19-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.11 Setting a Baud Rate 19-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.12 Transmit Bit Timing 19-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.13 Receive Bit Timing 19-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.14 Typical Baud Rates and Errors 19-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19.3.15 Using the USCI Module in UART Mode with Low-Power Modes 19-25 . . . . . . . 19.3.16 USCI Interrupts 19-25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19.4 USCI Registers: UART Mode 19-27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20 Universal Serial Communication Interface, SPI Mode 20-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.1 USCI Overview 20-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.2 USCI Introduction: SPI Mode 20-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3 USCI Operation: SPI Mode 20-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20.3.1 USCI Initialization and Reset 20-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.2 Character Format 20-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.3 Master Mode 20-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.4 Slave Mode 20-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.5 SPI Enable 20-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.6 Serial Clock Control 20-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.7 Using the SPI Mode with Low Power Modes 20-12 . . . . . . . . . . . . . . . . . . . . . . . . 20.3.8 SPI Interrupts 20-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20.4 USCI Registers: SPI Mode 20-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21 Universal Serial Communication Interface, I2C Mode 21-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1 USCI Overview 21-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 USCI Introduction: I2C Mode 21-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 USCI Operation: I2C Mode 21-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21.3.1 USCI Initialization and Reset 21-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.2 I2C Serial Data 21-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.3 I2C Addressing Modes 21-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.4 I2C Module Operating Modes 21-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.5 I2C Clock Generation and Synchronization 21-22 . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.6 Using the USCI Module in I2C Mode With Low-Power Modes 21-23 . . . . . . . . . 21.3.7 USCI Interrupts in I2C Mode 21-24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21.4 USCI Registers: I2C Mode 21-26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 14: MSP430 - general.pdf

Contents

xiv

22 OA 22-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1 OA Introduction 22-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 OA Operation 22-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.2.1 OA Amplifier 22-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2.2 OA Input 22-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2.3 OA Output 22-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2.4 OA Configurations 22-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.3 OA Modules in MSP430FG42x0 Devices 22-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.1 OA Amplifier 22-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.2 OA Inputs 22-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.3 OA Outputs 22-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.4 OA Configurations 22-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.5 Switch Control 22-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.3.6 Offset Calibration 22-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.4 OA Modules in MSP430FG47x Devices 22-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.1 OA Amplifier 22-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.2 OA Inputs 22-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.3 OA Outputs 22-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.4 OA Configurations 22-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.5 Switch Control of the FG47x devices 22-22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.4.6 Offset Calibration 22-23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.5 OA Registers 22-24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.6 OA Registers in MSP430FG42x0 Devices 22-27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.7 OA Registers in MSP430FG47x Devices 22-31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23 Comparator_A 23-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.1 Comparator_A Introduction 23-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2 Comparator_A Operation 23-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23.2.1 Comparator 23-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2.2 Input Analog Switches 23-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2.3 Output Filter 23-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2.4 Voltage Reference Generator 23-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2.5 Comparator_A, Port Disable Register CAPD 23-6 . . . . . . . . . . . . . . . . . . . . . . . 23.2.6 Comparator_A Interrupts 23-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23.2.7 Comparator_A Used to Measure Resistive Elements 23-7 . . . . . . . . . . . . . . . .

23.3 Comparator_A Registers 23-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24 Comparator_A+ 24-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.1 Comparator_A+ Introduction 24-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2 Comparator_A+ Operation 24-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24.2.1 Comparator 24-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.2 Input Analog Switches 24-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.3 Input Short Switch 24-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.4 Output Filter 24-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.5 Voltage Reference Generator 24-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.6 Comparator_A+, Port Disable Register CAPD 24-7 . . . . . . . . . . . . . . . . . . . . . . 24.2.7 Comparator_A+ Interrupts 24-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2.8 Comparator_A+ Used to Measure Resistive Elements 24-8 . . . . . . . . . . . . . . .

24.3 Comparator_A+ Registers 24-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 15: MSP430 - general.pdf

Contents

xv

25 LCD Controller 25-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.1 LCD Controller Introduction 25-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2 LCD Controller Operation 25-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25.2.1 LCD Memory 25-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.2 Blinking the LCD 25-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.3 LCD Timing Generation 25-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.4 LCD Voltage Generation 25-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.5 LCD Outputs 25-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.6 Static Mode 25-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.7 2-Mux Mode 25-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.8 3-Mux Mode 25-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.2.9 4-Mux Mode 25-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25.3 LCD Controller Registers 25-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26 LCD_A Controller 26-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.1 LCD_A Controller Introduction 26-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2 LCD_A Controller Operation 26-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26.2.1 LCD Memory 26-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.2 Blinking the LCD 26-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.3 LCD_A Voltage And Bias Generation 26-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.4 LCD Timing Generation 26-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.5 LCD Outputs 26-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.6 Static Mode 26-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.7 2-Mux Mode 26-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.8 3-Mux Mode 26-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2.9 4-Mux Mode 26-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26.3 LCD Controller Registers 26-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27 ADC10 27-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.1 ADC10 Introduction 27-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2 ADC10 Operation 27-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27.2.1 10-Bit ADC Core 27-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.2 ADC10 Inputs and Multiplexer 27-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.3 Voltage Reference Generator 27-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.4 Auto Power-Down 27-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.5 Sample and Conversion Timing 27-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.6 Conversion Modes 27-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.7 ADC10 Data Transfer Controller 27-15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.8 Using the Integrated Temperature Sensor 27-21 . . . . . . . . . . . . . . . . . . . . . . . . . . 27.2.9 ADC10 Grounding and Noise Considerations 27-22 . . . . . . . . . . . . . . . . . . . . . . . 27.2.10 ADC10 Interrupts 27-23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27.3 ADC10 Registers 27-24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 16: MSP430 - general.pdf

Contents

xvi

28 ADC12 28-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.1 ADC12 Introduction 28-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2 ADC12 Operation 28-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28.2.1 12-Bit ADC Core 28-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.2 ADC12 Inputs and Multiplexer 28-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.3 Voltage Reference Generator 28-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.4 Auto Power-Down 28-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.5 Sample and Conversion Timing 28-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.6 Conversion Memory 28-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.7 ADC12 Conversion Modes 28-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.8 Using the Integrated Temperature Sensor 28-16 . . . . . . . . . . . . . . . . . . . . . . . . . . 28.2.9 ADC12 Grounding and Noise Considerations 28-17 . . . . . . . . . . . . . . . . . . . . . . . 28.2.10 ADC12 Interrupts 28-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28.3 ADC12 Registers 28-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29 SD16 29-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.1 SD16 Introduction 29-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2 SD16 Operation 29-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29.2.1 ADC Core 29-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.2 Analog Input Range and PGA 29-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.3 Voltage Reference Generator 29-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.4 Auto Power-Down 29-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.5 Analog Input Pair Selection 29-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.6 Analog Input Characteristics 29-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.7 Digital Filter 29-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.8 Conversion Memory Registers: SD16MEMx 29-10 . . . . . . . . . . . . . . . . . . . . . . . . 29.2.9 Conversion Modes 29-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.10 Conversion Operation Using Preload 29-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.11 Using the Integrated Temperature Sensor 29-16 . . . . . . . . . . . . . . . . . . . . . . . . . . 29.2.12 Interrupt Handling 29-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29.3 SD16 Registers 29-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30 SD16_A 30-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.1 SD16_A Introduction 30-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2 SD16_A Operation 30-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30.2.1 ADC Core 30-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.2 Analog Input Range and PGA 30-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.3 Voltage Reference Generator 30-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.4 Auto Power-Down 30-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.5 Analog Input Pair Selection 30-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.6 Analog Input Characteristics 30-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.7 Digital Filter 30-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.8 Conversion Memory Register: SD16MEMx 30-12 . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.9 Conversion Modes 30-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.10 Conversion Operation Using Preload 30-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.11 Using the Integrated Temperature Sensor 30-19 . . . . . . . . . . . . . . . . . . . . . . . . . . 30.2.12 Interrupt Handling 30-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30.3 SD16_A Registers 30-22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 17: MSP430 - general.pdf

Contents

xvii

31 DAC12 31-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1 DAC12 Introduction 31-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 DAC12 Operation 31-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31.2.1 DAC12 Core 31-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 DAC12 Reference 31-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.3 Updating the DAC12 Voltage Output 31-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.4 DAC12_xDAT Data Format 31-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.5 DAC12 Output Amplifier Offset Calibration 31-10 . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.6 Grouping Multiple DAC12 Modules 31-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.7 DAC12 Interrupts 31-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31.3 DAC12 Registers 31-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32 Scan IF 32-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1 Scan IF Introduction 32-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Scan IF Operation 32-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32.2.1 Scan IF Analog Front End 32-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.2 Scan IF Timing State Machine 32-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.3 Scan IF Processing State Machine 32-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.4 Scan IF Debug Register 32-26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.5 Scan IF Interrupts 32-27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.6 Using the Scan IF with LC Sensors 32-28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.7 Using the Scan IF With Resistive Sensors 32-32 . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.8 Quadrature Decoding 32-33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32.3 Scan IF Registers 32-35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33 Embedded Emulation Module (EEM) 33-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.1 EEM Introduction 33-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2 EEM Building Blocks 33-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33.2.1 Triggers 33-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2.2 Trigger Sequencer 33-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2.3 State Storage (Internal Trace Buffer) 33-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2.4 Clock Control 33-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33.3 EEM Configurations 33-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 18: MSP430 - general.pdf

xviii

Page 19: MSP430 - general.pdf

1-1Introduction

Introduction

This chapter describes the architecture of the MSP430.

Topic Page

1.1 Architecture 1-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2 Flexible Clock System 1-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3 Embedded Emulation 1-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4 Address Space 1-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 1

Page 20: MSP430 - general.pdf

Architecture

1-2 Introduction

1.1 Architecture

The MSP430 incorporates a 16-bit RISC CPU, peripherals, and a flexible clocksystem that interconnect using a von Neumann common memory address bus(MAB) and memory data bus (MDB). Partnering a modern CPU with modularmemory-mapped analog and digital peripherals, the MSP430 offers solutionsfor demanding mixed-signal applications.

Key features of the MSP430x4xx family include:

Ultralow-power architecture extends battery life

0.1-µA RAM retention

0.8-µA real-time clock mode

250-µA / MIPS active

High-performance analog ideal for precision measurement

12-bit or 10-bit ADC — 200 ksps, temperature sensor, VRef

12-bit dual DAC

Comparator-gated timers for measuring resistive elements

Supply voltage supervisor

16-bit RISC CPU enables new applications at a fraction of the code size.

Large register file eliminates working file bottleneck

Compact core design reduces power consumption and cost

Optimized for modern high-level programming

Only 27 core instructions and seven addressing modes

Extensive vectored-interrupt capability

In-system programmable Flash permits flexible code changes, fieldupgrades, and data logging

1.2 Flexible Clock System

The clock system is designed specifically for battery-powered applications. Alow-frequency auxiliary clock (ACLK) is driven directly from a common 32-kHzwatch crystal. The ACLK can be used for a background real-time clock selfwake-up function. An integrated high-speed digitally controlled oscillator(DCO) can source the master clock (MCLK) used by the CPU and high-speedperipherals. By design, the DCO is active and stable in less than 6 µs.MSP430-based solutions effectively use the high-performance 16-bit RISCCPU in very short bursts.

Low-frequency auxiliary clock = Ultralow-power standby mode

High-speed master clock = High performance signal processing

Page 21: MSP430 - general.pdf

Embedded Emulation

1-3Introduction

Figure 1−1.MSP430 Architecture

ACLK

BusConv.

Peripheral

MAB 16-Bit

MDB 16-Bit

MCLK

SMCLK

ClockSystem

Peripheral PeripheralPeripheral

Peripheral Peripheral Peripheral

Watchdog

RAMFlash/

RISC CPU16-Bit

JTA

G/D

ebug

ACLKSMCLK

ROM

MDB 8-Bit

JTAG

1.3 Embedded Emulation

Dedicated embedded emulation logic resides on the device itself and isaccessed via JTAG using no additional system resources.

The benefits of embedded emulation include:

Unobtrusive development and debug with full-speed execution,breakpoints, and single steps in an application are supported.

Development is in-system and subject to the same characteristics as thefinal application.

Mixed-signal integrity is preserved and not subject to cabling interference.

Page 22: MSP430 - general.pdf

Address Space

1-4 Introduction

1.4 Address Space

The MSP430 von Neumann architecture has one address space shared withspecial function registers (SFRs), peripherals, RAM, and Flash/ROM memoryas shown in Figure 1−2. See the device-specific data sheets for specificmemory maps. Code access are always performed on even addresses. Datacan be accessed as bytes or words.

The addressable memory space is 128 KB with future expansion planned.

Figure 1−2.Memory Map

0FFE0hInterrupt Vector Table

Flash/ROM

RAM

16-Bit Peripheral Modules

8-Bit Peripheral Modules

Special Function Registers

0FFFFh

0FFDFh

0200h

01FFh

0100h

0FFh

010h0Fh

0h

Word/Byte

Word/Byte

Word

Byte

Byte

Word/Byte

10000hFlash/ROM

Access

Word/Byte

1.4.1 Flash/ROM

The start address of Flash/ROM depends on the amount of Flash/ROMpresent and varies by device. The end address for Flash/ROM is 0FFFFh fordevices with less than 60kB of Flash/ROM; otherwise, it is device dependent.Flash can be used for both code and data. Word or byte tables can be storedand used in Flash/ROM without the need to copy the tables to RAM beforeusing them.

The interrupt vector table is mapped into the upper 16 words of Flash/ROMaddress space, with the highest priority interrupt vector at the highestFlash/ROM word address (0FFFEh).

Page 23: MSP430 - general.pdf

Address Space

1-5Introduction

1.4.2 RAM

RAM starts at 0200h. The end address of RAM depends on the amount of RAMpresent and varies by device. RAM can be used for both code and data.

1.4.3 Peripheral Modules

Peripheral modules are mapped into the address space. The address spacefrom 0100 to 01FFh is reserved for 16-bit peripheral modules. These modulesshould be accessed with word instructions. If byte instructions are used, onlyeven addresses are permissible, and the high byte of the result is always 0.

The address space from 010h to 0FFh is reserved for 8-bit peripheral modules.These modules should be accessed with byte instructions. Read access ofbyte modules using word instructions results in unpredictable data in the highbyte. If word data is written to a byte module only the low byte is written intothe peripheral register, ignoring the high byte.

1.4.4 Special Function Registers (SFRs)

Some peripheral functions are configured in the SFRs. The SFRs are locatedin the lower 16 bytes of the address space and are organized by byte. SFRsmust be accessed using byte instructions only. See the device-specific datasheets for applicable SFR bits.

1.4.5 Memory Organization

Bytes are located at even or odd addresses. Words are only located at evenaddresses as shown in Figure 1−3. When using word instructions, only evenaddresses may be used. The low byte of a word is always an even address.The high byte is at the next odd address. For example, if a data word is locatedat address xxx4h, then the low byte of that data word is located at addressxxx4h, and the high byte of that word is located at address xxx5h.

Page 24: MSP430 - general.pdf

Address Space

1-6 Introduction

Figure 1−3.Bits, Bytes, and Words in a Byte-Organized Memory

15

7

14

6

. . Bits . .

. . Bits . .

9

1

8

0

Byte

Byte

Word (High Byte)

Word (Low Byte)

xxxAh

xxx9h

xxx8h

xxx7h

xxx6h

xxx5h

xxx4h

xxx3h

Page 25: MSP430 - general.pdf

2-1System Resets, Interrupts, and Operating Modes

System Resets, Interrupts,and Operating Modes

This chapter describes the MSP430x4xx system resets, interrupts, andoperating modes.

Topic Page

2.1 System Reset and Initialization 2-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 Interrupts 2-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3 Operating Modes 2-13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4 Principles for Low-Power Applications 2-16. . . . . . . . . . . . . . . . . . . . . . . . .

2.5 Connection of Unused Pins 2-16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 2

Page 26: MSP430 - general.pdf

System Reset and Initialization

2-2 System Resets, Interrupts, and Operating Modes

2.1 System Reset and Initialization

The system reset circuitry shown in Figure 2−1 sources both a power-on reset(POR) and a power-up clear (PUC) signal. Different events trigger these resetsignals and different initial conditions exist depending on which signal wasgenerated.

Figure 2−1.Power-On Reset and Power-Up Clear Schematic

PORLatchS

R

PUCLatch

S

R

Resetwd1

Resetwd2

SS

Delay

RST/NMI

WDTNMI†

WDTTMSEL†

WDTQn†

WDTIFG†

EQU†

MCLK

POR

PUCS

(from flash module)KEYV

SVS_POR

0 V

VCC

0 V

BrownoutReset

† From watchdog timer peripheral module

~ 50us

A POR is a device reset. A POR is only generated by the following threeevents:

Powering up the device

A low signal on the RST/NMI pin when configured in the reset mode

An SVS low condition when PORON = 1.

A PUC is always generated when a POR is generated, but a POR is notgenerated by a PUC. The following events trigger a PUC:

A POR signal

Watchdog timer expiration when in watchdog mode only

Watchdog timer security key violation

A Flash memory security key violation

Page 27: MSP430 - general.pdf

System Reset and Initialization

2-3System Resets, Interrupts, and Operating Modes

2.1.1 Brownout Reset (BOR)

All MSP430x4xx devices have a brownout reset circuit. The brownout resetcircuit detects low supply voltages such as when a supply voltage is appliedto or removed from the VCC terminal. The brownout reset circuit resets thedevice by triggering a POR signal when power is applied or removed. Theoperating levels are shown in Figure 2−2.

The POR signal becomes active when VCC crosses the VCC(start) level. Itremains active until VCC crosses the V(B_IT+) threshold and the delay t(BOR)elapses. The delay t(BOR) is adaptive being longer for a slow ramping VCC. Thehysteresis Vhys(B_ IT−) ensures that the supply voltage must drop belowV(B_IT−) to generate another POR signal from the brownout reset circuitry.

Figure 2−2.Brownout Timing

t(BOR)

VCC(start)

VCC

V(B_IT−)

Set Signal forPOR circuitry

V

V(B_IT+)hys(B_IT−)

As the V(B_IT−) level is significantly above the V(MIN) level of the POR circuit,the BOR provides a reset for power failures where VCC does not fall belowV(MIN). See the device-specific data sheet for parameters.

Page 28: MSP430 - general.pdf

System Reset and Initialization

2-4 System Resets, Interrupts, and Operating Modes

2.1.2 Device Initial Conditions After System Reset

After a POR, the initial MSP430 conditions are:

The RST/NMI pin is configured in the reset mode.

I/O pins are switched to input mode as described in the Digital I/O chapter.

Other peripheral modules and registers are initialized as described in theirrespective chapters in this manual.

Status register (SR) is reset.

The watchdog timer powers up active in watchdog mode.

Program counter (PC) is loaded with address contained at reset vectorlocation (0FFFEh). CPU execution begins at that address.

Software Initialization

After a system reset, user software must initialize the MSP430 for theapplication requirements. The following must occur:

Initialize the SP, typically to the top of RAM.

Initialize the watchdog to the requirements of the application.

Configure peripheral modules to the requirements of the application.

Additionally, the watchdog timer, oscillator fault, and flash memory flags canbe evaluated to determine the source of the reset.

Page 29: MSP430 - general.pdf

System Reset and Initialization

2-5System Resets, Interrupts, and Operating Modes

2.2 Interrupts

The interrupt priorities are fixed and defined by the arrangement of themodules in the connection chain as shown in Figure 2−3. The nearer a moduleis to the CPU/NMIRS, the higher the priority. Interrupt priorities determine whatinterrupt is taken when more than one interrupt is pending simultaneously.

There are three types of interrupts:

System reset (Non)-maskable NMI Maskable

Figure 2−3. Interrupt Priority

BusGrant

Module1

Module2

WDTTimer

Modulem

Modulen

1 2 1 2 1 2 1 2 1NMIRS

GIE

CPU

OSCfault

Reset/NMI

PUC

Circuit

PUC

WDT Security Key

Priority High Low

MAB − 5LSBs

GMIRS

Flash Security Key

Flash ACCV

Page 30: MSP430 - general.pdf

System Reset and Initialization

2-6 System Resets, Interrupts, and Operating Modes

2.2.1 (Non)-Maskable Interrupts (NMI)

(Non)-maskable NMI interrupts are not masked by the general interrupt enablebit (GIE), but are enabled by individual interrupt enable bits (ACCVIE, NMIIE,OFIE). When a NMI interrupt is accepted, all NMI interrupt enable bits areautomatically reset. Program execution begins at the address stored in the(non)-maskable interrupt vector, 0FFFCh. User software must set the requiredNMI interrupt enable bits for the interrupt to be re-enabled. The block diagramfor NMI sources is shown in Figure 2−4.

A (non)-maskable NMI interrupt can be generated by three sources:

An edge on the RST/NMI pin when configured in NMI mode

An oscillator fault occurs

An access violation to the flash memory

Reset/NMI Pin

At power-up, the RST/NMI pin is configured in the reset mode. The functionof the RST/NMI pins is selected in the watchdog control register WDTCTL. Ifthe RST/NMI pin is set to the reset function, the CPU is held in the reset stateas long as the RST/NMI pin is held low. After the input changes to a high state,the CPU starts program execution at the word address stored in the resetvector, 0FFFEh.

If the RST/NMI pin is configured by user software to the NMI function, a signaledge selected by the WDTNMIES bit generates an NMI interrupt if the NMIIEbit is set. The RST/NMI flag NMIIFG is also set.

Note: Holding RST/NMI Low

When configured in the NMI mode, a signal generating an NMI event shouldnot hold the RST/NMI pin low. If a PUC occurs from a different source whilethe NMI signal is low, the device will be held in the reset state because a PUCchanges the RST/NMI pin to the reset function.

Note: Modifying WDTNMIES

When NMI mode is selected and the WDTNMIES bit is changed, an NMI canbe generated, depending on the actual level at the RST/NMI pin. When theNMI edge select bit is changed before selecting the NMI mode, no NMI isgenerated.

Page 31: MSP430 - general.pdf

System Reset and Initialization

2-7System Resets, Interrupts, and Operating Modes

Figure 2−4.Block Diagram of (Non)-Maskable Interrupt Sources

Flash Module

KEYV

System ResetGenerator

BOR

POR PUC

WDTQn EQU

PUC

POR

PUC POR

NMIRS

Clear

SWDTIFG

IRQ

WDTIE

ClearIE1.0

PUC

POR

IRQA

WDTTMSEL

Counter

IFG1.0

WDTNMIWDTTMSEL

WDTNMIES

Watchdog Timer Module

Clear

S

IFG1.4

PUC

ClearIE1.4

PUC

NMIIFG

NMIIE

S

IFG1.1

ClearIE1.1

PUC

OFIFG

OFIE

OSCFault

NMI_IRQA

IRQA: Interrupt Request Accepted

RST/NMI

S

FCTL3.2

ClearIE1.5

ACCVIFG

ACCVIE

PUC

ACCV

WDT

SVS_POR

Page 32: MSP430 - general.pdf

System Reset and Initialization

2-8 System Resets, Interrupts, and Operating Modes

Oscillator Fault

The oscillator fault signal warns of a possible error condition with the crystaloscillator. The oscillator fault can be enabled to generate an NMI interrupt bysetting the OFIE bit. The OFIFG flag can then be tested by NMI the interruptservice routine to determine if the NMI was caused by an oscillator fault.

A PUC signal can trigger an oscillator fault, because the PUC switches theLFXT1 to LF mode, therefore switching off the HF mode. The PUC signal alsoswitches off the XT2 oscillator.

Flash Access Violation

The flash ACCVIFG flag is set when a flash access violation occurs. The flashaccess violation can be enabled to generate an NMI interrupt by setting theACCVIE bit. The ACCVIFG flag can then be tested by NMI the interrupt serviceroutine to determine if the NMI was caused by a flash access violation.

Page 33: MSP430 - general.pdf

System Reset and Initialization

2-9System Resets, Interrupts, and Operating Modes

Example of an NMI Interrupt Handler

The NMI interrupt is a multiple-source interrupt. An NMI interrupt automaticallyresets the NMIIE, OFIE, and ACCVIE interrupt-enable bits. The user NMIservice routine resets the interrupt flags and re-enables the interrupt-enablebits according to the application needs as shown in Figure 2−5.

Figure 2−5.NMI Interrupt Handler

yes

noOFIFG=1

yes

noACCVIFG=1

yes

Reset ACCVIFG

noNMIIFG=1

Reset NMIIFGReset OFIFG

Start of NMI Interrupt HandlerReset by HW:

OFIE, NMIIE, ACCVIE

User’s Software,Oscillator Fault

Handler

User’s Software,Flash Access

Violation Handler

User’s Software,External NMI

Handler

Optional

RETIEnd of NMI Interrupt

Handler

Note: Enabling NMI Interrupts with ACCVIE, NMIIE, and OFIE

To prevent nested NMI interrupts, the ACCVIE, NMIIE, and OFIE enable bitsshould not be set inside of an NMI interrupt service routine.

2.2.2 Maskable Interrupts

Maskable interrupts are caused by peripherals with interrupt capabilityincluding the watchdog timer overflow in interval-timer mode. Each maskableinterrupt source can be disabled individually by an interrupt enable bit, or allmaskable interrupts can be disabled by the general interrupt enable (GIE) bitin the status register (SR).

Each individual peripheral interrupt is discussed in the associated peripheralmodule chapter in this manual.

Page 34: MSP430 - general.pdf

System Reset and Initialization

2-10 System Resets, Interrupts, and Operating Modes

2.2.3 Interrupt Processing

When an interrupt is requested from a peripheral and the peripheral interruptenable bit and GIE bit are set, the interrupt service routine is requested. Onlythe individual enable bit must be set for (non)-maskable interrupts to berequested.

Interrupt Acceptance

The interrupt latency is six cycles, starting with the acceptance of an interruptrequest and lasting until the start of execution of the first instruction of theinterrupt-service routine, as shown in Figure 2−6. The interrupt logic executesthe following:

1) Any currently executing instruction is completed.

2) The PC, which points to the next instruction, is pushed onto the stack.

3) The SR is pushed onto the stack.

4) The interrupt with the highest priority is selected if multiple interruptsoccurred during the last instruction and are pending for service.

5) The interrupt request flag resets automatically on single-source flags.Multiple source flags remain set for servicing by software.

6) The SR is cleared with the exception of SCG0, which is left unchanged.This terminates any low-power mode. Because the GIE bit is cleared,further interrupts are disabled.

7) The content of the interrupt vector is loaded into the PC: the programcontinues with the interrupt service routine at that address.

Figure 2−6. Interrupt Processing

Item1

Item2SP TOS

Item1

Item2

SP TOS

PC

SR

BeforeInterrupt

AfterInterrupt

Page 35: MSP430 - general.pdf

System Reset and Initialization

2-11System Resets, Interrupts, and Operating Modes

Return From Interrupt

The interrupt handling routine terminates with the instruction:

RETI (return from an interrupt service routine)

The return from the interrupt takes 5 cycles to execute the following actionsand is illustrated in Figure 2−7.

1) The SR with all previous settings pops from the stack. All previous settingsof GIE, CPUOFF, etc. are now in effect, regardless of the settings usedduring the interrupt service routine.

2) The PC pops from the stack and begins execution at the point where it wasinterrupted.

Figure 2−7.Return From Interrupt

Item1

Item2

SP TOS

Item1

Item2SP TOS

PC

SR

Before After

PC

SR

Return From Interrupt

Interrupt nesting is enabled if the GIE bit is set inside an interrupt serviceroutine. When interrupt nesting is enabled, any interrupt occurring during aninterrupt service routine will interrupt the routine, regardless of the interruptpriorities.

Page 36: MSP430 - general.pdf

System Reset and Initialization

2-12 System Resets, Interrupts, and Operating Modes

2.2.4 Interrupt Vectors

The interrupt vectors and the power-up starting address are located in theaddress range 0FFFFh to 0FFE0h as described in Table 2−1. A vector isprogrammed by the user with the 16-bit address of the corresponding interruptservice routine. Some devices may contain more interrupt vectors. See thedevice-specific data sheet for the complete interrupt vector list.

Table 2−1.Interrupt Sources,Flags, and Vectors

INTERRUPT SOURCEINTERRUPT

FLAGSYSTEM

INTERRUPTWORD

ADDRESS PRIORITY

Power-up, externalreset, watchdog,flash password

WDTIFGKEYV

Reset 0FFFEh 15, highest

NMI, oscillator fault,flash memory accessviolation

NMIIFG OFIFG ACCVIFG

(non)-maskable(non)-maskable(non)-maskable

0FFFCh 14

Device-specific 0FFFAh 13

Device-specific 0FFF8h 12

Device-specific 0FFF6h 11

Watchdog timer WDTIFG maskable 0FFF4h 10

Device-specific 0FFF2h 9

Device-specific 0FFF0h 8

Device-specific 0FFEEh 7

Device-specific 0FFECh 6

Device-specific 0FFEAh 5

Device-specific 0FFE8h 4

Device-specific 0FFE6h 3

Device-specific 0FFE4h 2

Device-specific 0FFE2h 1

Device-specific 0FFE0h 0, lowest

2.2.5 Special Function Registers (SFRs)

Some module enable bits, interrupt enable bits, and interrupt flags are locatedin the SFRs. The SFRs are located in the lower address range and areimplemented in byte format. SFRs must be accessed using byte instructions.See the device-specific data sheet for the SFR configuration.

Page 37: MSP430 - general.pdf

Operating Modes

2-13System Resets, Interrupts, and Operating Modes

2.3 Operating Modes

The MSP430 family is designed for ultralow-power applications and usesdifferent operating modes shown in Figure 2−9.

The operating modes take into account three different needs:

Ultralow-power

Speed and data throughput

Minimization of individual peripheral current consumption

The MSP430 typical current consumption is shown in Figure 2−8.

Figure 2−8.Typical Current Consumption of 41x Devices vs Operating Modes

315

AM

300

270

225

180

135

90

45

0LPM0 LPM2 LPM3 LPM4

200

55 3217 11 0.9 0.7 0.1 0.1

VCC = 3 V

VCC = 2.2 V

Operating Modes

A @

1 M

Hz

µIC

C/

The low-power modes 0 to 4 are configured with the CPUOFF, OSCOFF,SCG0, and SCG1 bits in the status register. The advantage of including theCPUOFF, OSCOFF, SCG0, and SCG1 mode-control bits in the status registeris that the present operating mode is saved onto the stack during an interruptservice routine. Program flow returns to the previous operating mode if thesaved SR value is not altered during the interrupt service routine. Program flowcan be returned to a different operating mode by manipulating the saved SRvalue on the stack inside of the interrupt service routine. The mode-control bitsand the stack can be accessed with any instruction.

When setting any of the mode-control bits, the selected operating mode takeseffect immediately. Peripherals operating with any disabled clock are disableduntil the clock becomes active. The peripherals may also be disabled with theirindividual control register settings. All I/O port pins and RAM/registers areunchanged. Wake up is possible through all enabled interrupts.

Page 38: MSP430 - general.pdf

Operating Modes

2-14 System Resets, Interrupts, and Operating Modes

Figure 2−9.MSP430x4xx Operating Modes For FLL+ Clock System

Active ModeCPU Is Active

Peripheral Modules Are Active

LPM0CPU Off, FLL+ On,

41x/42x MCLK On, 43x/44xMCLK off, ACLK On

CPUOFF = 1SCG0 = 0SCG1 = 0

CPUOFF = 1SCG0 = 1SCG1 = 0

LPM2CPU Off, FLL+ Off,

MCLK Off, ACLK On

CPUOFF = 1SCG0 = 0SCG1 = 1

LPM3CPU Off, FLL+ Off,

MCLK Off, ACLK On

DC Generator Off

LPM4CPU Off, FLL+ Off,

MCLK Off, ACLK Off

DC Generator Off

CPUOFF = 1OSCOFF = 1

SCG0 = 1SCG1 = 1

RST/NMINMI Active

PUC RST/NMI is Reset PinWDT is Active

POR

WDT Active,Security Key Violation

WDT Active,Time Expired, Overflow WDTIFG = 1

WDTIFG = 1

RST/NMIReset Active

VCC On

WDTIFG = 0

LPM1CPU Off, FLL+ Off,

41x/42x MCLK On, 43x/44xMCLK off ACLK On

CPUOFF = 1SCG0 = 1SCG1 = 1

SCG1 SCG0 OSCOFF CPUOFF Mode CPU and Clocks Status

0 0 0 0 Active CPU is active, all enabled clocks are active

0 0 0 1 LPM0 CPU, MCLK are disabled (41x/42x peripheral MCLKremains on)SMCLK , ACLK are active

0 1 0 1 LPM1 CPU, MCLK, DCO oscillator are disabled (41x/42xperipheral MCLK remains on)DC generator is disabled if the DCO is not used forMCLK or SMCLK in active modeSMCLK , ACLK are active

1 0 0 1 LPM2 CPU, MCLK, SMCLK, DCO oscillator are disabledDC generator remains enabledACLK is active

1 1 0 1 LPM3 CPU, MCLK, SMCLK, DCO oscillator are disabledDC generator disabledACLK is active

1 1 1 1 LPM4 CPU and all clocks disabled

Page 39: MSP430 - general.pdf

Operating Modes

2-15System Resets, Interrupts, and Operating Modes

2.3.1 Entering and Exiting Low-Power Modes

An enabled interrupt event wakes the MSP430 from any of the low-poweroperating modes. The program flow is:

Enter interrupt service routine:

The PC and SR are stored on the stack

The CPUOFF, SCG1, and OSCOFF bits are automatically reset

Options for returning from the interrupt service routine:

The original SR is popped from the stack, restoring the previousoperating mode.

The SR bits stored on the stack can be modified within the interruptservice routine returning to a different operating mode when the RETIinstruction is executed.

; Enter LPM0 ExampleBIS #GIE+CPUOFF,SR ; Enter LPM0

; ... ; Program stops here;; Exit LPM0 Interrupt Service Routine

BIC #CPUOFF,0(SP) ; Exit LPM0 on RETIRETI

; Enter LPM3 ExampleBIS #GIE+CPUOFF+SCG1+SCG0,SR ; Enter LPM3

; ... ; Program stops here;; Exit LPM3 Interrupt Service Routine

BIC #CPUOFF+SCG1+SCG0,0(SP) ; Exit LPM3 on RETIRETI

Extended Time in Low-Power Modes

The negative temperature coefficient of the DCO should be considered whenthe DCO is disabled for extended low-power mode periods. If the temperaturechanges significantly, the DCO frequency at wake-up may be significantlydifferent from when the low-power mode was entered and may be out of thespecified operating range. To avoid this, the DCO can be set to it lowest valuebefore entering the low-power mode for extended periods of time wheretemperature can change.

; Enter LPM4 Example with lowest DCO SettingBIC.B #FN_8+FN_4+FN_3+FN_2,&SCFI0 ; Lowest RangeMOV.B #010h,&SCFI1 ; Select Tap 2BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ; Enter LPM4

; ... ; Program stops; Interrupt Service Routine

BIC #CPUOFF+OSCOFF+SCG1+SCG0,0(SP); Exit LPM4 on RETIRETI

Page 40: MSP430 - general.pdf

Principles for Low-Power Applications

2-16 System Resets, Interrupts, and Operating Modes

2.4 Principles for Low-Power Applications

Often, the most important factor for reducing power consumption is using theMSP430’s clock system to maximize the time in LPM3. LPM3 powerconsumption is less than 2 µA typical with both a real-time clock function andall interrupts active. A 32-kHz watch crystal is used for the ACLK, and the CPUis clocked from the DCO (normally off) which has a 6-µs wake-up time.

Use interrupts to wake the processor and control program flow.

Peripherals should be switched on only when needed.

Use low-power integrated peripheral modules in place of software drivenfunctions. For example Timer_A and Timer_B can automatically generatePWM and capture external timing, with no CPU resources.

Calculated branching and fast table look-ups should be used in place offlag polling and long software calculations.

Avoid frequent subroutine and function calls due to overhead.

For longer software routines, single-cycle CPU registers should be used.

2.5 Connection of Unused Pins

The correct termination of all unused pins is listed in Table 2−2.

Table 2−2.Connection of Unused Pins

Pin Potential Comment

AVCC DVCC

AVSS DVSS

VREF+ Open

VeREF+ DVSS

VREF−/VeREF− DVSS

XIN DVCC

XOUT Open

XT2IN DVSS 43x, 44x. and 46x devices

XT2OUT Open 43x, 44x, and 46x devices

Px.0 to Px.7 Open Switched to port function, output direction

RST/NMI DVCC or VCC 47-kΩ pullup with 10-nF (2.2 nF†) pulldown

R03 DVSS

COM0 Open

TDO/TDI/TMS/TCK Open

Ax (dedicated) Open 42x devices

Sxx Open

† MSP430F41x2 only: The pulldown capacitor should not exceed 2.2 nF when using Spy-Bi-Wireinterface in Spy-Bi-Wire mode or in 4-wire JTAG mode with TI tools like FET interfaces or GANGprogrammers.

Page 41: MSP430 - general.pdf

3-1RISC 16-Bit CPU

RISC 16-Bit CPU

This chapter describes the MSP430 CPU, addressing modes, and instructionset.

Topic Page

3.1 CPU Introduction 3-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2 CPU Registers 3-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3 Addressing Modes 3-9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4 Instruction Set 3-17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 3

Page 42: MSP430 - general.pdf

CPU Introduction

3-2 RISC 16-Bit CPU

3.1 CPU Introduction

The CPU incorporates features specifically designed for modernprogramming techniques such as calculated branching, table processing andthe use of high-level languages such as C. The CPU can address the completeaddress range without paging.

The CPU features include:

RISC architecture with 27 instructions and 7 addressing modes

Orthogonal architecture with every instruction usable with everyaddressing mode

Full register access including program counter, status registers, and stackpointer

Single-cycle register operations

Large 16-bit register file reduces fetches to memory

16-bit address bus allows direct access and branching throughout entirememory range

16-bit data bus allows direct manipulation of word-wide arguments

Constant generator provides six most used immediate values andreduces code size

Direct memory-to-memory transfers without intermediate register holding

Word and byte addressing and instruction formats

The block diagram of the CPU is shown in Figure 3−1.

Page 43: MSP430 - general.pdf

CPU Introduction

3-3RISC 16-Bit CPU

Figure 3−1.CPU Block Diagram

015

MDB − Memory Data Bus Memory Address Bus − MAB

16Zero, ZCarry, COverflow, VNegative, N

16−bit ALU

dst src

R8 General Purpose

R9 General Purpose

R10 General Purpose

R11 General Purpose

R12 General Purpose

R13 General Purpose

R14 General Purpose

R15 General Purpose

R4 General Purpose

R5 General Purpose

R6 General Purpose

R7 General Purpose

R3/CG2 Constant Generator

R2/SR/CG1 Status

R1/SP Stack Pointer

R0/PC Program Counter 0

0

16

MCLK

Page 44: MSP430 - general.pdf

CPU Registers

3-4 RISC 16-Bit CPU

3.2 CPU Registers

The CPU incorporates sixteen 16-bit registers. R0, R1, R2 and R3 havededicated functions. R4 to R15 are working registers for general use.

3.2.1 Program Counter (PC)

The 16-bit program counter (PC/R0) points to the next instruction to beexecuted. Each instruction uses an even number of bytes (two, four, or six),and the PC is incremented accordingly. Instruction accesses in the 64-KBaddress space are performed on word boundaries, and the PC is aligned toeven addresses. Figure 3−2 shows the program counter.

Figure 3−2.Program Counter

0

15 0

Program Counter Bits 15 to 1

1

The PC can be addressed with all instructions and addressing modes. A fewexamples:

MOV #LABEL,PC ; Branch to address LABEL

MOV LABEL,PC ; Branch to address contained in LABEL

MOV @R14,PC ; Branch indirect to address in R14

Page 45: MSP430 - general.pdf

CPU Registers

3-5RISC 16-Bit CPU

3.2.2 Stack Pointer (SP)

The stack pointer (SP/R1) is used by the CPU to store the return addressesof subroutine calls and interrupts. It uses a predecrement, postincrementscheme. In addition, the SP can be used by software with all instructions andaddressing modes. Figure 3−3 shows the SP. The SP is initialized into RAMby the user, and is aligned to even addresses.

Figure 3−4 shows stack usage.

Figure 3−3.Stack Pointer

0

15 0

Stack Pointer Bits 15 to 1

1

MOV 2(SP),R6 ; Item I2 −> R6

MOV R7,0(SP) ; Overwrite TOS with R7

PUSH #0123h ; Put 0123h onto TOS

POP R8 ; R8 = 0123h

Figure 3−4.Stack Usage

I3

I1

I2

I3

0xxxh

0xxxh − 2

0xxxh − 4

0xxxh − 6

0xxxh − 8

I1

I2

SP

0123h SP

I1

I2

I3 SP

PUSH #0123h POP R8Address

0123h

The special cases of using the SP as an argument to the PUSH and POPinstructions are described and shown in Figure 3−5.

Figure 3−5.PUSH SP - POP SP Sequence

SP1

SPold

SP1

PUSH SP

The stack pointer is changed aftera PUSH SP instruction.

SP1SP2

POP SP

The stack pointer is not changed after a POP SPinstruction. The POP SP instruction places SP1 into thestack pointer SP (SP2=SP1)

Page 46: MSP430 - general.pdf

CPU Registers

3-6 RISC 16-Bit CPU

3.2.3 Status Register (SR)

The status register (SR/R2), used as a source or destination register, can beused in the register mode only addressed with word instructions. Theremaining combinations of addressing modes are used to support theconstant generator. Figure 3−6 shows the SR bits.

Figure 3−6.Status Register Bits

SCG0 GIE Z C

rw-0

15 0

Reserved NCPUOFF

OSCOFFSCG1V

8 79

Table 3−1 describes the status register bits.

Table 3−1.Description of Status Register Bits

Bit Description

V Overflow bit. This bit is set when the result of an arithmetic operationoverflows the signed-variable range.

ADD(.B),ADDC(.B) Set when:Positive + Positive = NegativeNegative + Negative = Positive,otherwise reset

SUB(.B),SUBC(.B),CMP(.B) Set when:Positive − Negative = NegativeNegative − Positive = Positive,otherwise reset

SCG1 System clock generator 1. This bit, when set, turns off the DCO dcgenerator, if DCOCLK is not used for MCLK or SMCLK.

SCG0 System clock generator 0. This bit, when set, turns off the FLL+ loopcontrol

OSCOFF Oscillator Off. This bit, when set, turns off the LFXT1 crystal oscillator,when LFXT1CLK is not use for MCLK or SMCLK

CPUOFF CPU off. This bit, when set, turns off the CPU.

GIE General interrupt enable. This bit, when set, enables maskableinterrupts. When reset, all maskable interrupts are disabled.

N Negative bit. This bit is set when the result of a byte or word operationis negative and cleared when the result is not negative.Word operation: N is set to the value of bit 15 of the

resultByte operation: N is set to the value of bit 7 of the

result

Z Zero bit. This bit is set when the result of a byte or word operation is 0and cleared when the result is not 0.

C Carry bit. This bit is set when the result of a byte or word operationproduced a carry and cleared when no carry occurred.

Page 47: MSP430 - general.pdf

CPU Registers

3-7RISC 16-Bit CPU

3.2.4 Constant Generator Registers CG1 and CG2

Six commonly-used constants are generated with the constant generatorregisters R2 and R3, without requiring an additional 16-bit word of programcode. The constants are selected with the source-register addressing modes(As), as described in Table 3−2.

Table 3−2.Values of Constant Generators CG1, CG2

Register As Constant Remarks

R2 00 − − − − − Register mode

R2 01 (0) Absolute address mode

R2 10 00004h +4, bit processing

R2 11 00008h +8, bit processing

R3 00 00000h 0, word processing

R3 01 00001h +1

R3 10 00002h +2, bit processing

R3 11 0FFFFh −1, word processing

The constant generator advantages are:

No special instructions required

No additional code word for the six constants

No code memory access required to retrieve the constant

The assembler uses the constant generator automatically if one of the sixconstants is used as an immediate source operand. Registers R2 and R3,used in the constant mode, cannot be addressed explicitly; they act assource-only registers.

Constant Generator − Expanded Instruction Set

The RISC instruction set of the MSP430 has only 27 instructions. However, theconstant generator allows the MSP430 assembler to support 24 additional,emulated instructions. For example, the single-operand instruction:

CLR dst

is emulated by the double-operand instruction with the same length:

MOV R3,dst

where the #0 is replaced by the assembler, and R3 is used with As = 00.

INC dst

is replaced by:

ADD 0(R3),dst

Page 48: MSP430 - general.pdf

CPU Registers

3-8 RISC 16-Bit CPU

3.2.5 General-Purpose Registers R4 to R15

Twelve registers, R4 to R15, are general-purpose registers. All of theseregisters can be used as data registers, address pointers, or index values, andthey can be accessed with byte or word instructions as shown in Figure 3−7.

Figure 3−7.Register-Byte/Byte-Register Operations

Unused

High Byte Low Byte

Byte

Register-Byte Operation

0h

High Byte Low Byte

Byte

Byte-Register Operation

Register

Memory Register

Memory

Example Register-Byte Operation Example Byte-Register Operation

R5 = 0A28Fh R5 = 01202h

R6 = 0203h R6 = 0223h

Mem(0203h) = 012h Mem(0223h) = 05Fh

ADD.B R5,0(R6) ADD.B @R6,R5

08Fh 05Fh

+ 012h + 002h

0A1h 00061h

Mem (0203h) = 0A1h R5 = 00061h

C = 0, Z = 0, N = 1 C = 0, Z = 0, N = 0

(Low byte of register) (Addressed byte)

+ (Addressed byte) + (Low byte of register)

−>(Addressed byte) −>(Low byte of register, zero to High byte)

Page 49: MSP430 - general.pdf

Addressing Modes

3-9RISC 16-Bit CPU

3.3 Addressing Modes

Seven addressing modes for the source operand and four addressing modesfor the destination operand can address the complete address space with noexceptions. The bit numbers in Table 3−3 describe the contents of the As(source) and Ad (destination) mode bits.

Table 3−3.Source/Destination Operand Addressing Modes

As/Ad Addressing Mode Syntax Description

00/0 Register mode Rn Register contents are operand

01/1 Indexed mode X(Rn) (Rn + X) points to the operand. Xis stored in the next word.

01/1 Symbolic mode ADDR (PC + X) points to the operand. Xis stored in the next word. Indexedmode X(PC) is used.

01/1 Absolute mode &ADDR The word following the instructioncontains the absolute address. Xis stored in the next word. Indexedmode X(SR) is used.

10/− Indirect registermode

@Rn Rn is used as a pointer to theoperand.

11/− Indirectautoincrement

@Rn+ Rn is used as a pointer to theoperand. Rn is incrementedafterwards by 1 for .B instructionsand by 2 for .W instructions.

11/− Immediate mode #N The word following the instructioncontains the immediate constantN. Indirect autoincrement mode@PC+ is used.

The seven addressing modes are explained in detail in the following sections.Most of the examples show the same addressing mode for the source anddestination, but any valid combination of source and destination addressingmodes is possible in an instruction.

Note: Use of Labels EDE, TONI, TOM, and LEO

Throughout MSP430 documentation, EDE, TONI, TOM, and LEO are usedas generic labels. They are only labels. They have no special meaning.

Page 50: MSP430 - general.pdf

Addressing Modes

3-10 RISC 16-Bit CPU

3.3.1 Register Mode

The register mode is described in Table 3−4.

Table 3−4.Register Mode Description

Assembler Code Content of ROM

MOV R10,R11 MOV R10,R11

Length: One or two words

Operation: Move the content of R10 to R11. R10 is not affected.

Comment: Valid for source and destination

Example: MOV R10,R11

0A023hR10

R11

Before: After:

PC

0FA15h

PCold

0A023hR10

R11

PC PCold + 2

0A023h

Note: Data in Registers

The data in the register can be accessed using word or byte instructions. Ifbyte instructions are used, the high byte is always 0 in the result. The statusbits are handled according to the result of the byte instruction.

Page 51: MSP430 - general.pdf

Addressing Modes

3-11RISC 16-Bit CPU

3.3.2 Indexed Mode

The indexed mode is described in Table 3−5.

Table 3−5.Indexed Mode Description

Assembler Code Content of ROM

MOV 2(R5),6(R6) MOV X(R5),Y(R6)

X = 2

Y = 6

Length: Two or three words

Operation: Move the contents of the source address (contents of R5 + 2)to the destination address (contents of R6 + 6). The sourceand destination registers (R5 and R6) are not affected. Inindexed mode, the program counter is incrementedautomatically so that program execution continues with thenext instruction.

Comment: Valid for source and destination

Example: MOV 2(R5),6(R6);

00006h

AddressSpace

00002h

04596h PC

0FF16h

0FF14h

0FF12h

0xxxxh

05555h

01094h

01092h

01090h 0xxxxh

0xxxxh

01234h

01084h

01082h

01080h 0xxxxh

01080h

0108Ch

R5

R6

0108Ch+0006h01092h

01080h+0002h01082h

RegisterBefore:

00006h

AddressSpace

00002h

04596h

PC

0FF16h

0FF14h

0FF12h

0xxxxh

01234h

01094h

01092h

01090h 0xxxxh

0xxxxh

01234h

01084h

01082h

01080h 0xxxxh

01080h

0108Ch

R5

R6

RegisterAfter:

0xxxxh

Page 52: MSP430 - general.pdf

Addressing Modes

3-12 RISC 16-Bit CPU

3.3.3 Symbolic Mode

The symbolic mode is described in Table 3−6.

Table 3−6.Symbolic Mode Description

Assembler Code Content of ROM

MOV EDE,TONI MOV X(PC),Y(PC)

X = EDE − PC

Y = TONI − PC

Length: Two or three words

Operation: Move the contents of the source address EDE (contents ofPC + X) to the destination address TONI (contents of PC + Y).The words after the instruction contain the differencesbetween the PC and the source or destination addresses.The assembler computes and inserts offsets X and Yautomatically. With symbolic mode, the program counter (PC)is incremented automatically so that program executioncontinues with the next instruction.

Comment: Valid for source and destination

Example: MOV EDE,TONI ;Source address EDE = 0F016h;Dest. address TONI=01114h

011FEh

AddressSpace

0F102h

04090h PC

0FF16h

0FF14h

0FF12h

0xxxxh

0A123h

0F018h

0F016h

0F014h 0xxxxh

0xxxxh

05555h

01116h

01114h

01112h 0xxxxh

0FF14h+0F102h

0F016h

0FF16h+011FEh

01114h

RegisterBefore:

011FEh

AddressSpace

0F102h

04090h

PC

0FF16h

0FF14h

0FF12h

0xxxxh

0A123h

0F018h

0F016h

0F014h 0xxxxh

0xxxxh

0A123h

01116h

01114h

01112h 0xxxxh

RegisterAfter:

0xxxxh

Page 53: MSP430 - general.pdf

Addressing Modes

3-13RISC 16-Bit CPU

3.3.4 Absolute Mode

The absolute mode is described in Table 3−7.

Table 3−7.Absolute Mode Description

Assembler Code Content of ROM

MOV &EDE,&TONI MOV X(0),Y(0)

X = EDE

Y = TONI

Length: Two or three words

Operation: Move the contents of the source address EDE to thedestination address TONI. The words after the instructioncontain the absolute address of the source and destinationaddresses. With absolute mode, the PC is incrementedautomatically so that program execution continues with thenext instruction.

Comment: Valid for source and destination

Example: MOV &EDE,&TONI ;Source address EDE=0F016h,;dest. address TONI=01114h

01114h

AddressSpace

0F016h

04292h PC

0FF16h

0FF14h

0FF12h

0xxxxh

0A123h

0F018h

0F016h

0F014h 0xxxxh

0xxxxh

01234h

01116h

01114h

01112h 0xxxxh

RegisterBefore:

01114h

AddressSpace

0F016h

04292h

PC

0FF16h

0FF14h

0FF12h

0xxxxh

0A123h

0F018h

0F016h

0F014h 0xxxxh

0xxxxh

0A123h

01116h

01114h

01112h 0xxxxh

RegisterAfter:

0xxxxh

This address mode is mainly for hardware peripheral modules that are locatedat an absolute, fixed address. These are addressed with absolute mode toensure software transportability (for example, position-independent code).

Page 54: MSP430 - general.pdf

Addressing Modes

3-14 RISC 16-Bit CPU

3.3.5 Indirect Register Mode

The indirect register mode is described in Table 3−8.

Table 3−8.Indirect Mode Description

Assembler Code Content of ROM

MOV @R10,0(R11) MOV @R10,0(R11)

Length: One or two words

Operation: Move the contents of the source address (contents of R10) tothe destination address (contents of R11). The registers arenot modified.

Comment: Valid only for source operand. The substitute for destinationoperand is 0(Rd).

Example: MOV.B @R10,0(R11)

0000h

AddressSpace

04AEBh PC

0FF16h

0FF14h

0FF12h

0xxxxh

05BC1h

0xxxxh

0xxh

012h

0xxh

0FA33h

002A7h

R10

R11

RegisterBefore:

0000h

AddressSpace

04AEBh

PC

0FF16h

0FF14h

0FF12h

0xxxxh

05BC1h

0FA34h

0FA32h

0FA30h 0xxxxh

0xxh

05Bh

002A8h

002A7h

002A6h 0xxh

0FA33h

002A7h

R10

R11

RegisterAfter:

0xxxxh0xxxxh

0xxxxh 0xxxxh

0FA34h

0FA32h

0FA30h

002A8h

002A7h

002A6h

Page 55: MSP430 - general.pdf

Addressing Modes

3-15RISC 16-Bit CPU

3.3.6 Indirect Autoincrement Mode

The indirect autoincrement mode is described in Table 3−9.

Table 3−9.Indirect Autoincrement Mode Description

Assembler Code Content of ROM

MOV @R10+,0(R11) MOV @R10+,0(R11)

Length: One or two words

Operation: Move the contents of the source address (contents of R10) tothe destination address (contents of R11). Register R10 isincremented by 1 for a byte operation, or 2 for a wordoperation after the fetch; it points to the next address withoutany overhead. This is useful for table processing.

Comment: Valid only for source operand. The substitute for destinationoperand is 0(Rd) plus second instruction INCD Rd.

Example: MOV @R10+,0(R11)

00000h

AddressSpace

04ABBh PC

0FF16h

0FF14h

0FF12h

0xxxxh

05BC1h

0FA34h

0FA32h

0FA30h 0xxxxh

0xxxxh

01234h

010AAh

010A8h

010A6h 0xxxxh

0FA32h

010A8h

R10

R11

RegisterBefore:

AddressSpace

0xxxxh

05BC1h

0FA34h

0FA32h

0FA30h 0xxxxh

0xxxxh

05BC1h

010AAh

010A8h

010A6h 0xxxxh

0FA34hR10

R11

RegisterAfter:

0xxxxh

0xxxxh

0FF18h00000h

04ABBh

PC

0FF16h

0FF14h

0FF12h

0xxxxh

0xxxxh

0FF18h

010A8h

The autoincrementing of the register contents occurs after the operand isfetched. This is shown in Figure 3−8.

Figure 3−8.Operand Fetch Operation

Instruction Address Operand

+1/ +2

Page 56: MSP430 - general.pdf

Addressing Modes

3-16 RISC 16-Bit CPU

3.3.7 Immediate Mode

The immediate mode is described in Table 3−10.

Table 3−10.Immediate Mode Description

Assembler Code Content of ROM

MOV #45h,TONI MOV @PC+,X(PC)

45

X = TONI − PC

Length: Two or three wordsIt is one word less if a constant of CG1 or CG2 can be used.

Operation: Move the immediate constant 45h, which is contained in theword following the instruction, to destination address TONI.When fetching the source, the program counter points to theword following the instruction and moves the contents to thedestination.

Comment: Valid only for a source operand.

Example: MOV #45h,TONI

01192h

AddressSpace

00045h

040B0h PC

0FF16h

0FF14h

0FF12h

0xxxxh

01234h

0xxxxh

0FF16h+01192h010A8h

RegisterBefore:

01192h

AddressSpace

00045h

040B0h

PC

0FF16h

0FF14h

0FF12h

0xxxxh010AAh

010A8h

010A6h 0xxxxh

RegisterAfter:

0xxxxh0FF18h

010AAh

010A8h

010A6h

00045h

Page 57: MSP430 - general.pdf

Instruction Set

3-17RISC 16-Bit CPU

3.4 Instruction Set

The complete MSP430 instruction set consists of 27 core instructions and 24emulated instructions. The core instructions are instructions that have uniqueop-codes decoded by the CPU. The emulated instructions are instructions thatmake code easier to write and read, but do not have op-codes themselves,instead they are replaced automatically by the assembler with an equivalentcore instruction. There is no code or performance penalty for using emulatedinstruction.

There are three core-instruction formats:

Dual operand

Single operand

Jump

All single-operand and dual-operand instructions can be byte or wordinstructions by using .B or .W extensions. Byte instructions are used to accessbyte data or byte peripherals. Word instructions are used to access word dataor word peripherals. If no extension is used, the instruction is a wordinstruction.

The source and destination of an instruction are defined by the following fields:

src The source operand defined by As and S-reg

dst The destination operand defined by Ad and D-reg

As The addressing bits responsible for the addressing mode usedfor the source (src)

S-reg The working register used for the source (src)

Ad The addressing bits responsible for the addressing mode usedfor the destination (dst)

D-reg The working register used for the destination (dst)

B/W Byte or word operation:0: word operation1: byte operation

Note: Destination Address

Destination addresses are valid anywhere in the memory map. However,when using an instruction that modifies the contents of the destination, theuser must ensure the destination address is writable. For example, amasked-ROM location would be a valid destination address, but the contentsare not modifiable, so the results of the instruction would be lost.

Page 58: MSP430 - general.pdf

Instruction Set

3-18 RISC 16-Bit CPU

3.4.1 Double-Operand (Format I) Instructions

Figure 3−9 illustrates the double-operand instruction format.

Figure 3−9.Double-Operand Instruction Format

B/W D-Reg

15 0

Op-code AdS-Reg

8 714 13 12 11 10 9 6 5 4 3 2 1

As

Table 3−11 lists and describes the double operand instructions.

Table 3−11.Double-Operand Instructions

Mnemonic S-Reg, Operation Status Bitsg,D-Reg V N Z C

MOV(.B) src,dst src → dst − − − −

ADD(.B) src,dst src + dst → dst * * * *

ADDC(.B) src,dst src + dst + C → dst * * * *

SUB(.B) src,dst dst + .not.src + 1 → dst * * * *

SUBC(.B) src,dst dst + .not.src + C → dst * * * *

CMP(.B) src,dst dst − src * * * *

DADD(.B) src,dst src + dst + C → dst (decimally) * * * *

BIT(.B) src,dst src .and. dst 0 * * *

BIC(.B) src,dst .not.src .and. dst → dst − − − −

BIS(.B) src,dst src .or. dst → dst − − − −

XOR(.B) src,dst src .xor. dst → dst * * * *

AND(.B) src,dst src .and. dst → dst 0 * * *

* The status bit is affected

− The status bit is not affected

0 The status bit is cleared

1 The status bit is set

Note: Instructions CMP and SUB

The instructions CMP and SUB are identical except for the storage of theresult. The same is true for the BIT and AND instructions.

Page 59: MSP430 - general.pdf

Instruction Set

3-19RISC 16-Bit CPU

3.4.2 Single-Operand (Format II) Instructions

Figure 3−10 illustrates the single-operand instruction format.

Figure 3−10. Single-Operand Instruction Format

B/W D/S-Reg

15 0

Op-code

8 714 13 12 11 10 9 6 5 4 3 2 1

Ad

Table 3−12 lists and describes the single operand instructions.

Table 3−12.Single-Operand Instructions

Mnemonic S-Reg, D Reg

Operation Status BitsD-Reg

V N Z C

RRC(.B) dst C → MSB →.......LSB → C * * * *

RRA(.B) dst MSB → MSB →....LSB → C 0 * * *

PUSH(.B) src SP − 2 → SP, src → @SP − − − −

SWPB dst Swap bytes − − − −

CALL dst SP − 2 → SP, PC+2 → @SP − − − −

dst → PC

RETI TOS → SR, SP + 2 → SP * * * *

TOS → PC,SP + 2 → SP

SXT dst Bit 7 → Bit 8........Bit 15 0 * * *

* The status bit is affected

− The status bit is not affected

0 The status bit is cleared

1 The status bit is set

All addressing modes are possible for the CALL instruction. If the symbolicmode (ADDRESS), the immediate mode (#N), the absolute mode (&EDE), orthe indexed mode x(RN) is used, the word that follows contains the addressinformation.

Page 60: MSP430 - general.pdf

Instruction Set

3-20 RISC 16-Bit CPU

3.4.3 Jumps

Figure 3−11 shows the conditional-jump instruction format.

Figure 3−11. Jump Instruction Format

C 10-Bit PC Offset

15 0

Op-code

8 714 13 12 11 10 9 6 5 4 3 2 1

Table 3−13 lists and describes the jump instructions.

Table 3−13.Jump Instructions

Mnemonic S-Reg, D-Reg Operation

JEQ/JZ Label Jump to label if zero bit is set

JNE/JNZ Label Jump to label if zero bit is reset

JC Label Jump to label if carry bit is set

JNC Label Jump to label if carry bit is reset

JN Label Jump to label if negative bit is set

JGE Label Jump to label if (N .XOR. V) = 0

JL Label Jump to label if (N .XOR. V) = 1

JMP Label Jump to label unconditionally

Conditional jumps support program branching relative to the PC and do notaffect the status bits. The possible jump range is from −511 to +512 wordsrelative to the PC value at the jump instruction. The 10-bit program-counteroffset is treated as a signed 10-bit value that is doubled and added to theprogram counter:

PCnew = PCold + 2 + PCoffset × 2

Page 61: MSP430 - general.pdf

Instruction Set

3-21RISC 16-Bit CPU

* ADC[.W] Add carry to destination* ADC.B Add carry to destination

Syntax ADC dst or ADC.W dstADC.B dst

Operation dst + C −> dst

Emulation ADDC #0,dstADDC.B #0,dst

Description The carry bit (C) is added to the destination operand. The previous contentsof the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if dst was incremented from 0FFFFh to 0000, reset otherwise

Set if dst was incremented from 0FFh to 00, reset otherwiseV: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit counter pointed to by R13 is added to a 32-bit counter pointed toby R12.ADD @R13,0(R12) ; Add LSDsADC 2(R12) ; Add carry to MSD

Example The 8-bit counter pointed to by R13 is added to a 16-bit counter pointed to byR12.ADD.B @R13,0(R12) ; Add LSDsADC.B 1(R12) ; Add carry to MSD

Page 62: MSP430 - general.pdf

Instruction Set

3-22 RISC 16-Bit CPU

ADD[.W] Add source to destinationADD.B Add source to destination

Syntax ADD src,dst or ADD.W src,dstADD.B src,dst

Operation src + dst −> dst

Description The source operand is added to the destination operand. The source operandis not affected. The previous contents of the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the result, cleared if notV: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is increased by 10. The jump to TONI is performed on a carry.

ADD #10,R5JC TONI ; Carry occurred...... ; No carry

Example R5 is increased by 10. The jump to TONI is performed on a carry.

ADD.B #10,R5 ; Add 10 to Lowbyte of R5JC TONI ; Carry occurred, if (R5) ≥ 246 [0Ah+0F6h]...... ; No carry

Page 63: MSP430 - general.pdf

Instruction Set

3-23RISC 16-Bit CPU

ADDC[.W] Add source and carry to destinationADDC.B Add source and carry to destination

Syntax ADDC src,dst or ADDC.W src,dstADDC.B src,dst

Operation src + dst + C −> dst

Description The source operand and the carry bit (C) are added to the destination operand.The source operand is not affected. The previous contents of the destinationare lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 32-bit counter pointed to by R13 is added to a 32-bit counter, eleven words(20/2 + 2/2) above the pointer in R13.

ADD @R13+,20(R13) ; ADD LSDs with no carry inADDC @R13+,20(R13) ; ADD MSDs with carry... ; resulting from the LSDs

Example The 24-bit counter pointed to by R13 is added to a 24-bit counter, eleven wordsabove the pointer in R13.

ADD.B @R13+,10(R13) ; ADD LSDs with no carry inADDC.B @R13+,10(R13) ; ADD medium Bits with carryADDC.B @R13+,10(R13) ; ADD MSDs with carry... ; resulting from the LSDs

Page 64: MSP430 - general.pdf

Instruction Set

3-24 RISC 16-Bit CPU

AND[.W] Source AND destinationAND.B Source AND destination

Syntax AND src,dst or AND.W src,dstAND.B src,dst

Operation src .AND. dst −> dst

Description The source operand and the destination operand are logically ANDed. Theresult is placed into the destination.

Status Bits N: Set if result MSB is set, reset if not setZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise ( = .NOT. Zero)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits set in R5 are used as a mask (#0AA55h) for the word addressed byTOM. If the result is zero, a branch is taken to label TONI.

MOV #0AA55h,R5 ; Load mask into register R5AND R5,TOM ; mask word addressed by TOM with R5JZ TONI ;...... ; Result is not zero;;; or;;AND #0AA55h,TOMJZ TONI

Example The bits of mask #0A5h are logically ANDed with the low byte TOM. If the resultis zero, a branch is taken to label TONI.

AND.B #0A5h,TOM ; mask Lowbyte TOM with 0A5hJZ TONI ;...... ; Result is not zero

Page 65: MSP430 - general.pdf

Instruction Set

3-25RISC 16-Bit CPU

BIC[.W] Clear bits in destinationBIC.B Clear bits in destination

Syntax BIC src,dst or BIC.W src,dstBIC.B src,dst

Operation .NOT.src .AND. dst −> dst

Description The inverted source operand and the destination operand are logicallyANDed. The result is placed into the destination. The source operand is notaffected.

Status Bits Status bits are not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The six MSBs of the RAM word LEO are cleared.

BIC #0FC00h,LEO ; Clear 6 MSBs in MEM(LEO)

Example The five MSBs of the RAM byte LEO are cleared.

BIC.B #0F8h,LEO ; Clear 5 MSBs in Ram location LEO

Page 66: MSP430 - general.pdf

Instruction Set

3-26 RISC 16-Bit CPU

BIS[.W] Set bits in destinationBIS.B Set bits in destination

Syntax BIS src,dst or BIS.W src,dstBIS.B src,dst

Operation src .OR. dst −> dst

Description The source operand and the destination operand are logically ORed. Theresult is placed into the destination. The source operand is not affected.

Status Bits Status bits are not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The six LSBs of the RAM word TOM are set.

BIS #003Fh,TOM; set the six LSBs in RAM location TOM

Example The three MSBs of RAM byte TOM are set.

BIS.B #0E0h,TOM ; set the three MSBs in RAM location TOM

Page 67: MSP430 - general.pdf

Instruction Set

3-27RISC 16-Bit CPU

BIT[.W] Test bits in destinationBIT.B Test bits in destination

Syntax BIT src,dst or BIT.W src,dst

Operation src .AND. dst

Description The source and destination operands are logically ANDed. The result affectsonly the status bits. The source and destination operands are not affected.

Status Bits N: Set if MSB of result is set, reset otherwiseZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (.NOT. zero)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example If bit 9 of R8 is set, a branch is taken to label TOM.

BIT #0200h,R8 ; bit 9 of R8 set?JNZ TOM ; Yes, branch to TOM... ; No, proceed

Example If bit 3 of R8 is set, a branch is taken to label TOM.

BIT.B #8,R8JC TOM

Example A serial communication receive bit (RCV) is tested. Because the carry bit isequal to the state of the tested bit while using the BIT instruction to test a singlebit, the carry bit is used by the subsequent instruction; the read information isshifted into register RECBUF.;; Serial communication with LSB is shifted first:

; xxxx xxxx xxxx xxxxBIT.B #RCV,RCCTL ; Bit info into carryRRC RECBUF ; Carry −> MSB of RECBUF

; cxxx xxxx...... ; repeat previous two instructions...... ; 8 times

; cccc cccc; ^ ^; MSB LSB

; Serial communication with MSB shifted first:BIT.B #RCV,RCCTL ; Bit info into carryRLC.B RECBUF ; Carry −> LSB of RECBUF

; xxxx xxxc...... ; repeat previous two instructions...... ; 8 times

; cccc cccc; | LSB; MSB

Page 68: MSP430 - general.pdf

Instruction Set

3-28 RISC 16-Bit CPU

* BR, BRANCH Branch to .......... destination

Syntax BR dst

Operation dst −> PC

Emulation MOV dst,PC

Description An unconditional branch is taken to an address anywhere in the 64K addressspace. All source addressing modes can be used. The branch instruction isa word instruction.

Status Bits Status bits are not affected.

Example Examples for all addressing modes are given.

BR #EXEC ;Branch to label EXEC or direct branch (e.g. #0A4h); Core instruction MOV @PC+,PC

BR EXEC ; Branch to the address contained in EXEC; Core instruction MOV X(PC),PC; Indirect address

BR &EXEC ; Branch to the address contained in absolute; address EXEC; Core instruction MOV X(0),PC; Indirect address

BR R5 ; Branch to the address contained in R5; Core instruction MOV R5,PC; Indirect R5

BR @R5 ; Branch to the address contained in the word; pointed to by R5.; Core instruction MOV @R5,PC; Indirect, indirect R5

BR @R5+ ; Branch to the address contained in the word pointed; to by R5 and increment pointer in R5 afterwards.; The next time—S/W flow uses R5 pointer—it can; alter program execution due to access to; next address in a table pointed to by R5; Core instruction MOV @R5,PC; Indirect, indirect R5 with autoincrement

BR X(R5) ; Branch to the address contained in the address; pointed to by R5 + X (e.g. table with address; starting at X). X can be an address or a label; Core instruction MOV X(R5),PC; Indirect, indirect R5 + X

Page 69: MSP430 - general.pdf

Instruction Set

3-29RISC 16-Bit CPU

CALL Subroutine

Syntax CALL dst

Operation dst −> tmp dst is evaluated and storedSP − 2 −> SPPC −> @SP PC updated to TOStmp −> PC dst saved to PC

Description A subroutine call is made to an address anywhere in the 64K address space.All addressing modes can be used. The return address (the address of thefollowing instruction) is stored on the stack. The call instruction is a wordinstruction.

Status Bits Status bits are not affected.

Example Examples for all addressing modes are given.

CALL #EXEC ; Call on label EXEC or immediate address (e.g. #0A4h); SP−2 → SP, PC+2 → @SP, @PC+ → PC

CALL EXEC ; Call on the address contained in EXEC; SP−2 → SP, PC+2 → @SP, X(PC) → PC; Indirect address

CALL &EXEC ; Call on the address contained in absolute address; EXEC; SP−2 → SP, PC+2 → @SP, X(0) → PC; Indirect address

CALL R5 ; Call on the address contained in R5; SP−2 → SP, PC+2 → @SP, R5 → PC; Indirect R5

CALL @R5 ; Call on the address contained in the word; pointed to by R5; SP−2 → SP, PC+2 → @SP, @R5 → PC; Indirect, indirect R5

CALL @R5+ ; Call on the address contained in the word; pointed to by R5 and increment pointer in R5.; The next time—S/W flow uses R5 pointer—; it can alter the program execution due to; access to next address in a table pointed to by R5; SP−2 → SP, PC+2 → @SP, @R5 → PC; Indirect, indirect R5 with autoincrement

CALL X(R5) ; Call on the address contained in the address pointed; to by R5 + X (e.g. table with address starting at X); X can be an address or a label; SP−2 → SP, PC+2 → @SP, X(R5) → PC; Indirect, indirect R5 + X

Page 70: MSP430 - general.pdf

Instruction Set

3-30 RISC 16-Bit CPU

* CLR[.W] Clear destination* CLR.B Clear destination

Syntax CLR dst or CLR.W dstCLR.B dst

Operation 0 −> dst

Emulation MOV #0,dstMOV.B #0,dst

Description The destination operand is cleared.

Status Bits Status bits are not affected.

Example RAM word TONI is cleared.

CLR TONI ; 0 −> TONI

Example Register R5 is cleared.

CLR R5

Example RAM byte TONI is cleared.

CLR.B TONI ; 0 −> TONI

Page 71: MSP430 - general.pdf

Instruction Set

3-31RISC 16-Bit CPU

* CLRC Clear carry bit

Syntax CLRC

Operation 0 −> C

Emulation BIC #1,SR

Description The carry bit (C) is cleared. The clear carry instruction is a word instruction.

Status Bits N: Not affectedZ: Not affectedC: ClearedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit decimal counter pointed to by R13 is added to a 32-bit counterpointed to by R12.

CLRC ; C = 0: defines startDADD @R13,0(R12) ; add 16-bit counter to low word of 32-bit counterDADC 2(R12) ; add carry to high word of 32-bit counter

Page 72: MSP430 - general.pdf

Instruction Set

3-32 RISC 16-Bit CPU

* CLRN Clear negative bit

Syntax CLRN

Operation 0 → Nor(.NOT.src .AND. dst −> dst)

Emulation BIC #4,SR

Description The constant 04h is inverted (0FFFBh) and is logically ANDed with thedestination operand. The result is placed into the destination. The clearnegative bit instruction is a word instruction.

Status Bits N: Reset to 0Z: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The Negative bit in the status register is cleared. This avoids special treatmentwith negative numbers of the subroutine called.

CLRNCALL SUBR............

SUBR JN SUBRET ; If input is negative: do nothing and return..................

SUBRET RET

Page 73: MSP430 - general.pdf

Instruction Set

3-33RISC 16-Bit CPU

* CLRZ Clear zero bit

Syntax CLRZ

Operation 0 → Zor(.NOT.src .AND. dst −> dst)

Emulation BIC #2,SR

Description The constant 02h is inverted (0FFFDh) and logically ANDed with thedestination operand. The result is placed into the destination. The clear zerobit instruction is a word instruction.

Status Bits N: Not affectedZ: Reset to 0C: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The zero bit in the status register is cleared.

CLRZ

Page 74: MSP430 - general.pdf

Instruction Set

3-34 RISC 16-Bit CPU

CMP[.W] Compare source and destinationCMP.B Compare source and destination

Syntax CMP src,dst or CMP.W src,dstCMP.B src,dst

Operation dst + .NOT.src + 1or(dst − src)

Description The source operand is subtracted from the destination operand. This isaccomplished by adding the 1s complement of the source operand plus 1. Thetwo operands are not affected and the result is not stored; only the status bitsare affected.

Status Bits N: Set if result is negative, reset if positive (src >= dst)Z: Set if result is zero, reset otherwise (src = dst)C: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 and R6 are compared. If they are equal, the program continues at the labelEQUAL.

CMP R5,R6 ; R5 = R6?JEQ EQUAL ; YES, JUMP

Example Two RAM blocks are compared. If they are not equal, the program branchesto the label ERROR.

MOV #NUM,R5 ; number of words to be comparedMOV #BLOCK1,R6 ; BLOCK1 start address in R6MOV #BLOCK2,R7 ; BLOCK2 start address in R7

L$1 CMP @R6+,0(R7) ; Are Words equal? R6 incrementsJNZ ERROR ; No, branch to ERRORINCD R7 ; Increment R7 pointerDEC R5 ; Are all words compared?JNZ L$1 ; No, another compare

Example The RAM bytes addressed by EDE and TONI are compared. If they are equal,the program continues at the label EQUAL.

CMP.B EDE,TONI ; MEM(EDE) = MEM(TONI)?JEQ EQUAL ; YES, JUMP

Page 75: MSP430 - general.pdf

Instruction Set

3-35RISC 16-Bit CPU

* DADC[.W] Add carry decimally to destination* DADC.B Add carry decimally to destination

Syntax DADC dst or DADC.W src,dstDADC.B dst

Operation dst + C −> dst (decimally)

Emulation DADD #0,dstDADD.B #0,dst

Description The carry bit (C) is added decimally to the destination.

Status Bits N: Set if MSB is 1Z: Set if dst is 0, reset otherwiseC: Set if destination increments from 9999 to 0000, reset otherwise

Set if destination increments from 99 to 00, reset otherwiseV: Undefined

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The four-digit decimal number contained in R5 is added to an eight-digitdecimal number pointed to by R8.

CLRC ; Reset carry; next instruction’s start condition is defined

DADD R5,0(R8) ; Add LSDs + CDADC 2(R8) ; Add carry to MSD

Example The two-digit decimal number contained in R5 is added to a four-digit decimalnumber pointed to by R8.

CLRC ; Reset carry; next instruction’s start condition is defined

DADD.B R5,0(R8) ; Add LSDs + CDADC 1(R8) ; Add carry to MSDs

Page 76: MSP430 - general.pdf

Instruction Set

3-36 RISC 16-Bit CPU

DADD[.W] Source and carry added decimally to destinationDADD.B Source and carry added decimally to destination

Syntax DADD src,dst or DADD.W src,dstDADD.B src,dst

Operation src + dst + C −> dst (decimally)

Description The source operand and the destination operand are treated as four binarycoded decimals (BCD) with positive signs. The source operand and the carrybit (C) are added decimally to the destination operand. The source operandis not affected. The previous contents of the destination are lost. The result isnot defined for non-BCD numbers.

Status Bits N: Set if the MSB is 1, reset otherwiseZ: Set if result is zero, reset otherwiseC: Set if the result is greater than 9999

Set if the result is greater than 99V: Undefined

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The eight-digit BCD number contained in R5 and R6 is added decimally to aneight-digit BCD number contained in R3 and R4 (R6 and R4 contain theMSDs).

CLRC ; clear carryDADD R5,R3 ; add LSDsDADD R6,R4 ; add MSDs with carryJC OVERFLOW ; If carry occurs go to error handling routine

Example The two-digit decimal counter in the RAM byte CNT is incremented by one.

CLRC ; clear carryDADD.B #1,CNT ; increment decimal counter

or

SETCDADD.B #0,CNT ; ≡ DADC.B CNT

Page 77: MSP430 - general.pdf

Instruction Set

3-37RISC 16-Bit CPU

* DEC[.W] Decrement destination* DEC.B Decrement destination

Syntax DEC dst or DEC.W dstDEC.B dst

Operation dst − 1 −> dst

Emulation SUB #1,dstEmulation SUB.B #1,dst

Description The destination operand is decremented by one. The original contents arelost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 1, reset otherwiseC: Reset if dst contained 0, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Set if initial value of destination was 08000h, otherwise reset.Set if initial value of destination was 080h, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R10 is decremented by 1

DEC R10 ; Decrement R10

; Move a block of 255 bytes from memory location starting with EDE to memory location starting with;TONI. Tables should not overlap: start of destination address TONI must not be within the range EDE; to EDE+0FEh;

MOV #EDE,R6MOV #255,R10

L$1 MOV.B @R6+,TONI−EDE−1(R6)DEC R10JNZ L$1

; Do not transfer tables using the routine above with the overlap shown in Figure 3−12.

Figure 3−12. Decrement Overlap

EDE

EDE+254

TONI

TONI+254

Page 78: MSP430 - general.pdf

Instruction Set

3-38 RISC 16-Bit CPU

* DECD[.W] Double-decrement destination* DECD.B Double-decrement destination

Syntax DECD dst or DECD.W dstDECD.B dst

Operation dst − 2 −> dst

Emulation SUB #2,dstEmulation SUB.B #2,dst

Description The destination operand is decremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 2, reset otherwiseC: Reset if dst contained 0 or 1, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Set if initial value of destination was 08001 or 08000h, otherwise reset.Set if initial value of destination was 081 or 080h, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R10 is decremented by 2.

DECD R10 ; Decrement R10 by two

; Move a block of 255 words from memory location starting with EDE to memory location ; starting with TONI; Tables should not overlap: start of destination address TONI must not be within the; range EDE to EDE+0FEh;

MOV #EDE,R6MOV #510,R10

L$1 MOV @R6+,TONI−EDE−2(R6)DECD R10JNZ L$1

Example Memory at location LEO is decremented by two.

DECD.B LEO ; Decrement MEM(LEO)

Decrement status byte STATUS by two.

DECD.B STATUS

Page 79: MSP430 - general.pdf

Instruction Set

3-39RISC 16-Bit CPU

* DINT Disable (general) interrupts

Syntax DINT

Operation 0 → GIEor(0FFF7h .AND. SR → SR / .NOT.src .AND. dst −> dst)

Emulation BIC #8,SR

Description All interrupts are disabled.The constant 08h is inverted and logically ANDed with the status register (SR).The result is placed into the SR.

Status Bits Status bits are not affected.

Mode Bits GIE is reset. OSCOFF and CPUOFF are not affected.

Example The general interrupt enable (GIE) bit in the status register is cleared to allowa nondisrupted move of a 32-bit counter. This ensures that the counter is notmodified during the move by any interrupt.

DINT ; All interrupt events using the GIE bit are disabledNOPMOV COUNTHI,R5 ; Copy counterMOV COUNTLO,R6EINT ; All interrupt events using the GIE bit are enabled

Note: Disable Interrupt

If any code sequence needs to be protected from interruption, the DINTshould be executed at least one instruction before the beginning of theuninterruptible sequence, or should be followed by a NOP instruction.

Page 80: MSP430 - general.pdf

Instruction Set

3-40 RISC 16-Bit CPU

* EINT Enable (general) interrupts

Syntax EINT

Operation 1 → GIEor(0008h .OR. SR −> SR / .src .OR. dst −> dst)

Emulation BIS #8,SR

Description All interrupts are enabled.The constant #08h and the status register SR are logically ORed. The resultis placed into the SR.

Status Bits Status bits are not affected.

Mode Bits GIE is set. OSCOFF and CPUOFF are not affected.

Example The general interrupt enable (GIE) bit in the status register is set.

; Interrupt routine of ports P1.2 to P1.7; P1IN is the address of the register where all port bits are read. P1IFG is the address of; the register where all interrupt events are latched.;

PUSH.B &P1INBIC.B @SP,&P1IFG ; Reset only accepted flagsEINT ; Preset port 1 interrupt flags stored on stack

; other interrupts are allowedBIT #Mask,@SPJEQ MaskOK ; Flags are present identically to mask: jump......

MaskOK BIC #Mask,@SP......INCD SP ; Housekeeping: inverse to PUSH instruction

; at the start of interrupt subroutine. Corrects; the stack pointer.

RETI

Note: Enable Interrupt

The instruction following the enable interrupt instruction (EINT) is alwaysexecuted, even if an interrupt service request is pending when the interruptsare enable.

Page 81: MSP430 - general.pdf

Instruction Set

3-41RISC 16-Bit CPU

* INC[.W] Increment destination* INC.B Increment destination

Syntax INC dst or INC.W dstINC.B dst

Operation dst + 1 −> dst

Emulation ADD #1,dst

Description The destination operand is incremented by one. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseC: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseV: Set if dst contained 07FFFh, reset otherwise

Set if dst contained 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The status byte, STATUS, of a process is incremented. When it is equal to 11,a branch to OVFL is taken.

INC.B STATUSCMP.B #11,STATUSJEQ OVFL

Page 82: MSP430 - general.pdf

Instruction Set

3-42 RISC 16-Bit CPU

* INCD[.W] Double-increment destination* INCD.B Double-increment destination

Syntax INCD dst or INCD.W dstINCD.B dst

Operation dst + 2 −> dst

Emulation ADD #2,dstEmulation ADD.B #2,dst

Example The destination operand is incremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFEh, reset otherwise

Set if dst contained 0FEh, reset otherwiseC: Set if dst contained 0FFFEh or 0FFFFh, reset otherwise

Set if dst contained 0FEh or 0FFh, reset otherwiseV: Set if dst contained 07FFEh or 07FFFh, reset otherwise

Set if dst contained 07Eh or 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The item on the top of the stack (TOS) is removed without using a register.

.......PUSH R5 ; R5 is the result of a calculation, which is stored

; in the system stackINCD SP ; Remove TOS by double-increment from stack

; Do not use INCD.B, SP is a word-aligned; register

RET

Example The byte on the top of the stack is incremented by two.

INCD.B 0(SP) ; Byte on TOS is increment by two

Page 83: MSP430 - general.pdf

Instruction Set

3-43RISC 16-Bit CPU

* INV[.W] Invert destination* INV.B Invert destination

Syntax INV dstINV.B dst

Operation .NOT.dst −> dst

Emulation XOR #0FFFFh,dstEmulation XOR.B #0FFh,dst

Description The destination operand is inverted. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseC: Set if result is not zero, reset otherwise ( = .NOT. Zero)

Set if result is not zero, reset otherwise ( = .NOT. Zero)V: Set if initial destination operand was negative, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Content of R5 is negated (twos complement).MOV #00AEh,R5 ; R5 = 000AEhINV R5 ; Invert R5, R5 = 0FF51hINC R5 ; R5 is now negated, R5 = 0FF52h

Example Content of memory byte LEO is negated.

MOV.B #0AEh,LEO ; MEM(LEO) = 0AEhINV.B LEO ; Invert LEO, MEM(LEO) = 051hINC.B LEO ; MEM(LEO) is negated,MEM(LEO) = 052h

Page 84: MSP430 - general.pdf

Instruction Set

3-44 RISC 16-Bit CPU

JC Jump if carry setJHS Jump if higher or same

Syntax JC labelJHS label

Operation If C = 1: PC + 2 × offset −> PCIf C = 0: execute following instruction

Description The status register carry bit (C) is tested. If it is set, the 10-bit signed offsetcontained in the instruction LSBs is added to the program counter. If C is reset,the next instruction following the jump is executed. JC (jump if carry/higher orsame) is used for the comparison of unsigned numbers (0 to 65536).

Status Bits Status bits are not affected.

Example The P1IN.1 signal is used to define or control the program flow.

BIT #01h,&P1IN ; State of signal −> CarryJC PROGA ; If carry=1 then execute program routine A...... ; Carry=0, execute program here

Example R5 is compared to 15. If the content is higher or the same, branch to LABEL.

CMP #15,R5JHS LABEL ; Jump is taken if R5 ≥ 15...... ; Continue here if R5 < 15

Page 85: MSP430 - general.pdf

Instruction Set

3-45RISC 16-Bit CPU

JEQ, JZ Jump if equal, jump if zero

Syntax JEQ label, JZ label

Operation If Z = 1: PC + 2 × offset −> PCIf Z = 0: execute following instruction

Description The status register zero bit (Z) is tested. If it is set, the 10-bit signed offsetcontained in the instruction LSBs is added to the program counter. If Z is notset, the instruction following the jump is executed.

Status Bits Status bits are not affected.

Example Jump to address TONI if R7 contains zero.

TST R7 ; Test R7JZ TONI ; if zero: JUMP

Example Jump to address LEO if R6 is equal to the table contents.

CMP R6,Table(R5) ; Compare content of R6 with content of; MEM (table address + content of R5)

JEQ LEO ; Jump if both data are equal...... ; No, data are not equal, continue here

Example Branch to LABEL if R5 is 0.

TST R5JZ LABEL......

Page 86: MSP430 - general.pdf

Instruction Set

3-46 RISC 16-Bit CPU

JGE Jump if greater or equal

Syntax JGE label

Operation If (N .XOR. V) = 0 then jump to label: PC + 2 × offset −> PCIf (N .XOR. V) = 1 then execute the following instruction

Description The status register negative bit (N) and overflow bit (V) are tested. If both Nand V are set or reset, the 10-bit signed offset contained in the instruction LSBsis added to the program counter. If only one is set, the instruction following thejump is executed.

This allows comparison of signed integers.

Status Bits Status bits are not affected.

Example When the content of R6 is greater or equal to the memory pointed to by R7,the program continues at label EDE.

CMP @R7,R6 ; R6 ≥ (R7)?, compare on signed numbersJGE EDE ; Yes, R6 ≥ (R7)...... ; No, proceed............

Page 87: MSP430 - general.pdf

Instruction Set

3-47RISC 16-Bit CPU

JL Jump if less

Syntax JL label

Operation If (N .XOR. V) = 1 then jump to label: PC + 2 × offset −> PCIf (N .XOR. V) = 0 then execute following instruction

Description The status register negative bit (N) and overflow bit (V) are tested. If only oneis set, the 10-bit signed offset contained in the instruction LSBs is added to theprogram counter. If both N and V are set or reset, the instruction following thejump is executed.

This allows comparison of signed integers.

Status Bits Status bits are not affected.

Example When the content of R6 is less than the memory pointed to by R7, the programcontinues at label EDE.

CMP @R7,R6 ; R6 < (R7)?, compare on signed numbersJL EDE ; Yes, R6 < (R7)...... ; No, proceed............

Page 88: MSP430 - general.pdf

Instruction Set

3-48 RISC 16-Bit CPU

JMP Jump unconditionally

Syntax JMP label

Operation PC + 2 × offset −> PC

Description The 10-bit signed offset contained in the instruction LSBs is added to theprogram counter.

Status Bits Status bits are not affected.

Hint: This one-word instruction replaces the BRANCH instruction in the range of−511 to +512 words relative to the current program counter.

Page 89: MSP430 - general.pdf

Instruction Set

3-49RISC 16-Bit CPU

JN Jump if negative

Syntax JN label

Operation if N = 1: PC + 2 × offset −> PCif N = 0: execute following instruction

Description The negative bit (N) of the status register is tested. If it is set, the 10-bit signedoffset contained in the instruction LSBs is added to the program counter. If Nis reset, the next instruction following the jump is executed.

Status Bits Status bits are not affected.

Example The result of a computation in R5 is to be subtracted from COUNT. If the resultis negative, COUNT is to be cleared and the program continues execution inanother path.

SUB R5,COUNT ; COUNT − R5 −> COUNTJN L$1 ; If negative continue with COUNT=0 at PC=L$1...... ; Continue with COUNT≥0..................

L$1 CLR COUNT..................

Page 90: MSP430 - general.pdf

Instruction Set

3-50 RISC 16-Bit CPU

JNC Jump if carry not setJLO Jump if lower

Syntax JNC labelJLO label

Operation if C = 0: PC + 2 × offset −> PCif C = 1: execute following instruction

Description The status register carry bit (C) is tested. If it is reset, the 10-bit signed offsetcontained in the instruction LSBs is added to the program counter. If C is set,the next instruction following the jump is executed. JNC (jump if no carry/lower)is used for the comparison of unsigned numbers (0 to 65536).

Status Bits Status bits are not affected.

Example The result in R6 is added in BUFFER. If an overflow occurs, an error handlingroutine at address ERROR is used.

ADD R6,BUFFER ; BUFFER + R6 −> BUFFERJNC CONT ; No carry, jump to CONT

ERROR ...... ; Error handler start..................

CONT ...... ; Continue with normal program flow............

Example Branch to STL2 if byte STATUS contains 1 or 0.

CMP.B #2,STATUSJLO STL2 ; STATUS < 2...... ; STATUS ≥ 2, continue here

Page 91: MSP430 - general.pdf

Instruction Set

3-51RISC 16-Bit CPU

JNE Jump if not equalJNZ Jump if not zero

Syntax JNE labelJNZ label

Operation If Z = 0: PC + 2 × offset −> PCIf Z = 1: execute following instruction

Description The status register zero bit (Z) is tested. If it is reset, the 10-bit signed offsetcontained in the instruction LSBs is added to the program counter. If Z is set,the next instruction following the jump is executed.

Status Bits Status bits are not affected.

Example Jump to address TONI if R7 and R8 have different contents.

CMP R7,R8 ; COMPARE R7 WITH R8JNE TONI ; if different: jump...... ; if equal, continue

Page 92: MSP430 - general.pdf

Instruction Set

3-52 RISC 16-Bit CPU

MOV[.W] Move source to destinationMOV.B Move source to destination

Syntax MOV src,dst or MOV.W src,dstMOV.B src,dst

Operation src −> dst

Description The source operand is moved to the destination.The source operand is not affected. The previous contents of the destinationare lost.

Status Bits Status bits are not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The contents of table EDE (word data) are copied to table TOM. The lengthof the tables must be 020h locations.

MOV #EDE,R10 ; Prepare pointerMOV #020h,R9 ; Prepare counter

Loop MOV @R10+,TOM−EDE−2(R10) ; Use pointer in R10 for both tablesDEC R9 ; Decrement counterJNZ Loop ; Counter ≠ 0, continue copying...... ; Copying completed............

Example The contents of table EDE (byte data) are copied to table TOM. The length ofthe tables should be 020h locations

MOV #EDE,R10 ; Prepare pointerMOV #020h,R9 ; Prepare counter

Loop MOV.B @R10+,TOM−EDE−1(R10) ; Use pointer in R10 for; both tables

DEC R9 ; Decrement counterJNZ Loop ; Counter ≠ 0, continue

; copying...... ; Copying completed............

Page 93: MSP430 - general.pdf

Instruction Set

3-53RISC 16-Bit CPU

* NOP No operation

Syntax NOP

Operation None

Emulation MOV #0, R3

Description No operation is performed. The instruction may be used for the elimination ofinstructions during the software check or for defined waiting times.

Status Bits Status bits are not affected.

The NOP instruction is mainly used for two purposes:

To fill one, two, or three memory words To adjust software timing

Note: Emulating No-Operation Instruction

Other instructions can emulate the NOP function while providing differentnumbers of instruction cycles and code words. Some examples are:

Examples:

MOV #0,R3 ; 1 cycle, 1 wordMOV 0(R4),0(R4) ; 6 cycles, 3 wordsMOV @R4,0(R4) ; 5 cycles, 2 wordsBIC #0,EDE(R4) ; 4 cycles, 2 wordsJMP $+2 ; 2 cycles, 1 wordBIC #0,R5 ; 1 cycle, 1 word

However, care should be taken when using these examples to preventunintended results. For example, if MOV 0(R4), 0(R4) is used and the valuein R4 is 120h, then a security violation will occur with the watchdog timer(address 120h) because the security key was not used.

Page 94: MSP430 - general.pdf

Instruction Set

3-54 RISC 16-Bit CPU

* POP[.W] Pop word from stack to destination* POP.B Pop byte from stack to destination

Syntax POP dstPOP.B dst

Operation @SP −> tempSP + 2 −> SP temp −> dst

Emulation MOV @SP+,dst or MOV.W @SP+,dstEmulation MOV.B @SP+,dst

Description The stack location pointed to by the stack pointer (TOS) is moved to thedestination. The stack pointer is incremented by two afterwards.

Status Bits Status bits are not affected.

Example The contents of R7 and the status register are restored from the stack.

POP R7 ; Restore R7POP SR ; Restore status register

Example The contents of RAM byte LEO is restored from the stack.

POP.B LEO ; The low byte of the stack is moved to LEO.

Example The contents of R7 is restored from the stack.

POP.B R7 ; The low byte of the stack is moved to R7,; the high byte of R7 is 00h

Example The contents of the memory pointed to by R7 and the status register arerestored from the stack.

POP.B 0(R7) ; The low byte of the stack is moved to the; the byte which is pointed to by R7: Example: R7 = 203h; Mem(R7) = low byte of system stack: Example: R7 = 20Ah; Mem(R7) = low byte of system stack

POP SR ; Last word on stack moved to the SR

Note: The System Stack Pointer

The system stack pointer (SP) is always incremented by two, independentof the byte suffix.

Page 95: MSP430 - general.pdf

Instruction Set

3-55RISC 16-Bit CPU

PUSH[.W] Push word onto stackPUSH.B Push byte onto stack

Syntax PUSH src or PUSH.W srcPUSH.B src

Operation SP − 2 → SPsrc → @SP

Description The stack pointer is decremented by two, then the source operand is movedto the RAM word addressed by the stack pointer (TOS).

Status Bits Status bits are not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The contents of the status register and R8 are saved on the stack.

PUSH SR ; save status registerPUSH R8 ; save R8

Example The contents of the peripheral TCDAT is saved on the stack.

PUSH.B &TCDAT ; save data from 8-bit peripheral module,; address TCDAT, onto stack

Note: The System Stack Pointer

The system stack pointer (SP) is always decremented by two, independentof the byte suffix.

Page 96: MSP430 - general.pdf

Instruction Set

3-56 RISC 16-Bit CPU

* RET Return from subroutine

Syntax RET

Operation @SP→ PCSP + 2 → SP

Emulation MOV @SP+,PC

Description The return address pushed onto the stack by a CALL instruction is moved tothe program counter. The program continues at the code address following thesubroutine call.

Status Bits Status bits are not affected.

Page 97: MSP430 - general.pdf

Instruction Set

3-57RISC 16-Bit CPU

RETI Return from interrupt

Syntax RETI

Operation TOS → SRSP + 2 → SPTOS → PCSP + 2 → SP

Description The status register is restored to the value at the beginning of the interruptservice routine by replacing the present SR contents with the TOS contents.The stack pointer (SP) is incremented by two.

The program counter is restored to the value at the beginning of interruptservice. This is the consecutive step after the interrupted program flow.Restoration is performed by replacing the present PC contents with the TOSmemory contents. The stack pointer (SP) is incremented.

Status Bits N: restored from system stackZ: restored from system stackC: restored from system stackV: restored from system stack

Mode Bits OSCOFF, CPUOFF, and GIE are restored from system stack.

Example Figure 3−13 illustrates the main program interrupt.

Figure 3−13. Main Program Interrupt

PC −6

PC −4

PC −2

PC

PC +2

PC +4

PC +6

PC +8

PC = PCi

PCi +2

PCi +4

PCi +n−4

PCi +n−2

PCi +n

Interrupt Request

Interrupt Accepted

PC+2 is StoredOnto Stack

RETI

Page 98: MSP430 - general.pdf

Instruction Set

3-58 RISC 16-Bit CPU

* RLA[.W] Rotate left arithmetically* RLA.B Rotate left arithmetically

Syntax RLA dst or RLA.W dstRLA.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− 0

Emulation ADD dst,dstADD.B dst,dst

Description The destination operand is shifted left one position as shown in Figure 3−14.The MSB is shifted into the carry bit (C) and the LSB is filled with 0. The RLAinstruction acts as a signed multiplication by 2.

An overflow occurs if dst ≥ 04000h and dst < 0C000h before operation isperformed: the result has changed sign.

Figure 3−14. Destination Operand—Arithmetic Shift Left

15 0

7 0

C

Byte

Word

0

An overflow occurs if dst ≥ 040h and dst < 0C0h before the operation isperformed: the result has changed sign.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs:

the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R7 is multiplied by 2.

RLA R7 ; Shift left R7 (× 2)

Example The low byte of R7 is multiplied by 4.

RLA.B R7 ; Shift left low byte of R7 (× 2)RLA.B R7 ; Shift left low byte of R7 (× 4)

Note: RLA Substitution

The assembler does not recognize the instruction:

RLA @R5+, RLA.B @R5+, or RLA(.B) @R5

It must be substituted by:

ADD @R5+,−2(R5) ADD.B @R5+,−1(R5) or ADD(.B) @R5

Page 99: MSP430 - general.pdf

Instruction Set

3-59RISC 16-Bit CPU

* RLC[.W] Rotate left through carry* RLC.B Rotate left through carry

Syntax RLC dst or RLC.W dstRLC.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− C

Emulation ADDC dst,dst

Description The destination operand is shifted left one position as shown in Figure 3−15.The carry bit (C) is shifted into the LSB and the MSB is shifted into the carrybit (C).

Figure 3−15. Destination Operand—Carry Left Shift

15 0

7 0

C

Byte

Word

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs

the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is shifted left one position.

RLC R5 ; (R5 x 2) + C −> R5

Example The input P1IN.1 information is shifted into the LSB of R5.

BIT.B #2,&P1IN ; Information −> CarryRLC R5 ; Carry=P0in.1 −> LSB of R5

Example The MEM(LEO) content is shifted left one position.

RLC.B LEO ; Mem(LEO) x 2 + C −> Mem(LEO)

Note: RLC and RLC.B Substitution

The assembler does not recognize the instruction:

RLC @R5+, RLC.B @R5+, or RLC(.B) @R5

It must be substituted by:

ADDC @R5+,−2(R5) ADDC.B @R5+,−1(R5) or ADDC(.B) @R5

Page 100: MSP430 - general.pdf

Instruction Set

3-60 RISC 16-Bit CPU

RRA[.W] Rotate right arithmeticallyRRA.B Rotate right arithmetically

Syntax RRA dst or RRA.W dstRRA.B dst

Operation MSB −> MSB, MSB −> MSB−1, ... LSB+1 −> LSB, LSB −> C

Description The destination operand is shifted right one position as shown in Figure 3−16.The MSB is shifted into the MSB, the MSB is shifted into the MSB−1, and theLSB+1 is shifted into the LSB.

Figure 3−16. Destination Operand—Arithmetic Right Shift

15 0

15 0

C

Byte

Word

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is shifted right one position. The MSB retains the old value. It operatesequal to an arithmetic division by 2.

RRA R5 ; R5/2 −> R5

; The value in R5 is multiplied by 0.75 (0.5 + 0.25).;

PUSH R5 ; Hold R5 temporarily using stackRRA R5 ; R5 × 0.5 −> R5ADD @SP+,R5 ; R5 × 0.5 + R5 = 1.5 × R5 −> R5RRA R5 ; (1.5 × R5) × 0.5 = 0.75 × R5 −> R5......

Example The low byte of R5 is shifted right one position. The MSB retains the old value.It operates equal to an arithmetic division by 2.

RRA.B R5 ; R5/2 −> R5: operation is on low byte only; High byte of R5 is reset

PUSH.B R5 ; R5 × 0.5 −> TOSRRA.B @SP ; TOS × 0.5 = 0.5 × R5 × 0.5 = 0.25 × R5 −> TOSADD.B @SP+,R5 ; R5 × 0.5 + R5 × 0.25 = 0.75 × R5 −> R5......

Page 101: MSP430 - general.pdf

Instruction Set

3-61RISC 16-Bit CPU

RRC[.W] Rotate right through carryRRC.B Rotate right through carry

Syntax RRC dst or RRC.W dstRRC dst

Operation C −> MSB −> MSB−1 .... LSB+1 −> LSB −> C

Description The destination operand is shifted right one position as shown in Figure 3−17.The carry bit (C) is shifted into the MSB, the LSB is shifted into the carry bit (C).

Figure 3−17. Destination Operand—Carry Right Shift

15 0

7 0

C

Byte

Word

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is shifted right one position. The MSB is loaded with 1.

SETC ; Prepare carry for MSBRRC R5 ; R5/2 + 8000h −> R5

Example R5 is shifted right one position. The MSB is loaded with 1.

SETC ; Prepare carry for MSBRRC.B R5 ; R5/2 + 80h −> R5; low byte of R5 is used

Page 102: MSP430 - general.pdf

Instruction Set

3-62 RISC 16-Bit CPU

* SBC[.W] Subtract source and borrow/.NOT. carry from destination* SBC.B Subtract source and borrow/.NOT. carry from destination

Syntax SBC dst or SBC.W dstSBC.B dst

Operation dst + 0FFFFh + C −> dstdst + 0FFh + C −> dst

Emulation SUBC #0,dstSUBC.B #0,dst

Description The carry bit (C) is added to the destination operand minus one. The previouscontents of the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwise.

Set to 1 if no borrow, reset if borrow.V: Set if an arithmetic overflow occurs, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit counter pointed to by R13 is subtracted from a 32-bit counterpointed to by R12.

SUB @R13,0(R12) ; Subtract LSDsSBC 2(R12) ; Subtract carry from MSD

Example The 8-bit counter pointed to by R13 is subtracted from a 16-bit counter pointedto by R12.

SUB.B @R13,0(R12) ; Subtract LSDsSBC.B 1(R12) ; Subtract carry from MSD

Note: Borrow Implementation.

The borrow is treated as a .NOT. carry : Borrow Carry bit Yes 0 No 1

Page 103: MSP430 - general.pdf

Instruction Set

3-63RISC 16-Bit CPU

* SETC Set carry bit

Syntax SETC

Operation 1 −> C

Emulation BIS #1,SR

Description The carry bit (C) is set.

Status Bits N: Not affectedZ: Not affectedC: SetV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Emulation of the decimal subtraction:Subtract R5 from R6 decimallyAssume that R5 = 03987h and R6 = 04137h

DSUB ADD #06666h,R5 ; Move content R5 from 0−9 to 6−0Fh; R5 = 03987h + 06666h = 09FEDh

INV R5 ; Invert this (result back to 0−9); R5 = .NOT. R5 = 06012h

SETC ; Prepare carry = 1DADD R5,R6 ; Emulate subtraction by addition of:

; (010000h − R5 − 1); R6 = R6 + R5 + 1; R6 = 0150h

Page 104: MSP430 - general.pdf

Instruction Set

3-64 RISC 16-Bit CPU

* SETN Set negative bit

Syntax SETN

Operation 1 −> N

Emulation BIS #4,SR

Description The negative bit (N) is set.

Status Bits N: SetZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 105: MSP430 - general.pdf

Instruction Set

3-65RISC 16-Bit CPU

* SETZ Set zero bit

Syntax SETZ

Operation 1 −> Z

Emulation BIS #2,SR

Description The zero bit (Z) is set.

Status Bits N: Not affectedZ: SetC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 106: MSP430 - general.pdf

Instruction Set

3-66 RISC 16-Bit CPU

SUB[.W] Subtract source from destinationSUB.B Subtract source from destination

Syntax SUB src,dst or SUB.W src,dstSUB.B src,dst

Operation dst + .NOT.src + 1 −> dstor[(dst − src −> dst)]

Description The source operand is subtracted from the destination operand by adding thesource operand’s 1s complement and the constant 1. The source operand isnot affected. The previous contents of the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwise.

Set to 1 if no borrow, reset if borrow.V: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example See example at the SBC instruction.

Example See example at the SBC.B instruction.

Note: Borrow Is Treated as a .NOT.

The borrow is treated as a .NOT. carry : Borrow Carry bit Yes 0 No 1

Page 107: MSP430 - general.pdf

Instruction Set

3-67RISC 16-Bit CPU

SUBC[.W]SBB[.W] Subtract source and borrow/.NOT. carry from destinationSUBC.B,SBB.B Subtract source and borrow/.NOT. carry from destination

Syntax SUBC src,dst or SUBC.W src,dst orSBB src,dst or SBB.W src,dstSUBC.B src,dst or SBB.B src,dst

Operation dst + .NOT.src + C −> dstor(dst − src − 1 + C −> dst)

Description The source operand is subtracted from the destination operand by adding thesource operand’s 1s complement and the carry bit (C). The source operandis not affected. The previous contents of the destination are lost.

Status Bits N: Set if result is negative, reset if positive.Z: Set if result is zero, reset otherwise.C: Set if there is a carry from the MSB of the result, reset otherwise.

Set to 1 if no borrow, reset if borrow.V: Set if an arithmetic overflow occurs, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Two floating point mantissas (24 bits) are subtracted.LSBs are in R13 and R10, MSBs are in R12 and R9.

SUB.W R13,R10 ; 16-bit part, LSBsSUBC.B R12,R9 ; 8-bit part, MSBs

Example The 16-bit counter pointed to by R13 is subtracted from a 16-bit counter in R10and R11(MSD).

SUB.B @R13+,R10 ; Subtract LSDs without carrySUBC.B @R13,R11 ; Subtract MSDs with carry... ; resulting from the LSDs

Note: Borrow Implementation

The borrow is treated as a .NOT. carry : Borrow Carry bit Yes 0 No 1

Page 108: MSP430 - general.pdf

Instruction Set

3-68 RISC 16-Bit CPU

SWPB Swap bytes

Syntax SWPB dst

Operation Bits 15 to 8 <−> bits 7 to 0

Description The destination operand high and low bytes are exchanged as shown in Figure 3−18.

Status Bits Status bits are not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Figure 3−18. Destination Operand Byte Swap

15 8 7 0

Example

MOV #040BFh,R7 ; 0100000010111111 −> R7SWPB R7 ; 1011111101000000 in R7

Example The value in R5 is multiplied by 256. The result is stored in R5,R4.

SWPB R5 ;MOV R5,R4 ;Copy the swapped value to R4BIC #0FF00h,R5 ;Correct the resultBIC #00FFh,R4 ;Correct the result

Page 109: MSP430 - general.pdf

Instruction Set

3-69RISC 16-Bit CPU

SXT Extend Sign

Syntax SXT dst

Operation Bit 7 −> Bit 8 ......... Bit 15

Description The sign of the low byte is extended into the high byte as shown in Figure 3−19.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (.NOT. Zero)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Figure 3−19. Destination Operand Sign Extension

15 8 7 0

Example R7 is loaded with the P1IN value. The operation of the sign-extend instructionexpands bit 8 to bit 15 with the value of bit 7.R7 is then added to R6.

MOV.B &P1IN,R7 ; P1IN = 080h: . . . . . . . . 1000 0000SXT R7 ; R7 = 0FF80h: 1111 1111 1000 0000

Page 110: MSP430 - general.pdf

Instruction Set

3-70 RISC 16-Bit CPU

* TST[.W] Test destination* TST.B Test destination

Syntax TST dst or TST.W dstTST.B dst

Operation dst + 0FFFFh + 1dst + 0FFh + 1

Emulation CMP #0,dstCMP.B #0,dst

Description The destination operand is compared with zero. The status bits are set accord-ing to the result. The destination is not affected.

Status Bits N: Set if destination is negative, reset if positiveZ: Set if destination contains zero, reset otherwiseC: SetV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R7 is tested. If it is negative, continue at R7NEG; if it is positive but not zero,continue at R7POS.

TST R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zero

R7POS ...... ; R7 is positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO ...... ; R7 is zero

Example The low byte of R7 is tested. If it is negative, continue at R7NEG; if it is positivebut not zero, continue at R7POS.

TST.B R7 ; Test low byte of R7JN R7NEG ; Low byte of R7 is negativeJZ R7ZERO ; Low byte of R7 is zero

R7POS ...... ; Low byte of R7 is positive but not zeroR7NEG ..... ; Low byte of R7 is negativeR7ZERO ...... ; Low byte of R7 is zero

Page 111: MSP430 - general.pdf

Instruction Set

3-71RISC 16-Bit CPU

XOR[.W] Exclusive OR of source with destinationXOR.B Exclusive OR of source with destination

Syntax XOR src,dst or XOR.W src,dstXOR.B src,dst

Operation src .XOR. dst −> dst

Description The source and destination operands are exclusive ORed. The result is placedinto the destination. The source operand is not affected.

Status Bits N: Set if result MSB is set, reset if not setZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise ( = .NOT. Zero)V: Set if both operands are negative

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits set in R6 toggle the bits in the RAM word TONI.

XOR R6,TONI ; Toggle bits of word TONI on the bits set in R6

Example The bits set in R6 toggle the bits in the RAM byte TONI.

XOR.B R6,TONI ; Toggle bits of byte TONI on the bits set in; low byte of R6

Example Reset to 0 those bits in low byte of R7 that are different from bits in RAM byteEDE.

XOR.B EDE,R7 ; Set different bit to “1s”INV.B R7 ; Invert Lowbyte, Highbyte is 0h

Page 112: MSP430 - general.pdf

Instruction Set

3-72 RISC 16-Bit CPU

3.4.4 Instruction Cycles and Lengths

The number of CPU clock cycles required for an instruction depends on theinstruction format and the addressing modes used - not the instruction itself.The number of clock cycles refers to the MCLK.

Interrupt and Reset Cycles

Table 3−14 lists the CPU cycles for interrupt overhead and reset.

Table 3−14.Interrupt and Reset Cycles

No. of Length ofAction

No. ofCycles

Length ofInstruction

Return from interrupt (RETI) 5 1

Interrupt accepted 6 −

WDT reset 4 −

Reset (RST/NMI) 4 −

Format-II (Single Operand) Instruction Cycles and Lengths

Table 3−15 lists the length and CPU cycles for all addressing modes offormat-II instructions.

Table 3−15.Format-II Instruction Cycles and Lengths

No. of Cycles

AddressingMode

RRA, RRCSWPB, SXT PUSH CALL

Length ofInstruction Example

Rn 1 3 4 1 SWPB R5

@Rn 3 4 4 1 RRC @R9

@Rn+ 3 5 5 1 SWPB @R10+

#N (See note) 4 5 2 CALL #0F00h

X(Rn) 4 5 5 2 CALL 2(R7)

EDE 4 5 5 2 PUSH EDE

&EDE 4 5 5 2 SXT &EDE

Note: Instruction Format II Immediate Mode

Do not use instructions RRA, RRC, SWPB, and SXT with the immediatemode in the destination field. Use of these in the immediate mode results inan unpredictable program operation.

Format-III (Jump) Instruction Cycles and Lengths

All jump instructions require one code word, and take two CPU cycles toexecute, regardless of whether the jump is taken or not.

Page 113: MSP430 - general.pdf

Instruction Set

3-73RISC 16-Bit CPU

Format-I (Double Operand) Instruction Cycles and Lengths

Table 3−16 lists the length and CPU cycles for all addressing modes of format-Iinstructions.

Table 3−16.Format I Instruction Cycles and Lengths

Addressing Mode No. of Length of

Src Dst Cyclesg

Instruction ExampleRn Rm 1 1 MOV R5,R8

PC 2 1 BR R9

x(Rm) 4 2 ADD R5,4(R6)

EDE 4 2 XOR R8,EDE

&EDE 4 2 MOV R5,&EDE

@Rn Rm 2 1 AND @R4,R5

PC 2 1 BR @R8

x(Rm) 5 2 XOR @R5,8(R6)

EDE 5 2 MOV @R5,EDE

&EDE 5 2 XOR @R5,&EDE

@Rn+ Rm 2 1 ADD @R5+,R6

PC 3 1 BR @R9+

x(Rm) 5 2 XOR @R5,8(R6)

EDE 5 2 MOV @R9+,EDE

&EDE 5 2 MOV @R9+,&EDE

#N Rm 2 2 MOV #20,R9

PC 3 2 BR #2AEh

x(Rm) 5 3 MOV #0300h,0(SP)

EDE 5 3 ADD #33,EDE

&EDE 5 3 ADD #33,&EDE

x(Rn) Rm 3 2 MOV 2(R5),R7( )

PC 3 2 BR 2(R6)

TONI 6 3 MOV 4(R7),TONI

x(Rm) 6 3 ADD 4(R4),6(R9)

&TONI 6 3 MOV 2(R4),&TONI

EDE Rm 3 2 AND EDE,R6

PC 3 2 BR EDE

TONI 6 3 CMP EDE,TONI

x(Rm) 6 3 MOV EDE,0(SP)

&TONI 6 3 MOV EDE,&TONI

&EDE Rm 3 2 MOV &EDE,R8

PC 3 2 BRA &EDE

TONI 6 3 MOV &EDE,TONI

x(Rm) 6 3 MOV &EDE,0(SP)

&TONI 6 3 MOV &EDE,&TONI

Page 114: MSP430 - general.pdf

Instruction Set

3-74 RISC 16-Bit CPU

3.4.5 Instruction Set Description

The instruction map is shown in Figure 3−20 and the complete instruction setis summarized in Table 3−17.

Figure 3−20. Core Instruction Map

0xxx4xxx8xxxCxxx1xxx14xx18xx1Cxx20xx24xx28xx2Cxx30xx34xx38xx3Cxx4xxx5xxx6xxx7xxx8xxx9xxxAxxxBxxxCxxxDxxxExxxFxxx

RRC RRC.B SWPB RRA RRA.B SXT PUSH PUSH.B CALL RETI

000 040 080 0C0 100 140 180 1C0 200 240 280 2C0 300 340 380 3C0

JNE/JNZJEQ/JZJNCJCJNJGEJLJMPMOV, MOV.BADD, ADD.BADDC, ADDC.BSUBC, SUBC.BSUB, SUB.BCMP, CMP.BDADD, DADD.BBIT, BIT.BBIC, BIC.BBIS, BIS.BXOR, XOR.BAND, AND.B

Page 115: MSP430 - general.pdf

Instruction Set

3-75RISC 16-Bit CPU

Table 3−17.MSP430 Instruction SetMnemonic Description V N Z C

ADC(.B)† dst Add C to destination dst + C → dst * * * *

ADD(.B) src,dst Add source to destination src + dst → dst * * * *

ADDC(.B) src,dst Add source and C to destination src + dst + C → dst * * * *

AND(.B) src,dst AND source and destination src .and. dst → dst 0 * * *

BIC(.B) src,dst Clear bits in destination .not.src .and. dst → dst − − − −

BIS(.B) src,dst Set bits in destination src .or. dst → dst − − − −

BIT(.B) src,dst Test bits in destination src .and. dst 0 * * *

BR† dst Branch to destination dst → PC − − − −

CALL dst Call destination PC+2 → stack, dst → PC − − − −

CLR(.B)† dst Clear destination 0 → dst − − − −

CLRC† Clear C 0 → C − − − 0

CLRN† Clear N 0 → N − 0 − −

CLRZ† Clear Z 0 → Z − − 0 −

CMP(.B) src,dst Compare source and destination dst − src * * * *

DADC(.B)† dst Add C decimally to destination dst + C → dst (decimally) * * * *

DADD(.B) src,dst Add source and C decimally to dst. src + dst + C → dst (decimally) * * * *

DEC(.B)† dst Decrement destination dst − 1 → dst * * * *

DECD(.B)† dst Double-decrement destination dst − 2 → dst * * * *

DINT† Disable interrupts 0 → GIE − − − −

EINT† Enable interrupts 1 → GIE − − − −

INC(.B)† dst Increment destination dst +1 → dst * * * *

INCD(.B)† dst Double-increment destination dst+2 → dst * * * *

INV(.B)† dst Invert destination .not.dst → dst * * * *

JC/JHS label Jump if C set/Jump if higher or same − − − −

JEQ/JZ label Jump if equal/Jump if Z set − − − −

JGE label Jump if greater or equal − − − −

JL label Jump if less − − − −

JMP label Jump PC + 2 x offset → PC − − − −

JN label Jump if N set − − − −

JNC/JLO label Jump if C not set/Jump if lower − − − −

JNE/JNZ label Jump if not equal/Jump if Z not set − − − −

MOV(.B) src,dst Move source to destination src → dst − − − −

NOP† No operation − − − −

POP(.B)† dst Pop item from stack to destination @SP → dst, SP+2 → SP − − − −

PUSH(.B) src Push source onto stack SP − 2 → SP, src → @SP − − − −

RET† Return from subroutine @SP → PC, SP + 2 → SP − − − −

RETI Return from interrupt * * * *

RLA(.B)† dst Rotate left arithmetically * * * *

RLC(.B)† dst Rotate left through C * * * *

RRA(.B) dst Rotate right arithmetically 0 * * *

RRC(.B) dst Rotate right through C * * * *

SBC(.B)† dst Subtract not(C) from destination dst + 0FFFFh + C → dst * * * *

SETC† Set C 1 → C − − − 1

SETN† Set N 1 → N − 1 − −

SETZ† Set Z 1 → C − − 1 −

SUB(.B) src,dst Subtract source from destination dst + .not.src + 1 → dst * * * *

SUBC(.B) src,dst Subtract source and not(C) from dst. dst + .not.src + C → dst * * * *

SWPB dst Swap bytes − − − −

SXT dst Extend sign 0 * * *

TST(.B)† dst Test destination dst + 0FFFFh + 1 0 * * 1

XOR(.B) src,dst Exclusive OR source and destination src .xor. dst → dst * * * *† Emulated Instruction

Page 116: MSP430 - general.pdf

3-76 RISC 16-Bit CPU

Page 117: MSP430 - general.pdf

4-116-Bit MSP430X CPU

16-Bit MSP430X CPU

This chapter describes the extended MSP430X 16-bit RISC CPU with 1-MBmemory access, its addressing modes, and instruction set. The MSP430XCPU is implemented in all MSP430 devices that exceed 64-KB of addressspace.

Topic Page

4.1 CPU Introduction 4-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.2 Interrupts 4-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3 CPU Registers 4-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4 Addressing Modes 4-15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5 MSP430 and MSP430X Instructions 4-36. . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.6 Instruction Set Description 4-58. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 4

Page 118: MSP430 - general.pdf

CPU Introduction

4-2 16-Bit MSP430X CPU

4.1 CPU Introduction

The MSP430X CPU incorporates features specifically designed for modernprogramming techniques such as calculated branching, table processing andthe use of high-level languages such as C. The MSP430X CPU can addressa 1-MB address range without paging. In addition, the MSP430X CPU hasfewer interrupt overhead cycles and fewer instruction cycles in some casesthan the MSP430 CPU, while maintaining the same or better code density thanthe MSP430 CPU. The MSP430X CPU is completely backwards compatiblewith the MSP430 CPU.

The MSP430X CPU features include:

RISC architecture.

Orthogonal architecture.

Full register access including program counter, status register and stackpointer.

Single-cycle register operations.

Large register file reduces fetches to memory.

20-bit address bus allows direct access and branching throughout theentire memory range without paging.

16-bit data bus allows direct manipulation of word-wide arguments.

Constant generator provides the six most often used immediate valuesand reduces code size.

Direct memory-to-memory transfers without intermediate register holding.

Byte, word, and 20-bit address-word addressing

The block diagram of the MSP430X CPU is shown in Figure 4−1.

Page 119: MSP430 - general.pdf

CPU Introduction

4-316-Bit MSP430X CPU

Figure 4−1.MSP430X CPU Block Diagram

R6

R5

R4

R3/CG2 Constant Generator

R7

R8

R9

R10

R11

R12

R13

R14

R15

0

0

R0/PC Program Counter

19

R1/SP Pointer Stack

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

General Purpose

Memory Address Bus − MABMDB − Memory Data Bus

1620

16/20−bit ALU

srcdstZero, ZCarry, C

Overflow,VNegative,N

MCLK

016 15

R2/SR Status Register

Page 120: MSP430 - general.pdf

Interrupts

4-4 16-Bit MSP430X CPU

4.2 Interrupts

The MSP430X uses the same interrupt structure as the MSP430:

Vectored interrupts with no polling necessary

Interrupt vectors are located downward from address 0FFFEh

Interrupt operation for both MSP430 and MSP430X CPUs is described inChapter 2 System Resets, Interrupts, and Operating modes, Section 2Interrupts. The interrupt vectors contain 16-bit addresses that point into thelower 64-KB memory. This means all interrupt handlers must start in the lower64-KB memory − even in MSP430X devices.

During an interrupt, the program counter and the status register are pushedonto the stack as shown in Figure 4−2. The MSP430X architecture efficientlystores the complete 20-bit PC value by automatically appending the PC bits19:16 to the stored SR value on the stack. When the RETI instruction isexecuted, the full 20-bit PC is restored making return from interrupt to anyaddress in the memory range possible.

Figure 4−2.Program Counter Storage on the Stack for Interrupts

Item n−1

PC.19:16

PC.15:0

SPold

SP SR.11:0

Page 121: MSP430 - general.pdf

CPU Registers

4-516-Bit MSP430X CPU

4.3 CPU Registers

The CPU incorporates sixteen registers R0 to R15. Registers R0, R1, R2, andR3 have dedicated functions. R4 to R15 are working registers for general use.

4.3.1 The Program Counter PC

The 20-bit program counter (PC/R0) points to the next instruction to beexecuted. Each instruction uses an even number of bytes (two, four, six oreight bytes), and the PC is incremented accordingly. Instruction accesses areperformed on word boundaries, and the PC is aligned to even addresses.Figure 4−3 shows the program counter.

Figure 4−3.Program Counter PC

0Program Counter Bits 19 to 1

19 15 1 016

The PC can be addressed with all instructions and addressing modes. A fewexamples:

MOV.W #LABEL,PC ; Branch to address LABEL (lower 64 KB)

MOVA #LABEL,PC ; Branch to address LABEL (1MB memory)

MOV.W LABEL,PC ; Branch to address in word LABEL ; (lower 64 KB)

MOV.W @R14,PC ; Branch indirect to address in ; R14 (lower 64 KB)

ADDA #4,PC ; Skip two words (1 MB memory)

The BR and CALL instructions reset the upper four PC bits to 0. Onlyaddresses in the lower 64-KB address range can be reached with the BR orCALL instruction. When branching or calling, addresses beyond the lower64-KB range can only be reached using the BRA or CALLA instructions. Also,any instruction to directly modify the PC does so according to the usedaddressing mode. For example, MOV.W #value,PC will clear the upper fourbits of the PC because it is a .W instruction.

Page 122: MSP430 - general.pdf

CPU Registers

4-6 16-Bit MSP430X CPU

The program counter is automatically stored on the stack with CALL, or CALLAinstructions, and during an interrupt service routine. Figure 4−4 shows thestorage of the program counter with the return address after a CALLAinstruction. A CALL instruction stores only bits 15:0 of the PC.

Figure 4−4.Program Counter Storage on the Stack for CALLA

Item n

PC.19:16

PC.15:0

SPold

SP

The RETA instruction restores bits 19:0 of the program counter and adds 4 tothe stack pointer. The RET instruction restores bits 15:0 to the programcounter and adds 2 to the stack pointer.

Page 123: MSP430 - general.pdf

CPU Registers

4-716-Bit MSP430X CPU

4.3.2 Stack Pointer (SP)

The 20-bit stack pointer (SP/R1) is used by the CPU to store the returnaddresses of subroutine calls and interrupts. It uses a predecrement,postincrement scheme. In addition, the SP can be used by software with allinstructions and addressing modes. Figure 4−5 shows the SP. The SP isinitialized into RAM by the user, and is always aligned to even addresses.

Figure 4−6 shows the stack usage. Figure 4−7 shows the stack usage when20-bit address-words are pushed.

Figure 4−5.Stack Pointer

0Stack Pointer Bits 19 to 1

19 1 0

MOV.W 2(SP),R6 ; Copy Item I2 to R6

MOV.W R7,0(SP) ; Overwrite TOS with R7

PUSH #0123h ; Put 0123h on stack

POP R8 ; R8 = 0123h

Figure 4−6.Stack Usage

I3

I1

I2

I3

0xxxh

0xxxh − 2

0xxxh − 4

0xxxh − 6

0xxxh − 8

I1

I2

SP

0123h SP

I1

I2

I3 SP

PUSH #0123h POP R8Address

Figure 4−7.PUSHX.A Format on the Stack

Item n−1

Item.19:16

Item.15:0

SPold

SP

Page 124: MSP430 - general.pdf

CPU Registers

4-8 16-Bit MSP430X CPU

The special cases of using the SP as an argument to the PUSH and POPinstructions are described and shown in Figure 4−8.

Figure 4−8.PUSH SP - POP SP Sequence

SP1

SPold

SP1

PUSH SP

The stack pointer is changed aftera PUSH SP instruction.

SP1SP2

POP SP

The stack pointer is not changed after a POP SPinstruction. The POP SP instruction places SP1 into thestack pointer SP (SP2=SP1)

Page 125: MSP430 - general.pdf

CPU Registers

4-916-Bit MSP430X CPU

4.3.3 Status Register (SR)

The 16-bit status register (SR/R2), used as a source or destination register,can only be used in register mode addressed with word instructions. Theremaining combinations of addressing modes are used to support theconstant generator. Figure 4−9 shows the SR bits. Do not write 20-bit valuesto the SR. Unpredictable operation can result.

Figure 4−9.Status Register Bits

SCG0 GIE Z C

rw-0

15 0

Reserved NCPUOFF

OSCOFFSCG1V

8 79

Table 4−1 describes the status register bits.

Table 4−1.Description of Status Register Bits

Bit Description

Reserved Reserved

V Overflow bit. This bit is set when the result of an arithmetic operationoverflows the signed-variable range.

ADD(.B), ADDX(.B,.A),ADDC(.B), ADDCX(.B.A),ADDA

Set when:positive + positive = negativenegative + negative = positiveotherwise reset

SUB(.B), SUBX(.B,.A),SUBC(.B),SUBCX(.B,.A),SUBA, CMP(.B),CMPX(.B,.A), CMPA

Set when:positive − negative = negativenegative − positive = positiveotherwise reset

SCG1 System clock generator 1. This bit, when set, turns off the DCO dcgenerator if DCOCLK is not used for MCLK or SMCLK.

SCG0 System clock generator 0. This bit, when set, turns off the FLL+ loopcontrol.

OSCOFF Oscillator Off. This bit, when set, turns off the LFXT1 crystal oscillatorwhen LFXT1CLK is not used for MCLK or SMCLK.

CPUOFF CPU off. This bit, when set, turns off the CPU.

GIE General interrupt enable. This bit, when set, enables maskable inter-rupts. When reset, all maskable interrupts are disabled.

N Negative bit. This bit is set when the result of an operation is negativeand cleared when the result is positive.

Page 126: MSP430 - general.pdf

CPU Registers

4-10 16-Bit MSP430X CPU

Bit Description

Z Zero bit. This bit is set when the result of an operation is zero andcleared when the result is not zero.

C Carry bit. This bit is set when the result of an operation produced acarry and cleared when no carry occurred.

Page 127: MSP430 - general.pdf

CPU Registers

4-1116-Bit MSP430X CPU

4.3.4 The Constant Generator Registers CG1 and CG2

Six commonly used constants are generated with the constant generatorregisters R2 (CG1) and R3 (CG2), without requiring an additional 16-bit wordof program code. The constants are selected with the source registeraddressing modes (As), as described in Table 4−2.

Table 4−2.Values of Constant Generators CG1, CG2

Register As Constant Remarks

R2 00 - Register mode

R2 01 (0) Absolute address mode

R2 10 00004h +4, bit processing

R2 11 00008h +8, bit processing

R3 00 00000h 0, word processing

R3 01 00001h +1

R3 10 00002h +2, bit processing

R3 11 FFh, FFFFh, FFFFFh -1, word processing

The constant generator advantages are:

No special instructions required

No additional code word for the six constants

No code memory access required to retrieve the constant

The assembler uses the constant generator automatically if one of the sixconstants is used as an immediate source operand. Registers R2 and R3,used in the constant mode, cannot be addressed explicitly; they act assource-only registers.

Constant Generator − Expanded Instruction Set

The RISC instruction set of the MSP430 has only 27 instructions. However, theconstant generator allows the MSP430 assembler to support 24 additional,emulated instructions. For example, the single-operand instruction:

CLR dst

is emulated by the double-operand instruction with the same length:

MOV R3,dst

where the #0 is replaced by the assembler, and R3 is used with As=00.

INC dst

is replaced by:

ADD 0(R3),dst

Page 128: MSP430 - general.pdf

CPU Registers

4-12 16-Bit MSP430X CPU

4.3.5 The General Purpose Registers R4 to R15

The twelve CPU registers R4 to R15, contain 8-bit, 16-bit, or 20-bit values. Anybyte-write to a CPU register clears bits 19:8. Any word-write to a register clearsbits 19:16. The only exception is the SXT instruction. The SXT instructionextends the sign through the complete 20-bit register.

The following figures show the handling of byte, word and address-word data.Note the reset of the leading MSBs, if a register is the destination of a byte orword instruction.

Figure 4−10 shows byte handling (8-bit data, .B suffix). The handling is shownfor a source register and a destination memory byte and for a source memorybyte and a destination register.

Figure 4−10. Register-Byte/Byte-Register Operation

Unused

High Byte Low Byte

Register-Byte Operation

High Byte Low Byte

Byte-Register Operation

Register

Memory Register

Memory

Operation

Memory

Operation

0 Register

Un-used

UnusedUn-used

0

19 16 15 0

19 16 15 0

8 7

8 7

Page 129: MSP430 - general.pdf

CPU Registers

4-1316-Bit MSP430X CPU

Figure 4−11 and Figure 4−12 show 16-bit word handling (.W suffix). Thehandling is shown for a source register and a destination memory word andfor a source memory word and a destination register.

Figure 4−11. Register-Word Operation

High Byte Low Byte

Register-Word Operation

Register

Memory

Operation

Memory

Un-used

19 16 15 08 7

Figure 4−12. Word-Register Operation

High Byte Low Byte

Word-Register Operation

Register

Memory

Operation

0 Register

Un-used

19 16 15 08 7

Page 130: MSP430 - general.pdf

CPU Registers

4-14 16-Bit MSP430X CPU

Figure 4−13 and Figure 4−14 show 20-bit address-word handling (.A suffix).The handling is shown for a source register and a destination memoryaddress-word and for a source memory address-word and a destinationregister.

Figure 4−13. Register − Address-Word Operation

High Byte Low Byte

Register − Address-Word Operation

Register

Memory

Operation

Memory

Unused

0

Memory +2

Memory +2

19 16 15 08 7

Figure 4−14. Address-Word − Register Operation

High Byte Low Byte

Address-Word − Register Operation

Register

Memory

Operation

Register

UnusedMemory +2

19 16 15 08 7

Page 131: MSP430 - general.pdf

CPU Registers

4-1516-Bit MSP430X CPU

4.4 Addressing Modes

Seven addressing modes for the source operand and four addressing modesfor the destination operand use 16-bit or 20-bit addresses. The MSP430 andMSP430X instructions are usable throughout the entire 1-MB memory range.

Table 4−3.Source/Destination Addressing

As/Ad Addressing Mode Syntax Description

00/0 Register mode Rn Register contents are operand

01/1 Indexed mode X(Rn) (Rn + X) points to the operand. Xis stored in the next word, orstored in combination of thepreceding extension word and thenext word.

01/1 Symbolic mode ADDR (PC + X) points to the operand. Xis stored in the next word, orstored in combination of thepreceding extension word and thenext word. Indexed mode X(PC) isused.

01/1 Absolute mode &ADDR The word following the instructioncontains the absolute address. Xis stored in the next word, orstored in combination of thepreceding extension word and thenext word. Indexed mode X(SR) isused.

10/− Indirect registermode

@Rn Rn is used as a pointer to theoperand.

11/− Indirectautoincrement

@Rn+ Rn is used as a pointer to theoperand. Rn is incrementedafterwards by 1 for .B instructions.by 2 for .W instructions, and by 4for .A instructions.

11/− Immediate mode #N N is stored in the next word, orstored in combination of thepreceding extension word and thenext word. Indirect autoincrementmode @PC+ is used.

The seven addressing modes are explained in detail in the following sections.Most of the examples show the same addressing mode for the source anddestination, but any valid combination of source and destination addressingmodes is possible in an instruction.

Note: Use of Labels EDE, TONI, TOM, and LEO

Throughout MSP430 documentation EDE, TONI, TOM, and LEO are usedas generic labels. They are only labels. They have no special meaning.

Page 132: MSP430 - general.pdf

CPU Registers

4-16 16-Bit MSP430X CPU

4.4.1 Register Mode

Operation: The operand is the 8-, 16-, or 20-bit content of the used CPUregister.

Length: One, two, or three words

Comment: Valid for source and destination

Byte operation: Byte operation reads only the 8 LSBs of the source registerRsrc and writes the result to the 8 LSBs of the destinationregister Rdst. The bits Rdst.19:8 are cleared. The registerRsrc is not modified.

Word operation:Word operation reads the 16 LSBs of the source register Rsrcand writes the result to the 16 LSBs of the destination registerRdst. The bits Rdst.19:16 are cleared. The register Rsrc is notmodified.

Address-Word operation: Address-word operation reads the 20 bits of thesource register Rsrc and writes the result to the 20 bits of thedestination register Rdst. The register Rsrc is not modified

SXT Exception: The SXT instruction is the only exception for registeroperation. The sign of the low byte in bit 7 is extended to thebits Rdst.19:8.

Example: BIS.W R5,R6 ;

This instruction logically ORs the 16-bit data contained in R5 with the 16-bitcontents of R6. R6.19:16 is cleared.

xxxxh

AddressSpace

D506h PC

21036h

21034h

AA550h

11111h

R5

R6

RegisterBefore:

xxxxh

AddressSpace

D506h

PC21036h

21034h

AA550h

0B551h

R5

R6

RegisterAfter:

A550h.or.1111h = B551h

Page 133: MSP430 - general.pdf

CPU Registers

4-1716-Bit MSP430X CPU

Example: BISX.A R5,R6 ;

This instruction logically ORs the 20-bit data contained in R5 with the 20-bitcontents of R6.

The extension word contains the A/L-bit for 20-bit data. The instruction worduses byte mode with bits A/L:B/W = 01. The result of the instruction is:

xxxxh

AddressSpace

D546h

PC

21036h

21034h

AA550h

11111h

R5

R6

RegisterBefore:

AddressSpace

PC AA550h

BB551h

R5

R6

RegisterAfter:

AA550h.or.11111h = BB551h

1800h21032h

xxxxh

D546h

21036h

21034h

1800h21032h

Page 134: MSP430 - general.pdf

CPU Registers

4-18 16-Bit MSP430X CPU

4.4.2 Indexed Mode

The Indexed mode calculates the address of the operand by adding the signedindex to a CPU register. The Indexed mode has three addressing possibilities:

Indexed mode in lower 64-KB memory

MSP430 instruction with Indexed mode addressing memory above thelower 64-KB memory.

MSP430X instruction with Indexed mode

Indexed Mode in Lower 64 KB Memory

If the CPU register Rn points to an address in the lower 64 KB of the memoryrange, the calculated memory address bits 19:16 are cleared after the additionof the CPU register Rn and the signed 16-bit index. This means, the calculatedmemory address is always located in the lower 64 KB and does not overflowor underflow out of the lower 64-KB memory space. The RAM and theperipheral registers can be accessed this way and existing MSP430 softwareis usable without modifications as shown in Figure 4−15.

Figure 4−15. Indexed Mode in Lower 64 KB

16-bitsigned index

CPU RegisterRn

16-bit signed add

0 Memory address

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

FFFFF

00000

Low

er 6

4KB

0FFFF10000

Rn.19:0

Lower 64 KB.Rn.19:16 = 0

16-bit byte index

0

19 16 15 0

S

Length: Two or three words

Operation: The signed 16-bit index is located in the next word after theinstruction and is added to the CPU register Rn. The resultingbits 19:16 are cleared giving a truncated 16-bit memoryaddress, which points to an operand address in the range00000h to 0FFFFh. The operand is the content of theaddressed memory location.

Comment: Valid for source and destination. The assembler calculatesthe register index and inserts it.

Page 135: MSP430 - general.pdf

CPU Registers

4-1916-Bit MSP430X CPU

Example: ADD.B 1000h(R5),0F000h(R6);

The previous instruction adds the 8-bit data contained in source byte1000h(R5) and the destination byte 0F000h(R6) and places the result into thedestination byte. Source and destination bytes are both located in the lower64 KB due to the cleared bits 19:16 of registers R5 and R6.

Source: The byte pointed to by R5 + 1000h results in address 0479Ch+ 1000h = 0579Ch after truncation to a 16-bit address.

Destination: The byte pointed to by R6 + F000h results in address 01778h+ F000h = 00778h after truncation to a 16-bit address.

xxxxh

AddressSpace

F000h

1000h

PC

1103Ah

11038h

11036h

0479Ch

01778h

R5

R6

01778h+F000h00778h

RegisterBefore:

AddressSpace

RegisterAfter:

55D6h11034h

xxxxh

F000h

1000h

PC1103Ah

11038h

11036h

0479Ch

01778h

R5

R6

55D6h11034h

xxxxh

xx45h

0077Ah

00778h

xxxxh

xx77h

0077Ah

00778h

32h+45h

77h

srcdstSum

0479Ch+1000h0579Ch

xxxxh

xx32h

0579Eh

0579Ch

xxxxh

xx32h

0579Eh

0579Ch

Page 136: MSP430 - general.pdf

CPU Registers

4-20 16-Bit MSP430X CPU

MSP430 Instruction with Indexed Mode in Upper Memory

If the CPU register Rn points to an address above the lower 64-KB memory,the Rn bits 19:16 are used for the address calculation of the operand. Theoperand may be located in memory in the range Rn ±32 KB, because theindex, X, is a signed 16-bit value. In this case, the address of the operand canoverflow or underflow into the lower 64-KB memory space. See Figure 4−16and Figure 4−17.

Figure 4−16. Indexed Mode in Upper Memory

16-bit signed index(sign extended to20 bits)

CPU RegisterRn

20-bit signed add

Memory address

FFFFF

00000

Low

er 6

4 K

B0FFFF10000

Upper MemoryRn.19:16 > 0

16-bit byte index

1 ... 15

19 16 15 0

S

Rn ±32 KB

S

Rn.19:0

Figure 4−17. Overflow and Underflow for the Indexed Mode

ÇÇÇÇÇÇÇÇÇÇÇÇ

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

FFFFF

0000C

Low

er 6

4 K

B

0,FFFF10000

Rn.19:0

Rn.19:0

Rn.19:0ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

±32K

B

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

±32K

B

Rn.19:0

Page 137: MSP430 - general.pdf

CPU Registers

4-2116-Bit MSP430X CPU

Length: Two or three words

Operation: The sign-extended 16-bit index in the next word after theinstruction is added to the 20 bits of the CPU register Rn. Thisdelivers a 20-bit address, which points to an address in therange 0 to FFFFFh. The operand is the content of theaddressed memory location.

Comment: Valid for source and destination. The assembler calculatesthe register index and inserts it.

Example: ADD.W 8346h(R5),2100h(R6);

This instruction adds the 16-bit data contained in the source and thedestination addresses and places the 16-bit result into the destination. Sourceand destination operand can be located in the entire address range.

Source: The word pointed to by R5 + 8346h. The negative index8346h is sign-extended, which results in address 23456h +F8346h = 1B79Ch.

Destination: The word pointed to by R6 + 2100h results in address15678h + 2100h = 17778h.

Figure 4−18. Example for the Indexed Mode

xxxxh

AddressSpace

2100h

8346h

PC

1103Ah

11038h

11036h

23456h

15678h

R5

R6

15678h+02100h

17778h

RegisterBefore:

AddressSpace

RegisterAfter:

5596h11034h

xxxxh

2100h

8346h

PC1103Ah

11038h

11036h

23456h

15678h

R5

R6

5596h11034h

xxxxh

2345h

1777Ah

17778h

xxxxh

7777h

1777Ah

17778h

05432h+02345h

07777h

srcdstSum

23456h+F8346h1B79Ch

xxxxh

5432h

1B79Eh

1B79Ch

xxxxh

5432h

1B79Eh

1B79Ch

Page 138: MSP430 - general.pdf

CPU Registers

4-22 16-Bit MSP430X CPU

MSP430X Instruction with Indexed Mode

When using an MSP430X instruction with Indexed mode, the operand can belocated anywhere in the range of Rn ± 19 bits.

Length: Three or four words

Operation: The operand address is the sum of the 20-bit CPU registercontent and the 20-bit index. The four MSBs of the index arecontained in the extension word, the 16 LSBs are containedin the word following the instruction. The CPU register is notmodified.

Comment: Valid for source and destination. The assembler calculatesthe register index and inserts it.

Example: ADDX.A 12346h(R5),32100h(R6) ;

This instruction adds the 20-bit data contained in the source and thedestination addresses and places the result into the destination.

Source: Two words pointed to by R5 + 12346h which results inaddress 23456h + 12346h = 3579Ch.

Destination: Two words pointed to by R6 + 32100h which results inaddress 45678h + 32100h = 77778h.

Page 139: MSP430 - general.pdf

CPU Registers

4-2316-Bit MSP430X CPU

The extension word contains the MSBs of the source index and of thedestination index and the A/L-bit for 20-bit data. The instruction word uses bytemode due to the 20-bit data length with bits A/L:B/W = 01.

2100h

AddressSpace

2346h

55D6h

PC

21038h

21036h

21034h

23456h

45678h

R5

R6

45678h+32100h

77778h

RegisterBefore:

AddressSpace

RegisterAfter:

PC 23456h

45678h

R5

R6

0001h

2345h

7777Ah

77778h

0007h

7777h

7777Ah

77778h

65432h+12345h

77777h

srcdstSum

0006h

5432h

3579Eh

3579Ch

0006h

5432h

3579Eh

3579Ch

1883h21032h

xxxxh2103Ah

2100h

2346h

55D6h

21038h

21036h

21034h

1883h21032h

xxxxh2103Ah

23456h+12346h3579Ch

Page 140: MSP430 - general.pdf

CPU Registers

4-24 16-Bit MSP430X CPU

4.4.3 Symbolic Mode

The Symbolic mode calculates the address of the operand by adding thesigned index to the program counter. The Symbolic mode has threeaddressing possibilities:

Symbolic mode in lower 64-KB memory

MSP430 instruction with symbolic mode addressing memory above thelower 64-KB memory.

MSP430X instruction with symbolic mode

Symbolic Mode in Lower 64 KB

If the PC points to an address in the lower 64 KB of the memory range, thecalculated memory address bits 19:16 are cleared after the addition of the PCand the signed 16-bit index. This means, the calculated memory address isalways located in the lower 64 KB and does not overflow or underflow out ofthe lower 64-KB memory space. The RAM and the peripheral registers can beaccessed this way and existing MSP430 software is usable withoutmodifications as shown in Figure 4−15.

Figure 4−19. Symbolic Mode Running in Lower 64 KB

16-bit signedPC index

Programcounter PC

16-bit signed add

0 Memory address

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

FFFFF

00000

Low

er 6

4 K

B

0FFFF10000

PC.19:0

Lower 64 KB.PC.19:16 = 0

16-bit byte index

0

19 16 15 0

S

Operation: The signed 16-bit index in the next word after the instruction isadded temporarily to the PC. The resulting bits 19:16 are cleared giving atruncated 16-bit memory address, which points to an operand address in therange 00000h, to 0FFFFh. The operand is the content of the addressedmemory location.

Length: Two or three words

Comment: Valid for source and destination. The assembler calculatesthe PC index and inserts it.

Example: ADD.B EDE,TONI ;

Page 141: MSP430 - general.pdf

CPU Registers

4-2516-Bit MSP430X CPU

The previous instruction adds the 8-bit data contained in source byte EDE anddestination byte TONI and places the result into the destination byte TONI.Bytes EDE and TONI and the program are located in the lower 64 KB.

Source: Byte EDE located at address 0,579Ch, pointed to by PC +4766h where the PC index 4766h is the result of 0579Ch −01036h = 04766h. Address 01036h is the location of the indexfor this example.

Destination: Byte TONI located at address 00778h, pointed to by PC +F740h, is the truncated 16-bit result of00778h − 1038h = FF740h. Address 01038h is the locationof the index for this example.

xxxxh

AddressSpace

F740h

4766h

PC

0103Ah

01038h

01036h

01038h+0F740h

00778h

Before:AddressSpace

After:

05D0h01034h

xxxxh

F740h

4766h

PC0103Ah

01038h

01036h

50D0h01034h

xxxxh

xx45h

0077Ah

00778h

xxxxh

xx77h

0077Ah

00778h

32h+45h

77h

srcdstSum

01036h+04766h0579Ch

xxxxh

xx32h

0579Eh

0579Ch

xxxxh

xx32h

0579Eh

0579Ch

Page 142: MSP430 - general.pdf

CPU Registers

4-26 16-Bit MSP430X CPU

MSP430 Instruction with Symbolic Mode in Upper Memory

If the PC points to an address above the lower 64-KB memory, the PC bits19:16 are used for the address calculation of the operand. The operand maybe located in memory in the range PC ±32 KB, because the index, X, is asigned 16-bit value. In this case, the address of the operand can overflow orunderflow into the lower 64-KB memory space as shown in Figure 4−20 andFigure 4−21.

Figure 4−20. Symbolic Mode Running in Upper Memory

16-bit signed PCindex (signextended to20 bits)

Programcounter PC

20-bit signed add

Memory address

FFFFF

00000

Low

er 6

4 K

B0FFFF10000

PC.19:0

Upper MemoryPC.19:16 > 0

16-bit byte index

1 ... 15

19 16 15 0

S

PC ±32 KB

S

Figure 4−21. Overflow and Underflow for the Symbolic Mode

ÇÇÇÇÇÇÇÇÇÇÇÇ

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

FFFFF

0000C

Low

er 6

4 K

B

0FFFF10000

PC.19:0

PC.19:0

PC.19:0ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

±32K

B

ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ

±32K

B

PC.19:0

Page 143: MSP430 - general.pdf

CPU Registers

4-2716-Bit MSP430X CPU

Length: Two or three words

Operation: The sign-extended 16-bit index in the next word after theinstruction is added to the 20 bits of the PC. This delivers a20-bit address, which points to an address in the range 0 toFFFFFh. The operand is the content of the addressedmemory location.

Comment: Valid for source and destination. The assembler calculatesthe PC index and inserts it

Example: ADD.W EDE,&TONI ;

This instruction adds the 16-bit data contained in source word EDE anddestination word TONI and places the 16-bit result into the destination wordTONI. For this example, the instruction is located at address 2,F034h.

Source: Word EDE at address 3379Ch, pointed to by PC + 4766hwhich is the 16-bit result of 3379Ch − 2F036h = 04766h.Address 2F036h is the location of the index for this example.

Destination: Word TONI located at address 00778h pointed to by theabsolute address 00778h.

xxxxh

AddressSpace

0778h

4766h

PC

2F03Ah

2F038h

2F036h

2F036h+04766h3379Ch

Before:AddressSpace

After:

5092h2F034h

xxxxh

0778h

4766h

PC2F03Ah

2F038h

2F036h

5092h2F034h

xxxxh

5432h

3379Eh

3379Ch

xxxxh

5432h

3379Eh

3379Ch

5432h+2345h

7777h

srcdstSum

xxxxh

2345h

0077Ah

00778h

xxxxh

7777h

0077Ah

00778h

Page 144: MSP430 - general.pdf

CPU Registers

4-28 16-Bit MSP430X CPU

MSP430X Instruction with Symbolic Mode

When using an MSP430X instruction with Symbolic mode, the operand canbe located anywhere in the range of PC ± 19 bits.

Length: Three or four words

Operation: The operand address is the sum of the 20-bit PC and the20-bit index. The four MSBs of the index are contained in theextension word, the 16 LSBs are contained in the wordfollowing the instruction.

Comment: Valid for source and destination. The assembler calculatesthe register index and inserts it.

Example: ADDX.B EDE,TONI ;

The instruction adds the 8-bit data contained in source byte EDE anddestination byte TONI and places the result into the destination byte TONI.

Source: Byte EDE located at address 3579Ch, pointed to byPC + 14766h, is the 20-bit result of3579Ch - 21036h = 14766h. Address 21036h is the addressof the index in this example.

Destination: Byte TONI located at address 77778h, pointed to byPC + 56740h, is the 20-bit result of77778h - 21038h = 56740h. Address 21038h is the addressof the index in this example..

6740h

Address Space

4766h

50D0h

PC

21038h

21036h

21034h

21038h+56740h

77778h

Before: Address SpaceAfter:

PC

xxxxh

xx45h

7777Ah

77778h

xxxxh

xx77h

7777Ah

77778h

32h+45h

77h

srcdstSum

xxxxh

xx32h

3579Eh

3579Ch

xxxxh

xx32h

3579Eh

3579Ch

18C5h21032h

xxxxh2103Ah

6740h

4766h

50D0h

21038h

21036h

21034h

18C5h21032h

xxxxh2103Ah

21036h+14766h3579Ch

Page 145: MSP430 - general.pdf

CPU Registers

4-2916-Bit MSP430X CPU

4.4.4 Absolute Mode

The Absolute mode uses the contents of the word following the instruction asthe address of the operand. The Absolute mode has two addressingpossibilities:

Absolute mode in lower 64-KB memory

MSP430X instruction with Absolute mode

Page 146: MSP430 - general.pdf

CPU Registers

4-30 16-Bit MSP430X CPU

Absolute Mode in Lower 64 KB

If an MSP430 instruction is used with Absolute addressing mode, the absoluteaddress is a 16-bit value and therefore points to an address in the lower 64 KBof the memory range. The address is calculated as an index from 0 and isstored in the word following the instruction The RAM and the peripheralregisters can be accessed this way and existing MSP430 software is usablewithout modifications.

Length: Two or three words

Operation: The operand is the content of the addressed memorylocation.

Comment: Valid for source and destination. The assembler calculatesthe index from 0 and inserts it

Example: ADD.W &EDE,&TONI ;

This instruction adds the 16-bit data contained in the absolute source anddestination addresses and places the result into the destination.

Source: Word at address EDE

Destination: Word at address TONI

xxxxh

Address Space

7778h

579Ch

PC

2103Ah

21038h

21036h

Before: Address SpaceAfter:

5292h21034h

xxxxh

7778h

579Ch

PC2103Ah

21038h

21036h

5292h21034h

xxxxh

2345h

0777Ah

07778h

xxxxh

7777h

0777Ah

07778h

5432h+2345h

7777h

srcdstSum

xxxxh

5432h

0579Eh

0579Ch

xxxxh

5432h

0579Eh

0579Ch

Page 147: MSP430 - general.pdf

CPU Registers

4-3116-Bit MSP430X CPU

MSP430X Instruction with Absolute Mode

If an MSP430X instruction is used with Absolute addressing mode, theabsolute address is a 20-bit value and therefore points to any address in thememory range. The address value is calculated as an index from 0. The fourMSBs of the index are contained in the extension word, and the 16 LSBs arecontained in the word following the instruction.

Length: Three or four words

Operation: The operand is the content of the addressed memorylocation.

Comment: Valid for source and destination. The assembler calculatesthe index from 0 and inserts it

Example: ADDX.A &EDE,&TONI ;

This instruction adds the 20-bit data contained in the absolute source anddestination addresses and places the result into the destination.

Source: Two words beginning with address EDE

Destination: Two words beginning with address TONI

7778h

AddressSpace

579Ch

52D2h

PC

21038h

21036h

21034h

Before:AddressSpace

After:

PC

0001h

2345h

7777Ah

77778h

0007h

7777h

7777Ah

77778h

65432h+12345h

77777h

srcdstSum

0006h

5432h

3579Eh

3579Ch

0006h

5432h

3579Eh

3579Ch

1987h21032h

xxxxh2103Ah

7778h

579Ch

52D2h

21038h

21036h

21034h

1987h21032h

xxxxh2103Ah

Page 148: MSP430 - general.pdf

CPU Registers

4-32 16-Bit MSP430X CPU

4.4.5 Indirect Register Mode

The Indirect Register mode uses the contents of the CPU register Rsrc as thesource operand. The Indirect Register mode always uses a 20-bit address.

Length: One, two, or three words

Operation: The operand is the content the addressed memory location.The source register Rsrc is not modified.

Comment: Valid only for the source operand. The substitute for thedestination operand is 0(Rdst).

Example: ADDX.W @R5,2100h(R6)

This instruction adds the two 16-bit operands contained in the source and thedestination addresses and places the result into the destination.

Source: Word pointed to by R5. R5 contains address 3,579Ch for thisexample.

Destination: Word pointed to by R6 + 2100h which results in address45678h + 2100h = 7778h.

xxxxh

AddressSpace

2100h

55A6h PC

21038h

21036h

21034h

3579Ch

45678h

R5

R6

45678h+02100h

47778h

RegisterBefore:

AddressSpace

RegisterAfter:

xxxxh

2100h

55A6h

PC21038h

21036h

21034h

3579Ch

45678h

R5

R6

xxxxh

2345h

4777Ah

47778h

xxxxh

7777h

4777Ah

47778h

5432h+2345h

7777h

srcdstSum

xxxxh

5432h

3579Eh

3579Ch

xxxxh

5432h

3579Eh

3579ChR5 R5

Page 149: MSP430 - general.pdf

CPU Registers

4-3316-Bit MSP430X CPU

4.4.6 Indirect, Autoincrement Mode

The Indirect Autoincrement mode uses the contents of the CPU register Rsrcas the source operand. Rsrc is then automatically incremented by 1 for byteinstructions, by 2 for word instructions, and by 4 for address-word instructionsimmediately after accessing the source operand. If the same register is usedfor source and destination, it contains the incremented address for thedestination access. Indirect Autoincrement mode always uses 20-bitaddresses.

Length: One, two, or three words

Operation: The operand is the content of the addressed memorylocation.

Comment: Valid only for the source operand.

Example: ADD.B @R5+,0(R6)

This instruction adds the 8-bit data contained in the source and the destinationaddresses and places the result into the destination.

Source: Byte pointed to by R5. R5 contains address 3,579Ch for thisexample.

Destination: Byte pointed to by R6 + 0h which results in address 0778h forthis example.

xxxxh

AddressSpace

0000h

55F6h PC

21038h

21036h

21034h

3579Ch

00778h

R5

R6

00778h+0000h00778h

RegisterBefore:

AddressSpace

RegisterAfter:

xxxxh

0000h

55F6h

PC21038h

21036h

21034h

3579Dh

00778h

R5

R6

xxxxh

xx45h

0077Ah

00778h

xxxxh

xx77h

0077Ah

00778h

32h+45h

77h

srcdstSum

xxh

32h

3579Dh

3579Ch

xxh

xx32h

3579Dh

3579ChR5

R5

Page 150: MSP430 - general.pdf

CPU Registers

4-34 16-Bit MSP430X CPU

4.4.7 Immediate Mode

The Immediate mode allows accessing constants as operands by includingthe constant in the memory location following the instruction. The programcounter PC is used with the Indirect Autoincrement mode. The PC points tothe immediate value contained in the next word. After the fetching of theimmediate operand, the PC is incremented by 2 for byte, word, oraddress-word instructions. The Immediate mode has two addressingpossibilities:

8- or 16-bit constants with MSP430 instructions

20-bit constants with MSP430X instruction

MSP430 Instructions with Immediate Mode

If an MSP430 instruction is used with Immediate addressing mode, theconstant is an 8- or 16-bit value and is stored in the word following theinstruction.

Length: Two or three words. One word less if a constant of theconstant generator can be used for the immediate operand.

Operation: The 16-bit immediate source operand is used together withthe 16-bit destination operand.

Comment: Valid only for the source operand.

Example: ADD #3456h,&TONI

This instruction adds the 16-bit immediate operand 3456h to the data in thedestination address TONI.

Source: 16-bit immediate value 3456h.

Destination: Word at address TONI.

xxxxh

AddressSpace

0778h

3456h

PC

2103Ah

21038h

21036h

Before:AddressSpace

After:

50B2h21034h

xxxxh

0778h

3456h

PC2103Ah

21038h

21036h

50B2h21034h

xxxxh

2345h

0077Ah

00778h

xxxxh

579Bh

0077Ah

00778h

3456h+2345h579Bh

srcdstSum

Page 151: MSP430 - general.pdf

CPU Registers

4-3516-Bit MSP430X CPU

MSP430X Instructions with Immediate Mode

If an MSP430X instruction is used with immediate addressing mode, theconstant is a 20-bit value. The 4 MSBs of the constant are stored in theextension word and the 16 LSBs of the constant are stored in the wordfollowing the instruction.

Length: Three or four words. One word less if a constant of theconstant generator can be used for the immediate operand.

Operation: The 20-bit immediate source operand is used together withthe 20-bit destination operand.

Comment: Valid only for the source operand.

Example: ADDX.A #23456h,&TONI ;

This instruction adds the 20-bit immediate operand 23456h to the data in thedestination address TONI.

Source: 20-bit immediate value 23456h.

Destination: Two words beginning with address TONI.

7778h

AddressSpace

3456h

50F2h

PC

21038h

21036h

21034h

Before:AddressSpace

After:

PC

0001h

2345h

7777Ah

77778h

0003h

579Bh

7777Ah

77778h

23456h+12345h3579Bh

srcdstSum

1907h21032h

xxxxh2103Ah

7778h

3456h

50F2h

21038h

21036h

21034h

1907h21032h

xxxxh2103Ah

Page 152: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-36 16-Bit MSP430X CPU

4.5 MSP430 and MSP430X Instructions

MSP430 instructions are the 27 implemented instructions of the MSP430CPU. These instructions are used throughout the 1-MB memory range unlesstheir 16-bit capability is exceeded. The MSP430X instructions are used whenthe addressing of the operands or the data length exceeds the 16-bit capabilityof the MSP430 instructions.

There are three possibilities when choosing between an MSP430 andMSP430X instruction:

To use only the MSP430 instructions: The only exceptions are the CALLAand the RETA instruction. This can be done if a few, simple rules are met:

Placement of all constants, variables, arrays, tables, and data in thelower 64 KB. This allows the use of MSP430 instructions with 16-bitaddressing for all data accesses. No pointers with 20-bit addressesare needed.

Placement of subroutine constants immediately after the subroutinecode. This allows the use of the symbolic addressing mode with its16-bit index to reach addresses within the range of PC ±32 KB.

To use only MSP430X instructions: The disadvantages of this method arethe reduced speed due to the additional CPU cycles and the increasedprogram space due to the necessary extension word for any doubleoperand instruction.

Use the best fitting instruction where needed

The following sections list and describe the MSP430 and MSP430Xinstructions.

Page 153: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-3716-Bit MSP430X CPU

4.5.1 MSP430 Instructions

The MSP430 instructions can be used, regardless if the program resides in thelower 64 KB or beyond it. The only exceptions are the instructions CALL andRET which are limited to the lower 64 KB address range. CALLA and RETAinstructions have been added to the MSP430X CPU to handle subroutines inthe entire address range with no code size overhead.

MSP430 Double Operand (Format I) Instructions

Figure 4−22 shows the format of the MSP430 double operand instructions.Source and destination words are appended for the Indexed, Symbolic,Absolute and Immediate modes. Table 4−4 lists the twelve MSP430 doubleoperand instructions.

Figure 4−22. MSP430 Double Operand Instruction Format

15 12 11 8 7 6 5 4 0

Op-code Rsrc Ad B/W As Rdst

Source or Destination 15:0

Destination 15:0

Table 4−4.MSP430 Double Operand Instructions

Mnemonic S-Reg, Operation Status Bitsg,D-Reg V N Z C

MOV(.B) src,dst src → dst − − − −

ADD(.B) src,dst src + dst → dst * * * *

ADDC(.B) src,dst src + dst + C → dst * * * *

SUB(.B) src,dst dst + .not.src + 1 → dst * * * *

SUBC(.B) src,dst dst + .not.src + C → dst * * * *

CMP(.B) src,dst dst − src * * * *

DADD(.B) src,dst src + dst + C → dst (decimally) * * * *

BIT(.B) src,dst src .and. dst 0 * * Z

BIC(.B) src,dst .not.src .and. dst → dst − − − −

BIS(.B) src,dst src .or. dst → dst − − − −

XOR(.B) src,dst src .xor. dst → dst * * * Z

AND(.B) src,dst src .and. dst → dst 0 * * Z

* The status bit is affected

− The status bit is not affected

0 The status bit is cleared

1 The status bit is set

Page 154: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-38 16-Bit MSP430X CPU

Single Operand (Format II) Instructions

Figure 4−23 shows the format for MSP430 single operand instructions, exceptRETI. The destination word is appended for the Indexed, Symbolic, Absoluteand Immediate modes .Table 4−5 lists the seven single operand instructions.

Figure 4−23. MSP430 Single Operand Instructions

15 7 6 5 4 0

Op-code B/W Ad Rdst

Destination 15:0

Table 4−5.MSP430 Single Operand Instructions

Mnemonic S-Reg, D Reg

Operation Status BitsD-Reg

V N Z C

RRC(.B) dst C → MSB →.......LSB → C * * * *

RRA(.B) dst MSB → MSB →....LSB → C 0 * * *

PUSH(.B) src SP − 2 → SP, src → @SP − − − −

SWPB dst bit 15…bit 8 ⇔ bit 7…bit 0 − − − −

CALL dst Call subroutine in lower 64 KB − − − −

RETI TOS → SR, SP + 2 → SP * * * *

TOS → PC,SP + 2 → SP

SXT dst Register mode: bit 7 → bit 8 …bit 19Other modes: bit 7 → bit 8 …bit 15

0 * * Z

* The status bit is affected

− The status bit is not affected

0 The status bit is cleared

1 The status bit is set

Page 155: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-3916-Bit MSP430X CPU

Jumps

Figure 4−24 shows the format for MSP430 and MSP430X jump instructions.The signed 10-bit word offset of the jump instruction is multiplied by two,sign-extended to a 20-bit address, and added to the 20-bit program counter.This allows jumps in a range of -511 to +512 words relative to the programcounter in the full 20-bit address space Jumps do not affect the status bits.Table 4−6 lists and describes the eight jump instructions.

Figure 4−24. Format of the Conditional Jump Instructions

15

Op-Code

13 12 10 9 8 0

Condition S 10-Bit Signed PC Offset

Table 4−6.Conditional Jump Instructions

Mnemonic S-Reg, D-Reg Operation

JEQ/JZ Label Jump to label if zero bit is set

JNE/JNZ Label Jump to label if zero bit is reset

JC Label Jump to label if carry bit is set

JNC Label Jump to label if carry bit is reset

JN Label Jump to label if negative bit is set

JGE Label Jump to label if (N .XOR. V) = 0

JL Label Jump to label if (N .XOR. V) = 1

JMP Label Jump to label unconditionally

Page 156: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-40 16-Bit MSP430X CPU

Emulated Instructions

In addition to the MSP430 and MSP430X instructions, emulated instructionsare instructions that make code easier to write and read, but do not haveop-codes themselves. Instead, they are replaced automatically by theassembler with a core instruction. There is no code or performance penalty forusing emulated instructions. The emulated instructions are listed in Table 4−7.

Table 4−7.Emulated Instructions

Instruction Explanation Emulation V N Z C

ADC(.B) dst Add Carry to dst ADDC(.B) #0,dst * * * *

BR dst Branch indirectly dst MOV dst,PC - - - -

CLR(.B) dst Clear dst MOV(.B) #0,dst - - - -

CLRC Clear Carry bit BIC #1,SR - - - 0

CLRN Clear Negative bit BIC #4,SR - 0 - -

CLRZ Clear Zero bit BIC #2,SR - - 0 -

DADC(.B) dst Add Carry to dst decimally DADD(.B) #0,dst * * * *

DEC(.B) dst Decrement dst by 1 SUB(.B) #1,dst * * * *

DECD(.B) dst Decrement dst by 2 SUB(.B) #2,dst * * * *

DINT Disable interrupt BIC #8,SR - - - -

EINT Enable interrupt BIS #8,SR - - - -

INC(.B) dst Increment dst by 1 ADD(.B) #1,dst * * * *

INCD(.B) dst Increment dst by 2 ADD(.B) #2,dst * * * *

INV(.B) dst Invert dst XOR(.B) #-1,dst * * * *

NOP No operation MOV R3,R3 - - - -

POP dst Pop operand from stack MOV @SP+,dst - - - -

RET Return from subroutine MOV @SP+,PC - - - -

RLA(.B) dst Shift left dst arithmetically ADD(.B) dst,dst * * * *

RLC(.B) dst Shift left dst logically through Carry

ADDC(.B) dst,dst * * * *

SBC(.B) dst Subtract Carry from dst SUBC(.B) #0,dst * * * *

SETC Set Carry bit BIS #1,SR - - - 1

SETN Set Negative bit BIS #4,SR - 1 - -

SETZ Set Zero bit BIS #2,SR - - 1 -

TST(.B) dst Test dst (compare with 0)

CMP(.B) #0,dst 0 * * 1

Page 157: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-4116-Bit MSP430X CPU

MSP430 Instruction Execution

The number of CPU clock cycles required for an instruction depends on theinstruction format and the addressing modes used - not the instruction itself.The number of clock cycles refers to MCLK.

Instruction Cycles and Length for Interrupt, Reset, and Subroutines

Table 4−8 lists the length and the CPU cycles for reset, interrupts andsubroutines.

Table 4−8.Interrupt, Return and Reset Cycles and Length

ActionExecution TimeMCLK Cycles

Length ofInstruction (Words)

Return from interrupt RETI 3† 1

Return from subroutine RET 3 1

Interrupt request service (cyclesneeded before 1st instruction)

5‡ -

WDT reset 4 -

Reset (RST/NMI) 4 -

† The cycle count in MSP430 CPU is 5.‡ The cycle count in MSP430 CPU is 6.

Page 158: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-42 16-Bit MSP430X CPU

Format-II (Single Operand) Instruction Cycles and Lengths

Table 4−9 lists the length and the CPU cycles for all addressing modes of theMSP430 single operand instructions.

Table 4−9.MSP430 Format-II Instruction Cycles and Length

No. of Cycles Length ofInstruction Example

AddressingMode

RRA, RRCSWPB, SXT PUSH CALL

Length ofInstruction Example

Rn 1 3 3† 1 SWPB R5

@Rn 3 3† 4 1 RRC @R9

@Rn+ 3 3† 4‡ 1 SWPB @R10+

#N n.a. 3† 4‡ 2 CALL #LABEL

X(Rn) 4 4‡ 4‡ 2 CALL 2(R7)

EDE 4 4‡ 4‡ 2 PUSH EDE

&EDE 4 4‡ 4‡ 2 SXT &EDE

† The cycle count in MSP430 CPU is 4.‡ The cycle count in MSP430 CPU is 5. Also, the cycle count is 5 for X(Rn) addressing mode, when

Rn = SP.

Jump Instructions. Cycles and Lengths

All jump instructions require one code word, and take two CPU cycles toexecute, regardless of whether the jump is taken or not.

Page 159: MSP430 - general.pdf

MSP430 and MSP430X Instructions

4-4316-Bit MSP430X CPU

Format-I (Double Operand) Instruction Cycles and Lengths

Table 4−10 lists the length and CPU cycles for all addressing modes of theMSP430 format-I instructions.

Table 4−10.MSP430 Format-I Instructions Cycles and Length

Addressing Mode No. of Length of

Src Dst Cyclesg

Instruction ExampleRn Rm 1 1 MOV R5,R8

PC 2 1 BR R9

x(Rm) 4† 2 ADD R5,4(R6)

EDE 4† 2 XOR R8,EDE

&EDE 4† 2 MOV R5,&EDE

@Rn Rm 2 1 AND @R4,R5

PC 3 1 BR @R8

x(Rm) 5† 2 XOR @R5,8(R6)

EDE 5† 2 MOV @R5,EDE

&EDE 5† 2 XOR @R5,&EDE

@Rn+ Rm 2 1 ADD @R5+,R6

PC 3 1 BR @R9+

x(Rm) 5† 2 XOR @R5,8(R6)

EDE 5† 2 MOV @R9+,EDE

&EDE 5† 2 MOV @R9+,&EDE

#N Rm 2 2 MOV #20,R9

PC 3 2 BR #2AEh

x(Rm) 5† 3 MOV #0300h,0(SP)

EDE 5† 3 ADD #33,EDE

&EDE 5† 3 ADD #33,&EDE

x(Rn) Rm 3 2 MOV 2(R5),R7( )

PC 3 2 BR 2(R6)

TONI 6† 3 MOV 4(R7),TONI

x(Rm) 6† 3 ADD 4(R4),6(R9)

&TONI 6† 3 MOV 2(R4),&TONI

EDE Rm 3 2 AND EDE,R6

PC 3 2 BR EDE

TONI 6† 3 CMP EDE,TONI

x(Rm) 6† 3 MOV EDE,0(SP)

&TONI 6† 3 MOV EDE,&TONI

&EDE Rm 3 2 MOV &EDE,R8

PC 3 2 BR &EDE

TONI 6† 3 MOV &EDE,TONI

x(Rm) 6† 3 MOV &EDE,0(SP)

&TONI 6† 3 MOV &EDE,&TONI

† MOV, BIT, and CMP instructions execute in 1 fewer cycle

Page 160: MSP430 - general.pdf

MSP430X Extended Instructions

4-44 16-Bit MSP430X CPU

4.5.2 MSP430X Extended Instructions

The extended MSP430X instructions give the MSP430X CPU full access to its20-bit address space. Most MSP430X instructions require an additional wordof op-code called the extension word. Some extended instructions do notrequire an additional word and are noted in the instruction description. Alladdresses, indexes and immediate numbers have 20-bit values, whenpreceded by the extension word.

There are two types of extension word:

Register/register mode for Format-I instructions and register mode forFormat-II instructions.

Extension word for all other address mode combinations.

Page 161: MSP430 - general.pdf

MSP430X Extended Instructions

4-4516-Bit MSP430X CPU

Register Mode Extension Word

The register mode extension word is shown in Figure 4−25 and described inTable 4−11. An example is shown in Figure 4−27.

Figure 4−25. The Extension Word for Register Modes

15 12 11 10 9 8 7 6 5 4 3 0

0001 1 00 ZC # A/L 0 0 (n−1)/Rn

Table 4−11.Description of the Extension Word Bits for Register Mode

Bit Description

15:11 Extension word op-code. Op-codes 1800h to 1FFFh are extensionwords.

10:9 Reserved

ZC Zero carry bit.

0: The executed instruction uses the status of the carry bit C.

1: The executed instruction uses the carry bit as 0. The carry bit willbe defined by the result of the final operation after instruction execu-tion.

# Repetition bit.

0: The number of instruction repetitions is set by extension-word bits3:0.

1: The number of instructions repetitions is defined by the value of thefour LSBs of Rn. See description for bits 3:0.

A/L Data length extension bit. Together with the B/W-bits of the followingMSP430 instruction, the AL bit defines the used data length of theinstruction.

A/L B/W Comment

0 0 Reserved

0 1 20-bit address-word

1 0 16-bit word

1 1 8-bit byte

5:4 Reserved

3:0 Repetition Count.

# = 0: These four bits set the repetition count n. These bits containn - 1.

# = 1: These four bits define the CPU register whose bits 3:0 set thenumber of repetitions. Rn.3:0 contain n - 1.

Page 162: MSP430 - general.pdf

MSP430X Extended Instructions

4-46 16-Bit MSP430X CPU

Non-Register Mode Extension Word

The extension word for non-register modes is shown in Figure 4−26 anddescribed in Table 4−12. An example is shown in Figure 4−28.

Figure 4−26. The Extension Word for Non-Register Modes

15 12 11 10 7 6 5 4 3 0

0 0 0 1 1 Source bits 19:16 A/L 0 0 Destination bits 19:16

Table 4−12.Description of the Extension Word Bits for Non-Register Modes

Bit Description

15:11 Extension word op-code. Op-codes 1800h to 1FFFh are exten-sion words.

Source Bits19:16

The four MSBs of the 20-bit source. Depending on the sourceaddressing mode, these four MSBs may belong to an immedi-ate operand, an index or to an absolute address.

A/L Data length extension bit. Together with the B/W-bits of the fol-lowing MSP430 instruction, the AL bit defines the used datalength of the instruction.

A/L B/W Comment

0 0 Reserved

0 1 20 bit address-word

1 0 16 bit word

1 1 8 bit byte

5:4 Reserved

Destination Bits19:16

The four MSBs of the 20-bit destination. Depending on the des-tination addressing mode, these four MSBs may belong to anindex or to an absolute address.

Note: B/W and A/L Bit Settings for SWPBX and SXTX

The B/W and A/L bit settings for SWPBX and SXTX are:

A/L B/W0 0 SWPBX.A, SXTX.A0 1 n.a.1 0 SWPB.W, SXTX.W1 1 n.a.

Page 163: MSP430 - general.pdf

MSP430X Extended Instructions

4-4716-Bit MSP430X CPU

Figure 4−27. Example for an Extended Register/Register Instruction

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

0 0 0 1 1 00 ZC # A/L Rsvd (n−1)/Rn

Op-code Rsrc Ad B/W As Rdst

XORX.A R9,R8

0 0 0 1 1 0 0 0 0 0 0

14(XOR) 9 0 1 0 8(R8)

XORX instruction Source R9

0: Use Carry

1: Repetition countin bits 3:0

01: Address word

Destinationregister mode

Sourceregister mode

Destination R8

Figure 4−28. Example for an Extended Immediate/Indexed Instruction

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

0 0 0 1 1 Source 19:16 A/L Rsvd Destination 19:16

Op-code Rsrc Ad B/W As Rdst

XORX.A #12345h, 45678h(R15)

0 0 0 1 1 1 0 0 4

14 (XOR) 0 (PC) 1 1 3 15 (R15)

18xx extension word 12345h

@PC+X(Rn)

Source 15:0

Destination 15:0

Immediate operand LSBs: 2345h

Index destination LSBs: 5678h

01: Addressword

Page 164: MSP430 - general.pdf

MSP430X Extended Instructions

4-48 16-Bit MSP430X CPU

Extended Double Operand (Format-I) Instructions

All twelve double-operand instructions have extended versions as listed inTable 4−13.

Table 4−13.Extended Double Operand Instructions

Status Bits

Mnemonic Operands Operation V N Z C

MOVX(.B,.A) src,dst src → dst − − − −

ADDX(.B,.A) src,dst src + dst → dst * * * *

ADDCX(.B,.A) src,dst src + dst + C → dst * * * *

SUBX(.B,.A) src,dst dst + .not.src + 1 → dst * * * *

SUBCX(.B,.A) src,dst dst + .not.src + C → dst * * * *

CMPX(.B,.A) src,dst dst − src * * * *

DADDX(.B,.A) src,dst src + dst + C → dst (decimal) * * * *

BITX(.B,.A) src,dst src .and. dst 0 * * Z

BICX(.B,.A) src,dst .not.src .and. dst → dst − − − −

BISX(.B,.A) src,dst src .or. dst → dst − − − −

XORX(.B,.A) src,dst src .xor. dst → dst * * * Z

ANDX(.B,.A) src,dst src .and. dst → dst 0 * * Z

* The status bit is affected

− The status bit is not affected

0 The status bit is cleared

1 The status bit is set

Page 165: MSP430 - general.pdf

MSP430X Extended Instructions

4-4916-Bit MSP430X CPU

The four possible addressing combinations for the extension word for format-Iinstructions are shown in Figure 4−29.

Figure 4−29. Extended Format-I Instruction Formats

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

0 0 0 1 1 0 A/L n−1/Rn

Op-code B/W dst

0 ZC # 0 0

src 0 0 0

0 0 0 1 1 A/L

Op-code B/W dst

src.15:0

src.19:16 0 0

src Ad As

0 0 0 1 1 A/L

Op-code B/W dst

dst.15:0

0 0

src Ad

0 0 0 1 1 A/L dst.19:16

Op-code B/W dst

src.15:0

0 0

src Ad

0 0 0 0

dst.19:160 0 0 0

As

src.19:16

As

dst.15:0

If the 20-bit address of a source or destination operand is located in memory,not in a CPU register, then two words are used for this operand as shown inFigure 4−30.

Figure 4−30. 20-Bit Addresses in Memory

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

0 19:16

Operand LSBs 15:0

0.......................................................................................

Address

Address+2

Page 166: MSP430 - general.pdf

MSP430X Extended Instructions

4-50 16-Bit MSP430X CPU

Extended Single Operand (Format-II) Instructions

Extended MSP430X Format-II instructions are listed in Table 4−14.

Table 4−14.Extended Single-Operand Instructions

Operation Status Bits

Mnemonic Operands n V N Z C

CALLA dst Call indirect to subroutine (20-bit address) − − − −

POPM.A #n,Rdst Pop n 20-bit registers from stack 1 − 16 − − − −

POPM.W #n,Rdst Pop n 16-bit registers from stack 1 − 16 − − − −

PUSHM.A #n,Rsrc Push n 20-bit registers to stack 1 − 16 − − − −

PUSHM.W #n,Rsrc Push n 16-bit registers to stack 1 − 16

PUSHX(.B,.A) src Push 8/16/20-bit source to stack − − − −

RRCM(.A) #n,Rdst Rotate right Rdst n bits through carry (16-/20-bit register)

1 − 4 0 * * *

RRUM(.A) #n,Rdst Rotate right Rdst n bits unsigned(16-/20-bit register)

1 − 4 0 * * *

RRAM(.A) #n,Rdst Rotate right Rdst n bits arithmetically(16-/20-bit register)

1 − 4 * * * *

RLAM(.A) #n,Rdst Rotate left Rdst n bits arithmetically (16-/20-bit register)

1 − 4 * * * *

RRCX(.B,.A) dst Rotate right dst through carry (8-/16-/20-bit data)

1 0 * * *

RRUX(.B,.A) dst Rotate right dst unsigned (8-/16-/20-bit ) 1 0 * * *

RRAX(.B,.A) dst Rotate right dst arithmetically 1 * * * *

SWPBX(.A) dst Exchange low byte with high byte 1 − − − −

SXTX(.A) Rdst Bit7 → bit8 … bit19 1 0 * * *

SXTX(.A) dst Bit7 → bit8 … MSB 1 0 * * *

Page 167: MSP430 - general.pdf

MSP430X Extended Instructions

4-5116-Bit MSP430X CPU

The three possible addressing mode combinations for format-II instructionsare shown in Figure 4−31.

Figure 4−31. Extended Format-II Instruction Format

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

0 0 0 1 1 0 A/L n−1/Rn

Op-code B/W dst

0 ZC # 0 0

0 0 0 1 1 A/L

Op-code B/W dst

0 0

0 0 0 1 1 A/L

Op-code B/W dst

dst.15:0

0 0

0 0 0 0

dst.19:160 0 0 0

0 0 0 0

0 0

1 x

x 1

Extended Format II Instruction Format Exceptions

Exceptions for the Format II instruction formats are shown below.

Figure 4−32. PUSHM/POPM Instruction Format

15 8 7 4 3 0

Op-code n−1 Rdst − n+1

Figure 4−33. RRCM, RRAM, RRUM and RLAM Instruction Format

15 12 11 10 9 4 3 0

C n−1 Op-code Rdst

Page 168: MSP430 - general.pdf

MSP430X Extended Instructions

4-52 16-Bit MSP430X CPU

Figure 4−34. BRA Instruction Format

15 12 11 8 7 4 3 0

C Rsrc Op-code 0(PC)

C #imm/abs19:16 Op-code 0(PC)

C Rsrc Op-code 0(PC)

#imm15:0 / &abs15:0

index15:0

Figure 4−35. CALLA Instruction Format

15 4 3 0

Op-code Rdst

Op-code Rdst

Op-code #imm/ix/abs19:16

index15:0

#imm15:0 / index15:0 / &abs15:0

Page 169: MSP430 - general.pdf

MSP430X Extended Instructions

4-5316-Bit MSP430X CPU

Extended Emulated Instructions

The extended instructions together with the constant generator form theextended Emulated instructions. Table 4−15 lists the Emulated instructions.

Table 4−15.Extended Emulated Instructions

Instruction Explanation Emulation

ADCX(.B,.A) dst Add carry to dst ADDCX(.B,.A) #0,dst

BRA dst Branch indirect dst MOVA dst,PC

RETA Return from subroutine MOVA @SP+,PC

CLRA Rdst Clear Rdst MOV #0,Rdst

CLRX(.B,.A) dst Clear dst MOVX(.B,.A) #0,dst

DADCX(.B,.A) dst Add carry to dst decimally DADDX(.B,.A) #0,dst

DECX(.B,.A) dst Decrement dst by 1 SUBX(.B,.A) #1,dst

DECDA Rdst Decrement dst by 2 SUBA #2,Rdst

DECDX(.B,.A) dst Decrement dst by 2 SUBX(.B,.A) #2,dst

INCX(.B,.A) dst Increment dst by 1 ADDX(.B,.A) #1,dst

INCDA Rdst Increment Rdst by 2 ADDA #2,Rdst

INCDX(.B,.A) dst Increment dst by 2 ADDX(.B,.A) #2,dst

INVX(.B,.A) dst Invert dst XORX(.B,.A) #-1,dst

RLAX(.B,.A) dst Shift left dst arithmetically ADDX(.B,.A) dst,dst

RLCX(.B,.A) dst Shift left dst logically through carry ADDCX(.B,.A) dst,dst

SBCX(.B,.A) dst Subtract carry from dst SUBCX(.B,.A) #0,dst

TSTA Rdst Test Rdst (compare with 0) CMPA #0,Rdst

TSTX(.B,.A) dst Test dst (compare with 0) CMPX(.B,.A) #0,dst

POPX dst Pop to dst MOVX(.B, .A) @SP+,dst

Page 170: MSP430 - general.pdf

MSP430X Extended Instructions

4-54 16-Bit MSP430X CPU

MSP430X Address Instructions

MSP430X address instructions are instructions that support 20-bit operandsbut have restricted addressing modes. The addressing modes are restrictedto the register mode and the Immediate mode, except for the MOVA instructionas listed in Table 4−16. Restricting the addressing modes removes the needfor the additional extension-word op-code improving code density andexecution time. Address instructions should be used any time an MSP430Xinstruction is needed with the corresponding restricted addressing mode.

Table 4−16.Address Instructions, Operate on 20-bit Registers Data

Status Bits

Mnemonic Operands Operation V N Z C

ADDA Rsrc,Rdst

#imm20,Rdst

Add source to destinationregister

* * * *

MOVA Rsrc,Rdst

#imm20,Rdst

z16(Rsrc),Rdst

EDE,Rdst

&abs20,Rdst

@Rsrc,Rdst

@Rsrc+,Rdst

Rsrc,z16(Rdst)

Rsrc,&abs20

Move source to destination - - - -

CMPA Rsrc,Rdst

#imm20,Rdst

Compare source to destina-tion register

* * * *

SUBA Rsrc,Rdst

#imm20,Rdst

Subtract source from des-tination register

* * * *

Page 171: MSP430 - general.pdf

MSP430X Extended Instructions

4-5516-Bit MSP430X CPU

MSP430X Instruction Execution

The number of CPU clock cycles required for an MSP430X instructiondepends on the instruction format and the addressing modes used — not theinstruction itself. The number of clock cycles refers to MCLK.

MSP430X Format-II (Single-Operand) Instruction Cycles and Lengths

Table 4−17 lists the length and the CPU cycles for all addressing modes of theMSP430X extended single-operand instructions.

Table 4−17.MSP430X Format II Instruction Cycles and Length

Execution Cycles/Length of Instruction (Words)

Instruction Rn @Rn @Rn+ #N X(Rn) EDE &EDE

RRAM n/1 − − − − − −

RRCM n/1 − − − − − −

RRUM n/1 − − − − − −

RLAM n/1 − − − − − −

PUSHM 2+n/1 − − − − − −

PUSHM.A 2+2n/1 − − − − − −

POPM 2+n/1 − − − − − −

POPM.A 2+2n/1 − − − − − −

CALLA 4/1 5/1 5/1 4/2 6†/2 6/2 6/2

RRAX(.B) 1+n/2 4/2 4/2 − 5/3 5/3 5/3

RRAX.A 1+n/2 6/2 6/2 − 7/3 7/3 7/3

RRCX(.B) 1+n/2 4/2 4/2 − 5/3 5/3 5/3

RRCX.A 1+n/2 6/2 6/2 − 7/3 7/3 7/3

PUSHX(.B) 4/2 4/2 4/2 4/3 5†/3 5/3 5/3

PUSHX.A 5/2 6/2 6/2 6/3 7†/3 7/3 7/3

POPX(.B) 3/2 − − − 5/3 5/3 5/3

POPX.A 4/2 − − − 7/3 7/3 7/3† Add one cycle when Rn = SP.

MSP430X Format-I (Double-Operand) Instruction Cycles and Lengths

Table 4−18 lists the length and CPU cycles for all addressing modes of theMSP430X extended format-I instructions.

Page 172: MSP430 - general.pdf

MSP430X Extended Instructions

4-56 16-Bit MSP430X CPU

Table 4−18.MSP430X Format-I Instruction Cycles and Length

Addressing ModeNo. ofCycles

Length ofInstruction

Source Destination .B/.W .A .B/.W/.A Examples

Rn Rm† 2 2 2 BITX.B R5,R8

PC 3 3 2 ADDX R9,PC

X(Rm) 5‡ 7§ 3 ANDX.A R5,4(R6)

EDE 5‡ 7§ 3 XORX R8,EDE

&EDE 5‡ 7§ 3 BITX.W R5,&EDE

@Rn Rm 3 4 2 BITX @R5,R8

PC 3 4 2 ADDX @R9,PC

X(Rm) 6‡ 9§ 3 ANDX.A @R5,4(R6)

EDE 6‡ 9§ 3 XORX @R8,EDE

&EDE 6‡ 9§ 3 BITX.B @R5,&EDE

@Rn+ Rm 3 4 2 BITX @R5+,R8

PC 4 5 2 ADDX.A @R9+,PC

X(Rm) 6‡ 9§ 3 ANDX @R5+,4(R6)

EDE 6‡ 9§ 3 XORX.B @R8+,EDE

&EDE 6‡ 9§ 3 BITX @R5+,&EDE

#N Rm 3 3 3 BITX #20,R8

PC¶ 4 4 3 ADDX.A #FE000h,PC

X(Rm) 6‡ 8§ 4 ANDX #1234,4(R6)

EDE 6‡ 8§ 4 XORX #A5A5h,EDE

&EDE 6‡ 8§ 4 BITX.B #12,&EDE

X(Rn) Rm 4 5 3 BITX 2(R5),R8

PC¶ 5 6 3 SUBX.A 2(R6),PC

X(Rm) 7‡ 10§ 4 ANDX 4(R7),4(R6)

EDE 7‡ 10§ 4 XORX.B 2(R6),EDE

&EDE 7‡ 10§ 4 BITX 8(SP),&EDE

EDE Rm 4 5 3 BITX.B EDE,R8

PC¶ 5 6 3 ADDX.A EDE,PC

X(Rm) 7‡ 10§ 4 ANDX EDE,4(R6)

EDE 7‡ 10§ 4 ANDX EDE,TONI

&TONI 7‡ 10§ 4 BITX EDE,&TONI

&EDE Rm 4 5 3 BITX &EDE,R8

PC¶ 5 6 3 ADDX.A &EDE,PC

X(Rm) 7‡ 10§ 4 ANDX.B &EDE,4(R6)

TONI 7‡ 10§ 4 XORX &EDE,TONI

&TONI 7‡ 10§ 4 BITX &EDE,&TONI† Repeat instructions require n+1 cycles where n is the number of times the instruction is

executed.‡ Reduce the cycle count by one for MOV, BIT, and CMP instructions.§ Reduce the cycle count by two for MOV, BIT, and CMP instructions.¶ Reduce the cycle count by one for MOV, ADD, and SUB instructions.

Page 173: MSP430 - general.pdf

MSP430X Extended Instructions

4-5716-Bit MSP430X CPU

MSP430X Address Instruction Cycles and Lengths

Table 4−19 lists the length and the CPU cycles for all addressing modes of theMSP430X address instructions.

Table 4−19.Address Instruction Cycles and Length

Addressing Mode

ExecutionTime MCLK

Cycles

Length ofInstruction

(Words)

Source DestinationMOVABRA

CMPAADDASUBA MOVA

CMPAADDASUBA Example

Rn Rn 1 1 1 1 CMPA R5,R8

PC 2 2 1 1 SUBA R9,PC

x(Rm) 4 - 2 - MOVA R5,4(R6)

EDE 4 - 2 - MOVA R8,EDE

&EDE 4 - 2 - MOVA R5,&EDE

@Rn Rm 3 - 1 - MOVA @R5,R8

PC 3 - 1 - MOVA @R9,PC

@Rn+ Rm 3 - 1 - MOVA @R5+,R8

PC 3 - 1 - MOVA @R9+,PC

#N Rm 2 3 2 2 CMPA #20,R8

PC 3 3 2 2 SUBA #FE000h,PC

x(Rn) Rm 4 - 2 - MOVA 2(R5),R8

PC 4 - 2 - MOVA 2(R6),PC

EDE Rm 4 - 2 - MOVA EDE,R8

PC 4 - 2 - MOVA EDE,PC

&EDE Rm 4 - 2 - MOVA &EDE,R8

PC 4 - 2 - MOVA &EDE,PC

Page 174: MSP430 - general.pdf

Instruction Set Description

4-58 16-Bit MSP430X CPU

4.6 Instruction Set Description

The instruction map of the MSP430X shows all available instructions:

0xxx10xx14xx18xx1Cxx20xx24xx28xx2Cxx30xx34xx38xx3Cxx4xxx5xxx6xxx7xxx8xxx9xxxAxxxBxxxCxxxDxxxExxxFxxx

RRC RRC.B SWPB RRA RRA.B SXT PUSH PUSH.B CALL RETI

000 040 080 0C0 100 140 180 1C0 200 240 280 2C0 300 340 380 3C0

JNE/JNZJEQ/JZJNCJCJNJGEJLJMPMOV, MOV.BADD, ADD.BADDC, ADDC.BSUBC, SUBC.BSUB, SUB.BCMP, CMP.BDADD, DADD.BBIT, BIT.BBIC, BIC.BBIS, BIS.BXOR, XOR.BAND, AND.B

MOVA, CMPA, ADDA, SUBA, RRCM, RRAM, RLAM, RRUM

CALLAPUSHM.A, POPM.A, PUSHM.W, POPM.W

Extension Word For Format I and Format II Instructions

Page 175: MSP430 - general.pdf

Instruction Set Description

4-5916-Bit MSP430X CPU

4.6.1 Extended Instruction Binary Descriptions

Detailed MSP430X instruction binary descriptions are shown below.

InstructionGroup

src ordata.19:16

InstructionIdentifier dst

Instruction 15 12 11 8 7 4 3 0

MOVA 0 0 0 0 src 0 0 0 0 dst MOVA @Rsrc,Rdst

0 0 0 0 src 0 0 0 1 dst MOVA @Rsrc+,Rdst

0 0 0 0 &abs.19:16 0 0 1 0 dst MOVA &abs20,Rdst

&abs.15:0

0 0 0 0 src 0 0 1 1 dst MOVA x(Rsrc),Rdst

x.15:0 ±15-bit index x

0 0 0 0 src 0 1 1 0 &abs.19:16 MOVA Rsrc,&abs20

&abs.15:0

0 0 0 0 src 0 1 1 1 dst MOVA Rsrc,X(Rdst)

x.15:0 ±15-bit index x

0 0 0 0 imm.19:16 1 0 0 0 dst MOVA #imm20,Rdst

imm.15:0

CMPA 0 0 0 0 imm.19:16 1 0 0 1 dst CMPA #imm20,Rdst

imm.15:0

ADDA 0 0 0 0 imm.19:16 1 0 1 0 dst ADDA #imm20,Rdst

imm.15:0

SUBA 0 0 0 0 imm.19:16 1 0 1 1 dst SUBA #imm20,Rdst

imm.15:0

MOVA 0 0 0 0 src 1 1 0 0 dst MOVA Rsrc,Rdst

CMPA 0 0 0 0 src 1 1 0 1 dst CMPA Rsrc,Rdst

ADDA 0 0 0 0 src 1 1 1 0 dst ADDA Rsrc,Rdst

SUBA 0 0 0 0 src 1 1 1 1 dst SUBA Rsrc,Rdst

InstructionGroup

Bitloc.

Inst.ID

InstructionIdentifier dst

Instruction 15 12 11 10 9 8 7 4 3 0

RRCM.A 0 0 0 0 n−1 0 0 0 1 0 0 dst RRCM.A #n,Rdst

RRAM.A 0 0 0 0 n−1 0 1 0 1 0 0 dst RRAM.A #n,Rdst

RLAM.A 0 0 0 0 n−1 1 0 0 1 0 0 dst RLAM.A #n,Rdst

RRUM.A 0 0 0 0 n−1 1 1 0 1 0 0 dst RRUM.A #n,Rdst

RRCM.W 0 0 0 0 n−1 0 0 0 1 0 1 dst RRCM.W #n,Rdst

RRAM.W 0 0 0 0 n−1 0 1 0 1 0 1 dst RRAM.W #n,Rdst

RLAM.W 0 0 0 0 n−1 1 0 0 1 0 1 dst RLAM.W #n,Rdst

RRUM.W 0 0 0 0 n−1 1 1 0 1 0 1 dst RRUM.W #n,Rdst

Page 176: MSP430 - general.pdf

Instruction Set Description

4-60 16-Bit MSP430X CPU

Instruction Identifier dst

Instruction 15 12 11 8 7 6 5 4 3 0

RETI 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0

CALLA 0 0 0 1 0 0 1 1 0 1 0 0 dst CALLA Rdst

0 0 0 1 0 0 1 1 0 1 0 1 dst CALLA x(Rdst)

x.15:0

0 0 0 1 0 0 1 1 0 1 1 0 dst CALLA @Rdst

0 0 0 1 0 0 1 1 0 1 1 1 dst CALLA @Rdst+

0 0 0 1 0 0 1 1 1 0 0 0 &abs.19:16 CALLA &abs20

&abs.15:0

0 0 0 1 0 0 1 1 1 0 0 1 x.19:16 CALLA EDE

x.15:0 CALLA x(PC)

0 0 0 1 0 0 1 1 1 0 1 1 imm.19:16 CALLA #imm20

imm.15:0

Reserved 0 0 0 1 0 0 1 1 1 0 1 0 x x x x

Reserved 0 0 0 1 0 0 1 1 1 1 x x x x x x

PUSHM.A 0 0 0 1 0 1 0 0 n−1 dst PUSHM.A #n,Rdst

PUSHM.W 0 0 0 1 0 1 0 1 n−1 dst PUSHM.W #n,Rdst

POPM.A 0 0 0 1 0 1 1 0 n−1 dst−n+1 POPM.A #n,Rdst

POPM.W 0 0 0 1 0 1 1 1 n−1 dst−n+1 POPM.W #n,Rdst

Page 177: MSP430 - general.pdf

MSP430 Instructions

4-6116-Bit MSP430X CPU

4.6.2 MSP430 Instructions

The MSP430 instructions are listed and described on the following pages.

Page 178: MSP430 - general.pdf

MSP430 Instructions

4-62 16-Bit MSP430X CPU

* ADC[.W] Add carry to destination* ADC.B Add carry to destination

Syntax ADC dst or ADC.W dstADC.B dst

Operation dst + C −> dst

Emulation ADDC #0,dstADDC.B #0,dst

Description The carry bit (C) is added to the destination operand. The previous contentsof the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if dst was incremented from 0FFFFh to 0000, reset otherwise

Set if dst was incremented from 0FFh to 00, reset otherwiseV: Set if an arithmetic overflow occurs, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit counter pointed to by R13 is added to a 32-bit counter pointed toby R12.ADD @R13,0(R12) ; Add LSDsADC 2(R12) ; Add carry to MSD

Example The 8-bit counter pointed to by R13 is added to a 16-bit counter pointed to byR12.ADD.B @R13,0(R12) ; Add LSDsADC.B 1(R12) ; Add carry to MSD

Page 179: MSP430 - general.pdf

MSP430 Instructions

4-6316-Bit MSP430X CPU

ADD[.W] Add source word to destination wordADD.B Add source byte to destination byte

Syntax ADD src,dst or ADD.W src,dstADD.B src,dst

Operation src + dst → dst

Description The source operand is added to the destination operand. The previous contentof the destination is lost.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Ten is added to the 16-bit counter CNTR located in lower 64 K.

ADD.W #10,&CNTR ; Add 10 to 16-bit counter

Example A table word pointed to by R5 (20-bit address in R5) is added to R6. The jumpto label TONI is performed on a carry.

ADD.W @R5,R6 ; Add table word to R6. R6.19:16 = 0

JC TONI ; Jump if carry

... ; No carry

Example A table byte pointed to by R5 (20-bit address) is added to R6. The jump to labelTONI is performed if no carry occurs. The table pointer is auto-incremented by1. R6.19:8 = 0

ADD.B @R5+,R6 ; Add byte to R6. R5 + 1. R6: 000xxh

JNC TONI ; Jump if no carry

... ; Carry occurred

Page 180: MSP430 - general.pdf

MSP430 Instructions

4-64 16-Bit MSP430X CPU

ADDC[.W] Add source word and carry to destination wordADDC.B Add source byte and carry to destination byte

Syntax ADDC src,dst or ADDC.W src,dstADDC.B src,dst

Operation src + dst + C → dst

Description The source operand and the carry bit C are added to the destination operand.The previous content of the destination is lost.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Constant value 15 and the carry of the previous instruction are added to the16-bit counter CNTR located in lower 64 K.

ADDC.W #15,&CNTR ; Add 15 + C to 16-bit CNTR

Example A table word pointed to by R5 (20-bit address) and the carry C are added to R6.The jump to label TONI is performed on a carry. R6.19:16 = 0

ADDC.W @R5,R6 ; Add table word + C to R6

JC TONI ; Jump if carry

... ; No carry

Example A table byte pointed to by R5 (20-bit address) and the carry bit C are added toR6. The jump to label TONI is performed if no carry occurs. The table pointer isauto-incremented by 1. R6.19:8 = 0

ADDC.B @R5+,R6 ; Add table byte + C to R6. R5 + 1

JNC TONI ; Jump if no carry

... ; Carry occurred

Page 181: MSP430 - general.pdf

MSP430 Instructions

4-6516-Bit MSP430X CPU

AND[.W] Logical AND of source word with destination wordAND.B Logical AND of source byte with destination byte

Syntax AND src,dst or AND.W src,dstAND.B src,dst

Operation src .and. dst → dst

Description The source operand and the destination operand are logically ANDed. Theresult is placed into the destination. The source operand is not affected.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if the result is not zero, reset otherwise. C = (.not. Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits set in R5 (16-bit data) are used as a mask (AA55h) for the word TOMlocated in the lower 64 K. If the result is zero, a branch is taken to label TONI.R5.19:16 = 0

MOV #AA55h,R5 ; Load 16-bit mask to R5

AND R5,&TOM ; TOM .and. R5 -> TOM

JZ TONI ; Jump if result 0

... ; Result > 0

or shorter:

AND #AA55h,&TOM ; TOM .and. AA55h -> TOM

JZ TONI ; Jump if result 0

Example A table byte pointed to by R5 (20-bit address) is logically ANDed with R6. R5 isincremented by 1 after the fetching of the byte. R6.19:8 = 0

AND.B @R5+,R6 ; AND table byte with R6. R5 + 1

Page 182: MSP430 - general.pdf

MSP430 Instructions

4-66 16-Bit MSP430X CPU

BIC[.W] Clear bits set in source word in destination wordBIC.B Clear bits set in source byte in destination byte

Syntax BIC src,dst or BIC.W src,dstBIC.B src,dst

Operation (.not. src) .and. dst → dst

Description The inverted source operand and the destination operand are logicallyANDed. The result is placed into the destination. The source operand is notaffected.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits 15:14 of R5 (16-bit data) are cleared. R5.19:16 = 0

BIC #0C000h,R5 ; Clear R5.19:14 bits

Example A table word pointed to by R5 (20-bit address) is used to clear bits in R7.R7.19:16 = 0

BIC.W @R5,R7 ; Clear bits in R7 set in @R5

Example A table byte pointed to by R5 (20-bit address) is used to clear bits in Port1.

BIC.B @R5,&P1OUT ; Clear I/O port P1 bits set in @R5

Page 183: MSP430 - general.pdf

MSP430 Instructions

4-6716-Bit MSP430X CPU

BIS[.W] Set bits set in source word in destination wordBIS.B Set bits set in source byte in destination byte

Syntax BIS src,dst or BIS.W src,dstBIS.B src,dst

Operation src .or. dst → dst

Description The source operand and the destination operand are logically ORed. Theresult is placed into the destination. The source operand is not affected.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Bits 15 and 13 of R5 (16-bit data) are set to one. R5.19:16 = 0

BIS #A000h,R5 ; Set R5 bits

Example A table word pointed to by R5 (20-bit address) is used to set bits in R7.R7.19:16 = 0

BIS.W @R5,R7 ; Set bits in R7

Example A table byte pointed to by R5 (20-bit address) is used to set bits in Port1. R5 isincremented by 1 afterwards.

BIS.B @R5+,&P1OUT ; Set I/O port P1 bits. R5 + 1

Page 184: MSP430 - general.pdf

MSP430 Instructions

4-68 16-Bit MSP430X CPU

BIT[.W] Test bits set in source word in destination wordBIT.B Test bits set in source byte in destination byte

Syntax BIT src,dst or BIT.W src,dstBIT.B src,dst

Operation src .and. dst

Description The source operand and the destination operand are logically ANDed. Theresult affects only the status bits in SR.

Register Mode: the register bits Rdst.19:16 (.W) resp. Rdst. 19:8 (.B) are notcleared!

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if the result is not zero, reset otherwise. C = (.not. Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Test if one − or both − of bits 15 and 14 of R5 (16-bit data) is set. Jump to labelTONI if this is the case. R5.19:16 are not affected.

BIT #C000h,R5 ; Test R5.15:14 bits

JNZ TONI ; At least one bit is set in R5

... ; Both bits are reset

Example A table word pointed to by R5 (20-bit address) is used to test bits in R7. Jump tolabel TONI if at least one bit is set. R7.19:16 are not affected.

BIT.W @R5,R7 ; Test bits in R7

JC TONI ; At least one bit is set

... ; Both are reset

Example A table byte pointed to by R5 (20-bit address) is used to test bits in outputPort1. Jump to label TONI if no bit is set. The next table byte is addressed.

BIT.B @R5+,&P1OUT ; Test I/O port P1 bits. R5 + 1

JNC TONI ; No corresponding bit is set

... ; At least one bit is set

Page 185: MSP430 - general.pdf

MSP430 Instructions

4-6916-Bit MSP430X CPU

* BR, BRANCH Branch to destination in lower 64K address space

Syntax BR dst

Operation dst −> PC

Emulation MOV dst,PC

Description An unconditional branch is taken to an address anywhere in the lower 64Kaddress space. All source addressing modes can be used. The branchinstruction is a word instruction.

Status Bits Status bits are not affected.

Example Examples for all addressing modes are given.

BR #EXEC ;Branch to label EXEC or direct branch (e.g. #0A4h); Core instruction MOV @PC+,PC

BR EXEC ; Branch to the address contained in EXEC; Core instruction MOV X(PC),PC; Indirect address

BR &EXEC ; Branch to the address contained in absolute; address EXEC; Core instruction MOV X(0),PC; Indirect address

BR R5 ; Branch to the address contained in R5; Core instruction MOV R5,PC; Indirect R5

BR @R5 ; Branch to the address contained in the word; pointed to by R5.; Core instruction MOV @R5,PC; Indirect, indirect R5

BR @R5+ ; Branch to the address contained in the word pointed; to by R5 and increment pointer in R5 afterwards.; The next time—S/W flow uses R5 pointer—it can; alter program execution due to access to; next address in a table pointed to by R5; Core instruction MOV @R5,PC; Indirect, indirect R5 with autoincrement

BR X(R5) ; Branch to the address contained in the address; pointed to by R5 + X (e.g. table with address; starting at X). X can be an address or a label; Core instruction MOV X(R5),PC; Indirect, indirect R5 + X

Page 186: MSP430 - general.pdf

MSP430 Instructions

4-70 16-Bit MSP430X CPU

CALL Call a Subroutine in lower 64 K

Syntax CALL dst

Operation dst → tmp 16-bit dst is evaluated and storedSP − 2 → SPPC → @SP updated PC with return address to TOStmp → PC saved 16-bit dst to PC

Description A subroutine call is made from an address in the lower 64 K to a subroutineaddress in the lower 64 K. All seven source addressing modes can be used.The call instruction is a word instruction. The return is made with the RETinstruction.

Status Bits Not affectedPC.19:16: Cleared (address in lower 64 K)

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Examples Examples for all addressing modes are given.

Immediate Mode: Call a subroutine at label EXEC (lower 64 K) or call directlyto address.

CALL #EXEC ; Start address EXEC

CALL #0AA04h ; Start address 0AA04h

Symbolic Mode: Call a subroutine at the 16-bit address contained in addressEXEC. EXEC is located at the address (PC + X) where X is within PC±32 K.

CALL EXEC ; Start address at @EXEC. z16(PC)

Absolute Mode: Call a subroutine at the 16-bit address contained in absoluteaddress EXEC in the lower 64 K.

CALL &EXEC ; Start address at @EXEC

Register Mode: Call a subroutine at the 16-bit address contained in registerR5.15:0.

CALL R5 ; Start address at R5

Indirect Mode: Call a subroutine at the 16-bit address contained in the wordpointed to by register R5 (20-bit address).

CALL @R5 ; Start address at @R5

Page 187: MSP430 - general.pdf

MSP430 Instructions

4-7116-Bit MSP430X CPU

* CLR[.W] Clear destination* CLR.B Clear destination

Syntax CLR dst or CLR.W dstCLR.B dst

Operation 0 −> dst

Emulation MOV #0,dstMOV.B #0,dst

Description The destination operand is cleared.

Status Bits Status bits are not affected.

Example RAM word TONI is cleared.

CLR TONI ; 0 −> TONI

Example Register R5 is cleared.

CLR R5

Example RAM byte TONI is cleared.

CLR.B TONI ; 0 −> TONI

Page 188: MSP430 - general.pdf

MSP430 Instructions

4-72 16-Bit MSP430X CPU

* CLRC Clear carry bit

Syntax CLRC

Operation 0 −> C

Emulation BIC #1,SR

Description The carry bit (C) is cleared. The clear carry instruction is a word instruction.

Status Bits N: Not affectedZ: Not affectedC: ClearedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit decimal counter pointed to by R13 is added to a 32-bit counterpointed to by R12.

CLRC ; C=0: defines startDADD @R13,0(R12) ; add 16-bit counter to low word of 32-bit counterDADC 2(R12) ; add carry to high word of 32-bit counter

Page 189: MSP430 - general.pdf

MSP430 Instructions

4-7316-Bit MSP430X CPU

* CLRN Clear negative bit

Syntax CLRN

Operation 0 → Nor(.NOT.src .AND. dst −> dst)

Emulation BIC #4,SR

Description The constant 04h is inverted (0FFFBh) and is logically ANDed with thedestination operand. The result is placed into the destination. The clearnegative bit instruction is a word instruction.

Status Bits N: Reset to 0Z: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The Negative bit in the status register is cleared. This avoids special treatmentwith negative numbers of the subroutine called.

CLRNCALL SUBR............

SUBR JN SUBRET ; If input is negative: do nothing and return..................

SUBRET RET

Page 190: MSP430 - general.pdf

MSP430 Instructions

4-74 16-Bit MSP430X CPU

* CLRZ Clear zero bit

Syntax CLRZ

Operation 0 → Zor(.NOT.src .AND. dst −> dst)

Emulation BIC #2,SR

Description The constant 02h is inverted (0FFFDh) and logically ANDed with thedestination operand. The result is placed into the destination. The clear zerobit instruction is a word instruction.

Status Bits N: Not affectedZ: Reset to 0C: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The zero bit in the status register is cleared.

CLRZ

Indirect, Auto-Increment mode: Call a subroutine at the 16-bit addresscontained in the word pointed to by register R5 (20-bit address) and incrementthe 16-bit address in R5 afterwards by 2. The next time the software uses R5as a pointer, it can alter the program execution due to access to the next wordaddress in the table pointed to by R5.

CALL @R5+ ; Start address at @R5. R5 + 2

Indexed mode: Call a subroutine at the 16-bit address contained in the 20-bitaddress pointed to by register (R5 + X), e.g. a table with addresses starting atX. The address is within the lower 64 KB. X is within ±32 KB.

CALL X(R5) ; Start address at @(R5+X). z16(R5)

Page 191: MSP430 - general.pdf

MSP430 Instructions

4-7516-Bit MSP430X CPU

CMP[.W] Compare source word and destination wordCMP.B Compare source byte and destination byte

Syntax CMP src,dst or CMP.W src,dstCMP.B src,dst

Operation (.not.src) + 1 + dst or dst − src

Description The source operand is subtracted from the destination operand. This is madeby adding the 1’s complement of the source + 1 to the destination. The resultaffects only the status bits in SR.

Register Mode: the register bits Rdst.19:16 (.W) resp. Rdst. 19:8 (.B) are notcleared.

Status Bits N: Set if result is negative (src > dst), reset if positive (src = dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Compare word EDE with a 16-bit constant 1800h. Jump to label TONI ifEDE equals the constant. The address of EDE is within PC ± 32 K.

CMP #01800h,EDE ; Compare word EDE with 1800h

JEQ TONI ; EDE contains 1800h

... ; Not equal

Example A table word pointed to by (R5 + 10) is compared with R7. Jump to label TONI ifR7 contains a lower, signed 16-bit number. R7.19:16 is not cleared. Theaddress of the source operand is a 20-bit address in full memory range.

CMP.W 10(R5),R7 ; Compare two signed numbers

JL TONI ; R7 < 10(R5)

... ; R7 >= 10(R5)

Example A table byte pointed to by R5 (20-bit address) is compared to the value inoutput Port1. Jump to label TONI if values are equal. The next table byte isaddressed.

CMP.B @R5+,&P1OUT ; Compare P1 bits with table. R5 + 1

JEQ TONI ; Equal contents

... ; Not equal

Page 192: MSP430 - general.pdf

MSP430 Instructions

4-76 16-Bit MSP430X CPU

* DADC[.W] Add carry decimally to destination* DADC.B Add carry decimally to destination

Syntax DADC dst or DADC.W src,dstDADC.B dst

Operation dst + C −> dst (decimally)

Emulation DADD #0,dstDADD.B #0,dst

Description The carry bit (C) is added decimally to the destination.

Status Bits N: Set if MSB is 1Z: Set if dst is 0, reset otherwiseC: Set if destination increments from 9999 to 0000, reset otherwise

Set if destination increments from 99 to 00, reset otherwiseV: Undefined

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The four-digit decimal number contained in R5 is added to an eight-digit deci-mal number pointed to by R8.

CLRC ; Reset carry; next instruction’s start condition is defined

DADD R5,0(R8) ; Add LSDs + CDADC 2(R8) ; Add carry to MSD

Example The two-digit decimal number contained in R5 is added to a four-digit decimalnumber pointed to by R8.

CLRC ; Reset carry; next instruction’s start condition is defined

DADD.B R5,0(R8) ; Add LSDs + CDADC 1(R8) ; Add carry to MSDs

Page 193: MSP430 - general.pdf

MSP430 Instructions

4-7716-Bit MSP430X CPU

DADD[.W] Add source word and carry decimally to destination wordDADD.B Add source byte and carry decimally to destination byte

Syntax DADD src,dst or DADD.W src,dstDADD.B src,dst

Operation src + dst + C → dst (decimally)

Description The source operand and the destination operand are treated as two (.B) or four(.W) binary coded decimals (BCD) with positive signs. The source operandand the carry bit C are added decimally to the destination operand. The sourceoperand is not affected. The previous content of the destination is lost. Theresult is not defined for non-BCD numbers.

Status Bits N: Set if MSB of result is 1 (word > 7999h, byte > 79h), reset if MSB is 0.Z: Set if result is zero, reset otherwiseC: Set if the BCD result is too large (word > 9999h, byte > 99h), reset

otherwiseV: Undefined

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Decimal 10 is added to the 16-bit BCD counter DECCNTR.

DADD #10h,&DECCNTR ; Add 10 to 4-digit BCD counter

Example The eight-digit BCD number contained in 16-bit RAM addresses BCD andBCD+2 is added decimally to an eight-digit BCD number contained in R4 andR5 (BCD+2 and R5 contain the MSDs). The carry C is added, and cleared.

CLRC ; Clear carry

DADD.W &BCD,R4 ; Add LSDs. R4.19:16 = 0

DADD.W &BCD+2,R5 ; Add MSDs with carry. R5.19:16 = 0

JC OVERFLOW ; Result >9999,9999: go to error routine

... ; Result ok

Example The two-digit BCD number contained in word BCD (16-bit address) is addeddecimally to a two-digit BCD number contained in R4. The carry C is added,also. R4.19:8 = 0

CLRC ; Clear carry

DADD.B &BCD,R4 ; Add BCD to R4 decimally. R4: 0,00ddh

Page 194: MSP430 - general.pdf

MSP430 Instructions

4-78 16-Bit MSP430X CPU

* DEC[.W] Decrement destination* DEC.B Decrement destination

Syntax DEC dst or DEC.W dstDEC.B dst

Operation dst − 1 −> dst

Emulation SUB #1,dstEmulation SUB.B #1,dst

Description The destination operand is decremented by one. The original contents arelost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 1, reset otherwiseC: Reset if dst contained 0, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Set if initial value of destination was 08000h, otherwise reset.Set if initial value of destination was 080h, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R10 is decremented by 1

DEC R10 ; Decrement R10

; Move a block of 255 bytes from memory location starting with EDE to memory location starting with;TONI. Tables should not overlap: start of destination address TONI must not be within the range EDE; to EDE+0FEh;

MOV #EDE,R6MOV #255,R10

L$1 MOV.B @R6+,TONI−EDE−1(R6)DEC R10JNZ L$1

; Do not transfer tables using the routine above with the overlap shown in Figure 4−36.

Figure 4−36. Decrement Overlap

EDE

EDE+254

TONI

TONI+254

Page 195: MSP430 - general.pdf

MSP430 Instructions

4-7916-Bit MSP430X CPU

* DECD[.W] Double-decrement destination* DECD.B Double-decrement destination

Syntax DECD dst or DECD.W dstDECD.B dst

Operation dst − 2 −> dst

Emulation SUB #2,dstEmulation SUB.B #2,dst

Description The destination operand is decremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 2, reset otherwiseC: Reset if dst contained 0 or 1, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Set if initial value of destination was 08001 or 08000h, otherwise reset.Set if initial value of destination was 081 or 080h, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R10 is decremented by 2.

DECD R10 ; Decrement R10 by two

; Move a block of 255 words from memory location starting with EDE to memory location ; starting with TONI; Tables should not overlap: start of destination address TONI must not be within the; range EDE to EDE+0FEh;

MOV #EDE,R6MOV #510,R10

L$1 MOV @R6+,TONI−EDE−2(R6)DECD R10JNZ L$1

Example Memory at location LEO is decremented by two.

DECD.B LEO ; Decrement MEM(LEO)

Decrement status byte STATUS by two.

DECD.B STATUS

Page 196: MSP430 - general.pdf

MSP430 Instructions

4-80 16-Bit MSP430X CPU

* DINT Disable (general) interrupts

Syntax DINT

Operation 0 → GIEor(0FFF7h .AND. SR → SR / .NOT.src .AND. dst −> dst)

Emulation BIC #8,SR

Description All interrupts are disabled.The constant 08h is inverted and logically ANDed with the status register (SR).The result is placed into the SR.

Status Bits Status bits are not affected.

Mode Bits GIE is reset. OSCOFF and CPUOFF are not affected.

Example The general interrupt enable (GIE) bit in the status register is cleared to allowa nondisrupted move of a 32-bit counter. This ensures that the counter is notmodified during the move by any interrupt.

DINT ; All interrupt events using the GIE bit are disabledNOPMOV COUNTHI,R5 ; Copy counterMOV COUNTLO,R6EINT ; All interrupt events using the GIE bit are enabled

Note: Disable Interrupt

If any code sequence needs to be protected from interruption, the DINTshould be executed at least one instruction before the beginning of theuninterruptible sequence, or should be followed by a NOP instruction.

Page 197: MSP430 - general.pdf

MSP430 Instructions

4-8116-Bit MSP430X CPU

* EINT Enable (general) interrupts

Syntax EINT

Operation 1 → GIEor(0008h .OR. SR −> SR / .src .OR. dst −> dst)

Emulation BIS #8,SR

Description All interrupts are enabled.The constant #08h and the status register SR are logically ORed. The resultis placed into the SR.

Status Bits Status bits are not affected.

Mode Bits GIE is set. OSCOFF and CPUOFF are not affected.

Example The general interrupt enable (GIE) bit in the status register is set.

; Interrupt routine of ports P1.2 to P1.7; P1IN is the address of the register where all port bits are read. P1IFG is the address of; the register where all interrupt events are latched.;

PUSH.B &P1INBIC.B @SP,&P1IFG ; Reset only accepted flagsEINT ; Preset port 1 interrupt flags stored on stack

; other interrupts are allowedBIT #Mask,@SPJEQ MaskOK ; Flags are present identically to mask: jump......

MaskOK BIC #Mask,@SP......INCD SP ; Housekeeping: inverse to PUSH instruction

; at the start of interrupt subroutine. Corrects; the stack pointer.

RETI

Note: Enable Interrupt

The instruction following the enable interrupt instruction (EINT) is alwaysexecuted, even if an interrupt service request is pending when the interruptsare enable.

Page 198: MSP430 - general.pdf

MSP430 Instructions

4-82 16-Bit MSP430X CPU

* INC[.W] Increment destination* INC.B Increment destination

Syntax INC dst or INC.W dstINC.B dst

Operation dst + 1 −> dst

Emulation ADD #1,dst

Description The destination operand is incremented by one. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseC: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseV: Set if dst contained 07FFFh, reset otherwise

Set if dst contained 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The status byte, STATUS, of a process is incremented. When it is equal to 11,a branch to OVFL is taken.

INC.B STATUSCMP.B #11,STATUSJEQ OVFL

Page 199: MSP430 - general.pdf

MSP430 Instructions

4-8316-Bit MSP430X CPU

* INCD[.W] Double-increment destination* INCD.B Double-increment destination

Syntax INCD dst or INCD.W dstINCD.B dst

Operation dst + 2 −> dst

Emulation ADD #2,dstEmulation ADD.B #2,dst

Example The destination operand is incremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFEh, reset otherwise

Set if dst contained 0FEh, reset otherwiseC: Set if dst contained 0FFFEh or 0FFFFh, reset otherwise

Set if dst contained 0FEh or 0FFh, reset otherwiseV: Set if dst contained 07FFEh or 07FFFh, reset otherwise

Set if dst contained 07Eh or 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The item on the top of the stack (TOS) is removed without using a register.

.......PUSH R5 ; R5 is the result of a calculation, which is stored

; in the system stackINCD SP ; Remove TOS by double-increment from stack

; Do not use INCD.B, SP is a word-aligned; register

RET

Example The byte on the top of the stack is incremented by two.

INCD.B 0(SP) ; Byte on TOS is increment by two

Page 200: MSP430 - general.pdf

MSP430 Instructions

4-84 16-Bit MSP430X CPU

* INV[.W] Invert destination* INV.B Invert destination

Syntax INV dstINV.B dst

Operation .NOT.dst −> dst

Emulation XOR #0FFFFh,dstEmulation XOR.B #0FFh,dst

Description The destination operand is inverted. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFh, reset otherwise

Set if dst contained 0FFh, reset otherwiseC: Set if result is not zero, reset otherwise ( = .NOT. Zero)

Set if result is not zero, reset otherwise ( = .NOT. Zero)V: Set if initial destination operand was negative, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Content of R5 is negated (twos complement).MOV #00AEh,R5 ; R5 = 000AEhINV R5 ; Invert R5, R5 = 0FF51hINC R5 ; R5 is now negated, R5 = 0FF52h

Example Content of memory byte LEO is negated.

MOV.B #0AEh,LEO ; MEM(LEO) = 0AEhINV.B LEO ; Invert LEO, MEM(LEO) = 051hINC.B LEO ; MEM(LEO) is negated,MEM(LEO) = 052h

Page 201: MSP430 - general.pdf

MSP430 Instructions

4-8516-Bit MSP430X CPU

JC Jump if carryJHS Jump if Higher or Same (unsigned)

Syntax JC label

JHS label

Operation If C = 1: PC + (2 × Offset) → PCIf C = 0: execute the following instruction

Description The carry bit C in the status register is tested. If it is set, the signed 10-bit wordoffset contained in the instruction is multiplied by two, sign extended, andadded to the 20-bit program counter PC. This means a jump in the range -511to +512 words relative to the PC in the full memory range. If C is reset, theinstruction after the jump is executed.

JC is used for the test of the carry bit C

JHS is used for the comparison of unsigned numbers

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example The state of the port 1 pin P1IN.1 bit defines the program flow.

BIT.B #2,&P1IN ; Port 1, bit 1 set? Bit -> C

JC Label1 ; Yes, proceed at Label1

... ; No, continue

Example If R5 ≥ R6 (unsigned) the program continues at Label2

CMP R6,R5 ; Is R5 ≥ R6? Info to C

JHS Label2 ; Yes, C = 1

... ; No, R5 < R6. Continue

Example If R5 ≥ 12345h (unsigned operands) the program continues at Label2

CMPA #12345h,R5 ; Is R5 ≥ 12345h? Info to C

JHS Label2 ; Yes, 12344h < R5 <= F,FFFFh. C = 1

... ; No, R5 < 12345h. Continue

Page 202: MSP430 - general.pdf

MSP430 Instructions

4-86 16-Bit MSP430X CPU

JEQ,JZ Jump if equal,Jump if zero

Syntax JZ label

JEQ label

Operation If Z = 1: PC + (2 × Offset) → PCIf Z = 0: execute following instruction

Description The Zero bit Z in the status register is tested. If it is set, the signed 10-bit wordoffset contained in the instruction is multiplied by two, sign extended, andadded to the 20-bit program counter PC. This means a jump in the range -511to +512 words relative to the PC in the full memory range. If Z is reset, theinstruction after the jump is executed.

JZ is used for the test of the Zero bit Z

JEQ is used for the comparison of operands

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example The state of the P2IN.0 bit defines the program flow

BIT.B #1,&P2IN ; Port 2, bit 0 reset?

JZ Label1 ; Yes, proceed at Label1

... ; No, set, continue

Example If R5 = 15000h (20-bit data) the program continues at Label2

CMPA #15000h,R5 ; Is R5 = 15000h? Info to SR

JEQ Label2 ; Yes, R5 = 15000h. Z = 1

... ; No, R5 ≠ 15000h. Continue

Example R7 (20-bit counter) is incremented. If its content is zero, the program continuesat Label4.

ADDA #1,R7 ; Increment R7

JZ Label4 ; Zero reached: Go to Label4

... ; R7 ≠ 0. Continue here.

Page 203: MSP430 - general.pdf

MSP430 Instructions

4-8716-Bit MSP430X CPU

JGE Jump if Greater or Equal (signed)

Syntax JGE label

Operation If (N .xor. V) = 0: PC + (2 × Offset) → PCIf (N .xor. V) = 1: execute following instruction

Description The negative bit N and the overflow bit V in the status register are tested. If bothbits are set or both are reset, the signed 10-bit word offset contained in theinstruction is multiplied by two, sign extended, and added to the 20-bit programcounter PC. This means a jump in the range -511 to +512 words relative to thePC in full Memory range. If only one bit is set, the instruction after the jump isexecuted.

JGE is used for the comparison of signed operands: also for incorrect resultsdue to overflow, the decision made by the JGE instruction is correct.

Note: JGE emulates the non-implemented JP (jump if positive) instruction ifused after the instructions AND, BIT, RRA, SXTX and TST. These instructionsclear the V-bit.

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example If byte EDE (lower 64 K) contains positive data, go to Label1. Software can runin the full memory range.

TST.B &EDE ; Is EDE positive? V <- 0

JGE Label1 ; Yes, JGE emulates JP

... ; No, 80h <= EDE <= FFh

Example If the content of R6 is greater than or equal to the memory pointed to by R7, theprogram continues a Label5. Signed data. Data and program in full memoryrange.

CMP @R7,R6 ; Is R6 ≥ @R7?

JGE Label5 ; Yes, go to Label5

... ; No, continue here.

Example If R5 ≥ 12345h (signed operands) the program continues at Label2. Programin full memory range.

CMPA #12345h,R5 ; Is R5 ≥ 12345h?

JGE Label2 ; Yes, 12344h < R5 <= 7FFFFh.

... ; No, 80000h <= R5 < 12345h.

Page 204: MSP430 - general.pdf

MSP430 Instructions

4-88 16-Bit MSP430X CPU

JL Jump if Less (signed)

Syntax JL label

Operation If (N .xor. V) = 1: PC + (2 × Offset) → PCIf (N .xor. V) = 0: execute following instruction

Description The negative bit N and the overflow bit V in the status register are tested. If onlyone is set, the signed 10-bit word offset contained in the instruction is multipliedby two, sign extended, and added to the 20-bit program counter PC. Thismeans a jump in the range -511 to +512 words relative to the PC in full memoryrange. If both bits N and V are set or both are reset, the instruction after thejump is executed.

JL is used for the comparison of signed operands: also for incorrect results dueto overflow, the decision made by the JL instruction is correct.

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example If byte EDE contains a smaller, signed operand than byte TONI, continue atLabel1. The address EDE is within PC ± 32 K.

CMP.B &TONI,EDE ; Is EDE < TONI

JL Label1 ; Yes

... ; No, TONI <= EDE

Example If the signed content of R6 is less than the memory pointed to by R7 (20-bitaddress) the program continues at Label Label5. Data and program in fullmemory range.

CMP @R7,R6 ; Is R6 < @R7?

JL Label5 ; Yes, go to Label5

... ; No, continue here.

Example If R5 < 12345h (signed operands) the program continues at Label2. Data andprogram in full memory range.

CMPA #12345h,R5 ; Is R5 < 12345h?

JL Label2 ; Yes, 80000h =< R5 < 12345h.

... ; No, 12344h < R5 =< 7FFFFh.

Page 205: MSP430 - general.pdf

MSP430 Instructions

4-8916-Bit MSP430X CPU

JMP Jump unconditionally

Syntax JMP label

Operation PC + (2 × Offset) → PC

Description The signed 10-bit word offset contained in the instruction is multiplied by two,sign extended, and added to the 20-bit program counter PC. This means anunconditional jump in the range -511 to +512 words relative to the PC in the fullmemory. The JMP instruction may be used as a BR or BRA instruction within itslimited range relative to the program counter.

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example The byte STATUS is set to 10. Then a jump to label MAINLOOP is made. Datain lower 64 K, program in full memory range.

MOV.B #10,&STATUS ; Set STATUS to 10

JMP MAINLOOP ; Go to main loop

Example The interrupt vector TAIV of Timer_A3 is read and used for the program flow.Program in full memory range, but interrupt handlers always starts in lower64K.

ADD &TAIV,PC ; Add Timer_A interrupt vector to PC

RETI ; No Timer_A interrupt pending

JMP IHCCR1 ; Timer block 1 caused interrupt

JMP IHCCR2 ; Timer block 2 caused interrupt

RETI ; No legal interrupt, return

Page 206: MSP430 - general.pdf

MSP430 Instructions

4-90 16-Bit MSP430X CPU

JN Jump if Negative

Syntax JN label

Operation If N = 1: PC + (2 × Offset) → PCIf N = 0: execute following instruction

Description The negative bit N in the status register is tested. If it is set, the signed 10-bitword offset contained in the instruction is multiplied by two, sign extended, andadded to the 20-bit program counter PC. This means a jump in the range -511to +512 words relative to the PC in the full memory range. If N is reset, theinstruction after the jump is executed.

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example The byte COUNT is tested. If it is negative, program execution continues atLabel0. Data in lower 64 K, program in full memory range.

TST.B &COUNT ; Is byte COUNT negative?

JN Label0 ; Yes, proceed at Label0

... ; COUNT ≥ 0

Example R6 is subtracted from R5. If the result is negative, program continues atLabel2. Program in full memory range.

SUB R6,R5 ; R5 − R6 -> R5

JN Label2 ; R5 is negative: R6 > R5 (N = 1)

... ; R5 ≥ 0. Continue here.

Example R7 (20-bit counter) is decremented. If its content is below zero, the programcontinues at Label4. Program in full memory range.

SUBA #1,R7 ; Decrement R7

JN Label4 ; R7 < 0: Go to Label4

... ; R7 ≥ 0. Continue here.

Page 207: MSP430 - general.pdf

MSP430 Instructions

4-9116-Bit MSP430X CPU

JNC Jump if No carryJLO Jump if lower (unsigned)

Syntax JNC labelJLO label

Operation If C = 0: PC + (2 × Offset) → PCIf C = 1: execute following instruction

Description The carry bit C in the status register is tested. If it is reset, the signed 10-bitword offset contained in the instruction is multiplied by two, sign extended, andadded to the 20-bit program counter PC. This means a jump in the range -511to +512 words relative to the PC in the full memory range. If C is set, theinstruction after the jump is executed.

JNC is used for the test of the carry bit C

JLO is used for the comparison of unsigned numbers .

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example If byte EDE < 15 the program continues at Label2. Unsigned data. Data inlower 64 K, program in full memory range.

CMP.B #15,&EDE ; Is EDE < 15? Info to C

JLO Label2 ; Yes, EDE < 15. C = 0

... ; No, EDE ≥ 15. Continue

Example The word TONI is added to R5. If no carry occurs, continue at Label0. Theaddress of TONI is within PC ± 32 K.

ADD TONI,R5 ; TONI + R5 -> R5. Carry -> C

JNC Label0 ; No carry

... ; Carry = 1: continue here

Page 208: MSP430 - general.pdf

MSP430 Instructions

4-92 16-Bit MSP430X CPU

JNZ Jump if Not ZeroJNE Jump if Not Equal

Syntax JNZ labelJNE label

Operation If Z = 0: PC + (2 × Offset) → PCIf Z = 1: execute following instruction

Description The zero bit Z in the status register is tested. If it is reset, the signed 10-bit wordoffset contained in the instruction is multiplied by two, sign extended, andadded to the 20-bit program counter PC. This means a jump in the range -511to +512 words relative to the PC in the full memory range. If Z is set, theinstruction after the jump is executed.

JNZ is used for the test of the Zero bit Z

JNE is used for the comparison of operands

Status Bits Status bits are not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected

Example The byte STATUS is tested. If it is not zero, the program continues at Label3.The address of STATUS is within PC ± 32 K.

TST.B STATUS ; Is STATUS = 0?

JNZ Label3 ; No, proceed at Label3

... ; Yes, continue here

Example If word EDE ≠ 1500 the program continues at Label2. Data in lower 64 K,program in full memory range.

CMP #1500,&EDE ; Is EDE = 1500? Info to SR

JNE Label2 ; No, EDE ≠ 1500.

... ; Yes, R5 = 1500. Continue

Example R7 (20-bit counter) is decremented. If its content is not zero, the programcontinues at Label4. Program in full memory range.

SUBA #1,R7 ; Decrement R7

JNZ Label4 ; Zero not reached: Go to Label4

... ; Yes, R7 = 0. Continue here.

Page 209: MSP430 - general.pdf

MSP430 Instructions

4-9316-Bit MSP430X CPU

MOV[.W] Move source word to destination wordMOV.B Move source byte to destination byte

Syntax MOV src,dst or MOV.W src,dstMOV.B src,dst

Operation src → dst

Description The source operand is copied to the destination. The source operand is notaffected.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Move a 16-bit constant 1800h to absolute address-word EDE (lower 64 K).

MOV #01800h,&EDE ; Move 1800h to EDE

Example The contents of table EDE (word data, 16-bit addresses) are copied to tableTOM. The length of the tables is 030h words. Both tables reside in the lower64K.

MOV #EDE,R10 ; Prepare pointer (16-bit address)

Loop MOV @R10+,TOM-EDE-2(R10) ; R10 points to both tables. R10+2

CMP #EDE+60h,R10 ; End of table reached?

JLO Loop ; Not yet

... ; Copy completed

Example The contents of table EDE (byte data, 16-bit addresses) are copied to tableTOM. The length of the tables is 020h bytes. Both tables may reside in fullmemory range, but must be within R10 ±32 K.

MOVA #EDE,R10 ; Prepare pointer (20-bit)

MOV #20h,R9 ; Prepare counter

Loop MOV.B @R10+,TOM-EDE-1(R10) ; R10 points to both tables.; R10+1

DEC R9 ; Decrement counter

JNZ Loop ; Not yet done

... ; Copy completed

Page 210: MSP430 - general.pdf

MSP430 Instructions

4-94 16-Bit MSP430X CPU

* NOP No operation

Syntax NOP

Operation None

Emulation MOV #0, R3

Description No operation is performed. The instruction may be used for the elimination ofinstructions during the software check or for defined waiting times.

Status Bits Status bits are not affected.

Page 211: MSP430 - general.pdf

MSP430 Instructions

4-9516-Bit MSP430X CPU

* POP[.W] Pop word from stack to destination* POP.B Pop byte from stack to destination

Syntax POP dstPOP.B dst

Operation @SP −> tempSP + 2 −> SP temp −> dst

Emulation MOV @SP+,dst or MOV.W @SP+,dstEmulation MOV.B @SP+,dst

Description The stack location pointed to by the stack pointer (TOS) is moved to thedestination. The stack pointer is incremented by two afterwards.

Status Bits Status bits are not affected.

Example The contents of R7 and the status register are restored from the stack.

POP R7 ; Restore R7POP SR ; Restore status register

Example The contents of RAM byte LEO is restored from the stack.

POP.B LEO ; The low byte of the stack is moved to LEO.

Example The contents of R7 is restored from the stack.

POP.B R7 ; The low byte of the stack is moved to R7,; the high byte of R7 is 00h

Example The contents of the memory pointed to by R7 and the status register arerestored from the stack.

POP.B 0(R7) ; The low byte of the stack is moved to the; the byte which is pointed to by R7: Example: R7 = 203h; Mem(R7) = low byte of system stack: Example: R7 = 20Ah; Mem(R7) = low byte of system stack

POP SR ; Last word on stack moved to the SR

Note: The System Stack Pointer

The system stack pointer (SP) is always incremented by two, independentof the byte suffix.

Page 212: MSP430 - general.pdf

MSP430 Instructions

4-96 16-Bit MSP430X CPU

PUSH[.W] Save a word on the stackPUSH.B Save a byte on the stack

Syntax PUSH dst or PUSH.W dstPUSH.B dst

Operation SP − 2 → SPdst → @SP

Description The 20-bit stack pointer SP is decremented by two. The operand is then copiedto the RAM word addressed by the SP. A pushed byte is stored in the low byte,the high byte is not affected.

Status Bits Not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Save the two 16-bit registers R9 and R10 on the stack.

PUSH R9 ; Save R9 and R10 XXXXh

PUSH R10 ; YYYYh

Example Save the two bytes EDE and TONI on the stack. The addresses EDE and TONIare within PC ± 32 K.

PUSH.B EDE ; Save EDE xxXXh

PUSH.B TONI ; Save TONI xxYYh

Page 213: MSP430 - general.pdf

MSP430 Instructions

4-9716-Bit MSP430X CPU

RET Return from subroutine

Syntax RET

Operation @SP → PC.15:0 Saved PC to PC.15:0. PC.19:16 ← 0SP + 2 → SP

Description The 16-bit return address (lower 64 K), pushed onto the stack by a CALLinstruction is restored to the PC. The program continues at the addressfollowing the subroutine call. The four MSBs of the program counter PC.19:16are cleared.

Status Bits Not affectedPC.19:16: Cleared

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Call a subroutine SUBR in the lower 64 K and return to the address in the lower64K after the CALL

CALL #SUBR ; Call subroutine starting at SUBR

... ; Return by RET to here

SUBR PUSH R14 ; Save R14 (16 bit data)

... ; Subroutine code

POP R14 ; Restore R14

RET ; Return to lower 64 K

Figure 4−37. The Stack After a RET Instruction

Item n

PCReturn

Item n

Stack before RET Stack after RET

SP

SP

instruction instruction

Page 214: MSP430 - general.pdf

MSP430 Instructions

4-98 16-Bit MSP430X CPU

RETI Return from interrupt

Syntax RETI

Operation @SP → SR.15:0 Restore saved status register SR with PC.19:16SP + 2 → SP@SP → PC.15:0 Restore saved program counter PC.15:0SP + 2 → SP House keeping

Description The status register is restored to the value at the beginning of the interruptservice routine. This includes the four MSBs of the program counter PC.19:16.The stack pointer is incremented by two afterwards.

The 20-bit PC is restored from PC.19:16 (from same stack location as thestatus bits) and PC.15:0. The 20-bit program counter is restored to the valueat the beginning of the interrupt service routine. The program continues at theaddress following the last executed instruction when the interrupt was granted.The stack pointer is incremented by two afterwards.

Status Bits N: restored from stackZ: restored from stackC: restored from stackV: restored from stack

Mode Bits OSCOFF, CPUOFF, and GIE are restored from stack

Example Interrupt handler in the lower 64 K. A 20-bit return address is stored on thestack.

INTRPT PUSHM.A #2,R14 ; Save R14 and R13 (20-bit data)

... ; Interrupt handler code

POPM.A #2,R14 ; Restore R13 and R14 (20-bit data)

RETI ; Return to 20-bit address in full memory range

Page 215: MSP430 - general.pdf

MSP430 Instructions

4-9916-Bit MSP430X CPU

* RLA[.W] Rotate left arithmetically* RLA.B Rotate left arithmetically

Syntax RLA dst or RLA.W dstRLA.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− 0

Emulation ADD dst,dstADD.B dst,dst

Description The destination operand is shifted left one position as shown in Figure 4−38.The MSB is shifted into the carry bit (C) and the LSB is filled with 0. The RLAinstruction acts as a signed multiplication by 2.

An overflow occurs if dst ≥ 04000h and dst < 0C000h before operation isperformed: the result has changed sign.

Figure 4−38. Destination Operand—Arithmetic Shift Left

15 0

7 0

C

Byte

Word

0

An overflow occurs if dst ≥ 040h and dst < 0C0h before the operation isperformed: the result has changed sign.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs:

the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R7 is multiplied by 2.

RLA R7 ; Shift left R7 (× 2)

Example The low byte of R7 is multiplied by 4.

RLA.B R7 ; Shift left low byte of R7 (× 2)RLA.B R7 ; Shift left low byte of R7 (× 4)

Note: RLA Substitution

The assembler does not recognize the instruction:

RLA @R5+, RLA.B @R5+, or RLA(.B) @R5

It must be substituted by:

ADD @R5+,−2(R5) ADD.B @R5+,−1(R5) or ADD(.B) @R5

Page 216: MSP430 - general.pdf

MSP430 Instructions

4-100 16-Bit MSP430X CPU

* RLC[.W] Rotate left through carry* RLC.B Rotate left through carry

Syntax RLC dst or RLC.W dstRLC.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− C

Emulation ADDC dst,dst

Description The destination operand is shifted left one position as shown in Figure 4−39.The carry bit (C) is shifted into the LSB and the MSB is shifted into the carrybit (C).

Figure 4−39. Destination Operand—Carry Left Shift

15 0

7 0

C

Byte

Word

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs

the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is shifted left one position.

RLC R5 ; (R5 x 2) + C −> R5

Example The input P1IN.1 information is shifted into the LSB of R5.

BIT.B #2,&P1IN ; Information −> CarryRLC R5 ; Carry=P0in.1 −> LSB of R5

Example The MEM(LEO) content is shifted left one position.

RLC.B LEO ; Mem(LEO) x 2 + C −> Mem(LEO)

Note: RLC and RLC.B Substitution

The assembler does not recognize the instruction:

RLC @R5+, RLC.B @R5+, or RLC(.B) @R5

It must be substituted by:

ADDC @R5+,−2(R5) ADDC.B @R5+,−1(R5) or ADDC(.B) @R5

Page 217: MSP430 - general.pdf

MSP430 Instructions

4-10116-Bit MSP430X CPU

RRA[.W] Rotate Right Arithmetically destination wordRRA.B Rotate Right Arithmetically destination byte

Syntax RRA.B dst or RRA.W dst

Operation MSB → MSB → MSB-1 . →... LSB+1 → LSB → C

Description The destination operand is shifted right arithmetically by one bit position asshown in Figure 4−40. The MSB retains its value (sign). RRA operates equal toa signed division by 2. The MSB is retained and shifted into the MSB-1. TheLSB+1 is shifted into the LSB. The previous LSB is shifted into the carry bit C.

Status Bits N: Set if result is negative (MSB = 1), reset otherwise (MSB = 0)Z: Set if result is zero, reset otherwiseC: Loaded from the LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The signed 16-bit number in R5 is shifted arithmetically right one position.

RRA R5 ; R5/2 -> R5

Example The signed RAM byte EDE is shifted arithmetically right one position.

RRA.B EDE ; EDE/2 -> EDE

Figure 4−40. Rotate Right Arithmetically RRA.B and RRA.W

C

19 0

MSB0 0 0 0 0 0 0

715

0 0 0 0 0 LSB

C

19 0

MSB0 0 0 0

15

LSB

Page 218: MSP430 - general.pdf

MSP430 Instructions

4-102 16-Bit MSP430X CPU

RRC[.W] Rotate Right through carry destination wordRRC.B Rotate Right through carry destination byte

Syntax RRC dst or RRC.W dstRRC.B dst

Operation C → MSB → MSB-1 → ... LSB+1 → LSB → C

Description The destination operand is shifted right by one bit position as shown inFigure 4−41. The carry bit C is shifted into the MSB and the LSB is shifted intothe carry bit C.

Status Bits N: Set if result is negative (MSB = 1), reset otherwise (MSB = 0)Z: Set if result is zero, reset otherwiseC: Loaded from the LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM word EDE is shifted right one bit position. The MSB is loaded with 1.

SETC ; Prepare carry for MSB

RRC EDE ; EDE = EDE » 1 + 8000h

Figure 4−41. Rotate Right through Carry RRC.B and RRC.W

C

19 0

MSB0 0 0 0 0 0 0

715

0 0 0 0 0 LSB

C

19 0

MSB0 0 0 0

15

LSB

Page 219: MSP430 - general.pdf

MSP430 Instructions

4-10316-Bit MSP430X CPU

* SBC[.W] Subtract source and borrow/.NOT. carry from destination* SBC.B Subtract source and borrow/.NOT. carry from destination

Syntax SBC dst or SBC.W dstSBC.B dst

Operation dst + 0FFFFh + C −> dstdst + 0FFh + C −> dst

Emulation SUBC #0,dstSUBC.B #0,dst

Description The carry bit (C) is added to the destination operand minus one. The previouscontents of the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwise.

Set to 1 if no borrow, reset if borrow.V: Set if an arithmetic overflow occurs, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 16-bit counter pointed to by R13 is subtracted from a 32-bit counterpointed to by R12.

SUB @R13,0(R12) ; Subtract LSDsSBC 2(R12) ; Subtract carry from MSD

Example The 8-bit counter pointed to by R13 is subtracted from a 16-bit counter pointedto by R12.

SUB.B @R13,0(R12) ; Subtract LSDsSBC.B 1(R12) ; Subtract carry from MSD

Note: Borrow Implementation.

The borrow is treated as a .NOT. carry : Borrow Carry bit Yes 0 No 1

Page 220: MSP430 - general.pdf

MSP430 Instructions

4-104 16-Bit MSP430X CPU

* SETC Set carry bit

Syntax SETC

Operation 1 −> C

Emulation BIS #1,SR

Description The carry bit (C) is set.

Status Bits N: Not affectedZ: Not affectedC: SetV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Emulation of the decimal subtraction:Subtract R5 from R6 decimallyAssume that R5 = 03987h and R6 = 04137h

DSUB ADD #06666h,R5 ; Move content R5 from 0−9 to 6−0Fh; R5 = 03987h + 06666h = 09FEDh

INV R5 ; Invert this (result back to 0−9); R5 = .NOT. R5 = 06012h

SETC ; Prepare carry = 1DADD R5,R6 ; Emulate subtraction by addition of:

; (010000h − R5 − 1); R6 = R6 + R5 + 1; R6 = 0150h

Page 221: MSP430 - general.pdf

MSP430 Instructions

4-10516-Bit MSP430X CPU

* SETN Set negative bit

Syntax SETN

Operation 1 −> N

Emulation BIS #4,SR

Description The negative bit (N) is set.

Status Bits N: SetZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 222: MSP430 - general.pdf

MSP430 Instructions

4-106 16-Bit MSP430X CPU

* SETZ Set zero bit

Syntax SETZ

Operation 1 −> Z

Emulation BIS #2,SR

Description The zero bit (Z) is set.

Status Bits N: Not affectedZ: SetC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 223: MSP430 - general.pdf

MSP430 Instructions

4-10716-Bit MSP430X CPU

SUB[.W] Subtract source word from destination wordSUB.B Subtract source byte from destination byte

Syntax SUB src,dst or SUB.W src,dstSUB.B src,dst

Operation (.not.src) + 1 + dst → dst or dst − src → dst

Description The source operand is subtracted from the destination operand. This is madeby adding the 1’s complement of the source + 1 to the destination. The sourceoperand is not affected, the result is written to the destination operand.

Status Bits N: Set if result is negative (src > dst), reset if positive (src <= dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example A 16-bit constant 7654h is subtracted from RAM word EDE.

SUB #7654h,&EDE ; Subtract 7654h from EDE

Example A table word pointed to by R5 (20-bit address) is subtracted from R7.Afterwards, if R7 contains zero, jump to label TONI. R5 is thenauto-incremented by 2. R7.19:16 = 0.

SUB @R5+,R7 ; Subtract table number from R7. R5 + 2

JZ TONI ; R7 = @R5 (before subtraction)

... ; R7 <> @R5 (before subtraction)

Example Byte CNT is subtracted from byte R12 points to. The address of CNT is withinPC ± 32 K. The address R12 points to is in full memory range.

SUB.B CNT,0(R12) ; Subtract CNT from @R12

Page 224: MSP430 - general.pdf

MSP430 Instructions

4-108 16-Bit MSP430X CPU

SUBC[.W] Subtract source word with carry from destination wordSUBC.B Subtract source byte with carry from destination byte

Syntax SUBC src,dst or SUBC.W src,dstSUBC.B src,dst

Operation (.not.src) + C + dst → dst or dst − (src − 1) + C → dst

Description The source operand is subtracted from the destination operand. This is doneby adding the 1’s complement of the source + carry to the destination. Thesource operand is not affected, the result is written to the destination operand.Used for 32, 48, and 64-bit operands.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example A 16-bit constant 7654h is subtracted from R5 with the carry from the previousinstruction. R5.19:16 = 0

SUBC.W #7654h,R5 ; Subtract 7654h + C from R5

Example A 48-bit number (3 words) pointed to by R5 (20-bit address) is subtracted froma 48-bit counter in RAM, pointed to by R7. R5 points to the next 48-bit numberafterwards. The address R7 points to is in full memory range.

SUB @R5+,0(R7) ; Subtract LSBs. R5 + 2

SUBC @R5+,2(R7) ; Subtract MIDs with C. R5 + 2

SUBC @R5+,4(R7) ; Subtract MSBs with C. R5 + 2

Example Byte CNT is subtracted from the byte, R12 points to. The carry of the previousinstruction is used. The address of CNT is in lower 64 K.

SUBC.B &CNT,0(R12) ; Subtract byte CNT from @R12

Page 225: MSP430 - general.pdf

MSP430 Instructions

4-10916-Bit MSP430X CPU

SWPB Swap bytes

Syntax SWPB dst

Operation dst.15:8 ⇔ dst.7:0

Description The high and the low byte of the operand are exchanged. PC.19:16 bits arecleared in register mode.

Status Bits Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Exchange the bytes of RAM word EDE (lower 64 K).

MOV #1234h,&EDE ; 1234h -> EDE

SWPB &EDE ; 3412h -> EDE

Figure 4−42. Swap Bytes in Memory

15 8 7 0

15 8 7 0

Low Byte

Low ByteHigh Byte

High Byte

Before SWPB

After SWPB

Figure 4−43. Swap Bytes in a Register

15 8 7 0

15 8 7 0

Low Byte

Low ByteHigh Byte

High Byte

Before SWPB

After SWPB

0

x

0...

19

19

16

16

Page 226: MSP430 - general.pdf

MSP430 Instructions

4-110 16-Bit MSP430X CPU

SXT Extend sign

Syntax SXT dst

Operation dst.7 → dst.15:8, dst.7 → dst.19:8 (Register Mode)

Description Register Mode: the sign of the low byte of the operand is extended into the bitsRdst.19:8

Rdst.7 = 0: Rdst.19:8 = 000h afterwards.

Rdst.7 = 1: Rdst.19:8 = FFFh afterwards.

Other Modes: the sign of the low byte of the operand is extended into the highbyte.

dst.7 = 0: high byte = 00h afterwards.

dst.7 = 1: high byte = FFh afterwards.

Status Bits N: Set if result is negative, reset otherwiseZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (C = .not.Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The signed 8-bit data in EDE (lower 64 K) is sign extended and added to the16-bit signed data in R7.

MOV.B &EDE,R5 ; EDE -> R5. 00XXh

SXT R5 ; Sign extend low byte to R5.19:8

ADD R5,R7 ; Add signed 16-bit values

Example The signed 8-bit data in EDE (PC ±32 K) is sign extended and added to the20-bit data in R7.

MOV.B EDE,R5 ; EDE -> R5. 00XXh

SXT R5 ; Sign extend low byte to R5.19:8

ADDA R5,R7 ; Add signed 20-bit values

Page 227: MSP430 - general.pdf

MSP430 Instructions

4-11116-Bit MSP430X CPU

* TST[.W] Test destination* TST.B Test destination

Syntax TST dst or TST.W dstTST.B dst

Operation dst + 0FFFFh + 1dst + 0FFh + 1

Emulation CMP #0,dstCMP.B #0,dst

Description The destination operand is compared with zero. The status bits are set accord-ing to the result. The destination is not affected.

Status Bits N: Set if destination is negative, reset if positiveZ: Set if destination contains zero, reset otherwiseC: SetV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R7 is tested. If it is negative, continue at R7NEG; if it is positive but not zero,continue at R7POS.

TST R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zero

R7POS ...... ; R7 is positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO ...... ; R7 is zero

Example The low byte of R7 is tested. If it is negative, continue at R7NEG; if it is positivebut not zero, continue at R7POS.

TST.B R7 ; Test low byte of R7JN R7NEG ; Low byte of R7 is negativeJZ R7ZERO ; Low byte of R7 is zero

R7POS ...... ; Low byte of R7 is positive but not zeroR7NEG ..... ; Low byte of R7 is negativeR7ZERO ...... ; Low byte of R7 is zero

Page 228: MSP430 - general.pdf

MSP430 Instructions

4-112 16-Bit MSP430X CPU

XOR[.W] Exclusive OR source word with destination wordXOR.B Exclusive OR source byte with destination byte

Syntax XOR dst or XOR.W dstXOR.B dst

Operation src .xor. dst → dst

Description The source and destination operands are exclusively ORed. The result isplaced into the destination. The source operand is not affected. The previouscontent of the destination is lost.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (C = .not. Z)V: Set if both operands are negative before execution, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Toggle bits in word CNTR (16-bit data) with information (bit = 1) inaddress-word TONI. Both operands are located in lower 64 K.

XOR &TONI,&CNTR ; Toggle bits in CNTR

Example A table word pointed to by R5 (20-bit address) is used to toggle bits in R6.R6.19:16 = 0.

XOR @R5,R6 ; Toggle bits in R6

Example Reset to zero those bits in the low byte of R7 that are different from the bits inbyte EDE. R7.19:8 = 0. The address of EDE is within PC ± 32 K.

XOR.B EDE,R7 ; Set different bits to 1 in R7.

INV.B R7 ; Invert low byte of R7, high byte is 0h

Page 229: MSP430 - general.pdf

Extended Instructions

4-11316-Bit MSP430X CPU

4.6.3 Extended Instructions

The extended MSP430X instructions give the MSP430X CPU full access to its20-bit address space. Some MSP430X instructions require an additional wordof op-code called the extension word. All addresses, indexes, and immediatenumbers have 20-bit values, when preceded by the extension word. TheMSP430X extended instructions are listed and described in the followingpages. For MSP430X instructions that do not require the extension word, it isnoted in the instruction description.

Page 230: MSP430 - general.pdf

Extended Instructions

4-114 16-Bit MSP430X CPU

* ADCX.A Add carry to destination address-word* ADCX.[W] Add carry to destination word* ADCX.B Add carry to destination byte

Syntax ADCX.A dstADCX dst or ADCX.W dstADCX.B dst

Operation dst + C −> dst

Emulation ADDCX.A #0,dstADDCX #0,dstADDCX.B #0,dst

Description The carry bit (C) is added to the destination operand. The previous contentsof the destination are lost.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 40-bit counter, pointed to by R12 and R13, is incremented.

INCX.A @R12 ; Increment lower 20 bitsADCX.A @R13 ; Add carry to upper 20 bits

Page 231: MSP430 - general.pdf

Extended Instructions

4-11516-Bit MSP430X CPU

ADDX.A Add source address-word to destination address-wordADDX[.W] Add source word to destination wordADDX.B Add source byte to destination byte

Syntax ADDX.A src,dstADDX src,dst or ADDX.W src,dstADDX.B src,dst

Operation src + dst → dst

Description The source operand is added to the destination operand. The previouscontents of the destination are lost. Both operands can be located in the fulladdress space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Ten is added to the 20-bit pointer CNTR located in two words CNTR (LSBs)and CNTR+2 (MSBs).

ADDX.A #10,CNTR ; Add 10 to 20-bit pointer

Example A table word (16-bit) pointed to by R5 (20-bit address) is added to R6. The jumpto label TONI is performed on a carry.

ADDX.W @R5,R6 ; Add table word to R6

JC TONI ; Jump if carry

... ; No carry

Example A table byte pointed to by R5 (20-bit address) is added to R6. The jump to labelTONI is performed if no carry occurs. The table pointer is auto-incrementedby 1.

ADDX.B @R5+,R6 ; Add table byte to R6. R5 + 1. R6: 000xxh

JNC TONI ; Jump if no carry

... ; Carry occurred

Note: Use ADDA for the following two cases for better code density andexecution.ADDX.A Rsrc,Rdst orADDX.A #imm20,Rdst

Page 232: MSP430 - general.pdf

Extended Instructions

4-116 16-Bit MSP430X CPU

ADDCX.A Add source address-word and carry to destination address-wordADDCX[.W] Add source word and carry to destination wordADDCX.B Add source byte and carry to destination byte

Syntax ADDCX.A src,dstADDCX src,dst or ADDCX.W src,dstADDCX.B src,dst

Operation src + dst + C → dst

Description The source operand and the carry bit C are added to the destination operand.The previous contents of the destination are lost. Both operands may belocated in the full address space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Constant 15 and the carry of the previous instruction are added to the 20-bitcounter CNTR located in two words.

ADDCX.A #15,&CNTR ; Add 15 + C to 20-bit CNTR

Example A table word pointed to by R5 (20-bit address) and the carry C are added to R6.The jump to label TONI is performed on a carry.

ADDCX.W @R5,R6 ; Add table word + C to R6

JC TONI ; Jump if carry

... ; No carry

Example A table byte pointed to by R5 (20-bit address) and the carry bit C are added toR6. The jump to label TONI is performed if no carry occurs. The table pointer isauto-incremented by 1.

ADDCX.B @R5+,R6 ; Add table byte + C to R6. R5 + 1

JNC TONI ; Jump if no carry

... ; Carry occurred

Page 233: MSP430 - general.pdf

Extended Instructions

4-11716-Bit MSP430X CPU

ANDX.A Logical AND of source address-word with destination address-wordANDX[.W] Logical AND of source word with destination wordANDX.B Logical AND of source byte with destination byte

Syntax ANDX.A src,dstANDX src,dst or ANDX.W src,dstANDX.B src,dst

Operation src .and. dst → dst

Description The source operand and the destination operand are logically ANDed. Theresult is placed into the destination. The source operand is not affected. Bothoperands may be located in the full address space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if the result is not zero, reset otherwise. C = (.not. Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits set in R5 (20-bit data) are used as a mask (AAA55h) for theaddress-word TOM located in two words. If the result is zero, a branch is takento label TONI.

MOVA #AAA55h,R5 ; Load 20-bit mask to R5

ANDX.A R5,TOM ; TOM .and. R5 -> TOM

JZ TONI ; Jump if result 0

... ; Result > 0

or shorter:

ANDX.A #AAA55h,TOM ; TOM .and. AAA55h -> TOM

JZ TONI ; Jump if result 0

Example A table byte pointed to by R5 (20-bit address) is logically ANDed with R6.R6.19:8 = 0. The table pointer is auto-incremented by 1.

ANDX.B @R5+,R6 ; AND table byte with R6. R5 + 1

Page 234: MSP430 - general.pdf

Extended Instructions

4-118 16-Bit MSP430X CPU

BICX.A Clear bits set in source address-word in destination address-wordBICX[.W] Clear bits set in source word in destination wordBICX.B Clear bits set in source byte in destination byte

Syntax BICX.A src,dstBICX src,dst or BICX.W src,dstBICX.B src,dst

Operation (.not. src) .and. dst → dst

Description The inverted source operand and the destination operand are logicallyANDed. The result is placed into the destination. The source operand is notaffected. Both operands may be located in the full address space.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The bits 19:15 of R5 (20-bit data) are cleared.

BICX.A #0F8000h,R5 ; Clear R5.19:15 bits

Example A table word pointed to by R5 (20-bit address) is used to clear bits in R7.R7.19:16 = 0

BICX.W @R5,R7 ; Clear bits in R7

Example A table byte pointed to by R5 (20-bit address) is used to clear bits in outputPort1.

BICX.B @R5,&P1OUT ; Clear I/O port P1 bits

Page 235: MSP430 - general.pdf

Extended Instructions

4-11916-Bit MSP430X CPU

BISX.A Set bits set in source address-word in destination address-wordBISX[.W] Set bits set in source word in destination wordBISX.B Set bits set in source byte in destination byte

Syntax BISX.A src,dstBISX src,dst or BISX.W src,dstBISX.B src,dst

Operation src .or. dst → dst

Description The source operand and the destination operand are logically ORed. Theresult is placed into the destination. The source operand is not affected. Bothoperands may be located in the full address space.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Bits 16 and 15 of R5 (20-bit data) are set to one.

BISX.A #018000h,R5 ; Set R5.16:15 bits

Example A table word pointed to by R5 (20-bit address) is used to set bits in R7.

BISX.W @R5,R7 ; Set bits in R7

Example A table byte pointed to by R5 (20-bit address) is used to set bits in output Port1.

BISX.B @R5,&P1OUT ; Set I/O port P1 bits

Page 236: MSP430 - general.pdf

Extended Instructions

4-120 16-Bit MSP430X CPU

BITX.A Test bits set in source address-word in destination address-wordBITX[.W] Test bits set in source word in destination wordBITX.B Test bits set in source byte in destination byte

Syntax BITX.A src,dstBITX src,dst or BITX.W src,dstBITX.B src,dst

Operation src .and. dst

Description The source operand and the destination operand are logically ANDed. Theresult affects only the status bits. Both operands may be located in the fulladdress space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if the result is not zero, reset otherwise. C = (.not. Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Test if bit 16 or 15 of R5 (20-bit data) is set. Jump to label TONI if so.

BITX.A #018000h,R5 ; Test R5.16:15 bits

JNZ TONI ; At least one bit is set

... ; Both are reset

Example A table word pointed to by R5 (20-bit address) is used to test bits in R7. Jump tolabel TONI if at least one bit is set.

BITX.W @R5,R7 ; Test bits in R7: C = .not.Z

JC TONI ; At least one is set

... ; Both are reset

Example A table byte pointed to by R5 (20-bit address) is used to test bits in input Port1.Jump to label TONI if no bit is set. The next table byte is addressed.

BITX.B @R5+,&P1IN ; Test input P1 bits. R5 + 1

JNC TONI ; No corresponding input bit is set

... ; At least one bit is set

Page 237: MSP430 - general.pdf

Extended Instructions

4-12116-Bit MSP430X CPU

* CLRX.A Clear destination address-word* CLRX.[W] Clear destination word* CLRX.B Clear destination byte

Syntax CLRX.A dstCLRX dst or CLRX.W dstCLRX.B dst

Operation 0 −> dst

Emulation MOVX.A #0,dstMOVX #0,dstMOVX.B #0,dst

Description The destination operand is cleared.

Status Bits Status bits are not affected.

Example RAM address-word TONI is cleared.

CLRX.A TONI ; 0 −> TONI

Page 238: MSP430 - general.pdf

Extended Instructions

4-122 16-Bit MSP430X CPU

CMPX.A Compare source address-word and destination address-wordCMPX[.W] Compare source word and destination wordCMPX.B Compare source byte and destination byte

Syntax CMPX.A src,dstCMPX src,dst or CMPX.W src,dstCMPX.B src,dst

Operation (.not. src) + 1 + dst or dst − src

Description The source operand is subtracted from the destination operand by adding the1’s complement of the source + 1 to the destination. The result affects only thestatus bits. Both operands may be located in the full address space.

Status Bits N: Set if result is negative (src > dst), reset if positive (src <= dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive

destination operand delivers a negative result, or if the subtraction ofa positive source operand from a negative destination operand deliversa positive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Compare EDE with a 20-bit constant 18000h. Jump to label TONI if EDEequals the constant.

CMPX.A #018000h,EDE ; Compare EDE with 18000h

JEQ TONI ; EDE contains 18000h

... ; Not equal

Example A table word pointed to by R5 (20-bit address) is compared with R7. Jump tolabel TONI if R7 contains a lower, signed, 16-bit number.

CMPX.W @R5,R7 ; Compare two signed numbers

JL TONI ; R7 < @R5

... ; R7 >= @R5

Example A table byte pointed to by R5 (20-bit address) is compared to the input in I/OPort1. Jump to label TONI if the values are equal. The next table byte isaddressed.

CMPX.B @R5+,&P1IN ; Compare P1 bits with table. R5 + 1

JEQ TONI ; Equal contents

... ; Not equal

Note: Use CMPA for the following two cases for better density and execution.CMPA Rsrc,Rdst orCMPA #imm20,Rdst

Page 239: MSP430 - general.pdf

Extended Instructions

4-12316-Bit MSP430X CPU

* DADCX.A Add carry decimally to destination address-word* DADCX[.W] Add carry decimally to destination word* DADCX.B Add carry decimally to destination byte

Syntax DADCX.A dstDADCX dst or DADCX.W src,dstDADCX.B dst

Operation dst + C −> dst (decimally)

Emulation DADDX.A #0,dstDADDX #0,dstDADDX.B #0,dst

Description The carry bit (C) is added decimally to the destination.

Status Bits N: Set if MSB of result is 1 (address-word > 79999h, word > 7999h,byte > 79h), reset if MSB is 0.

Z: Set if result is zero, reset otherwise.C: Set if the BCD result is too large (address-word > 99999h,

word > 9999h, byte > 99h), reset otherwise.V: Undefined.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 40-bit counter, pointed to by R12 and R13, is incremented decimally.

DADDX.A #1,0(R12) ; Increment lower 20 bitsDADCX.A 0(R13) ; Add carry to upper 20 bits

Page 240: MSP430 - general.pdf

Extended Instructions

4-124 16-Bit MSP430X CPU

DADDX.A Add source address-word and carry decimally to destination address-wordDADDX[.W] Add source word and carry decimally to destination wordDADDX.B Add source byte and carry decimally to destination byte

Syntax DADDX.A src,dstDADDX src,dst or DADDX.W src,dstDADDX.B src,dst

Operation src + dst + C → dst (decimally)

Description The source operand and the destination operand are treated as two (.B), four(.W), or five (.A) binary coded decimals (BCD) with positive signs. The sourceoperand and the carry bit C are added decimally to the destination operand.The source operand is not affected. The previous contents of the destinationare lost. The result is not defined for non-BCD numbers. Both operands maybe located in the full address space.

Status Bits N: Set if MSB of result is 1 (address-word > 79999h, word > 7999h,byte > 79h), reset if MSB is 0.

Z: Set if result is zero, reset otherwise.C: Set if the BCD result is too large (address-word > 99999h,

word > 9999h, byte > 99h), reset otherwise.V: Undefined.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Decimal 10 is added to the 20-bit BCD counter DECCNTR located in twowords.

DADDX.A #10h,&DECCNTR ; Add 10 to 20-bit BCD counter

Example The eight-digit BCD number contained in 20-bit addresses BCD and BCD+2 isadded decimally to an eight-digit BCD number contained in R4 and R5(BCD+2 and R5 contain the MSDs).

CLRC ; Clear carry

DADDX.W BCD,R4 ; Add LSDs

DADDX.W BCD+2,R5 ; Add MSDs with carry

JC OVERFLOW ; Result >99999999: go to error routine

... ; Result ok

Example The two-digit BCD number contained in 20-bit address BCD is addeddecimally to a two-digit BCD number contained in R4.

CLRC ; Clear carry

DADDX.B BCD,R4 ; Add BCD to R4 decimally. ; R4: 000ddh

Page 241: MSP430 - general.pdf

Extended Instructions

4-12516-Bit MSP430X CPU

* DECX.A Decrement destination address-word* DECX[.W] Decrement destination word* DECX.B Decrement destination byte

Syntax DECX dstDECX dst or DECX.W dstDECX.B dst

Operation dst − 1 −> dst

Emulation SUBX.A #1,dstSUBX #1,dstSUBX.B #1,dst

Description The destination operand is decremented by one. The original contents arelost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 1, reset otherwiseC: Reset if dst contained 0, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM address-word TONI is decremented by 1

DECX.A TONI ; Decrement TONI

Page 242: MSP430 - general.pdf

Extended Instructions

4-126 16-Bit MSP430X CPU

* DECDX.A Double-decrement destination address-word* DECDX[.W] Double-decrement destination word* DECDX.B Double-decrement destination byte

Syntax DECDX.A dstDECDX dst or DECDX.W dstDECDX.B dst

Operation dst − 2 −> dst

Emulation SUBX.A #2,dstSUBX #2,dst SUBX.B #2,dst

Description The destination operand is decremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 2, reset otherwiseC: Reset if dst contained 0 or 1, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM address-word TONI is decremented by 2.

DECDX.A TONI ; Decrement TONI by two

Page 243: MSP430 - general.pdf

Extended Instructions

4-12716-Bit MSP430X CPU

* INCX.A Increment destination address-word* INCX[.W] Increment destination word* INCX.B Increment destination byte

Syntax INCX.A dstINCX dst or INCX.W dstINCX.B dst

Operation dst + 1 −> dst

Emulation ADDX.A #1,dstADDX #1,dstADDX.B #1,dst

Description The destination operand is incremented by one. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFFh, reset otherwise

Set if dst contained 0FFFFh, reset otherwiseSet if dst contained 0FFh, reset otherwise

C: Set if dst contained 0FFFFFh, reset otherwiseSet if dst contained 0FFFFh, reset otherwiseSet if dst contained 0FFh, reset otherwise

V: Set if dst contained 07FFFh, reset otherwiseSet if dst contained 07FFFh, reset otherwiseSet if dst contained 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM address-word TONI is incremented by 1.

INCX.A TONI ; Increment TONI (20-bits)

Page 244: MSP430 - general.pdf

Extended Instructions

4-128 16-Bit MSP430X CPU

* INCDX.A Double-increment destination address-word* INCDX[.W] Double-increment destination word* INCDX.B Double-increment destination byte

Syntax INCDX.A dstINCDX dst or INCDX.W dstINCDX.B dst

Operation dst + 2 −> dst

Emulation ADDX.A #2,dstADDX #2,dstADDX.B #2,dst

Example The destination operand is incremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFEh, reset otherwise

Set if dst contained 0FFFEh, reset otherwiseSet if dst contained 0FEh, reset otherwise

C: Set if dst contained 0FFFFEh or 0FFFFFh, reset otherwiseSet if dst contained 0FFFEh or 0FFFFh, reset otherwiseSet if dst contained 0FEh or 0FFh, reset otherwise

V: Set if dst contained 07FFFEh or 07FFFFh, reset otherwiseSet if dst contained 07FFEh or 07FFFh, reset otherwiseSet if dst contained 07Eh or 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM byte LEO is incremented by two; PC points to upper memory

INCDX.B LEO ; Increment LEO by two

Page 245: MSP430 - general.pdf

Extended Instructions

4-12916-Bit MSP430X CPU

* INVX.A Invert destination* INVX[.W] Invert destination* INVX.B Invert destination

Syntax INVX.A dstINVX dst or INVX.W dstINVX.B dst

Operation .NOT.dst −> dst

Emulation XORX.A #0FFFFFh,dstXORX #0FFFFh,dstXORX.B #0FFh,dst

Description The destination operand is inverted. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if dst contained 0FFFFFh, reset otherwise

Set if dst contained 0FFFFh, reset otherwiseSet if dst contained 0FFh, reset otherwise

C: Set if result is not zero, reset otherwise ( = .NOT. Zero)V: Set if initial destination operand was negative, otherwise reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example 20-bit content of R5 is negated (twos complement).INVX.A R5 ; Invert R5INCX.A R5 ; R5 is now negated

Example Content of memory byte LEO is negated. PC is pointing to upper memoryINVX.B LEO ; Invert LEOINCX.B LEO ; MEM(LEO) is negated

Page 246: MSP430 - general.pdf

Extended Instructions

4-130 16-Bit MSP430X CPU

MOVX.A Move source address-word to destination address-wordMOVX[.W] Move source word to destination wordMOVX.B Move source byte to destination byte

Syntax MOVX.A src,dstMOVX src,dst or MOVX.W src,dstMOVX.B src,dst

Operation src → dst

Description The source operand is copied to the destination. The source operand is notaffected. Both operands may be located in the full address space.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Move a 20-bit constant 18000h to absolute address-word EDE.

MOVX.A #018000h,&EDE ; Move 18000h to EDE

Example The contents of table EDE (word data, 20-bit addresses) are copied to tableTOM. The length of the table is 030h words.

MOVA #EDE,R10 ; Prepare pointer (20-bit address)

Loop MOVX.W @R10+,TOM-EDE-2(R10) ; R10 points to both tables. R10+2

CMPA #EDE+60h,R10 ; End of table reached?

JLO Loop ; Not yet

... ; Copy completed

Example The contents of table EDE (byte data, 20-bit addresses) are copied to tableTOM. The length of the table is 020h bytes.

MOVA #EDE,R10 ; Prepare pointer (20-bit)

MOV #20h,R9 ; Prepare counter

Loop MOVX.B @R10+,TOM-EDE-1(R10) ; R10 points to both tables.; R10+1

DEC R9 ; Decrement counter

JNZ Loop ; Not yet done

... ; Copy completed

Page 247: MSP430 - general.pdf

Extended Instructions

4-13116-Bit MSP430X CPU

Ten of the 28 possible addressing combinations of the MOVX.A instruction canuse the MOVA instruction. This saves two bytes and code cycles. Examplesfor the addressing combinations are:

MOVX.A Rsrc,Rdst MOVA Rsrc,Rdst ; Reg/Reg

MOVX.A #imm20,Rdst MOVA #imm20,Rdst ; Immediate/Reg

MOVX.A &abs20,Rdst MOVA &abs20,Rdst ; Absolute/Reg

MOVX.A @Rsrc,Rdst MOVA @Rsrc,Rdst ; Indirect/Reg

MOVX.A @Rsrc+,Rdst MOVA @Rsrc+,Rdst ; Indirect,Auto/Reg

MOVX.A Rsrc,&abs20 MOVA Rsrc,&abs20 ; Reg/Absolute

The next four replacements are possible only if 16-bit indexes are sufficient forthe addressing.

MOVX.A z20(Rsrc),Rdst MOVA z16(Rsrc),Rdst ; Indexed/Reg

MOVX.A Rsrc,z20(Rdst) MOVA Rsrc,z16(Rdst) ; Reg/Indexed

MOVX.A symb20,Rdst MOVA symb16,Rdst ; Symbolic/Reg

MOVX.A Rsrc,symb20 MOVA Rsrc,symb16 ; Reg/Symbolic

Page 248: MSP430 - general.pdf

Extended Instructions

4-132 16-Bit MSP430X CPU

POPM.A Restore n CPU registers (20-bit data) from the stackPOPM[.W] Restore n CPU registers (16-bit data) from the stack

Syntax POPM.A #n,Rdst 1 ≤ n ≤ 16POPM.W #n,Rdst or POPM #n,Rdst 1 ≤ n ≤ 16

Operation POPM.A: Restore the register values from stack to the specified CPUregisters. The stack pointer SP is incremented by four for each registerrestored from stack. The 20-bit values from stack (2 words per register) arerestored to the registers.

POPM.W: Restore the 16-bit register values from stack to the specified CPUregisters. The stack pointer SP is incremented by two for each registerrestored from stack. The 16-bit values from stack (one word per register) arerestored to the CPU registers.

Note : This does not use the extension word.

Description POPM.A: The CPU registers pushed on the stack are moved to the extendedCPU registers, starting with the CPU register (Rdst - n + 1). The stack pointeris incremented by (n × 4) after the operation.

POPM.W: The 16-bit registers pushed on the stack are moved back to theCPU registers, starting with CPU register (Rdst - n + 1). The stack pointer isincremented by (n × 2) after the instruction. The MSBs (Rdst.19:16) of therestored CPU registers are cleared

Status Bits Not affected, except SR is included in the operation

Mode Bits OSCOFF, CPUOFF, and GIE are not affected, except SR is included in the op-eration.

Example Restore the 20-bit registers R9, R10, R11, R12, R13 from the stack.

POPM.A #5,R13 ; Restore R9, R10, R11, R12, R13

Example Restore the 16-bit registers R9, R10, R11, R12, R13 from the stack.

POPM.W #5,R13 ; Restore R9, R10, R11, R12, R13

Page 249: MSP430 - general.pdf

Extended Instructions

4-13316-Bit MSP430X CPU

PUSHM.A Save n CPU registers (20-bit data) on the stackPUSHM[.W] Save n CPU registers (16-bit words) on the stack

Syntax PUSHM.A #n,Rdst 1 ≤ n ≤ 16PUSHM.W #n,Rdst or PUSHM #n,Rdst 1 ≤ n ≤ 16

Operation PUSHM.A: Save the 20-bit CPU register values on the stack. The stack pointer(SP) is decremented by four for each register stored on the stack. The MSBsare stored first (higher address).

PUSHM.W: Save the 16-bit CPU register values on the stack. The stackpointer is decremented by two for each register stored on the stack.

Description PUSHM.A: The n CPU registers, starting with Rdst backwards, are stored onthe stack. The stack pointer is decremented by (n × 4) after the operation. Thedata (Rn.19:0) of the pushed CPU registers is not affected.

PUSHM.W: The n registers, starting with Rdst backwards, are stored on thestack. The stack pointer is decremented by (n × 2) after the operation. Thedata (Rn.19:0) of the pushed CPU registers is not affected.

Note : This instruction does not use the extension word.

Status Bits Not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Save the five 20-bit registers R9, R10, R11, R12, R13 on the stack.

PUSHM.A #5,R13 ; Save R13, R12, R11, R10, R9

Example Save the five 16-bit registers R9, R10, R11, R12, R13 on the stack.

PUSHM.W #5,R13 ; Save R13, R12, R11, R10, R9

Page 250: MSP430 - general.pdf

Extended Instructions

4-134 16-Bit MSP430X CPU

* POPX.A Restore single address-word from the stack* POPX[.W] Restore single word from the stack* POPX.B Restore single byte from the stack

Syntax POPX.A dstPOPX dst or POPX.W dstPOPX.B dst

Operation Restore the 8/16/20-bit value from the stack to the destination. 20-bitaddresses are possible. The stack pointer SP is incremented by two (byte andword operands) and by four (address-word operand).

Emulation MOVX(.B,.A) @SP+,dst

Description The item on TOS is written to the destination operand. Register Mode, IndexedMode, Symbolic Mode, and Absolute Mode are possible. The stack pointer isincremented by two or four.

Note: the stack pointer is incremented by two also for byte operations.

Status Bits Not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Write the 16-bit value on TOS to the 20-bit address &EDE.

POPX.W &EDE ; Write word to address EDE

Example Write the 20-bit value on TOS to R9.

POPX.A R9 ; Write address-word to R9

Page 251: MSP430 - general.pdf

Extended Instructions

4-13516-Bit MSP430X CPU

PUSHX.A Save a single address-word on the stackPUSHX[.W] Save a single word on the stackPUSHX.B Save a single byte on the stack

Syntax PUSHX.A srcPUSHX src or PUSHX.W srcPUSHX.B src

Operation Save the 8/16/20-bit value of the source operand on the TOS. 20-bit addressesare possible. The stack pointer (SP) is decremented by two (byte and wordoperands) or by four (address-word operand) before the write operation.

Description The stack pointer is decremented by two (byte and word operands) or by four(address-word operand). Then the source operand is written to the TOS. Allseven addressing modes are possible for the source operand.

Note : This instruction does not use the extension word.

Status Bits Not affected.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Save the byte at the 20-bit address &EDE on the stack.

PUSHX.B &EDE ; Save byte at address EDE

Example Save the 20-bit value in R9 on the stack.

PUSHX.A R9 ; Save address-word in R9

Page 252: MSP430 - general.pdf

Extended Instructions

4-136 16-Bit MSP430X CPU

RLAM.A Rotate Left Arithmetically the 20-bit CPU register contentRLAM[.W] Rotate Left Arithmetically the 16-bit CPU register content

Syntax RLAM.A #n,Rdst 1 ≤ n ≤ 4RLAM.W #n,Rdst or RLAM #n,Rdst 1 ≤ n ≤ 4

Operation C ← MSB ← MSB-1 .... LSB+1 ← LSB ← 0

Description The destination operand is shifted arithmetically left one, two, three, or fourpositions as shown in Figure 4−44. RLAM works as a multiplication (signedand unsigned) with 2, 4, 8, or 16. The word instruction RLAM.W clears the bitsRdst.19:16

Note : This instruction does not use the extension word.

Status Bits N: Set if result is negative.A: Rdst.19 = 1, reset if Rdst.19 = 0.W: Rdst.15 = 1, reset if Rdst.15 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from the MSB (n = 1), MSB-1 (n = 2), MSB-2 (n = 3), MSB-3

(n = 4)V: Undefined

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit operand in R5 is shifted left by three positions. It operates equal toan arithmetic multiplication by 8.

RLAM.A #3,R5 ; R5 = R5 x 8

Figure 4−44. Rotate Left Arithmetically RLAM[.W] and RLAM.A

C

19 0

MSB0000

15

LSB

C

19 0

MSB LSB

16

0

0

Page 253: MSP430 - general.pdf

Extended Instructions

4-13716-Bit MSP430X CPU

* RLAX.A Rotate left arithmetically address-word* RLAX[.W] Rotate left arithmetically word* RLAX.B Rotate left arithmetically byte

Syntax RLAX.B dstRLAX dst or RLAX.W dstRLAX.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− 0

Emulation ADDX.A dst,dstADDX dst,dstADDX.B dst,dst

Description The destination operand is shifted left one position as shown in Figure 4−45.The MSB is shifted into the carry bit (C) and the LSB is filled with 0. The RLAXinstruction acts as a signed multiplication by 2.

Figure 4−45. Destination Operand—Arithmetic Shift Left

MSB 0

C 0

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs:

the initial value is 040000h ≤ dst < 0C0000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R7 is multiplied by 2.

RLAX.A R7 ; Shift left R7 (20-bit)

Page 254: MSP430 - general.pdf

Extended Instructions

4-138 16-Bit MSP430X CPU

* RLCX.A Rotate left through carry address-word* RLCX[.W] Rotate left through carry word* RLCX.B Rotate left through carry byte

Syntax RLCX.A dstRLCX dst or RLCX.W dstRLCX.B dst

Operation C <− MSB <− MSB−1 .... LSB+1 <− LSB <− C

Emulation ADDCX.A dst,dstADDCX dst,dstADDCX.B dst,dst

Description The destination operand is shifted left one position as shown in Figure 4−46.The carry bit (C) is shifted into the LSB and the MSB is shifted into the carrybit (C).

Figure 4−46. Destination Operand—Carry Left Shift

MSB 0

C

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Loaded from the MSBV: Set if an arithmetic overflow occurs

the initial value is 040000h ≤ dst < 0C0000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 04000h ≤ dst < 0C000h; reset otherwiseSet if an arithmetic overflow occurs:the initial value is 040h ≤ dst < 0C0h; reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R5 is shifted left one position.

RLCX.A R5 ; (R5 x 2) + C −> R5

Example The RAM byte LEO is shifted left one position. PC is pointing to upper memory

RLCX.B LEO ; RAM(LEO) x 2 + C −> RAM(LEO)

Page 255: MSP430 - general.pdf

Extended Instructions

4-13916-Bit MSP430X CPU

RRAM.A Rotate Right Arithmetically the 20-bit CPU register contentRRAM[.W] Rotate Right Arithmetically the 16-bit CPU register content

Syntax RRAM.A #n,Rdst 1 ≤ n ≤ 4RRAM.W #n,Rdst or RRAM #n,Rdst 1 ≤ n ≤ 4

Operation MSB → MSB → MSB-1 …. LSB+1 → LSB → C

Description The destination operand is shifted right arithmetically by one, two, three, orfour bit positions as shown in Figure 4−47. The MSB retains its value (sign).RRAM operates equal to a signed division by 2/4/8/16. The MSB is retainedand shifted into MSB-1. The LSB+1 is shifted into the LSB, and the LSB isshifted into the carry bit C. The word instruction RRAM.W clears the bitsRdst.19:16.

Note : This instruction does not use the extension word.

Status Bits N: Set if result is negative.A: Rdst.19 = 1, reset if Rdst.19 = 0.W: Rdst.15 = 1, reset if Rdst.15 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), or LSB+3

(n = 4)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The signed 20-bit number in R5 is shifted arithmetically right two positions.

RRAM.A #2,R5 ; R5/4 -> R5

Example The signed 20-bit value in R15 is multiplied by 0.75. (0.5 + 0.25) x R15

PUSHM.A #1,R15 ; Save extended R15 on stack

RRAM.A #1,R15 ; R15 × 0.5 -> R15

ADDX.A @SP+,R15 ; R15 × 0.5 + R15 = 1.5 × R15 -> R15

RRAM.A #1,R15 ; (1.5 × R15) × 0.5 = 0.75 × R15 -> R15

Figure 4−47. Rotate Right Arithmetically RRAM[.W] and RRAM.A

C

19 0

MSB0000

15

LSB

C

19 0

MSB LSB

16

Page 256: MSP430 - general.pdf

Extended Instructions

4-140 16-Bit MSP430X CPU

RRAX.A Rotate Right Arithmetically the 20-bit operandRRAX[.W] Rotate Right Arithmetically the 16-bit operandRRAX.B Rotate Right Arithmetically the 8-bit operand

Syntax RRAX.A RdstRRAX.W RdstRRAX RdstRRAX.B Rdst

RRAX.A dstRRAX.W dst or RRAX dstRRAX.B dst

Operation MSB → MSB → MSB-1 . ... LSB+1 → LSB → C

Description Register Mode for the destination: the destination operand is shifted right byone bit position as shown in Figure 4−48. The MSB retains its value (sign). Theword instruction RRAX.W clears the bits Rdst.19:16, the byte instructionRRAX.B clears the bits Rdst.19:8. The MSB retains its value (sign), the LSB isshifted into the carry bit. RRAX here operates equal to a signed division by 2.

All other modes for the destination: the destination operand is shifted rightarithmetically by one bit position as shown in Figure 4−49. The MSB retainsits value (sign), the LSB is shifted into the carry bit. RRAX here operates equalto a signed division by 2. All addressing modes − with the exception of theImmediate Mode − are possible in the full memory.

Status Bits N: Set if result is negative.A: dst.19 = 1, reset if dst.19 = 0.W: dst.15 = 1, reset if dst.15 = 0.B: dst.7 = 1, reset if dst.7 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 257: MSP430 - general.pdf

Extended Instructions

4-14116-Bit MSP430X CPU

Example The signed 20-bit number in R5 is shifted arithmetically right four positions.

RPT #4RRAX.A R5 ; R5/16 −> R5

Example The signed 8-bit value in EDE is multiplied by 0.5.

RRAX.B &EDE ; EDE/2 -> EDE

Figure 4−48. Rotate Right Arithmetically RRAX(.B,.A). Register Mode

C

0

MSB

7

LSB

C

15 0

MSB LSB

C

19 0

MSB LSB

819

0 0

19 16

0000

Figure 4−49. Rotate Right Arithmetically RRAX(.B,.A). Non-Register Mode

C

0

MSB

7

LSB

C

15 0

MSB LSB

C

19 0

MSB LSB

31 20

0 0

Page 258: MSP430 - general.pdf

Extended Instructions

4-142 16-Bit MSP430X CPU

RRCM.A Rotate Right through carry the 20-bit CPU register contentRRCM[.W] Rotate Right through carry the 16-bit CPU register content

Syntax RRCM.A #n,Rdst 1 ≤ n ≤ 4RRCM.W #n,Rdst or RRCM #n,Rdst 1 ≤ n ≤ 4

Operation C → MSB → MSB-1 → ... LSB+1 → LSB → C

Description The destination operand is shifted right by one, two, three, or four bit positionsas shown in Figure 4−50. The carry bit C is shifted into the MSB, the LSB isshifted into the carry bit. The word instruction RRCM.W clears the bitsRdst.19:16

Note : This instruction does not use the extension word.

Status Bits N: Set if result is negative.A: Rdst.19 = 1, reset if Rdst.19 = 0.W: Rdst.15 = 1, reset if Rdst.15 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3) or LSB+3

(n = 4)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The address-word in R5 is shifted right by three positions. The MSB-2 isloaded with 1.

SETC ; Prepare carry for MSB-2

RRCM.A #3,R5 ; R5 = R5 » 3 + 20000h

Example The word in R6 is shifted right by two positions. The MSB is loaded with theLSB. The MSB-1 is loaded with the contents of the carry flag.

RRCM.W #2,R6 ; R6 = R6 » 2. R6.19:16 = 0

Figure 4−50. Rotate Right Through Carry RRCM[.W] and RRCM.A

C

19 0

MSB0

15

LSB

C

19 0

MSB LSB

16

Page 259: MSP430 - general.pdf

Extended Instructions

4-14316-Bit MSP430X CPU

RRCX.A Rotate Right through carry the 20-bit operandRRCX[.W] Rotate Right through carry the 16-bit operandRRCX.B Rotate Right through carry the 8-bit operand

Syntax RRCX.A RdstRRCX.W RdstRRCX RdstRRCX.B Rdst

RRCX.A dstRRCX.W dst or RRCX dstRRCX.B dst

Operation C → MSB → MSB-1 → ... LSB+1 → LSB → C

Description Register Mode for the destination: the destination operand is shifted right byone bit position as shown in Figure 4−51. The word instruction RRCX.W clearsthe bits Rdst.19:16, the byte instruction RRCX.B clears the bits Rdst.19:8. Thecarry bit C is shifted into the MSB, the LSB is shifted into the carry bit.

All other modes for the destination: the destination operand is shifted right byone bit position as shown in Figure 4−52. The carry bit C is shifted into theMSB, the LSB is shifted into the carry bit. All addressing modes − with theexception of the Immediate Mode − are possible in the full memory.

Status Bits N: Set if result is negative.A: dst.19 = 1, reset if dst.19 = 0.W: dst.15 = 1, reset if dst.15 = 0.B: dst.7 = 1, reset if dst.7 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Page 260: MSP430 - general.pdf

Extended Instructions

4-144 16-Bit MSP430X CPU

Example The 20-bit operand at address EDE is shifted right by one position. The MSB isloaded with 1.

SETC ; Prepare carry for MSB

RRCX.A EDE ; EDE = EDE » 1 + 80000h

Example The word in R6 is shifted right by twelve positions.

RPT #12RRCX.W R6 ; R6 = R6 » 12. R6.19:16 = 0

Figure 4−51. Rotate Right Through Carry RRCX(.B,.A). Register Mode

C

19 0

MSB0 − − − − − − − − − − − − − − − − − − − − 0

7

LSB

C

19 0

MSB LSB

8

C

15 0

MSB LSB

19 16

0 0 0 0

Figure 4−52. Rotate Right Through Carry RRCX(.B,.A). Non-Register Mode

C

0

MSB

7

LSB

C

15 0

MSB LSB

C

19 0

MSB LSB

31 20

0 0

Page 261: MSP430 - general.pdf

Extended Instructions

4-14516-Bit MSP430X CPU

RRUM.A Rotate Right Unsigned the 20-bit CPU register contentRRUM[.W] Rotate Right Unsigned the 16-bit CPU register content

Syntax RRUM.A #n,Rdst 1 ≤ n ≤ 4RRUM.W #n,Rdst or RRUM #n,Rdst 1 ≤ n ≤ 4

Operation 0 → MSB → MSB-1 . →... LSB+1 → LSB → C

Description The destination operand is shifted right by one, two, three, or four bit positionsas shown in Figure 4−53. Zero is shifted into the MSB, the LSB is shifted intothe carry bit. RRUM works like an unsigned division by 2, 4, 8, or 16. The wordinstruction RRUM.W clears the bits Rdst.19:16.

Note : This instruction does not use the extension word.

Status Bits N: Set if result is negative.A: Rdst.19 = 1, reset if Rdst.19 = 0.W: Rdst.15 = 1, reset if Rdst.15 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from the LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3) or LSB+3

(n = 4)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The unsigned address-word in R5 is divided by 16.

RRUM.A #4,R5 ; R5 = R5 » 4. R5/16

Example The word in R6 is shifted right by one bit. The MSB R6.15 is loaded with 0.

RRUM.W #1,R6 ; R6 = R6/2. R6.19:15 = 0

Figure 4−53. Rotate Right Unsigned RRUM[.W] and RRUM.A

C

19 0

MSB0000

15

LSB

C

19 0

MSB LSB

0

0

16

Page 262: MSP430 - general.pdf

Extended Instructions

4-146 16-Bit MSP430X CPU

RRUX.A Rotate Right unsigned the 20-bit operandRRUX[.W] Rotate Right unsigned the 16-bit operandRRUX.B Rotate Right unsigned the 8-bit operand

Syntax RRUX.A RdstRRUX.W RdstRRUX RdstRRUX.B Rdst

Operation C=0 → MSB → MSB-1 → ... LSB+1 → LSB → C

Description RRUX is valid for register Mode only: the destination operand is shifted right byone bit position as shown in Figure 4−54. The word instruction RRUX.W clearsthe bits Rdst.19:16. The byte instruction RRUX.B clears the bits Rdst.19:8.Zero is shifted into the MSB, the LSB is shifted into the carry bit.

Status Bits N: Set if result is negative.A: dst.19 = 1, reset if dst.19 = 0.W: dst.15 = 1, reset if dst.15 = 0.B: dst.7 = 1, reset if dst.7 = 0

Z: Set if result is zero, reset otherwiseC: Loaded from LSBV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The word in R6 is shifted right by twelve positions.

RPT #12RRUX.W R6 ; R6 = R6 » 12. R6.19:16 = 0

Figure 4−54. Rotate Right Unsigned RRUX(.B,.A). Register Mode

C

19 0

MSB0 − − − − − − − − − − − − − − − − − − − − 0

7

LSB

C

19 0

MSB LSB

8

C

15 0

MSB LSB

19 16

0 0 0 0

0

0

0

Page 263: MSP430 - general.pdf

Extended Instructions

4-14716-Bit MSP430X CPU

* SBCX.A Subtract source and borrow/.NOT. carry from destination address-word* SBCX[.W] Subtract source and borrow/.NOT. carry from destination word* SBCX.B Subtract source and borrow/.NOT. carry from destination byte

Syntax SBCX.A dstSBCX dst or SBCX.W dstSBCX.B dst

Operation dst + 0FFFFFh + C −> dstdst + 0FFFFh + C −> dstdst + 0FFh + C −> dst

Emulation SUBCX.A #0,dstSUBCX #0,dstSUBCX.B #0,dst

Description The carry bit (C) is added to the destination operand minus one. The previouscontents of the destination are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB of the result, reset otherwise.

Set to 1 if no borrow, reset if borrow.V: Set if an arithmetic overflow occurs, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 8-bit counter pointed to by R13 is subtracted from a 16-bit counter pointedto by R12.

SUBX.B @R13,0(R12) ; Subtract LSDsSBCX.B 1(R12) ; Subtract carry from MSD

Note: Borrow Implementation.

The borrow is treated as a .NOT. carry : Borrow Carry bit Yes 0 No 1

Page 264: MSP430 - general.pdf

Extended Instructions

4-148 16-Bit MSP430X CPU

SUBX.A Subtract source address-word from destination address-wordSUBX[.W] Subtract source word from destination wordSUBX.B Subtract source byte from destination byte

Syntax SUBX.A src,dstSUBX src,dst or SUBX.W src,dstSUBX.B src,dst

Operation (.not. src) + 1 + dst → dst or dst − src → dst

Description The source operand is subtracted from the destination operand. This is madeby adding the 1’s complement of the source + 1 to the destination. The sourceoperand is not affected. The result is written to the destination operand. Bothoperands may be located in the full address space.

Status Bits N: Set if result is negative (src > dst), reset if positive (src <= dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example A 20-bit constant 87654h is subtracted from EDE (LSBs) and EDE+2 (MSBs).

SUBX.A #87654h,EDE ; Subtract 87654h from EDE+2|EDE

Example A table word pointed to by R5 (20-bit address) is subtracted from R7. Jump tolabel TONI if R7 contains zero after the instruction. R5 is auto-incremented by2. R7.19:16 = 0

SUBX.W @R5+,R7 ; Subtract table number from R7. R5 + 2

JZ TONI ; R7 = @R5 (before subtraction)

... ; R7 <> @R5 (before subtraction)

Example Byte CNT is subtracted from the byte R12 points to in the full address space.Address of CNT is within PC ± 512 K.

SUBX.B CNT,0(R12) ; Subtract CNT from @R12

Note: Use SUBA for the following two cases for better density and execution.SUBX.A Rsrc,Rdst orSUBX.A #imm20,Rdst

Page 265: MSP430 - general.pdf

Extended Instructions

4-14916-Bit MSP430X CPU

SUBCX.A Subtract source address-word with carry from destination address-wordSUBCX[.W] Subtract source word with carry from destination wordSUBCX.B Subtract source byte with carry from destination byte

Syntax SUBCX.A src,dstSUBCX src,dst or SUBCX.W src,dstSUBCX.B src,dst

Operation (.not. src) + C + dst → dst or dst − (src − 1) + C → dst

Description The source operand is subtracted from the destination operand. This is madeby adding the 1’s complement of the source + carry to the destination. Thesource operand is not affected, the result is written to the destination operand.Both operands may be located in the full address space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example A 20-bit constant 87654h is subtracted from R5 with the carry from theprevious instruction.

SUBCX.A #87654h,R5 ; Subtract 87654h + C from R5

Example A 48-bit number (3 words) pointed to by R5 (20-bit address) is subtracted froma 48-bit counter in RAM, pointed to by R7. R5 auto-increments to point to thenext 48-bit number.

SUBX.W @R5+,0(R7) ; Subtract LSBs. R5 + 2

SUBCX.W @R5+,2(R7) ; Subtract MIDs with C. R5 + 2

SUBCX.W @R5+,4(R7) ; Subtract MSBs with C. R5 + 2

Example Byte CNT is subtracted from the byte, R12 points to. The carry of the previousinstruction is used. 20-bit addresses.

SUBCX.B &CNT,0(R12) ; Subtract byte CNT from @R12

Page 266: MSP430 - general.pdf

Extended Instructions

4-150 16-Bit MSP430X CPU

SWPBX.A Swap bytes of lower wordSWPBX[.W] Swap bytes of word

Syntax SWPBX.A dstSWPBX.W dst or SWPBX dst

Operation dst.15:8 dst.7:0

Description Register Mode: Rn.15:8 are swapped with Rn.7:0. When the .A extension isused, Rn.19:16 are unchanged. When the .W extension is used, Rn.19:16 arecleared.Other Modes: When the .A extension is used, bits 31:20 of the destinationaddress are cleared, bits 19:16 are left unchanged, and bits 15:8 are swappedwith bits 7:0. When the .W extension is used, bits 15:8 are swapped with bits7:0 of the addressed word.

Status Bits Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Exchange the bytes of RAM address-word EDE.

MOVX.A #23456h,&EDE ; 23456h −> EDE

SWPBX.A EDE ; 25634h −> EDE

Example Exchange the bytes of R5.

MOVA #23456h,R5 ; 23456h −> R5SWPBX.W R5 ; 05634h −> R5

Figure 4−55. Swap Bytes SWPBX.A Register Mode

15 8 7 0

15 8 7 0

Low Byte

Low ByteHigh Byte

High Byte

Before SWPBX.A

After SWPBX.A

X

X

19

19

16

16

Page 267: MSP430 - general.pdf

Extended Instructions

4-15116-Bit MSP430X CPU

Figure 4−56. Swap Bytes SWPBX.A In Memory

15 8 7 0

Low ByteHigh Byte

Before SWPBX.A

After SWPBX.A

X

19 1631 20

X

15 8 7 0

High ByteLow Byte0

19 1631 20

X

Figure 4−57. Swap Bytes SWPBX[.W] Register Mode

15 8 7 0

15 8 7 0

Low Byte

Low ByteHigh Byte

High Byte

Before SWPBX

After SWPBX

X

0

19

19

16

16

Figure 4−58. Swap Bytes SWPBX[.W] In Memory

15 8 7 0

15 8 7 0

Low Byte

Low ByteHigh Byte

High Byte

Before SWPBX

After SWPBX

Page 268: MSP430 - general.pdf

Extended Instructions

4-152 16-Bit MSP430X CPU

SXTX.A Extend sign of lower byte to address-wordSXTX[.W] Extend sign of lower byte to word

Syntax SXTX.A dstSXTX.W dst or SXTX dst

Operation dst.7 → dst.15:8, Rdst.7 → Rdst.19:8 (Register Mode)

Description Register Mode:The sign of the low byte of the operand (Rdst.7) is extended into the bitsRdst.19:8.

Other Modes:SXTX.A: the sign of the low byte of the operand (dst.7) is extended intodst.19:8. The bits dst.31:20 are cleared.

SXTX[.W]: the sign of the low byte of the operand (dst.7) is extended intodst.15:8.

Status Bits N: Set if result is negative, reset otherwiseZ: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (C = .not.Z)V: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The signed 8-bit data in EDE.7:0 is sign extended to 20 bits: EDE.19:8. Bits31:20 located in EDE+2 are cleared.

SXTX.A &EDE ; Sign extended EDE −> EDE+2/EDE

Figure 4−59. Sign Extend SXTX.A

15 8 7 6 019 162031

0 0...... S

19 16

15 8 7 6 019 16

S

19 16

SXTX.A Rdst

SXTX.A dst

Page 269: MSP430 - general.pdf

Extended Instructions

4-15316-Bit MSP430X CPU

Figure 4−60. Sign Extend SXTX[.W]

15 8 7 6 0

S

15 8 7 6 019 16

S

19 16

SXTX[.W] Rdst

SXTX[.W] dst

Page 270: MSP430 - general.pdf

Extended Instructions

4-154 16-Bit MSP430X CPU

* TSTX.A Test destination address-word* TSTX[.W] Test destination word* TSTX.B Test destination byte

Syntax TSTX.A dstTSTX dst or TST.W dstTST.B dst

Operation dst + 0FFFFFh + 1dst + 0FFFFh + 1dst + 0FFh + 1

Emulation CMPX.A #0,dstCMPX #0,dstCMPX.B #0,dst

Description The destination operand is compared with zero. The status bits are setaccording to the result. The destination is not affected.

Status Bits N: Set if destination is negative, reset if positiveZ: Set if destination contains zero, reset otherwiseC: SetV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example RAM byte LEO is tested; PC is pointing to upper memory. If it is negative,continue at LEONEG; if it is positive but not zero, continue at LEOPOS.

TSTX.B LEO ; Test LEOJN LEONEG ; LEO is negativeJZ LEOZERO ; LEO is zero

LEOPOS ...... ; LEO is positive but not zeroLEONEG ...... ; LEO is negativeLEOZERO ...... ; LEO is zero

Page 271: MSP430 - general.pdf

Extended Instructions

4-15516-Bit MSP430X CPU

XORX.A Exclusive OR source address-word with destination address-wordXORX[.W] Exclusive OR source word with destination wordXORX.B Exclusive OR source byte with destination byte

Syntax XORX.A src,dstXORX src,dst or XORX.W src,dstXORX.B src,dst

Operation src .xor. dst → dst

Description The source and destination operands are exclusively ORed. The result isplaced into the destination. The source operand is not affected. The previouscontents of the destination are lost. Both operands may be located in the fulladdress space.

Status Bits N: Set if result is negative (MSB = 1), reset if positive (MSB = 0)Z: Set if result is zero, reset otherwiseC: Set if result is not zero, reset otherwise (carry = .not. Zero)V: Set if both operands are negative (before execution), reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Toggle bits in address-word CNTR (20-bit data) with information inaddress-word TONI (20-bit address).

XORX.A TONI,&CNTR ; Toggle bits in CNTR

Example A table word pointed to by R5 (20-bit address) is used to toggle bits in R6.

XORX.W @R5,R6 ; Toggle bits in R6. R6.19:16 = 0

Example Reset to zero those bits in the low byte of R7 that are different from the bits inbyte EDE (20-bit address).

XORX.B EDE,R7 ; Set different bits to 1 in R7

INV.B R7 ; Invert low byte of R7. R7.19:8 = 0.

Page 272: MSP430 - general.pdf

Address Instructions

4-156 16-Bit MSP430X CPU

4.6.4 Address Instructions

MSP430X address instructions are instructions that support 20-bit operandsbut have restricted addressing modes. The addressing modes are restrictedto the Register mode and the Immediate mode, except for the MOVAinstruction. Restricting the addressing modes removes the need for theadditional extension-word op-code improving code density and executiontime. The MSP430X address instructions are listed and described in thefollowing pages.

Page 273: MSP430 - general.pdf

Address Instructions

4-15716-Bit MSP430X CPU

ADDA Add 20-bit source to a 20-bit destination register

Syntax ADDA Rsrc,RdstADDA #imm20,Rdst

Operation src + Rdst → Rdst

Description The 20-bit source operand is added to the 20-bit destination CPU register. Theprevious contents of the destination are lost. The source operand is notaffected.

Status Bits N: Set if result is negative (Rdst.19 = 1), reset if positive (Rdst.19 = 0)Z: Set if result is zero, reset otherwiseC: Set if there is a carry from the 20-bit result, reset otherwiseV: Set if the result of two positive operands is negative, or if the result of

two negative numbers is positive, reset otherwise.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example R5 is increased by 0A4320h. The jump to TONI is performed if a carry occurs.

ADDA #0A4320h,R5 ; Add A4320h to 20-bit R5

JC TONI ; Jump on carry

... ; No carry occurred

Page 274: MSP430 - general.pdf

Address Instructions

4-158 16-Bit MSP430X CPU

* BRA Branch to destination

Syntax BRA dst

Operation dst → PC

Emulation MOVA dst,PC

Description An unconditional branch is taken to a 20-bit address anywhere in the fulladdress space. All seven source addressing modes can be used. The branchinstruction is an address-word instruction. If the destination address iscontained in a memory location X, it is contained in two ascending words: X(LSBs) and (X + 2) (MSBs).

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Examples Examples for all addressing modes are given.

Immediate Mode: Branch to label EDE located anywhere in the 20-bit addressspace or branch directly to address.

BRA #EDE ; MOVA #imm20,PC

BRA #01AA04h

Symbolic Mode: Branch to the 20-bit address contained in addresses EXEC(LSBs) and EXEC+2 (MSBs). EXEC is located at the address (PC + X) whereX is within ±32 K. Indirect addressing.

BRA EXEC ; MOVA z16(PC),PC

Note: if the 16-bit index is not sufficient, a 20-bit index may be used with thefollowing instruction.

MOVX.A EXEC,PC ; 1M byte range with 20-bit index

Absolute Mode: Branch to the 20-bit address contained in absolute addressesEXEC (LSBs) and EXEC+2 (MSBs). Indirect addressing.

BRA &EXEC ; MOVA &abs20,PC

Register Mode: Branch to the 20-bit address contained in register R5. IndirectR5.

BRA R5 ; MOVA R5,PC

Page 275: MSP430 - general.pdf

Address Instructions

4-15916-Bit MSP430X CPU

Indirect Mode: Branch to the 20-bit address contained in the word pointed toby register R5 (LSBs). The MSBs have the address (R5 + 2). Indirect, indirectR5.

BRA @R5 ; MOVA @R5,PC

Indirect, Auto-Increment Mode: Branch to the 20-bit address contained in thewords pointed to by register R5 and increment the address in R5 afterwardsby 4. The next time the S/W flow uses R5 as a pointer, it can alter the programexecution due to access to the next address in the table pointed to by R5.Indirect, indirect R5.

BRA @R5+ ; MOVA @R5+,PC. R5 + 4

Indexed Mode: Branch to the 20-bit address contained in the address pointedto by register (R5 + X) (e.g. a table with addresses starting at X). (R5 + X)points to the LSBs, (R5 + X + 2) points to the MSBs of the address. X is withinR5 ± 32 K. Indirect, indirect (R5 + X).

BRA X(R5) ; MOVA z16(R5),PC

Note: if the 16-bit index is not sufficient, a 20-bit index X may be used with thefollowing instruction:

MOVX.A X(R5),PC ; 1M byte range with 20-bit index

Page 276: MSP430 - general.pdf

Address Instructions

4-160 16-Bit MSP430X CPU

CALLA Call a Subroutine

Syntax CALLA dst

Operation dst → tmp20-bit dst is evaluated and storedSP − 2 → SPPC.19:16 → @SP updated PC with return address to TOS (MSBs)SP − 2 → SPPC.15:0 → @SP updated PC to TOS (LSBs)tmp → PC saved 20-bit dst to PC

Description A subroutine call is made to a 20-bit address anywhere in the full addressspace. All seven source addressing modes can be used. The call instruction isan address-word instruction. If the destination address is contained in amemory location X, it is contained in two ascending words: X (LSBs) and(X + 2) (MSBs). Two words on the stack are needed for the return address.The return is made with the instruction RETA.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Examples Examples for all addressing modes are given.

Immediate Mode: Call a subroutine at label EXEC or call directly an address.

CALLA #EXEC ; Start address EXEC

CALLA #01AA04h ; Start address 01AA04h

Symbolic Mode: Call a subroutine at the 20-bit address contained inaddresses EXEC (LSBs) and EXEC+2 (MSBs). EXEC is located at theaddress (PC + X) where X is within ±32 K. Indirect addressing.

CALLA EXEC ; Start address at @EXEC. z16(PC)

Absolute Mode: Call a subroutine at the 20-bit address contained in absoluteaddresses EXEC (LSBs) and EXEC+2 (MSBs). Indirect addressing.

CALLA &EXEC ; Start address at @EXEC

Register Mode: Call a subroutine at the 20-bit address contained in registerR5. Indirect R5.

CALLA R5 ; Start address at @R5

Page 277: MSP430 - general.pdf

Address Instructions

4-16116-Bit MSP430X CPU

Indirect Mode: Call a subroutine at the 20-bit address contained in the wordpointed to by register R5 (LSBs). The MSBs have the address (R5 + 2).Indirect, indirect R5.

CALLA @R5 ; Start address at @R5

Indirect, Auto-Increment Mode: Call a subroutine at the 20-bit addresscontained in the words pointed to by register R5 and increment the 20-bitaddress in R5 afterwards by 4. The next time the S/W flow uses R5 as apointer, it can alter the program execution due to access to the next wordaddress in the table pointed to by R5. Indirect, indirect R5.

CALLA @R5+ ; Start address at @R5. R5 + 4

Indexed Mode: Call a subroutine at the 20-bit address contained in theaddress pointed to by register (R5 + X) e.g. a table with addresses starting atX. (R5 + X) points to the LSBs, (R5 + X + 2) points to the MSBs of the wordaddress. X is within R5 ±32 K. Indirect, indirect (R5 + X).

CALLA X(R5) ; Start address at @(R5+X). z16(R5)

Page 278: MSP430 - general.pdf

Address Instructions

4-162 16-Bit MSP430X CPU

* CLRA Clear 20-bit destination register

Syntax CLRA Rdst

Operation 0 −> Rdst

Emulation MOVA #0,Rdst

Description The destination register is cleared.

Status Bits Status bits are not affected.

Example The 20-bit value in R10 is cleared.

CLRA R10 ; 0 −> R10

Page 279: MSP430 - general.pdf

Address Instructions

4-16316-Bit MSP430X CPU

CMPA Compare the 20-bit source with a 20-bit destination register

Syntax CMPA Rsrc,RdstCMPA #imm20,Rdst

Operation (.not. src) + 1 + Rdst or Rdst − src

Description The 20-bit source operand is subtracted from the 20-bit destination CPUregister. This is made by adding the 1’s complement of the source + 1 to thedestination register. The result affects only the status bits.

Status Bits N: Set if result is negative (src > dst), reset if positive (src <= dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB, reset otherwiseV: Set if the subtraction of a negative source operand from a positive

destination operand delivers a negative result, or if the subtraction ofa positive source operand from a negative destination operand deliversa positive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example A 20-bit immediate operand and R6 are compared. If they are equal theprogram continues at label EQUAL.

CMPA #12345h,R6 ; Compare R6 with 12345h

JEQ EQUAL ; R5 = 12345h

... ; Not equal

Example The 20-bit values in R5 and R6 are compared. If R5 is greater than (signed) orequal to R6, the program continues at label GRE.

CMPA R6,R5 ; Compare R6 with R5 (R5 − R6)

JGE GRE ; R5 >= R6

... ; R5 < R6

Page 280: MSP430 - general.pdf

Address Instructions

4-164 16-Bit MSP430X CPU

* DECDA Double-decrement 20-bit destination register

Syntax DECDA Rdst

Operation Rdst − 2 −> Rdst

Emulation SUBA #2,Rdst

Description The destination register is decremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if Rdst contained 2, reset otherwiseC: Reset if Rdst contained 0 or 1, set otherwiseV: Set if an arithmetic overflow occurs, otherwise reset.

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R5 is decremented by 2

DECDA R5 ; Decrement R5 by two

Page 281: MSP430 - general.pdf

Address Instructions

4-16516-Bit MSP430X CPU

* INCDA Double-increment 20-bit destination register

Syntax INCDA Rdst

Operation dst + 2 −> dst

Emulation ADDA #2,Rdst

Example The destination register is incremented by two. The original contents are lost.

Status Bits N: Set if result is negative, reset if positiveZ: Set if Rdst contained 0FFFFEh, reset otherwise

Set if Rdst contained 0FFFEh, reset otherwiseSet if Rdst contained 0FEh, reset otherwise

C: Set if Rdst contained 0FFFFEh or 0FFFFFh, reset otherwiseSet if Rdst contained 0FFFEh or 0FFFFh, reset otherwiseSet if Rdst contained 0FEh or 0FFh, reset otherwise

V: Set if Rdst contained 07FFFEh or 07FFFFh, reset otherwiseSet if Rdst contained 07FFEh or 07FFFh, reset otherwiseSet if Rdst contained 07Eh or 07Fh, reset otherwise

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R5 is incremented by 2

INCDA R5 ; Increment R5 by two

Page 282: MSP430 - general.pdf

Address Instructions

4-166 16-Bit MSP430X CPU

MOVA Move the 20-bit source to the 20-bit destination

Syntax MOVA Rsrc,RdstMOVA #imm20,RdstMOVA z16(Rsrc),RdstMOVA EDE,Rdst

MOVA &abs20,RdstMOVA @Rsrc,RdstMOVA @Rsrc+,RdstMOVA Rsrc,z16(Rdst)

MOVA Rsrc,&abs20

Operation src → RdstRsrc → dst

Description The 20-bit source operand is moved to the 20-bit destination. The sourceoperand is not affected. The previous content of the destination is lost.

Status Bits Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Examples Copy 20-bit value in R9 to R8.

MOVA R9,R8 ; R9 -> R8

Write 20-bit immediate value 12345h to R12.

MOVA #12345h,R12 ; 12345h -> R12

Copy 20-bit value addressed by (R9 + 100h) to R8. Source operand inaddresses (R9 + 100h) LSBs and (R9 + 102h) MSBs

MOVA 100h(R9),R8 ; Index: ± 32 K. 2 words transferred

Move 20-bit value in 20-bit absolute addresses EDE (LSBs) and EDE+2(MSBs) to R12.

MOVA &EDE,R12 ; &EDE -> R12. 2 words transferred

Move 20-bit value in 20-bit addresses EDE (LSBs) and EDE+2 (MSBs) to R12.PC index ±32 K.

MOVA EDE,R12 ; EDE -> R12. 2 words transferred

Copy 20-bit value R9 points to (20 bit address) to R8. Source operand inaddresses @R9 LSBs and @(R9 + 2) MSBs.

MOVA @R9,R8 ; @R9 -> R8. 2 words transferred

Page 283: MSP430 - general.pdf

Address Instructions

4-16716-Bit MSP430X CPU

Copy 20-bit value R9 points to (20 bit address) to R8. R9 is incremented byfour afterwards. Source operand in addresses @R9 LSBs and @(R9 + 2)MSBs.

MOVA @R9+,R8 ; @R9 -> R8. R9 + 4. 2 words transferred.

Copy 20-bit value in R8 to destination addressed by (R9 + 100h). Destinationoperand in addresses @(R9 + 100h) LSBs and @(R9 + 102h) MSBs.

MOVA R8,100h(R9) ; Index: +- 32 K. 2 words transferred

Move 20-bit value in R13 to 20-bit absolute addresses EDE (LSBs) andEDE+2 (MSBs).

MOVA R13,&EDE ; R13 -> EDE. 2 words transferred

Move 20-bit value in R13 to 20-bit addresses EDE (LSBs) and EDE+2 (MSBs).PC index ±32 K.

MOVA R13,EDE ; R13 -> EDE. 2 words transferred

Page 284: MSP430 - general.pdf

Address Instructions

4-168 16-Bit MSP430X CPU

* RETA Return from subroutine

Syntax RETA

Operation @SP → PC.15:0 LSBs (15:0) of saved PC to PC.15:0SP + 2 → SP@SP → PC.19:16 MSBs (19:16) of saved PC to PC.19:16SP + 2 → SP

Emulation MOVA @SP+,PC

Description The 20-bit return address information, pushed onto the stack by a CALLAinstruction, is restored to the program counter PC. The program continues atthe address following the subroutine call. The status register bits SR.11:0 arenot affected. This allows the transfer of information with these bits.

Status Bits N: Not affectedZ: Not affectedC: Not affectedV: Not affected

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example Call a subroutine SUBR from anywhere in the 20-bit address space and returnto the address after the CALLA.

CALLA #SUBR ; Call subroutine starting at SUBR

... ; Return by RETA to here

SUBR PUSHM.A #2,R14 ; Save R14 and R13 (20 bit data)

... ; Subroutine code

POPM.A #2,R14 ; Restore R13 and R14 (20 bit data)

RETA ; Return (to full address space)

Page 285: MSP430 - general.pdf

Address Instructions

4-16916-Bit MSP430X CPU

* TSTA Test 20-bit destination register

Syntax TSTA Rdst

Operation dst + 0FFFFFh + 1dst + 0FFFFh + 1dst + 0FFh + 1

Emulation CMPA #0,Rdst

Description The destination register is compared with zero. The status bits are setaccording to the result. The destination register is not affected.

Status Bits N: Set if destination register is negative, reset if positiveZ: Set if destination register contains zero, reset otherwiseC: SetV: Reset

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R7 is tested. If it is negative, continue at R7NEG; if it ispositive but not zero, continue at R7POS.

TSTA R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zero

R7POS ...... ; R7 is positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO ...... ; R7 is zero

Page 286: MSP430 - general.pdf

Address Instructions

4-170 16-Bit MSP430X CPU

SUBA Subtract 20-bit source from 20-bit destination register

Syntax SUBA Rsrc,RdstSUBA #imm20,Rdst

Operation (.not.src) + 1 + Rdst → Rdst or Rdst − src → Rdst

Description The 20-bit source operand is subtracted from the 20-bit destination register.This is made by adding the 1’s complement of the source + 1 to thedestination. The result is written to the destination register, the source is notaffected.

Status Bits N: Set if result is negative (src > dst), reset if positive (src <= dst)Z: Set if result is zero (src = dst), reset otherwise (src ≠ dst)C: Set if there is a carry from the MSB (Rdst.19), reset otherwiseV: Set if the subtraction of a negative source operand from a positive des-

tination operand delivers a negative result, or if the subtraction of a posi-tive source operand from a negative destination operand delivers apositive result, reset otherwise (no overflow).

Mode Bits OSCOFF, CPUOFF, and GIE are not affected.

Example The 20-bit value in R5 is subtracted from R6. If a carry occurs, the programcontinues at label TONI.

SUBA R5,R6 ; R6 − R5 -> R6

JC TONI ; Carry occurred

... ; No carry

Page 287: MSP430 - general.pdf

5-1FLL+ Clock Module

FLL+ Clock Module

The FLL+ clock module provides the clocks for MSP430x4xx devices. Thischapter discusses the FLL+ clock module. The FLL+ clock module isimplemented in all MSP430x4xx devices.

Topic Page

5.1 FLL+ Clock Module Introduction 5-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2 FLL+ Clock Module Operation 5-8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.3 FLL+ Clock Module Registers 5-15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 5

Page 288: MSP430 - general.pdf

5-2 FLL+ Clock Module

5.1 FLL+ Clock Module Introduction

The frequency-locked loop (FLL+) clock module supports low system cost andultra low-power consumption. Using three internal clock signals, the user canselect the best balance of performance and low power consumption. The FLL+features digital frequency-locked loop (FLL) hardware. The FLL operatestogether with a digital modulator and stabilizes the internal digitally controlledoscillator (DCO) frequency to a programmable multiple of the LFXT1 watchcrystal frequency. The FLL+ clock module can be configured to operatewithout any external components, with one or two external crystals, or withresonators, under full software control.

The FLL+ clock module includes two or three clock sources:

LFXT1CLK: Low-frequency/high-frequency oscillator that can be usedeither with low-frequency 32768-Hz watch crystals or standard crystals orresonators in the 450-kHz to 8-MHz range. See the device-specific datasheet for details.

XT2CLK: Optional high-frequency oscillator that can be used withstandard crystals, resonators, or external clock sources in the 450-kHz to8-MHz range. In MSP430F47x3/4 and MSP430F471xx devices the upperlimit is 16 MHz. See the device-specific data sheet for details.

DCOCLK: Internal digitally controlled oscillator (DCO) with RC-typecharacteristics, stabilized by the FLL.

VLOCLK: Internal very low power, low frequency oscillator with 12-kHztypical frequency.

Four clock signals are available from the FLL+ module:

ACLK: Auxiliary clock. The ACLK is software selectable as LFXT1CLK orVLOCLK as clock source. ACLK is software selectable for individualperipheral modules.

ACLK/n: Buffered output of the ACLK. The ACLK/n is ACLK divided by1,2,4, or 8 and used externally only.

MCLK: Master clock. MCLK is software selectable as LFXT1CLK,VLOCLK, XT2CLK (if available), or DCOCLK. MCLK can be divided by 1,2, 4, or 8 within the FLL block. MCLK is used by the CPU and system.

SMCLK: Sub-main clock. SMCLK is software selectable as XT2CLK (ifavailable) or DCOCLK. SMCLK is software selectable for individualperipheral modules.

Page 289: MSP430 - general.pdf

5-3FLL+ Clock Module

The block diagrams of the FLL+ clock module are shown in Figure 5−1 toFigure 5−4.

Figure 5−1 shows the block diagram for MSP430x43x, MSP430x44x,MSP430FG47x, MSP430F47x, and MSP430x461x devices.

Figure 5−2 shows the block diagram for MSP430x42x and MSP430x41xdevices.

Figure 5−3 shows the block diagram for MSP430x47x3/4 andMSP430F471xx devices.

Figure 5−4 shows the block diagram for MSP430x41x2 devices.

Page 290: MSP430 - general.pdf

5-4 FLL+ Clock Module

Figure 5−1.MSP430x43x, MSP430x44x, MSP430FG47x, MSP430F47x, andMSP430x461x Frequency-Locked Loop

10−bitFrequencyIntegrator

DCO+

Modulator

DCGenerator

OSCOFF

FNxSCG1

off

SCG0

Enable

PUC

Reset

ACLK

MCLK

XTS_FLL

DCOPLUS

FLL_DIVx

FLLDx

ACLK/n

CPUOFF

XT20FF

SELS

SELMx

10M

fCrystal

SMCLK

SMCLKOFF

XIN

XOUT

XT2IN

XT2OUT XT2 Oscillator

fDCO

+

fDCO/D

/(N+1)

0

1

1

0

1

0

1

0

00

01

10

11

00

01

10

11

Divider/1/2/4/8

Divider/1/2/4/8

4

LFXT1 Oscillator

LF XT

0 V

LFOff

XT1Off

0 V

fDCOCLK

XCAPxPF

Page 291: MSP430 - general.pdf

5-5FLL+ Clock Module

Figure 5−2.MSP430x42x and MSP430x41x Frequency-Locked Loop

10−bitFrequencyIntegrator

DCO+

Modulator

DCGenerator

OSCOFF

FNxSCG1

off

SCG0

Enable

PUC

Reset

ACLKXTS_FLL

DCOPLUS

FLL_DIVx

FLLDx

ACLK/n

CPUOFF

10M

fCrystal

SMCLK

XIN

XOUT

fDCO

+

fDCO/D

/(N+1)

0

1

1

0

Divider/1/2/4/8

Divider/1/2/4/8

4

LFXT1 Oscillator

LF XT

0 V

LFOff

XT1Off

0 V

fDCOCLK

XCAPxPF

MCLK to CPU

MCLK to Peripherals

Page 292: MSP430 - general.pdf

5-6 FLL+ Clock Module

Figure 5−3.MSP430x47x3/4 and MSP430F471xx Frequency-Locked Loop

10−bitFrequencyIntegrator

DCO+

Modulator

DCGenerator

OSCOFF

FNxSCG1

off

SCG0

Enable

PUC

Reset

ACLK

MCLK

XTS_FLL

DCOPLUS

FLL_DIVx

FLLDx

ACLK/n

CPUOFF

XT20FF

SELS

SELMx

10M

fCrystal

SMCLK

SMCLKOFF

XIN

XOUT

XT2IN

XT2OUT XT2 Oscillator

fDCO

+

fDCO/D

/(N+1)

0

1

1

0

1

0

1

0

00

01

10

11

00

01

10

11

Divider/1/2/4/8

Divider/1/2/4/8

4

LFXT1 Oscillator

LF XT

0 V

LFOff

XT1Off

0 V

fDCOCLK

XCAPxPF

(supporting upto 16MHz)

XT2Sx

Page 293: MSP430 - general.pdf

5-7FLL+ Clock Module

Figure 5−4.MSP430x41x2 Frequency-Locked Loop

Page 294: MSP430 - general.pdf

FLL+ Clock Module Operation

5-8 FLL+ Clock Module

5.2 FLL+ Clock Module Operation

After a PUC, MCLK and SMCLK are sourced from DCOCLK at 32 times theACLK frequency. When a 32768-Hz crystal is used for ACLK, MCLK andSMCLK stabilize to 1.048576 MHz.

Status register control bits SCG0, SCG1, OSCOFF, and CPUOFF configurethe MSP430 operating modes and enable or disable components of the FLL+clock module. See Chapter System Resets, Interrupts and Operating Modes.The SCFQCTL, SCFI0, SCFI1, FLL_CTL0, and FLL_CTL1 registers configurethe FLL+ clock module. The FLL+ can be configured or reconfigured bysoftware at any time during program execution.

Example, MCLK = 64 × ACLK = 2097152

BIC #GIE,SR ; Disable interrupts

MOV.B #(64−1),&SCFQTL ; MCLK = 64 * ACLK, DCOPLUS=0

MOV.B #FN_2,&SCFIO ; Select DCO range

BIS #GIE,SR ; Enable interrupts

5.2.1 FLL+ Clock features for Low-Power Applications

Conflicting requirements typically exist in battery-powered MSP430x4xxapplications:

Low clock frequency for energy conservation and time keeping

High clock frequency for fast reaction to events and fast burst processingcapability

Clock stability over operating temperature and supply voltage

The FLL+ clock module addresses the above conflicting requirements byallowing the user to select from the three available clock signals: ACLK, MCLK,and SMCLK. For optimal low-power performance, the ACLK can beconfigured to oscillate with a low-power 32786-Hz watch-crystal, providing astable time base for the system and low-power standby operation. The MCLKcan be configured to operate from the on-chip DCO, stabilized by the FLL, andcan activate when requested by interrupt events.

The digital frequency-locked loop provides decreased start-time andstabilization delay over an analog phase-locked loop. A phase-locked looptakes hundreds or thousands of clock cycles to start and stabilize. The FLLstarts immediately at its previous setting.

Page 295: MSP430 - general.pdf

FLL+ Clock Module Operation

5-9FLL+ Clock Module

5.2.2 Internal Very Low-Power, Low-Frequency Oscillator

The internal very low-power, low-frequency oscillator (VLO) provides a typicalfrequency of 12kHz (see device-specific data sheet for parameters) withoutrequiring a crystal. VLOCLK source is selected by setting LFXT1Sx = 10 whenXTS_FLL = 0. The OSCOFF bit disables the VLO for LPM4. The LFXT1 crystaloscillators are disabled when the VLO is selected reducing currentconsumption. The VLO consumes no power when not being used.

5.2.3 LFXT1 Oscillator

The LFXT1 oscillator supports ultralow-current consumption using a32,768-Hz watch crystal in LF mode (XTS_FLL = 0). A watch crystal connectsto XIN and XOUT without any external components.

The LFXT1 oscillator supports high-speed crystals or resonators when in HFmode (XTS_FLL = 1). The high-speed crystal or resonator connects to XINand XOUT.

LFXT1 may be used with an external clock signal on the XIN pin whenXTS_FLL = 1. The input frequency range is ~1 Hz to 8 MHz. When the inputfrequency is below 450 kHz, the XT1OF bit may be set to prevent the CPU frombeing clocked from the external frequency.

The software-selectable XCAPxPF bits configure the internally provided loadcapacitance for the LFXT1 crystal. The internal pin capacitance plus theparasitic 2-pF pin capacitance combine serially to form the load capacitance.The load capacitance can be selected as 1, 6, 8, or 10 pF. Additional externalcapacitors can be added if necessary.

Software can disable LFXT1 by setting OSCOFF if this signal does not sourceMCLK (SELM ≠ 3 or CPUOFF = 1 ).

Note: LFXT1 Oscillator Characteristics

Low-frequency crystals often require hundreds of milliseconds to start up,depending on the crystal.

Ultralow-power oscillators such as the LFXT1 in LF mode should be guardedfrom noise coupling from other sources. The crystal should be placed asclose as possible to the MSP430 with the crystal housing grounded and thecrystal traces guarded with ground traces.

The default value of XCAPxPF is 0, providing a crystal load capacitance of~1 pF. Reliable crystal operation may not be achieved unless the crystal isprovided with the proper load capacitance, either by selection of XCAPxPFvalues or by external capacitors.

Page 296: MSP430 - general.pdf

FLL+ Clock Module Operation

5-10 FLL+ Clock Module

5.2.4 XT2 Oscillator

Some devices have a second crystal oscillator, XT2. XT2 sources XT2CLKand its characteristics are identical to LFXT1 in HF mode, except XT2 does nothave internal load capacitors. The required load capacitance for thehigh-frequency crystal or resonator must be provided externally.

The XT2OFF bit disables the XT2 oscillator if XT2CLK is unused for MCLK(SELMx ≠ 2 or CPUOFF = 1) and SMCLK (SELS = 0 or SMCLKOFF = 1).

XT2 may be used with external clock signals on the XT2IN pin. When used withan external signal, the external frequency must meet the data sheetparameters for XT2.

If there is only one crystal in the system it should be connected to LFXT1. Usingonly XT2 causes the LFOF fault flag to remain set, not allowing for the OFIFGto ever be cleared.

XT2 Oscillator in MSP430x47x3/4 and MSP430F471xx Devices

The MSP430x47x3/4 and MSP430F471xx devices have a second crystaloscillator (XT2) that supports crystals up to 16 MHz. XT2 sources XT2CLK.The XT2Sx bits select the range of operation of XT2. The XT2OFF bit disablesthe XT2 oscillator, if XT2CLK is not used for MCLK or SMCLK as describedabove.

XT2 may be used with external clock signals on the XT2IN pin whenXT2Sx = 11. When used with an external signal, the external frequency mustmeet the data sheet parameters for XT2. When the input frequency is belowthe specified lower limit, the XT2OF bit may be set to prevent the CPU frombeing clocked with XT2CLK.

If there is only one crystal with a frequency below 8 MHz in the system, it shouldbe connected to LFXT1. Using only XT2 causes the LFOF fault flag to remainset, not allowing for the OFIFG to ever be cleared.

Page 297: MSP430 - general.pdf

FLL+ Clock Module Operation

5-11FLL+ Clock Module

5.2.5 Digitally Controlled Oscillator (DCO)

The DCO is an integrated ring oscillator with RC-type characteristics. TheDCO frequency is stabilized by the FLL to a multiple of ACLK as defined byN, the lowest 7 bits of the SCFQCTL register.

The DCOPLUS bit sets the fDCOCLK frequency to fDCO or fDCO/D. The FLLDxbits configure the divider, D, to 1, 2, 4, or 8. By default, DCOPLUS = 0 andD = 2, providing a clock frequency of fDCO/2 on fDCOCLK.

The multiplier (N+1) and D set the frequency of DCOCLK.

DCOPLUS = 0: fDCOCLK = (N + 1) x fACLKDCOPLUS = 1: fDCOCLK = D x (N + 1) x fACLK

DCO Frequency Range

The frequency range of fDCO is selected with the FNx bits as listed inTable 5−1. The range control allows the DCO to operate near the center of theavailable taps for a given DCOCLK frequency. The user must ensure thatMCLK does not exceed the maximum operating frequency. See thedevice-specific data sheet for parameters.

Table 5−1.DCO Range Control Bits

FN_8 FN_4 FN_3 FN_2 Typical fDCO Range

0 0 0 0 0.65 to 6.1

0 0 0 1 1.3 to 12.1

0 0 1 X 2 to 17.9

0 1 X X 2.8 to 26.6

1 X X X 4.2 to 46

5.2.6 Frequency Locked Loop (FLL)

The FLL continuously counts up or down a 10-bit frequency integrator. Theoutput of the frequency integrator that drives the DCO can be read in SCFI1and SCFI0. The count is adjusted +1 or −1 with each ACLK crystal period.

Five of the integrator bits, SCFI1 bits 7−3, set the DCO frequency tap.Twenty-nine taps are implemented for the DCO (28, 29, 30, and 31 areequivalent), and each is approximately 10% higher than the previous. Themodulator mixes two adjacent DCO frequencies to produce fractional taps.SCFI1 bits 2−0 and SCFI0 bits 1−0 are used for the modulator.

The DCO starts at the lowest tap after a PUC or when SCFI0 and SCFI1 arecleared. Time must be allowed for the DCO to settle on the proper tap fornormal operation. 32 ACLK cycles are required between taps requiring a worstcase of 28 x 32 ACLK cycles for the DCO to settle.

Page 298: MSP430 - general.pdf

FLL+ Clock Module Operation

5-12 FLL+ Clock Module

5.2.7 DCO Modulator

The modulator mixes two adjacent DCO frequencies to produce anintermediate effective frequency and spread the clock energy, reducingelectromagnetic interference (EMI). The modulator mixes the two adjacentfrequencies across 32 DCOCLK clock cycles.

The error of the effective frequency is zero every 32 DCOCLK cycles and doesnot accumulate. The modulator settings and DCO control are automaticallycontrolled by the FLL hardware. Figure 5−5 illustrates the modulatoroperation.

Figure 5−5.Modulator Patterns

Lower DCO Tap Frequency fDCO

31

24

16

15

5

4

3

2

1

0

Upper DCO Tap Frequency fDCO+1

One ACLK Cycle

f(DCOCLK) Cycles, Shown for f(DCOCLK)=f(ACLK) × 32

NDCOmod

Page 299: MSP430 - general.pdf

FLL Operation from Low-Power Modes

5-13FLL+ Clock Module

5.2.8 Disabling the FLL Hardware and Modulator

The FLL is disabled when the status register bit SCG0 = 1. When the FLL isdisabled, the DCO runs at the previously selected tap and DCOCLK is notautomatically stabilized.

The DCO modulator is disabled when SCFQ_M = 1. When the DCO modulatoris disabled, the DCOCLK is adjusted to the nearest of the available DCO taps.

5.2.9 FLL Operation from Low-Power Modes

An interrupt service request clears SCG1, CPUOFF, and OSCOFF if set butdoes not clear SCG0. This means that FLL operation from within an interruptservice routine entered from LPM1, 2, 3, or 4, the FLL remains disabled andthe DCO operates at the previous setting as defined in SCFI0 and SCFI1.SCG0 can be cleared by user software if FLL operation is required.

5.2.10 Buffered Clock Output

ACLK may be divided by 1, 2, 4, or 8 and buffered out of the device on P1.5.The division rate is selected with the FLL_DIV bits.

The ACLK output is multiplexed with other pin functions. When multiplexed,the pin must be configured for the ACLK output.

BIS.B #BIT5,&P1SEL ; Select ACLK/n signal as

; output for port P1.5

BIS.B #BIT5,&P1DIR ; Select port P1.5 to ACLK/n

; signal for output

Page 300: MSP430 - general.pdf

Buffered Clock Output

5-14 FLL+ Clock Module

5.2.11 FLL+ Fail-Safe Operation

The FLL+ module incorporates an oscillator-fault fail-safe feature. This featuredetects an oscillator fault for LFXT1, DCO and XT2 as shown in Figure 5−6.The available fault conditions are:

Low-frequency oscillator fault (LFOF) for LFXT1 in LF mode

High-frequency oscillator fault (XT1OF) for LFXT1 in HF mode

High-frequency oscillator fault (XT2OF) for XT2

DCO fault flag (DCOF) for the DCO

The crystal oscillator fault bits LFOF, XT1OF and XT2OF are set if thecorresponding crystal oscillator is turned on and not operating properly. Thefault bits remain set as long as the fault condition exists and are automaticallycleared if the enabled oscillators function normally. During a LFXT1crystalfailure, no ACLK signal is generated and the FLL+ continues to count down tozero in an attempt to lock ACLK and MCLK/(D×[N+1]). The DCO tap movesto the lowest position (SCFI1.7 to SCFI1.3 are cleared) and the DCOF is set.A DCOF is also generated if the N-multiplier value is set too high for theselected DCO frequency range resulting the DCO tap to move to the highestposition (SCFI1.7 to SCFI1.3 are set). The DCOF is cleared automatically ifthe DCO tap is not in the lowest or the highest positions.

The OFIFG oscillator-fault interrupt flag is set and latched at POR or when anoscillator fault (LFOF, XT1OF, XT2OF, or DCOF set) is detected. When OFIFGis set, MCLK is sourced from the DCO, and if OFIE is set, the OFIFG requestsan NMI interrupt. When the interrupt is granted, the OFIE is resetautomatically. The OFIFG flag must be cleared by software. The source of thefault can be identified by checking the individual fault bits.

When OFIFG is set and MCLK is automatically switched to the DCO, theSELMx bit settings are not changed. This condition must be handled by usersoftware.

Note: DCO Active During Oscillator Fault

DCOCLK is active even at the lowest DCO tap. The clock signal is availablefor the CPU to execute code and service an NMI during an oscillator fault.

Figure 5−6.Oscillator Fault Logic

DCO Fault

LF_OscFault

XT1_OscFault

XT2_OscFault

XTS_FLLLFOF

XT1OF

DCOF

XT2OF

Set OFIFG Flag

Oscillator Fault

Page 301: MSP430 - general.pdf

FLL+ Clock Module Registers

5-15FLL+ Clock Module

5.3 FLL+ Clock Module Registers

The FLL+ registers are listed in Table 5−2.

Table 5−2.FLL+ Registers

Register Short Form Register Type Address Initial State

System clock control SCFQCTL Read/write 052h 01Fh with PUC

System clock frequency integrator 0 SCFI0 Read/write 050h 040h with PUC

System clock frequency integrator 1 SCFI1 Read/write 051h Reset with PUC

FLL+ control register 0 FLL_CTL0 Read/write 053h 003h with PUC

FLL+ control register 1 FLL_CTL1 Read/write 054h Reset with PUC

FLL+ control register 2† FLL_CTL2 Read/write 055h Reset with PUC

SFR interrupt enable register 1 IE1 Read/write 000h Reset with PUC

SFR interrupt flag register 1 IFG1 Read/write 002h Reset with PUC† MSP430F41x2, MSP430F47x3/4, and MSP430F471xx devices only.

Page 302: MSP430 - general.pdf

FLL+ Clock Module Registers

5-16 FLL+ Clock Module

SCFQCTL, System Clock Control Register

7 6 5 4 3 2 1 0

SCFQ_M N

rw−0 rw−0 rw−0 rw−1 rw−1 rw−1 rw−1 rw−1

SCFQ_M Bit 7 Modulation. This enables or disables modulation.0 Modulation enabled1 Modulation disabled

N Bits6-0

Multiplier. These bits set the multiplier value for the DCO. N must be > 0 orunpredictable operation results.When DCOPLUS = 0: fDCOCLK = (N + 1) ⋅ fcrystalWhen DCOPLUS = 1: fDCOCLK = D x (N + 1) ⋅ fcrystal

SCFI0, System Clock Frequency Integrator Register 0

7 6 5 4 3 2 1 0

FLLDx FN_x MODx (LSBs)

rw−0 rw−1 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

FLLDx Bits7-6

FLL+ loop divider. These bits divide fDCOCLK in the FLL+ feedback loop.This results in an additional multiplier for the multiplier bits. See alsomultiplier bits.00 /101 /210 /411 /8

FN_x Bits5-2

DCO range control. These bits select the fDCO operating range.0000 0.65 to 6.1 MHz0001 1.3 to 12.1 MHz001x 2 to 17.9 MHz01xx 2.8 to 26.6 MHz1xxx 4.2 to 46 MHz

MODx Bits1−0

Least significant modulator bits. Bit 0 is the modulator LSB. These bitsaffect the modulator pattern. All MODx bits are modified automatically bythe FLL+.

Page 303: MSP430 - general.pdf

FLL+ Clock Module Registers

5-17FLL+ Clock Module

SCFI1, System Clock Frequency Integrator Register 1

7 6 5 4 3 2 1 0

DCOx MODx (MSBs)

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

DCOx Bits7-3

These bits select the DCO tap and are modified automatically by the FLL+.

MODx Bit 2 Most significant modulator bits. Bit 2 is the modulator MSB. These bitsaffect the modulator pattern. All MODx bits are modified automatically bythe FLL+.

Page 304: MSP430 - general.pdf

FLL+ Clock Module Registers

5-18 FLL+ Clock Module

FLL_CTL0, FLL+ Control Register 0

7 6 5 4 3 2 1 0

DCOPLUS XTS_FLL XCAPxPF XT2OF† XT1OF LFOF DCOF

rw−0 rw−0 rw−0 rw−0 r−0 r−0 r−(1) r−1† Not present in MSP430x41x, MSP430x42x devices

DCOPLUS Bit 7 DCO output pre-divider. This bit selects if the DCO output is pre-dividedbefore sourcing MCLK or SMCLK. The division rate is selected with theFLL_D bits0 DCO output is divided1 DCO output is not divided

XTS_FLL Bit 6 LFTX1 mode select0 Low frequency mode1 High frequency mode

XCAPxPF Bits5−4

Oscillator capacitor selection. These bits select the effective capacitanceseen by the LFXT1 crystal or resonator. Should be set to 00 if thehigh-frequency mode is selected for LFXT1 with XTS_FLL = 1.00 ~1 pF01 ~6 pF10 ~8 pF11 ~10 pF

XT2OF Bit 3 XT2 oscillator fault. Not present in MSP430x41x, and MSP430x42xdevices.0 No fault condition present1 Fault condition present

XT1OF Bit 2 LFXT1 high-frequency oscillator fault0 No fault condition present1 Fault condition present

LFOF Bit 1 LFXT1 low-frequency oscillator fault0 No fault condition present1 Fault condition present

DCOF Bit 0 DCO oscillator fault0 No fault condition present1 Fault condition present

Page 305: MSP430 - general.pdf

FLL+ Clock Module Registers

5-19FLL+ Clock Module

FLL_CTL1, FLL+ Control Register 1

7 6 5 4 3 2 1 0

LFXT1DIG‡ SMCLKOFF† XT2OFF† SELMx† SELS† FLL_DIVx

rw−0 rw−0 rw−(1) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)† Not present in MSP430x41x, MSP430x42x devices except MSP430F41x2.‡ Only supported by MSP430xG46x, MSP430FG47x, MSP430F47x, MSP430x47x3/4, and MSP430F471xx devices. Otherwise

unused.

LFXT1DIG Bit 7 Select digital external clock source. This bit enables the input of anexternal digital clock signal on XIN in low-frequency mode (XTS_FLL = 0).Only supported in MSP430xG46x, MSP430FG47x, MSP430F47x,MSP430x47x3/4, and MSP430F471xx devices.0 Crystal input selected1 Digital clock input selected

SMCLKOFF Bit 6 SMCLK off. This bit turns off SMCLK. Not present in MSP430x41x andMSPx42x devices.0 SMCLK is on1 SMCLK is off

XT2OFF Bit 5 XT2 off. This bit turns off the XT2 oscillator. Not present in MSP430x41xand MSPx42x devices.0 XT2 is on1 XT2 is off if it is not used for MCLK or SMCLK

SELMx Bits4−3

Select MCLK. These bits select the MCLK source. Not present inMSP430x41x and MSP430x42x devices except MSP430F41x2.00 DCOCLK01 DCOCLK10 XT2CLK11 LFXT1CLKIn the MSP430F41x2 devices:00 DCOCLK01 DCOCLK10 LFXT1CLK or VLO11 LFXT1CLK or VLO

SELS Bit 2 Select SMCLK. This bit selects the SMCLK source. Not present inMSP430x41x and MSP430x42x devices.0 DCOCLK1 XT2CLK

FLL_DIVx Bits1−0

ACLK divider00 /101 /210 /411 /8

Page 306: MSP430 - general.pdf

FLL+ Clock Module Registers

5-20 FLL+ Clock Module

FLL_CTL2, FLL+ Control Register 2(MSP430x47x3/4, and MSP430F471xx devices only)

7 6 5 4 3 2 1 0

XT2Sx Reserved

rw−0 rw−0 r0 r0 r0 r0 r0 r0

XT2Sx Bits7-6

XT2 range select. These bits select the frequency range for XT2.00 0.4 to 1-MHz crystal or resonator01 1 to 3-MHz crystal or resonator10 3 to 16-MHz crystal or resonator11 Digital external 0.4 to 16-MHz clock source

Reserved Bits5-0

Reserved.

FLL_CTL2, FLL+ Control Register 2(MSP430F41x2 devices only)

7 6 5 4 3 2 1 0

Reserved LFXT1Sx Reserved

r0 r0 rw−0 rw−0 r0 r0 r0 r0

Reserved Bits7-6

Reserved.

LFXT1Sx Bits5−4

Low−frequency clock select and LFXT1 range select. These bits selectbetween LFXT1 and VLO when XTS_FLL = 0.When XTS_FLL = 0:00 32768-Hz crystal on LFXT101 Reserved10 VLOCLK11 Digital external clock sourceWhen XTS_FLL = 1:00 Reserved01 Reserved10 Reserved11 Reserved

Reserved Bits3-0

Reserved.

Page 307: MSP430 - general.pdf

FLL+ Clock Module Registers

5-21FLL+ Clock Module

IE1, Interrupt Enable Register 1

7 6 5 4 3 2 1 0

OFIE

rw−0

Bits7-2

These bits may be used by other modules. See device-specific data sheet.

OFIE Bit 1 Oscillator fault interrupt enable. This bit enables the OFIFG interrupt.Because other bits in IE1 may be used for other modules, it is recommendedto set or clear this bit using BIS.B or BIC.B instructions, rather than MOV.Bor CLR.B instructions.0 Interrupt not enabled1 Interrupt enabled

Bits 0 This bit may be used by other modules. See device-specific data sheet.

Page 308: MSP430 - general.pdf

FLL+ Clock Module Registers

5-22 FLL+ Clock Module

IFG1, Interrupt Flag Register 1

7 6 5 4 3 2 1 0

OFIFG

rw−0

Bits7-2

These bits may be used by other modules. See device-specific data sheet.

OFIFG Bit 1 Oscillator fault interrupt flag. Because other bits in IFG1 may be used for othermodules, it is recommended to set or clear this bit using BIS.B or BIC.Binstructions, rather than MOV.B or CLR.B instructions.0 No interrupt pending1 Interrupt pending

Bits 0 This bit may be used by other modules. See device-specific data sheet.

Page 309: MSP430 - general.pdf

6-1Flash Memory Controller

Flash Memory Controller

This chapter describes the operation of the MSP430 flash memory controller.

Topic Page

6.1 Flash Memory Introduction 6-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2 Flash Memory Segmentation 6-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.3 Flash Memory Operation 6-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.4 Flash Memory Registers 6-21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 6

Page 310: MSP430 - general.pdf

Flash Memory Introduction

6-2 Flash Memory Controller

6.1 Flash Memory Introduction

The MSP430 flash memory is bit-, byte-, and word-addressable andprogrammable. The flash memory module has an integrated controller thatcontrols programming and erase operations. The controller has three or fourregisters (see the device-specific data sheet), a timing generator, and avoltage generator to supply program and erase voltages.

MSP430 flash memory features include:

Internal programming voltage generation

Bit, byte, or word programmable

Ultralow-power operation

Segment erase and mass erase

Marginal 0 and marginal 1 read mode (implemented in MSP430FG47x,MSP430F47x, MSP430F47x3/4, and MSP430F471xx devices only (seethe device-specific data sheet).

The block diagram of the flash memory and controller is shown in Figure 6−1.

Note: Minimum VCC During Flash Write or Erase

The minimum VCC voltage during a flash write or erase operation is between2.2 V and 2.7 V (see the device-specific data sheet). If VCC falls below theminimum VCC during a write or erase, the result of the write or erase isunpredictable.

Page 311: MSP430 - general.pdf

Flash Memory Introduction

6-3Flash Memory Controller

Figure 6−1.Flash Memory Module Block Diagram

Enable

Data Latch

Enable

Address

Latch

Address Latch

Data Latch

MABMDB

FCTL1

FCTL2

FCTL3

TimingGenerator

ProgrammingVoltage

Generator

FlashMemoryArray 1

FlashMemoryArray 2†

† MSP430FG461x devices only

Page 312: MSP430 - general.pdf

Flash Memory Segmentation

6-4 Flash Memory Controller

6.2 Flash Memory Segmentation

MSP430FG461x devices have two flash memory arrays. Other MSP430x4xxdevices have one flash array. All flash memory is partitioned into segments.Single bits, bytes, or words can be written to flash memory, but the segmentis the smallest size of flash memory that can be erased.

The flash memory is partitioned into main and information memory sections.There is no difference in the operation of the main and information memorysections. Code or data can be located in either section. The differencesbetween the two sections are the segment size and the physical addresses.

The information memory has four 64-byte segments on the MSP430FG47x,MSP430F47x, MSP430F47x3/4, and MSP430F471xx devices or two128-byte segments on all other MSP430x4xx devices. The main memory hastwo or more 512-byte segments. See the device-specific data sheet for thecomplete memory map of a device.

The segments are further divided into blocks.

Figure 6−2 shows the flash segmentation using an example of 4-KB flash thathas eight main segments and two information segments.

Figure 6−2.Flash Memory Segments, 4-KB Example

FFFFh

F000h

10FFh

1000h

Segment0

Segment1

Segment2

Segment3

Segment4

Segment5

Segment6

Segment7

SegmentA

SegmentB

FFFFh

F000h

10FFh

1000h

FE00h

FDFFh

FC00h

256-byteFlash

Information Memory

4-kbyteFlash

Main Memory

4 KB + 256 byte

xx3Fh

xx00h

Block

Block

Block

Block

xxFFh

xxBFh

xx7Fh

xxC0h

xx80h

xx40h

Page 313: MSP430 - general.pdf

Flash Memory Segmentation

6-5Flash Memory Controller

6.2.1 SegmentA on MSP430FG47x, MSP430F47x, MSP430F47x3/4, andMSP430F471xx Devices

On MSP430FG47x, MSP430F47x, MSP430F47x3/4, and MSP430F471xxdevices, SegmentA of the information memory is locked separately from allother segments with the LOCKA bit. When LOCKA = 1, SegmentA cannot bewritten or erased and all information memory is protected from erasure duringa mass erase or production programming. When LOCKA = 0, SegmentA canbe erased and written as any other flash memory segment, and all informationmemory is erased during a mass erase or production programming.

The state of the LOCKA bit is toggled when a 1 is written to it. Writing a 0 toLOCKA has no effect. This allows existing flash programming routines to beused unchanged.

; Unlock SegmentA

BIT #LOCKA,&FCTL3 ; Test LOCKA

JZ SEGA_UNLOCKED ; Already unlocked?

MOV #FWKEY+LOCKA,&FCTL3 ; No, unlock SegmentA

SEGA_UNLOCKED ; Yes, continue

; SegmentA is unlocked

; Lock SegmentA

BIT #LOCKA,&FCTL3 ; Test LOCKA

JNZ SEGALOCKED ; Already locked?

MOV #FWKEY+LOCKA,&FCTL3 ; No, lock SegmentA

SEGA_LOCKED ; Yes, continue

; SegmentA is locked

Page 314: MSP430 - general.pdf

Flash Memory Operation

6-6 Flash Memory Controller

6.3 Flash Memory Operation

The default mode of the flash memory is read mode. In read mode, the flashmemory is not being erased or written, the flash timing generator and voltagegenerator are off, and the memory operates identically to ROM.

MSP430 flash memory is in-system programmable (ISP) without the need foradditional external voltage. The CPU can program its own flash memory. Theflash memory write/erase modes are selected with the BLKWRT, WRT,GMERAS, MERAS, and ERASE bits and are:

Byte/word write

Block write

Segment erase

Mass erase (all main memory segments)

All erase (all segments)

Reading or writing to flash memory while it is being programmed or erased isprohibited. If CPU execution is required during the write or erase, the code tobe executed must be in RAM. Any flash update can be initiated from withinflash memory or RAM.

6.3.1 Flash Memory Timing Generator

Write and erase operations are controlled by the flash timing generator shownin Figure 6−3. The flash timing generator operating frequency, fFTG, must bein the range from ~ 257 kHz to ~ 476 kHz (see device-specific data sheet).

Figure 6−3.Flash Memory Timing Generator Block Diagram

FN5 FN0 PUC........... EMEX

Flash Timing GeneratorDivider, 1−64

BUSY WAIT

Resetf(FTG)

FSSELx

SMCLK

SMCLK

ACLK

MCLK

00

01

10

11

The flash timing generator can be sourced from ACLK, SMCLK, or MCLK. Theselected clock source should be divided using the FNx bits to meet thefrequency requirements for fFTG. If the fFTG frequency deviates from thespecification during the write or erase operation, the result of the write or erasemay be unpredictable, or the flash memory may be stressed above the limitsof reliable operation.

Page 315: MSP430 - general.pdf

Flash Memory Operation

6-7Flash Memory Controller

6.3.2 Erasing Flash Memory

The erased level of a flash memory bit is 1. Each bit can be programmed from1 to 0 individually but to reprogram from 0 to 1 requires an erase cycle. Thesmallest amount of flash that can be erased is a segment. Erase modes areselected with the GMERAS (MSP430FG461x devices), MERAS, and ERASEbits listed in Table 6−1, Table 6−2, and Table 6−3.

Table 6−1.MSP430FG461x Erase Modes

GMERAS MERAS ERASE Erase Mode

X 0 1 Segment erase

0 1 0 Mass erase (all main memory segments ofselected memory array)

0 1 1 Erase all flash memory (main andinformation segments of selected memoryarray)

1 1 0 Global mass erase (all main memorysegments of both memory arrays)

1 1 1 Erase main memory and informationsegments of both memory arrays

Table 6−2.MSP430FG47x, MSP430F47x, MSP430F47x3/4, and F471xx Erase Modes

MERAS ERASE Erase Mode

0 1 Segment erase

1 0 Mass erase (all main memory segments)

1 1 LOCKA = 0: Erase main and information flash memory.LOCKA = 1: Erase only main flash memory.

Table 6−3.Erase Modes

MERAS ERASE Erase Mode

0 1 Segment erase

1 0 Mass erase (all main memory segments)

1 1 Erase all flash memory (main and information segments)

Any erase is initiated by a dummy write into the address range to be erased.The dummy write starts the flash timing generator and the erase operation.Figure 6−4 shows the erase cycle timing. The BUSY bit is set immediately afterthe dummy write and remains set throughout the erase cycle. BUSY, GMERAS(when present), MERAS, and ERASE are automatically cleared when thecycle completes. The erase cycle timing is not dependent on the amount offlash memory present on a device. Erase cycle times are device-specific (seethe device-specific data sheet).

Page 316: MSP430 - general.pdf

Flash Memory Operation

6-8 Flash Memory Controller

Figure 6−4. Erase Cycle Timing

BUSY

Erase Operation Active

tMass Erase, tSeg Erase, or tGlobal Mass Erase (see device-specific data sheet)

Erase Time, VCC Current Consumption is Increased

Generate Programming Voltage

Remove Programming Voltage

A dummy write to an address not in the range to be erased does not start theerase cycle, does not affect the flash memory, and is not flagged in any way.This errant dummy write is ignored.

Page 317: MSP430 - general.pdf

Flash Memory Operation

6-9Flash Memory Controller

Initiating an Erase from Within Flash Memory

Any erase cycle can be initiated from within flash memory or from RAM. Whena flash segment erase operation is initiated from within flash memory, all timingis controlled by the flash controller, and the CPU is held while the erase cyclecompletes. After the erase cycle completes, the CPU resumes code executionwith the instruction following the dummy write.

When initiating an erase cycle from within flash memory, it is possible to erasethe code needed for execution after the erase. If this occurs, CPU executionis unpredictable after the erase cycle.

The flow to initiate an erase from flash is shown in Figure 6−5.

Figure 6−5.Erase Cycle from Within Flash Memory

Setup flash controller and erasemode

Disable watchdog

Set LOCK=1, re-enable watchdog

Dummy write

; Segment Erase from flash. 514 kHz < SMCLK < 952 kHz; Assumes ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDTMOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ; Clear LOCKMOV #FWKEY+ERASE,&FCTL1 ; Enable segment eraseCLR &0FC10h ; Dummy write, erase S1MOV #FWKEY+LOCK,&FCTL3 ; Done, set LOCK... ; Re-enable WDT?

Page 318: MSP430 - general.pdf

Flash Memory Operation

6-10 Flash Memory Controller

Initiating an Erase from RAM

Any erase cycle may be initiated from RAM. In this case, the CPU is not heldand can continue to execute code from RAM. The BUSY bit must be polled todetermine the end of the erase cycle before the CPU can access any flashaddress again. If a flash access occurs while BUSY = 1, it is an accessviolation, ACCVIFG is set, and the erase results are unpredictable.

The flow to initiate an erase from RAM is shown in Figure 6−6.

Figure 6−6.Erase Cycle from Within RAM

yesBUSY = 1

yesBUSY = 1

Disable watchdog

Setup flash controller anderase mode

Dummy write

Set LOCK = 1, re-enablewatchdog

; Segment Erase from RAM. 514 kHz < SMCLK < 952 kHz; Assumes ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDTL1 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L1 ; Loop while busy

MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ; Clear LOCKMOV #FWKEY+ERASE,&FCTL1 ; Enable erase

CLR &0FC10h ; Dummy write, erase S1L2 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L2 ; Loop while busy

MOV #FWKEY+LOCK,&FCTL3 ; Done, set LOCK

... ; Re-enable WDT?

Page 319: MSP430 - general.pdf

Flash Memory Operation

6-11Flash Memory Controller

6.3.3 Writing Flash Memory

The write modes, selected by the WRT and BLKWRT bits, are listed inTable 6−4.

Table 6−4.Write Modes

BLKWRT WRT Write Mode

0 1 Byte/word write

1 1 Block write

Both write modes use a sequence of individual write instructions, but using theblock write mode is approximately twice as fast as byte/word mode, becausethe voltage generator remains on for the complete block write. Any instructionthat modifies a destination can be used to modify a flash location in eitherbyte/word mode or block-write mode. A flash word (low + high byte) must notbe written more than twice between erasures. Otherwise, damage can occur.

The BUSY bit is set while a write operation is active and cleared when theoperation completes. If the write operation is initiated from RAM, the CPU mustnot access flash while BUSY = 1. Otherwise, an access violation occurs,ACCVIFG is set, and the flash write is unpredictable.

Byte/Word Write

A byte/word write operation can be initiated from within flash memory or fromRAM. When initiating from within flash memory, all timing is controlled by theflash controller, and the CPU is held while the write completes. After the writecompletes, the CPU resumes code execution with the instruction following thewrite. The byte/word write timing is shown in Figure 6−7.

Figure 6−7.Byte/Word Write Timing

ÎÎÎÎ

ÎÎ

BUSY

Programming Operation Active

Programming Time, VCC Current Consumption is Increased

tWord (see device-specific data sheet)

Generate Programming Voltage

Remove Programming Voltage

When a byte/word write is executed from RAM, the CPU continues to executecode from RAM. The BUSY bit must be zero before the CPU accesses flashagain, otherwise an access violation occurs, ACCVIFG is set, and the writeresult is unpredictable.

Page 320: MSP430 - general.pdf

Flash Memory Operation

6-12 Flash Memory Controller

In byte/word mode, the internally generated programming voltage is appliedto the complete 64-byte block each time a byte or word is written for tWORDminus threefFTG cycles. With each byte or word write, the amount of time theblock is subjected to the programming voltage accumulates. The cumulativeprogramming time, tCPT, must not be exceeded for any block. If the cumulativeprogramming time is met, the block must be erased before performing anyfurther writes to any address within the block. See the device-specific datasheet for specifications.

Initiating a Byte/Word Write from Within Flash Memory

The flow to initiate a byte/word write from flash is shown in Figure 6−8.

Figure 6−8. Initiating a Byte/Word Write from Flash

Setup flash controller and set WRT=1

Disable watchdog

Set WRT=0, LOCK=1,re-enable watchdog

Write byte or word

; Byte/word write from flash. 514 kHz < SMCLK < 952 kHz; Assumes 0FF1Eh is already erased; Assumes ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDTMOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ; Clear LOCKMOV #FWKEY+WRT,&FCTL1 ; Enable write

MOV #0123h,&0FF1Eh ; 0123h −> 0FF1Eh

MOV #FWKEY,&FCTL1 ; Done. Clear WRT

MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK

... ; Re-enable WDT?

Page 321: MSP430 - general.pdf

Flash Memory Operation

6-13Flash Memory Controller

Initiating a Byte/Word Write from RAM

The flow to initiate a byte/word write from RAM is shown in Figure 6−9.

Figure 6−9. Initiating a Byte/Word Write from RAM

yesBUSY = 1

yesBUSY = 1

Disable watchdog

Setup flash controllerand set WRT=1

Write byte or word

Set WRT=0, LOCK = 1re-enable watchdog

; Byte/word write from RAM. 514 kHz < SMCLK < 952 kHz

; Assumes 0FF1Eh is already erased

; Assumes ACCVIE = NMIIE = OFIE = 0.MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDT

L1 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L1 ; Loop while busy

MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2

MOV #FWKEY,&FCTL3 ; Clear LOCK

MOV #FWKEY+WRT,&FCTL1 ; Enable write

MOV #0123h,&0FF1Eh ; 0123h −> 0FF1Eh

L2 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L2 ; Loop while busy

MOV #FWKEY,&FCTL1 ; Clear WRT

MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK

... ; Re-enable WDT?

Page 322: MSP430 - general.pdf

Flash Memory Operation

6-14 Flash Memory Controller

Block Write

The block write can be used to accelerate the flash write process when manysequential bytes or words need to be programmed. The flash programmingvoltage remains on for the duration of writing the 64-byte block. Thecumulative programming time tCPT must not be exceeded for any block duringa block write.

A block write cannot be initiated from within flash memory. The block writemust be initiated from RAM only. The BUSY bit remains set throughout theduration of the block write. The WAIT bit must be checked between writingeach byte or word in the block. When WAIT is set the next byte or word of theblock can be written. When writing successive blocks, the BLKWRT bit mustbe cleared after the current block is complete. BLKWRT can be set initiatingthe next block write after the required flash recovery time given by tEnd. BUSYis cleared following each block write completion indicating the next block canbe written. Figure 6−10 shows the block write timing; see device-specific datasheet for specifications.

Figure 6−10. Block-Write Cycle Timing

BUSY

WAIT

Generate Programming Operation Active

tBlock, 0 tBlock 1-63

Write to Flash e.g., MOV #123h, &Flash

BLKWRT bit

tBlock, 1-63 tBlock,End

Cumulative Programming Time tCPT ∼=< 10ms, VCC Current Consumption is Increased

Programming VoltageRemove

Programming Voltage

Page 323: MSP430 - general.pdf

Flash Memory Operation

6-15Flash Memory Controller

Block Write Flow and Example

A block write flow is shown in Figure 6−11 and in the following example.

Figure 6−11. Block Write Flow

yesBUSY = 1

Disable watchdog

Setup flash controller

Set BLKWRT=WRT=1

Write byte or word

noBlock Border?

yesWAIT=0?

yesBUSY = 1

Set BLKWRT=0

yes AnotherBlock?

Set WRT=0, LOCK=1re-enable WDT

Page 324: MSP430 - general.pdf

Flash Memory Operation

6-16 Flash Memory Controller

; Write one block starting at 0F000h.

; Must be executed from RAM, Assumes Flash is already erased.

; 514 kHz < SMCLK < 952 kHz

; Assumes ACCVIE = NMIIE = OFIE = 0.MOV #32,R5 ; Use as write counterMOV #0F000h,R6 ; Write pointerMOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDT

L1 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L1 ; Loop while busy

MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2

MOV #FWKEY,&FCTL3 ; Clear LOCK

MOV #FWKEY+BLKWRT+WRT,&FCTL1 ; Enable block write

L2 MOV Write_Value,0(R6) ; Write location

L3 BIT #WAIT,&FCTL3 ; Test WAIT

JZ L3 ; Loop while WAIT=0

INCD R6 ; Point to next word

DEC R5 ; Decrement write counter

JNZ L2 ; End of block?

MOV #FWKEY,&FCTL1 ; Clear WRT,BLKWRT

L4 BIT #BUSY,&FCTL3 ; Test BUSY

JNZ L4 ; Loop while busy

MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK

... ; Re-enable WDT if needed

Page 325: MSP430 - general.pdf

Flash Memory Operation

6-17Flash Memory Controller

6.3.4 Flash Memory Access During Write or Erase

When any write or any erase operation is initiated from RAM and whileBUSY = 1, the CPU may not read or write to or from any flash location.Otherwise, an access violation occurs, ACCVIFG is set, and the result isunpredictable. Also if a write to flash is attempted with WRT = 0, the ACCVIFGinterrupt flag is set, and the flash memory is unaffected.

When a byte/word write or any erase operation is initiated from within flashmemory, the flash controller returns op-code 03FFFh to the CPU at the nextinstruction fetch. Op-code 03FFFh is the JMP PC instruction. This causes theCPU to loop until the flash operation is finished. When the operation is finishedand BUSY = 0, the flash controller allows the CPU to fetch the proper op-codeand program execution resumes.

The flash access conditions while BUSY=1 are listed in Table 6−5.

Table 6−5.Flash Access While BUSY = 1

FlashOperation

FlashAccess

WAIT Result

Read 0 ACCVIFG = 0. 03FFFh is the value read

Any erase orb / d i

Write 0 ACCVIFG = 1. Write is ignoredybyte/word write

Instructionfetch

0 ACCVIFG = 0. CPU fetches 03FFFh. Thisis the JMP PC instruction.

Any 0 ACCVIFG = 1, LOCK = 1

Read 1 ACCVIFG = 0, 03FFFh is the value read

Block write Write 1 ACCVIFG = 0, Flash is written

Instructionfetch

1 ACCVIFG = 1, LOCK = 1

Interrupts are automatically disabled during any flash operation on F47x3/4and F471xx devices when EEI = 0 and EEIEX = 0 and on all other deviceswhere EEI and EEIEX are not present. After the flash operation hascompleted, interrupts are automatically re-enabled. Any interrupt thatoccurred during the operation will have its associated flag set and will generatean interrupt request when re-enabled.

On F47x3/4 and F471xx devices when EEIEX = 1 and GIE = 1, an interruptwill immediately abort any flash operation and the FAIL flag will be set. WhenEEI = 1, GIE = 1, and EEIEX = 0, a segment erase will be interrupted by apending interrupt every 32 fFTG cycles. After servicing the interrupt, thesegment erase is continued for at least 32 fFTG cycles or until it is complete.During the servicing of the interrupt, the BUSY bit remains set, but the flashmemory can be accessed by the CPU without causing an access violation.Nested interrupts are not supported, because the RETI instruction is decodedto detect the return from interrupt.

The watchdog timer (in watchdog mode) should be disabled before a flasherase cycle. A reset aborts the erase and the result is unpredictable. After theerase cycle has completed, the watchdog may be re-enabled.

Page 326: MSP430 - general.pdf

Flash Memory Operation

6-18 Flash Memory Controller

6.3.5 Stopping a Write or Erase Cycle

Any write or erase operation can be stopped before its normal completion bysetting the emergency exit bit EMEX. Setting the EMEX bit stops the activeoperation immediately and stops the flash controller. All flash operationscease, the flash returns to read mode, and all bits in the FCTL1 register arereset. The result of the intended operation is unpredictable.

6.3.6 Marginal Read Mode

The marginal read mode can be used to verify the integrity of the flash memorycontents. This feature is implemented in MSP430FG47x, MSP430F47x,MSP430F47x3/4, and MSP430F471xx devices; see the device-specific datasheet for availability. During marginal read mode, the presence of aninsufficiently programmed flash memory bit location can be detected. Eventsthat could produce this situation include improper fFTG settings, violation ofminimum VCC during erase/program operations, and data retentionend-of-life. One method for identifying such memory locations would be toperiodically perform a checksum calculation over a section of flash memory(for example, a flash segment) and then to repeat this procedure with themarginal read mode enabled. If they do not match, it could indicate aninsufficiently programmed flash memory location. It is possible to refresh theaffected flash memory segment by disabling marginal read mode, copying toRAM, erasing the flash segment, and copying back from RAM to flash.

The program checking the flash memory contents must be executed fromRAM. Executing code from flash automatically disables the marginal readmode. The marginal read modes are controlled by the MRG0 and MRG1 bits.Setting MRG1 is used to detect insufficiently programmed flash cellscontaining a “1“ (erased bits). Setting MRG0 is used to detect insufficientlyprogrammed flash cells containing a “0“ (programmed bits). Only one of thesebits should be set at a time. Therefore, a full marginal read check requires twopasses of checking the flash memory content’s integrity. During marginal readmode, the flash access speed must be limited to 1 MHz (see device-specificdata sheet).

6.3.7 Configuring and Accessing the Flash Memory ControllerThe FCTLx registers are 16-bit password-protected read/write registers. Anyread or write access must use word instructions and write accesses mustinclude the write password 0A5h in the upper byte. Any write to any FCTLxregister with any value other than 0A5h in the upper byte is a security keyviolation, sets the KEYV flag, and triggers a PUC system reset. Any read of anyFCTLx registers reads 096h in the upper byte.

Any write to FCTL1 during an erase or byte/word write operation is an accessviolation and sets ACCVIFG. Writing to FCTL1 is allowed in block write modewhen WAIT = 1, but writing to FCTL1 in block write mode when WAIT = 0 isan access violation and sets ACCVIFG.

Any write to FCTL2 when the BUSY = 1 is an access violation.

Any FCTLx register may be read when BUSY = 1. A read does not cause anaccess violation.

Page 327: MSP430 - general.pdf

Flash Memory Operation

6-19Flash Memory Controller

6.3.8 Flash Memory Controller Interrupts

The flash controller has two interrupt sources, KEYV and ACCVIFG.ACCVIFG is set when an access violation occurs. When the ACCVIE bit isre-enabled after a flash write or erase, a set ACCVIFG flag generates aninterrupt request. ACCVIFG sources the NMI interrupt vector, so it is notnecessary for GIE to be set for ACCVIFG to request an interrupt. ACCVIFGmay also be checked by software to determine if an access violation occurred.ACCVIFG must be reset by software.

The key violation flag KEYV is set when any of the flash control registers arewritten with an incorrect password. When this occurs, a PUC is generated,immediately resetting the device.

6.3.9 Programming Flash Memory Devices

There are three options for programming an MSP430 flash device. All optionssupport in-system programming:

Program via JTAG

Program via the bootstrap loader

Program via a custom solution

Programming Flash Memory via JTAG

MSP430 devices can be programmed via the JTAG port. The JTAG interfacerequires four signals, ground, and optionally VCC and RST/NMI.

The JTAG port is protected with a fuse. Blowing the fuse completely disablesthe JTAG port and is not reversible. Further access to the device via JTAG isnot possible For more details see the application report Programming aFlash-Based MSP430 Using the JTAG Interface (SLAA149) atwww.ti.com/msp430.

Programming Flash Memory via the Bootstrap Loader (BSL)

Every MSP430 flash device contains a bootstrap loader. The BSL enablesusers to read or program the flash memory or RAM using a UART serialinterface. Access to the MSP430 flash memory via the BSL is protected by a256-bit, user-defined password. For more details see the application reportFeatures of the MSP430 Bootstrap Loader (SLAA089) atwww.ti.com/msp430.

Page 328: MSP430 - general.pdf

Flash Memory Operation

6-20 Flash Memory Controller

Programming Flash Memory via a Custom Solution

The ability of the MSP430 CPU to write to its own flash memory allows forin-system and external custom programming solutions as shown inFigure 6−12. The user can choose to provide data to the MSP430 through anymeans available (UART, SPI, etc.). User-developed software can receive thedata and program the flash memory. Because this type of solution is developedby the user, it can be completely customized to fit the application needs forprogramming, erasing, or updating the flash memory.

Figure 6−12. User-Developed Programming Solution

Host

Flash Memory

UART,Px.x,SPI,etc.

CPU executesuser software

Commands, data, etc.

Read/write flash memory

MSP430

Page 329: MSP430 - general.pdf

Flash Memory Registers

6-21Flash Memory Controller

6.4 Flash Memory Registers

The flash memory registers are listed in Table 6−6.

Table 6−6.Flash Memory Registers

Register Short Form Register Type Address Initial State

Flash memory control register 1 FCTL1 Read/write 0128h 09600h with PUC

Flash memory control register 2 FCTL2 Read/write 012Ah 09642h with PUC

Flash memory control register 3 FCTL3 Read/write 012Ch 09618h† with PUC

Flash memory control register 4‡ FCTL4 Read/write 01BEh 0000h with PUC

Interrupt enable 1 IE1 Read/write 000h Reset with PUC

† 09658h in MSP430FG47x, MSP430F47x, MSP430F47x3/4, and MSP430F471xx devices‡ MSP430FG47x, MSP430F47x, MSP430F47x3/4, and MSP430F471xx devices only

Page 330: MSP430 - general.pdf

Flash Memory Registers

6-22 Flash Memory Controller

FCTL1, Flash Memory Control Register

15 14 13 12 11 10 9 8

FRKEY, Read as 096hFWKEY, Must be written as 0A5h

7 6 5 4 3 2 1 0

BLKWRT WRT Reserved EEIEX‡ GMERAS†

EEI‡ MERAS ERASE Reserved

rw−0 rw−0 r0 r0 rw-0 rw−0 rw−0 r0

† MSP430FG461x devices only. Reserved with r0 access on all other devices.‡ F47x3/4 and F471xx devices only. Reserved with r0 access on all other devices.

FRKEY/FWKEY

Bits15-8

FCTLx password. Always read as 096h. Must be written as 0A5h or a PUCis generated.

BLKWRT Bit 7 Block write mode. WRT must also be set for block write mode. BLKWRT isautomatically reset when EMEX is set.0 Block-write mode is off1 Block-write mode is on

WRT Bit 6 Write. This bit is used to select any write mode. WRT is automatically resetwhen EMEX is set.0 Write mode is off1 Write mode is on

Reserved Bit 5 Reserved. Always read as 0.

EEIEX Bit 4 Enable emergency interrupt exit. Setting this bit enables an interrupt to causean emergency exit from a flash operation when GIE = 1. EEIEX isautomatically reset when EMEX is set.0 Exit interrupt disabled1 Exit on interrupt enabled

EEI Bits 3 Enable erase Interrupts. Setting this bit allows a segment erase to beinterrupted by an interrupt request. After the interrupt is serviced, the erasecycle is resumed.0 Interrupts during segment erase disabled1 Interrupts during segment erase enabled

Page 331: MSP430 - general.pdf

Flash Memory Registers

6-23Flash Memory Controller

GMERASMERASERASE

Bit 3Bit 2Bit 1

Global mass erase, mass erase, and erase. These bits are used together toselect the erase mode. GMERAS, MERAS, and ERASE are automaticallyreset when EMEX is set or the erase operation completes.

GMERAS MERAS ERASE Erase Cycle

0 0 0 No erase

X 0 1 Erase individual segment only

0 1 0 Erase main memory segment of selectedarray

0 1 1 Erase main memory segments and infor-mation segments of selected array

1 1 0 Erase main memory segments of allmemory arrays.

1 1 1 Erase all main memory and informationsegments of all memory arrays

Reserved Bit 0 Reserved. Always read as 0.

Page 332: MSP430 - general.pdf

Flash Memory Registers

6-24 Flash Memory Controller

FCTL2, Flash Memory Control Register

15 14 13 12 11 10 9 8

FWKEYx, Read as 096hMust be written as 0A5h

7 6 5 4 3 2 1 0

FSSELx FNx

rw−0 rw−1 rw-0 rw-0 rw-0 rw−0 rw-1 rw−0

FWKEYx Bits15-8

FCTLx password. Always read as 096h. Must be written as 0A5h, or a PUCis generated.

FSSELx Bits7−6

Flash controller clock source select00 ACLK01 MCLK10 SMCLK11 SMCLK

FNx Bits5-0

Flash controller clock divider. These six bits select the divider for the flashcontroller clock. The divisor value is FNx + 1. For example, when FNx = 00h,0the divisor is 1. When FNx = 03Fh the divisor is 64.

Page 333: MSP430 - general.pdf

Flash Memory Registers

6-25Flash Memory Controller

FCTL3, Flash Memory Control Register FCTL3

15 14 13 12 11 10 9 8

FWKEYx, Read as 096hMust be written as 0A5h

7 6 5 4 3 2 1 0

FAIL† LOCKA† EMEX LOCK WAIT ACCVIFG KEYV BUSY

r(w)−0 r(w)−1 rw-0 rw-1 r-1 rw−0 rw-(0) r(w)−0† MSP430FG47x, MSP430F47x, MSP430F47x3/4, and MSP430F471xx devices only.

Reserved with r0 access on all other devices.

FWKEYx Bits15-8

FCTLx password. Always read as 096h. Must be written as 0A5h, or a PUCis generated.

FAIL Bit 7 Operation failure. This bit is set if the fFTG clock source fails or if a flashoperation is aborted from an interrupt when EEIEX = 1. FAIL must be resetwith software.0 No failure1 Failure

LOCKA Bit 6 SegmentA and Info lock. Write a 1 to this bit to change its state. Writing 0 hasno effect.0 Segment A unlocked and all information memory is erased during a

mass erase.1 Segment A locked and all information memory is protected from erasure

during a mass erase.

EMEX Bit 5 Emergency exit0 No emergency exit1 Emergency exit

LOCK Bit 4 Lock. This bit unlocks the flash memory for writing or erasing. The LOCK bitcan be set anytime during a byte/word write or erase operation and theoperation completes normally. In the block write mode, if the LOCK bit is setwhile BLKWRT=WAIT=1, then BLKWRT and WAIT are reset, and the modeends normally.0 Unlocked1 Locked

WAIT Bit 3 Wait. Indicates the flash memory is being written.0 The flash memory is not ready for the next byte/word write1 The flash memory is ready for the next byte/word write

ACCVIFG Bit 2 Access violation interrupt flag0 No interrupt pending1 Interrupt pending

Page 334: MSP430 - general.pdf

Flash Memory Registers

6-26 Flash Memory Controller

KEYV Bit 1 Flash security key violation. This bit indicates an incorrect FCTLx passwordwas written to any flash control register and generates a PUC when set. KEYVmust be reset with software.0 FCTLx password was written correctly1 FCTLx password was written incorrectly

BUSY Bit 0 Busy. This bit indicates the status of the flash timing generator.0 Not busy1 Busy

Page 335: MSP430 - general.pdf

Flash Memory Registers

6-27Flash Memory Controller

FCTL4, Flash Memory Control Register FCTL4(FG47x, F47x, F47x3/4, and F471xx devices only)

15 14 13 12 11 10 9 8

FWKEYx, Read as 096hMust be written as 0A5h

7 6 5 4 3 2 1 0

MRG1 MRG0

r-0 r-0 rw-0 rw-0 r-0 r-0 r-0 r-0

FWKEYx Bits15-8

FCTLx password. Always read as 096h. Must be written as 0A5h or a PUCwill be generated.

Reserved Bits7−6

Reserved. Always read as 0.

MRG1 Bit 5 Marginal read 1 mode. This bit enables the marginal 1 read mode. Themarginal read 1 bit is cleared if the CPU starts execution from the flashmemory. If both MRG1 and MRG0 are set MRG1 is active and MRG0 isignored.0 Marginal 1 read mode is disabled.1 Marginal 1 read mode is enabled.

MRG0 Bit 4 Marginal read 0 mode. This bit enables the marginal 0 read mode. Themarginal mode 0 is cleared if the CPU starts execution from the flash memory.If both MRG1 and MRG0 are set MRG1 is active and MRG0 is ignored.0 Marginal 0 read mode is disabled.1 Marginal 0 read mode is enabled.

Reserved Bits3−0

Reserved. Always read as 0.

Page 336: MSP430 - general.pdf

Flash Memory Registers

6-28 Flash Memory Controller

IE1, Interrupt Enable Register 1

7 6 5 4 3 2 1 0

ACCVIE

rw−0

Bits7-6,4-0

These bits may be used by other modules. See device-specific data sheet.

ACCVIE Bit 5 Flash memory access violation interrupt enable. This bit enables theACCVIFG interrupt. Because other bits in IE1 may be used for other modules,it is recommended to set or clear this bit using BIS.B or BIC.B instructions,rather than MOV.B or CLR.B instructions.0 Interrupt not enabled1 Interrupt enabled

Page 337: MSP430 - general.pdf

7-1Supply Voltage Supervisor

Supply Voltage Supervisor

This chapter describes the operation of the SVS. The SVS is implemented inall MSP430x4xx devices.

Topic Page

7.1 SVS Introduction 7-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.2 SVS Operation 7-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.3 SVS Registers 7-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 7

Page 338: MSP430 - general.pdf

SVS Introduction

7-2 Supply Voltage Supervisor

7.1 SVS Introduction

The supply voltage supervisor (SVS) is used to monitor the AVCC supplyvoltage or an external voltage. The SVS can be configured to set a flag orgenerate a POR reset when the supply voltage or external voltage drops belowa user-selected threshold.

The SVS features include:

AVCC monitoring

Selectable generation of POR

Output of SVS comparator accessible by software

Low-voltage condition latched and accessible by software

14 selectable threshold levels

External channel to monitor external voltage

The SVS block diagram is shown in Figure 7−1.

Note: MSP430x412 and MSP430x413 Voltage Level Detect

The MSP430x412 and MSP430x413 devices implement only one voltagelevel detect setting. When VLDx = 0, the SVS is off. Any value greater than0 for VLDx selects a voltage level detect of 1.9V.

Page 339: MSP430 - general.pdf

SVS Introduction

7-3Supply Voltage Supervisor

Figure 7−1.SVS Block Diagram

+

1.2V

BrownoutReset

VCC

Set SVSFG

tReset ~ 50us

Reset

SVSCTL Bits

0001

0010

1011

1111

1101

1100

G

D

S

SVSOUT

G

D

S

VLD SVSONPORON SVSOP SVSFG

~ 50us

SVS_POR

SVSIN

AVCC

AVCC

Page 340: MSP430 - general.pdf

SVS Operation

7-4 Supply Voltage Supervisor

7.2 SVS Operation

The SVS detects if the AVCC voltage drops below a selectable level. It can beconfigured to provide a POR or set a flag when a low-voltage condition occurs.The SVS is disabled after a brownout reset to conserve current consumption.

7.2.1 Configuring the SVS

The VLDx bits are used to enable/disable the SVS and select one of 14threshold levels (V(SVS_IT−)) for comparison with AVCC. The SVS is off whenVLDx = 0 and on when VLDx > 0. The SVSON bit does not turn on the SVS.Instead, it reflects the on/off state of the SVS and can be used to determinewhen the SVS is on.

When VLDx = 1111, the external SVSIN channel is selected. The voltage onSVSIN is compared to an internal level of approximately 1.2 V.

7.2.2 SVS Comparator Operation

A low-voltage condition exists when AVCC drops below the selected thresholdor when the external voltage drops below its 1.2-V threshold. Any low-voltagecondition sets the SVSFG bit.

The PORON bit enables or disables the device-reset function of the SVS. IfPORON = 1, a POR is generated when SVSFG is set. If PORON = 0, alow-voltage condition sets SVSFG, but does not generate a POR.

The SVSFG bit is latched. This allows user software to determine if alow-voltage condition occurred previously. The SVSFG bit must be reset byuser software. If the low-voltage condition is still present when SVSFG is reset,it is immediately set again by the SVS.

Page 341: MSP430 - general.pdf

SVS Operation

7-5Supply Voltage Supervisor

7.2.3 Changing the VLDx Bits

When the VLDx bits are changed from zero to any non-zero value, there is anautomatic settling delay, td(SVSon), implemented that allows the SVS circuitryto settle. The td(SVSon) delay is approximately 50 µs. During this delay, the SVSdoes not flag a low-voltage condition or reset the device, and the SVSON bitis cleared. Software can test the SVSON bit to determine when the delay haselapsed and the SVS is monitoring the voltage properly. Writing to SVSCTLwhile SVSON = 0 aborts the SVS automatic settling delay, td(SVSon), andswitch the SVS to active mode immediately. In doing so, the SVS circuitrymight not be settled, resulting in unpredictable behavior.

When the VLDx bits are changed from any non-zero value to any othernon-zero value, the circuitry requires the time tsettle to settle. The settling timetsettle is a maximum of ~12 µs (see the device-specific data sheet). There isno automatic delay implemented that prevents SVSFG to be set or to preventa reset of the device. The recommended flow to switch between levels isshown in the following code.

; Enable SVS for the first time:

MOV.B #080h,&SVSCTL ; Level 2.8V, do not cause POR

; ...

; Change SVS level

MOV.B #000h,&SVSCTL ; Temporarily disable SVS

MOV.B #018h,&SVSCTL ; Level 1.9V, cause POR

; ...

Page 342: MSP430 - general.pdf

SVS Operation

7-6 Supply Voltage Supervisor

7.2.4 SVS Operating Range

Each SVS level has hysteresis to reduce sensitivity to small supply voltagechanges when AVCC is close to the threshold. The SVS operation andSVS/Brownout interoperation are shown in Figure 7−2.

Figure 7−2.Operating Levels for SVS and Brownout/Reset Circuit

VCC(start)

AVCC

V(B_IT−)

BrownoutRegion

V(SVSstart)

V(SVS_IT−)

td(SVSR)

undefined

Vhys(SVS_IT−)

0

1

td(BOR)

Brownout

0

1

td(SVSon)

td(BOR)

0

1Set SVS_POR

Brown-Out

Region

SVS Circuit ActiveSVSOUT

Vhys(B_IT−)

Software Sets VLD>0

Page 343: MSP430 - general.pdf

SVS Registers

7-7Supply Voltage Supervisor

7.3 SVS Registers

The SVS registers are listed in Table 7−1.

Table 7−1.SVS Registers

Register Short Form Register Type Address Initial State

SVS Control Register SVSCTL Read/write 056h Reset with BOR

SVSCTL, SVS Control Register7 6 5 4 3 2 1 0

VLDx PORON SVSON SVSOP SVSFG

rw−0† rw−0† rw−0† rw−0† rw−0† r† r† rw−0†

† Reset by a brownout reset only, not by a POR or PUC.

VLDx Bits7-4

Voltage level detect. These bits turn on the SVS and select the nominal SVSthreshold voltage level. See the device-specific data sheet for parameters.0000 SVS is off0001 1.9 V0010 2.1 V0011 2.2 V0100 2.3 V0101 2.4 V0110 2.5 V0111 2.65 V1000 2.8 V1001 2.9 V1010 3.051011 3.2 V1100 3.35 V1101 3.5 V1110 3.7 V1111 Compares external input voltage SVSIN to 1.2 V.

PORON Bit 3 POR on. This bit enables the SVSFG flag to cause a POR device reset.0 SVSFG does not cause a POR1 SVSFG causes a POR

SVSON Bit 2 SVS on. This bit reflects the status of SVS operation. This bit DOES NOT turnon the SVS. The SVS is turned on by setting VLDx > 0.0 SVS is Off1 SVS is On

SVSOP Bit 1 SVS output. This bit reflects the output value of the SVS comparator.0 SVS comparator output is low1 SVS comparator output is high

SVSFG Bit 0 SVS flag. This bit indicates a low voltage condition. SVSFG remains set aftera low voltage condition until reset by software.0 No low voltage condition occurred1 A low condition is present or has occurred

Page 344: MSP430 - general.pdf

7-8 Supply Voltage Supervisor

Page 345: MSP430 - general.pdf

8-116-Bit Hardware Multiplier

16-Bit Hardware Multiplier

This chapter describes the 16-bit hardware multiplier. The hardware multiplieris implemented in MSP430x44x, MSP430FE42x, MSP430FE42xA,MSP430FE42x2, and MSP430F42x, MSP430F42xA devices.

Topic Page

8.1 Hardware Multiplier Introduction 8-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.2 Hardware Multiplier Operation 8-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.3 Hardware Multiplier Registers 8-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 8

Page 346: MSP430 - general.pdf

Hardware Multiplier Introduction

8-2 16-Bit Hardware Multiplier

8.1 Hardware Multiplier Introduction

The hardware multiplier is a peripheral and is not part of the MSP430 CPU.This means that its activities do not interfere with the CPU activities. Themultiplier registers are peripheral registers that are loaded and read with CPUinstructions.

The hardware multiplier supports:

Unsigned multiply

Signed multiply

Unsigned multiply accumulate

Signed multiply accumulate

16×16 bits, 16×8 bits, 8×16 bits, 8×8 bits

The hardware multiplier block diagram is shown in Figure 8−1.

Figure 8−1.Hardware Multiplier Block Diagram

OP2 138h

16 x 16 Multipiler

32−bit Adder

32−bit Multiplexer

015

15 0

Multiplexer

C

MPY 130h

MPYS 132h

MAC 134h

MACS 136h

RESHI 13ChSSUMEXT 13Eh

OP1

RESLO 13Ah

031

MPY, MPYS MAC, MACS

MACS MPYS

MAC

MPY = 0000

rw

rw

rwrw015 r

AccessibleRegister

Page 347: MSP430 - general.pdf

Hardware Multiplier Operation

8-316-Bit Hardware Multiplier

8.2 Hardware Multiplier Operation

The hardware multiplier supports unsigned multiply, signed multiply, unsignedmultiply accumulate, and signed multiply accumulate operations. The type ofoperation is selected by the address the first operand is written to.

The hardware multiplier has two 16-bit operand registers, OP1 and OP2, andthree result registers, RESLO, RESHI, and SUMEXT. RESLO stores the lowword of the result, RESHI stores the high word of the result, and SUMEXTstores information about the result. The result is ready in three MCLK cyclesand can be read with the next instruction after writing to OP2, except whenusing an indirect addressing mode to access the result. When using indirectaddressing for the result, a NOP is required before the result is ready.

8.2.1 Operand Registers

The operand one register OP1 has four addresses, shown in Table 8−1, usedto select the multiply mode. Writing the first operand to the desired addressselects the type of multiply operation but does not start any operation. Writingthe second operand to the operand two register OP2 initiates the multiplyoperation. Writing OP2 starts the selected operation with the values stored inOP1 and OP2. The result is written into the three result registers RESLO,RESHI, and SUMEXT.

Repeated multiply operations may be performed without reloading OP1 if theOP1 value is used for successive operations. It is not necessary to re-write theOP1 value to perform the operations.

Table 8−1.OP1 addresses

OP1 Address Register Name Operation

0130h MPY Unsigned multiply

0132h MPYS Signed multiply

0134h MAC Unsigned multiply accumulate

0136h MACS Signed multiply accumulate

Page 348: MSP430 - general.pdf

Hardware Multiplier Operation

8-4 16-Bit Hardware Multiplier

8.2.2 Result Registers

The result low register RESLO holds the lower 16-bits of the calculation result.The result high register RESHI contents depend on the multiply operation andare listed in Table 8−2.

Table 8−2.RESHI Contents

Mode RESHI Contents

MPY Upper 16 bits of the result

MPYS The MSB is the sign of the result. The remaining bits are theupper 15 bits of the result. Two’s complement notation is usedfor the result.

MAC Upper 16 bits of the result

MACS Upper 16 bits of the result. Two’s complement notation is usedfor the result.

The sum extension registers SUMEXT contents depend on the multiplyoperation and are listed in Table 8−3.

Table 8−3.SUMEXT Contents

Mode SUMEXT

MPY SUMEXT is always 0000h

MPYS SUMEXT contains the extended sign of the result00000h Result was positive or zero0FFFFh Result was negative

MAC SUMEXT contains the carry of the result0000h No carry for result0001h Result has a carry

MACS SUMEXT contains the extended sign of the result00000h Result was positive or zero0FFFFh Result was negative

MACS Underflow and Overflow

The multiplier does not automatically detect underflow or overflow in theMACS mode. The accumulator range for positive numbers is 0 to 7FFF FFFFhand for negative numbers is 0FFFF FFFFh to 8000 0000h. An underflowoccurs when the sum of two negative numbers yields a result that is in therange for a positive number. An overflow occurs when the sum of two positivenumbers yields a result that is in the range for a negative number. In both ofthese cases, the SUMEXT register contains the sign of the result, 0FFFFh foroverflow and 0000h for underflow. User software must detect and handlethese conditions appropriately.

Page 349: MSP430 - general.pdf

Hardware Multiplier Operation

8-516-Bit Hardware Multiplier

8.2.3 Software Examples

Examples for all multiplier modes follow. All 8x8 modes use the absoluteaddress for the registers, because the assembler does not allow .B access toword registers when using the labels from the standard definitions file.

; 16x16 Unsigned Multiply

MOV #01234h,&MPY ; Load first operand

MOV #05678h,&OP2 ; Load second operand

; ... ; Process results

; 8x8 Unsigned Multiply. Absolute addressing.

MOV.B #012h,&0130h ; Load first operand

MOV.B #034h,&0138h ; Load 2nd operand

; ... ; Process results

; 16x16 Signed Multiply

MOV #01234h,&MPYS ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

; 8x8 Signed Multiply. Absolute addressing.

MOV.B #012h,&0132h ; Load first operand

SXT &MPYS ; Sign extend first operand

MOV.B #034h,&0138h ; Load 2nd operand

SXT &OP2 ; Sign extend 2nd operand

; (triggers 2nd multiplication)

; ... ; Process results

; 16x16 Unsigned Multiply Accumulate

MOV #01234h,&MAC ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

; 8x8 Unsigned Multiply Accumulate. Absolute addressing

MOV.B #012h,&0134h ; Load first operand

MOV.B #034h,&0138h ; Load 2nd operand

; ... ; Process results

; 16x16 Signed Multiply Accumulate

MOV #01234h,&MACS ; Load first operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

; 8x8 Signed Multiply Accumulate. Absolute addressing

MOV.B #012h,&0136h ; Load first operand

SXT &MACS ; Sign extend first operand

MOV.B #034h,R5 ; Temp. location for 2nd operand

SXT R5 ; Sign extend 2nd operand

MOV R5,&OP2 ; Load 2nd operand

; ... ; Process results

Page 350: MSP430 - general.pdf

Hardware Multiplier Operation

8-6 16-Bit Hardware Multiplier

8.2.4 Indirect Addressing of RESLO

When using indirect or indirect autoincrement addressing mode to access theresult registers, At least one instruction is needed between loading the secondoperand and accessing one of the result registers.

; Access multiplier results with indirect addressing

MOV #RESLO,R5 ; RESLO address in R5 for indirect

MOV &OPER1,&MPY ; Load 1st operand

MOV &OPER2,&OP2 ; Load 2nd operand

NOP ; Need one cycle

MOV @R5+,&xxx ; Move RESLO

MOV @R5,&xxx ; Move RESHI

8.2.5 Using Interrupts

If an interrupt occurs after writing OP1 but before writing OP2, and themultiplier is used in servicing that interrupt, the original multiplier modeselection is lost and the results are unpredictable. To avoid this, disableinterrupts before using the hardware multiplier or do not use the multiplier ininterrupt service routines.

; Disable interrupts before using the hardware multiplier

DINT ; Disable interrupts

NOP ; Required for DINT

MOV #xxh,&MPY ; Load 1st operand

MOV #xxh,&OP2 ; Load 2nd operand

EINT ; Interrupts may be enable before

; Process results

Page 351: MSP430 - general.pdf

Hardware Multiplier Registers

8-716-Bit Hardware Multiplier

8.3 Hardware Multiplier Registers

The hardware multiplier registers are listed in Table 8−4.

Table 8−4.Hardware Multiplier Registers

Register Short Form Register Type Address Initial State

Operand one - multiply MPY Read/write 0130h Unchanged

Operand one - signed multiply MPYS Read/write 0132h Unchanged

Operand one - multiply accumulate MAC Read/write 0134h Unchanged

Operand one - signed multiply accumulate MACS Read/write 0136h Unchanged

Operand two OP2 Read/write 0138h Unchanged

Result low word RESLO Read/write 013Ah Undefined

Result high word RESHI Read/write 013Ch Undefined

Sum Extension register SUMEXT Read 013Eh Undefined

Page 352: MSP430 - general.pdf

8-8 16-Bit Hardware Multiplier

Page 353: MSP430 - general.pdf

9-132-Bit Hardware Multiplier

32-Bit Hardware Multiplier

This chapter describes the 32-bit hardware multiplier (MPY32) of theMSP430x4xx family. The 32-bit hardware multiplier is implemented inMSP430F47x3/4 and MSP430F471xx devices.

Topic Page

9.1 32-Bit Hardware Multiplier Introduction 9-2. . . . . . . . . . . . . . . . . . . . . . . . .

9.2 32-Bit Hardware Multiplier Operation 9-4. . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3 32-Bit Hardware Multiplier Registers 9-21. . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 9

Page 354: MSP430 - general.pdf

32-Bit Hardware Multiplier Introduction

9-2 32-Bit Hardware Multiplier

9.1 32-Bit Hardware Multiplier Introduction

The 32-bit hardware multiplier is a peripheral and is not part of the MSP430CPU. This means its activities do not interfere with the CPU activities. Themultiplier registers are peripheral registers that are loaded and read with CPUinstructions.

The hardware multiplier supports:

Unsigned multiply

Signed multiply

Unsigned multiply accumulate

Signed multiply accumulate

8-bit, 16-bit, 24-bit and 32-bit operands

Saturation

Fractional numbers

8-bit and 16-bit operation compatible with 16-bit hardware multiplier

8-bit and 24-bit multiplications without requiring a “sign extend” instruction

The 32-bit hardware multiplier block diagram is shown in Figure 9−1.

Page 355: MSP430 - general.pdf

32-Bit Hardware Multiplier Introduction

9-332-Bit Hardware Multiplier

Figure 9−1.32-Bit Hardware Multiplier Block Diagram

OP1 (high word)

16 x 16 Multiplier

AccessibleRegister

32−bit Adder

RES0/RESLO

OP1 (low word) OP2 (high word)

15

OP2 (low word)

16

OP2

OP2LOP2HMACS32L

MAC32L

MPYS32L

MPY32L

MACS32H

MAC32H

MPYS32H

MPY32H

MACS

MAC

MPYS

MPY

RES1/RESHIRES2RES3SUMEXT

31 0151631 0

32−bit De−Multiplexer

32−bit Multiplexer

16−bit Multiplexer 16−bit Multiplexer

OP1_32OP2_32

MPYMx

MPYSATMPYFRAC

MPYC

2 ControlLogic

Page 356: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-4 32-Bit Hardware Multiplier

9.2 32-Bit Hardware Multiplier Operation

The hardware multiplier supports 8-bit, 16-bit, 24-bit, and 32-bit operands withunsigned multiply, signed multiply, unsigned multiply-accumulate, and signedmultiply-accumulate operations. The size of the operands are defined by theaddress the operand is written to and if it is written as word or byte. The typeof operation is selected by the address the first operand is written to.

The hardware multiplier has two 32-bit operand registers, operand one OP1and operand two OP2, and a 64-bit result register accessible via registersRES0 to RES3. For compatibility with the 16x16 hardware multiplier the resultof a 8-bit or 16-bit operation is accessible via RESLO, RESHI, and SUMEXT,as well. RESLO stores the low word of the 16x16-bit result, RESHI stores thehigh word of the result, and SUMEXT stores information about the result.

The result of a 8-bit or 16-bit operation is ready in three MCLK cycles and canbe read with the next instruction after writing to OP2, except when using anindirect addressing mode to access the result. When using indirect addressingfor the result, a NOP is required before the result is ready.

The result of a 24-bit or 32-bit operation can be read with successiveinstructions after writing OP2 or OP2H starting with RES0, except when usingan indirect addressing mode to access the result. When using indirectaddressing for the result, a NOP is required before the result is ready.

Table 9−1 summarizes when each word of the 64-bit result is available for thevarious combinations of operand sizes. With a 32-bit wide second operandOP2L and OP2H needs to be written. Depending on when the two 16-bit partsare written the result availability may vary thus the table shows two entries, onefor OP2L written and one for OP2H written. The worst case defines the actualresult availability.

Table 9−1.Result Availability (MPYFRAC = 0; MPYSAT = 0)

Operation Result ready in MCLK cycles After

(OP1 x OP2) RES0 RES1 RES2 RES3 MPYC Bit

8/16 x 8/16 3 3 4 4 3 OP2 written

24/32 x 8/16 3 5 6 7 7 OP2 written

8/16 x 24/32 3 5 6 7 7 OP2L written

N/A 3 4 4 4 OP2H written

24/32 x 24/32 3 8 10 11 11 OP2L written

N/A 3 5 6 6 OP2H written

Page 357: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-532-Bit Hardware Multiplier

9.2.1 Operand Registers

Operand one OP1 has twelve registers, shown in Table 9−2, used to load datainto the multiplier and also select the multiply mode. Writing the low-word ofthe first operand to a given address selects the type of multiply operation tobe performed but does not start any operation. When writing a second wordto a high-word register with suffix “32H“ the multiplier assumes a 32-bit wideOP1, otherwise 16-bits are assumed. The last address written prior to writingOP2 defines the width of the first operand. For example, if MPY32L is writtenfirst followed by MPY32H, all 32 bits are used and the data width of OP1 is setto 32 bits. If MPY32H is written first followed by MPY32L, the multiplication willignore MPY32H and assume a 16−bit wide OP1 using the data written intoMPY32L.

Repeated multiply operations may be performed without reloading OP1 if theOP1 value is used for successive operations. It is not necessary to rewrite theOP1 value to perform the operations.

Table 9−2.OP1 registers

OP1 Register Name Operation

MPY Unsigned Multiply − operand bits 0 up to 15

MPYS Signed Multiply − operand bits 0 up to 15

MAC Unsigned Multiply Accumulate − operand bits 0 up to 15

MACS Signed Multiply Accumulate − operand bits 0 up to 15

MPY32L Unsigned Multiply − operand bits 0 up to 15

MPY32H Unsigned Multiply − operand bits 16 up to 31

MPYS32L Signed Multiply − operand bits 0 up to 15

MPYS32H Signed Multiply − operand bits 16 up to 31

MAC32L Unsigned Multiply Accumulate − operand bits 0 up to 15

MAC32H Unsigned Multiply Accumulate − operand bits 16 up to 31

MACS32L Signed Multiply Accumulate − operand bits 0 up to 15

MACS32H Signed Multiply Accumulate − operand bits 16 up to 31

Writing the second operand to the operand two register OP2 initiates themultiply operation. Writing OP2 starts the selected operation with a 16-bit widesecond operand together with the values stored in OP1. Writing OP2L startsthe selected operation with a 32-bit wide second operand and the multiplierexpects a the high word to be written to OP2H. Writing to OP2H without apreceding write to OP2L is ignored.

Page 358: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-6 32-Bit Hardware Multiplier

Table 9−3.OP2 registers

OP2 Register Name Operation

OP2 Start multiplication with 16-bit wide operand two OP2

(operand bits 0 up to 15)

OP2L Start multiplication with 32-bit wide operand two OP2

(operand bits 0 up to 15)

OP2H Continue multiplication with 32-bit wide operand two OP2

(operand bits 16 up to 31)

For 8-bit or 24-bit operands the operand registers can be accessed with byteinstructions. Accessing the multiplier with a byte instruction during a signedoperation will automatically cause a sign extension of the byte within themultiplier module. For 24-bit operands only the high word should be written asbyte. Whether or not the 24-bit operands are sign extended is defined by theregister that is used to write the low word, because this register defines if theoperation is unsigned or signed.

The high word of a 32-bit operand remains unchanged when changing the sizeof the operand to 16 bit either by modifying the operand size bits or by writingto the respective operand register. During the execution of the 16-bit operationthe content of the high word is ignored.

Note: Changing of First or Second Operand During Multiplication

Changing OP1 or OP2 while the selected multiply operation is beingcalculated will render any results invalid that are not ready at the time the newoperand(s) are changed.

Writing OP2 or OP2L will abort any ongoing calculation and start a newoperation. Results that are not ready at that time are invalid also for followingMAC or MACS operations.

Refer to the tables “Result Availability” for the different modes on how manyCPU cycles are needed until a certain result register is ready and valid.

Page 359: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-732-Bit Hardware Multiplier

9.2.2 Result Registers

The multiplication result is always 64-bits wide. It is accessible via registersRES0 to RES3. Used with a signed operation MPYS or MACS the results areappropriately sign extended. If the result registers are loaded with initial valuesbefore a MACS operation the user software must take care that the writtenvalue is properly sign extended to 64 bits.

Note: Changing of Result Registers During Multiplication

The result registers must not be modified by the user software after writingthe second operand into OP2 or OP2L until the initiated operation iscompleted.

In addition to RES0 to RES3, for compatibility with the 16×16 hardwaremultiplier the 32-bit result of a 8-bit or 16-bit operation is accessible viaRESLO, RESHI, and SUMEXT. In this case the result low register RESLOholds the lower 16-bits of the calculation result and the result high registerRESHI holds the upper 16 bits. RES0 and RES1 are identical to RESLO andRESHI, respectively, in usage and access of calculated results.

The sum extension registers SUMEXT contents depend on the multiplyoperation and are listed in Table 9−4. If all operands are 16 bits wide or lessthe 32-bit result is used to determine sign and carry. If one of the operands islarger than 16 bits the 64-bit result is used.

The MPYC bit reflects the multiplier’s carry as listed in Table 9−4 and thus canbe used as 33rd or 65th bit of the result if fractional or saturation mode is notselected. With MAC or MACS operations the MPYC bit reflects the carry of the32-bit or 64-bit accumulation and is not taken into account for successive MACand MACS operations as the 33rd or 65th bit.

Table 9−4.SUMEXT Contents and MPYC Contents

Mode SUMEXT MPYC

MPY SUMEXT is always 0000h MPYC is always 0

MPYS SUMEXT contains the extended sign of the result MPYC contains the sign of the result

00000h Result was positive or zero 0 Result was positive or zero

0FFFFh Result was negative 1 Result was negative

MAC SUMEXT contains the carry of the result MPYC contains the carry of the result

0000h No carry for result 0 No carry for result

0001h Result has a carry 1 Result has a carry

MACS SUMEXT contains the extended sign of the result MPYC contains the carry of the result

00000h Result was positive or zero 0 No carry for result,

0FFFFh Result was negative 1 Result has a carry

Page 360: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-8 32-Bit Hardware Multiplier

MACS Underflow and Overflow

The multiplier does not automatically detect underflow or overflow in MACSmode. For example working with 16-bit input data and 32-bit results, i.e. usingjust RESLO and RESHI, the available range for positive numbers is 0 to07FFF FFFFh and for negative numbers is 0FFFF FFFFh to 08000 0000h. Anunderflow occurs when the sum of two negative numbers yields a result thatis in the range for a positive number. An overflow occurs when the sum of twopositive numbers yields a result that is in the range for a negative number.

The SUMEXT register contains the sign of the result in both cases describedabove, 0FFFFh for a 32-bit overflow and 0000h for a 32-bit underflow. TheMPYC bit in MPY32CTL0 can be used to detect the overflow condition. If thecarry is different than the sign reflected by the SUMEXT register an overflowor underflow occurred. User software must handle these conditionsappropriately.

Page 361: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-932-Bit Hardware Multiplier

9.2.3 Software Examples

Examples for all multiplier modes follow. All 8×8 modes use the absoluteaddress for the registers because the assembler will not allow .B access toword registers when using the labels from the standard definitions file.

There is no sign extension necessary in software. Accessing the multiplier witha byte instruction during a signed operation will automatically cause a signextension of the byte within the multiplier module.

; 32x32 Unsigned Multiply

MOV #01234h,&MPY32L ; Load low word of 1st operand

MOV #01234h,&MPY32H ; Load high word of 1st operand

MOV #05678h,&OP2L ; Load low word of 2nd operand

MOV #05678h,&OP2H ; Load high word of 2nd operand

; ... ; Process results

; 16x16 Unsigned Multiply

MOV #01234h,&MPY ; Load 1st operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

; 8x8 Unsigned Multiply. Absolute addressing.

MOV.B #012h,&MPY_B ; Load 1st operand

MOV.B #034h,&OP2_B ; Load 2nd operand

; ... ; Process results

; 32x32 Signed Multiply

MOV #01234h,&MPYS32L ; Load low word of 1st operand

MOV #01234h,&MPYS32H ; Load high word of 1st operand

MOV #05678h,&OP2L ; Load low word of 2nd operand

MOV #05678h,&OP2H ; Load high word of 2nd operand

; ... ; Process results

; 16x16 Signed Multiply

MOV #01234h,&MPYS ; Load 1st operand

MOV #05678h,&OP2 ; Load 2nd operand

; ... ; Process results

; 8x8 Signed Multiply. Absolute addressing.

MOV.B #012h,&MPYS_B ; Load 1st operand

MOV.B #034h,&OP2_B ; Load 2nd operand

; ... ; Process results

Page 362: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-10 32-Bit Hardware Multiplier

9.2.4 Fractional Numbers

The 32-bit multiplier provides support for fixed-point signal processing. Infixed−point signal processing, fractional number are represented by using afixed decimal point. To classify different ranges of decimal numbers, aQ-format is used. Different Q-formats represent different locations of thedecimal point. Figure 9−2 shows the format of a signed Q15 number using 16bits. Every bit after the decimal point has a resolution of 1/2, the mostsignificant bit is used as the sign bit. The most negative number is 08000h andthe maximum positive number is 07FFFh. This gives a range from −1.0 to0.999969482 ≅ 1.0 for the signed Q15 format with 16 bits.

Figure 9−2.Q15 Format Representation

S12

14

18

116 ...

Decimal number equivalent

Decimal point

Sign bit

15 bits

The range can be increased by shifting the decimal point to the right as shownin Figure 9−3. The signed Q14 format with 16 bits gives a range from −2.0 to1.999938965 ≅ 2.0.

Figure 9−3.Q14 Format Representation

S12

14

18

116 ...x

14 bits

The benefit of using 16-bit signed Q15 or 32-bit signed Q31 numbers withmultiplication is that the product of two number in the range from −1.0 to 1.0is always in that same range.

Page 363: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-1132-Bit Hardware Multiplier

Fractional Number Mode

Multiplying two fractional numbers using the default multiplication mode withMPYFRAC = 0 and MPYSAT = 0 gives a result with 2 sign bits. For exampleif two 16-bit Q15 numbers are multiplied a 32-bit result in Q30 format isobtained. To convert the result into Q15 format manually, the first 15 trailingbits and the extended sign bit must be removed. However, when the fractionalmode of the multiplier is used, the redundant sign bit is automatically removedyielding a result in Q31 format for the multiplication of two 16-bit Q15 numbers.Reading the result register RES1 gives the result as 16-bit Q15 number. The32-bit Q31 result of a multiplication of two 32-bit Q31 numbers is accessed byreading registers RES2 and RES3.

The fractional mode is enabled with MPYFRAC = 1 in register MPY32CTL0.The actual content of the result register(s) is not modified whenMPYFRAC = 1. When the result is accessed using software, the value isleft−shifted 1 bit resulting in the final Q formatted result. This allows usersoftware to switch between reading both the shifted (fractional) and theun-shifted result. The fractional mode should only be enabled when requiredand disabled after use.

In fractional mode the SUMEXT register contains the sign extended bits 32and 33 of the shifted result for 16x16-bit operations and bits 64 and 65 for32x32-bit operations − not only bits 32 or 64, respectively.

The MPYC bit is not affected by the fractional mode. It always reads the carryof the nonfractional result.

; Example using

; Fractional 16x16 multiplication

BIS #MPYFRAC,&MPY32CTL0 ; Turn on fractional mode

MOV &FRACT1,&MPYS ; Load 1st operand as Q15

MOV &FRACT2,&OP2 ; Load 2nd operand as Q15

MOV &RES1,&PROD ; Save result as Q15

BIC #MPYFRAC,&MPY32CTL0 ; Back to normal mode

Table 9−5.Result Availability in Fractional Mode (MPYFRAC = 1; MPYSAT = 0)

Operation Result ready in MCLK cycles After

(OP1 x OP2) RES0 RES1 RES2 RES3 MPYC Bit

8/16 x 8/16 3 3 4 4 3 OP2 written

24/32 x 8/16 3 5 6 7 7 OP2 written

8/16 x 24/32 3 5 6 7 7 OP2L written

N/A 3 4 4 4 OP2H written

24/32 x 24/32 3 8 10 11 11 OP2L written

N/A 3 5 6 6 OP2H written

Page 364: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-12 32-Bit Hardware Multiplier

Saturation Mode

The multiplier prevents overflow and underflow of signed operations insaturation mode. The saturation mode is enabled with MPYSAT = 1 in registerMPY32CTL0. If an overflow occurs the result is set to the most positive valueavailable. If an underflow occurs the result is set to the most negative valueavailable. This is useful to reduce mathematical artifacts in control systems onoverflow and underflow conditions. The saturation mode should only beenabled when required and disabled after use.

The actual content of the result register(s) is not modified when MPYSAT = 1.When the result is accessed using software, the value is automaticallyadjusted providing the most positive or most negative result when an overflowor underflow has occurred. The adjusted result is also used for successivemultiply−and−accumulate operations. This allows user software to switchbetween reading the saturated and the non-saturated result.

With 16x16 operations the saturation mode only applies to the least significant32 bits, i.e. the result registers RES0 and RES1. Using the saturation modein MAC or MACS operations that mix 16x16 operations with 32x32, 16x32 or32x16 operations will lead to unpredictable results.

With 32x32, 16x32, and 32x16 operations the saturated result can only becalculated when RES3 is ready. In non-5xx devices, reading RES0 to RES2prior to the complete result being ready will deliver the nonsaturated results,independent of the MPYSAT bit setting.

Enabling the saturation mode does not affect the content of the SUMEXTregister nor the content of the MPYC bit.

; Example using

; Fractional 16x16 multiply accumulate with Saturation

; Turn on fractional and saturation mode:

BIS #MPYSAT+MPYFRAC,&MPY32CTL0

MOV &A1,&MPYS ; Load A1 for 1st term

MOV &K1,&OP2 ; Load K1 to get A1*K1

MOV &A2,&MACS ; Load A2 for 2nd term

MOV &K2,&OP2 ; Load K2 to get A2*K2

MOV &RES1,&PROD ; Save A1*K1+A2*K2 as result

BIC #MPYSAT+MPYFRAC,&MPY32CTL0; turn back to normal

Table 9−6.Result Availability in Saturation Mode (MPYSAT = 1)

Operation Result ready in MCLK cycles after

(OP1 x OP2) RES0 RES1 RES2 RES3 MPYC Bit

8/16 x 8/16 3 3 N/A N/A 3 OP2 written

24/32 x 8/16 7 7 7 7 7 OP2 written

8/16 x 24/32 7 7 7 7 7 OP2L written

4 4 4 4 4 OP2H written

24/32 x 24/32 11 11 11 11 11 OP2L written

6 6 6 6 6 OP2H written

Page 365: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-1332-Bit Hardware Multiplier

Figure 9−4 shows the flow for 32-bit saturation used for 16×16 bitmultiplications and the flow for 64-bit saturation used in all other cases.Primarily, the saturated results depends on the carry bit MPYC and the mostsignificant bit of the result. Secondly, if the fractional mode is enabled itdepends also on the two most significant bits of the unshift result; i.e., the resultthat is read with fractional mode disabled.

Figure 9−4.Saturation Flow Chart

32−bit Saturation

MPYC=0 andunshifted RES1,

bit 15=1

Overflow:RES3 unchangedRES2 unchangedRES1 = 07FFFhRES0 = 0FFFFh

Yes

No

MPYC=1 andunshifted RES1,

bit 15=0

Underflow:RES3 unchangedRES2 unchangedRES1 = 08000hRES0 = 00000h

MPYFRAC = 1

Yes

No

No

Yes

unshifted RES1,bit 15=0 and

bit 14=1

Overflow:RES3 unchangedRES2 unchangedRES1 = 07FFFhRES0 = 0FFFFh

Yes

No

unshifted RES1,bit 15=1 and

bit 14=0

Underflow:RES3 unchangedRES2 unchangedRES1 = 08000hRES0 = 00000h

Yes

No

32−bit Saturationcompleted

64−bit Saturation

MPYC=0 andunshifted RES3,

bit 15=1

Overflow:RES3 = 07FFFhRES2 = 0FFFFhRES1 = 0FFFFhRES0 = 0FFFFh

Yes

No

MPYC=1 andunshifted RES3,

bit 15=0

Underflow:RES3 = 08000hRES2 = 00000hRES1 = 00000hRES0 = 00000h

MPYFRAC = 1

Yes

No

No

Yes

unshifted RES3,bit 15=0 and

bit 14=1

Yes

No

unshifted RES3,bit 15=1 and

bit 14=0

Yes

No

64−bit Saturationcompleted

Overflow:RES3 = 07FFFhRES2 = 0FFFFhRES1 = 0FFFFhRES0 = 0FFFFh

Underflow:RES3 = 08000hRES2 = 00000hRES1 = 00000hRES0 = 00000h

Note: Saturation in Fractional Mode

In case of multiplying −1.0 x −1.0 in fractional mode, the result of +1.0 is outof range, thus, the saturated result gives the most positive result.

Page 366: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-14 32-Bit Hardware Multiplier

The following example illustrates a special case showing the saturationfunction in fractional mode. It also uses the 8-bit functionality of the MPY32module.

; Turn on fractional and saturation mode,

; clear all other bits in MPY32CTL0:

MOV #MPYSAT+MPYFRAC,&MPY32CTL0

;Pre−load result registers to demonstrate overflow

MOV #0,&RES3 ;

MOV #0,&RES2 ;

MOV #07FFFh,&RES1 ;

MOV #0FA60h,&RES0 ;

MOV.B #050h,&MACS_B ; 8-bit signed MAC operation

MOV.B #012h,&OP2_B ; Start 16x16 bit operation

MOV &RES0,R6 ; R6 = 0FFFFh

MOV &RES1,R7 ; R7 = 07FFFh

The result is saturated because already the result not converted into afractional number shows an overflow. The multiplication of the two positivenumbers 00050h and 00012h gives 005A0h. 005A0h added to 07FFF.FA60hresults in 8000.059F without MPYC being set. Since the MSB of theunmodified result RES1 is 1 and MPYC = 0 the result is saturated accordingto the saturation flow chart in Figure 9−4.

Note: Validity of Saturated Result

The saturated result is only valid if the registers RES0 to RES3, the size ofoperands 1 and 2 and MPYC are not modified.

If the saturation mode is used with a preloaded result, user software mustensure that MPYC in the MPY32CTL0 register is loaded with the sign bit ofthe written result otherwise the saturation mode erroneously saturates theresult.

Page 367: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-1532-Bit Hardware Multiplier

9.2.5 Putting It All Together

Figure 9−5 shows the complete multiplication flow depending on the variousselectable modes for the MPY32 module.

Figure 9−5.Multiplication Flow Chart

New Multiplicationstarted

16x16?

MAC or MACS?

MPYSAT=1?

Clear Result:RES1 = 00000hRES0 = 00000h

Perform16x16

MPY or MPYSOperation

Perform16x16

MAC or MACSOperation

Yes No

YesNo

Yes

No

MPYFRAC=1?

32−bit Saturation

Shift 64−bit result.Calculate SUMEXT based on

MPYC and bit 15 ofunshifted RES1.

MPYSAT=1?

Yes

No

32−bit Saturation

Yes

No

Multiplicationcompleted

MAC or MACS?

MPYSAT=1? Clear Result:

RES3 = 00000hRES2 = 00000hRES1 = 00000hRES0 = 00000h

PerformMPY or MPYS

Operation

PerformMAC or MACS

Operation

Yes No

Yes

No

MPYFRAC=1?

64−bit Saturation

MPYSAT=1?

Yes

No

64−bit Saturation

Yes

No

Shift 64−bit result.Calculate SUMEXT based on

MPYC and bit 15 ofunshifted RES3.

Page 368: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-16 32-Bit Hardware Multiplier

Given the separation in processing of 16-bit operations (32-bit results) and32-bit operations (64-bit results) by the module, it is important to understandthe implications when using MAC/MACS operations and mixing 16-bitoperands/results with 32-bit operands/results. User software must addressthese points during usage when mixing these operations. The following codeillustrates the issue.

; Mixing 32x24 multiplication with 16x16 MACS operation

MOV #MPYSAT,&MPY32CTL0; Saturation mode

MOV #052C5h,&MPY32L ; Load low word of 1st operand

MOV #06153h,&MPY32H ; Load high word of 1st operand

MOV #001ABh,&OP2L ; Load low word of 2nd operand

MOV.B #023h,&OP2H_B ; Load high word of 2nd operand

;... 5 NOPs required

MOV &RES0,R6 ; R6 = 00E97h

MOV &RES1,R7 ; R7 = 0A6EAh

MOV &RES2,R8 ; R8 = 04F06h

MOV &RES3,R9 ; R9 = 0000Dh

; Note that MPYC = 0!

MOV #0CCC3h,&MACS ; Signed MAC operation

MOV #0FFB6h,&OP2 ; 16x16 bit operation

MOV &RESLO,R6 ; R6 = 0FFFFh

MOV &RESHI,R7 ; R7 = 07FFFh

The second operation gives a saturated result because the 32-bit value usedfor the 16x16 bit MACS operation was already saturated when the operationwas started: the carry bit MPYC was 0 from the previous operation but the mostsignificant bit in result register RES1 is set. As one can see in the flow chartthe content of the result registers are saturated for multiply-and-accumulateoperations after starting a new operation based on the previous results butdepending on the size of the result (32-bit or 64-bit) of the newly initiatedoperation.

The saturation before the multiplication can cause issues if the MPYC bit is notproperly set as the following code example illustrates.

;Pre−load result registers to demonstrate overflow

MOV #0,&RES3 ;

MOV #0,&RES2 ;

MOV #0,&RES1 ;

MOV #0,&RES0 ;

; Saturation mode and set MPYC:

MOV #MPYSAT+MPYC,&MPY32CTL0

MOV.B #082h,&MACS_B ; 8-bit signed MAC operation

MOV.B #04Fh,&OP2_B ; Start 16x16 bit operation

MOV &RES0,R6 ; R6 = 00000h

MOV &RES1,R7 ; R7 = 08000h

Page 369: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-1732-Bit Hardware Multiplier

Even though the result registers were loaded with all zeros the final result issaturated. This is because the MPYC bit was set causing the result used forthe multiply-and-accumulate to be saturated to 08000 0000h. Adding anegative number to it would again cause an underflow thus the final result isalso saturated to 08000 0000h.

9.2.6 Indirect Addressing of Result Registers

When using indirect or indirect autoincrement addressing mode to access theresult registers and the multiplier requires 3 cycles until result availabilityaccording to Table 9−1, at least one instruction is needed between loading thesecond operand and accessing the result registers:

; Access multiplier 16x16 results with indirect addressing

MOV #RES0,R5 ; RES0 address in R5 for indirect

MOV &OPER1,&MPY ; Load 1st operand

MOV &OPER2,&OP2 ; Load 2nd operand

NOP ; Need one cycle

MOV @R5+,&xxx ; Move RES0

MOV @R5,&xxx ; Move RES1

In case of a 32x16 multiplication there is also one instruction required betweenreading the first result register RES0 and the second result register RES1:

; Access multiplier 32x16 results with indirect addressing

MOV #RES0,R5 ; RES0 address in R5 for indirect

MOV &OPER1L,&MPY32L ; Load low word of 1st operand

MOV &OPER1H,&MPY32H ; Load high word of 1st operand

MOV &OPER2,&OP2 ; Load 2nd operand (16 bits)

NOP ; Need one cycle

MOV @R5+,&xxx ; Move RES0

NOP ; Need one additional cycle

MOV @R5,&xxx ; Move RES1

; No additional cycles required!

MOV @R5,&xxx ; Move RES2

Page 370: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-18 32-Bit Hardware Multiplier

9.2.7 Using Interrupts

If an interrupt occurs after writing OP1, but before writing OP2, and themultiplier is used in servicing that interrupt, the original multiplier modeselection is lost and the results are unpredictable. To avoid this, disableinterrupts before using the hardware multiplier, do not use the multiplier ininterrupt service routines, or use the save and restore functionality of the 32-bitmultiplier.

; Disable interrupts before using the hardware multiplier

DINT ; Disable interrupts

NOP ; Required for DINT

MOV #xxh,&MPY ; Load 1st operand

MOV #xxh,&OP2 ; Load 2nd operand

EINT ; Interrupts may be enabled before

; processing results if result

; registers are stored and restored in

; interrupt service routines

Page 371: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-1932-Bit Hardware Multiplier

Save and Restore

If the multiplier is used in interrupt service routines its state can be saved andrestored using the MPY32CTL0 register. The following code example showshow the complete multiplier status can be saved and restored to allowinterruptible multiplications together with the usage of the multiplier in interruptservice routines. Since the state of the MPYSAT and MPYFRAC bits areunknown they should be cleared before the registers are saved as shown inthe code example.

; Interrupt service routine using multiplier

MPY_USING_ISR

PUSH &MPY32CTL0 ; Save multiplier mode, etc.

BIC #MPYSAT+MPYFRAC,&MPY32CTL0

; Clear MPYSAT+MPYFRAC

PUSH &RES3 ; Save result 3

PUSH &RES2 ; Save result 2

PUSH &RES1 ; Save result 1

PUSH &RES0 ; Save result 0

PUSH &MPY32H ; Save operand 1, high word

PUSH &MPY32L ; Save operand 1, low word

PUSH &OP2H ; Save operand 2, high word

PUSH &OP2L ; Save operand 2, low word

;

... ; Main part of ISR

; Using standard MPY routines

;

POP &OP2L ; Restore operand 2, low word

POP &OP2H ; Restore operand 2, high word

; Starts dummy multiplication but

; result is overwritten by

; following restore operations:

POP &MPY32L ; Restore operand 1, low word

POP &MPY32H ; Restore operand 1, high word

POP &RES0 ; Restore result 0

POP &RES1 ; Restore result 1

POP &RES2 ; Restore result 2

POP &RES3 ; Restore result 3

POP &MPY32CTL0 ; Restore multiplier mode, etc.

reti ; End of interrupt service routine

Page 372: MSP430 - general.pdf

32-Bit Hardware Multiplier Operation

9-20 32-Bit Hardware Multiplier

9.2.8 Using DMA

In devices with a DMA controller the multiplier can trigger a transfer when thecomplete result is available. The DMA controller needs to start reading theresult with MPY32RES0 successively up to MPY32RES3. Not all registersneed to be read. The trigger timing is such that the DMA controller startsreading MPY32RES0 when its ready and that the MPY32RES3 can be readexactly in the clock cycle when it is available to allow fastest access via DMA.The signal into the DMA controller is ’Multiplier ready’. Please refer to the DMAuser’s guide chapter for details.

Page 373: MSP430 - general.pdf

32-Bit Hardware Multiplier Registers

9-2132-Bit Hardware Multiplier

9.3 32-Bit Hardware Multiplier Registers

The 32-bit hardware multiplier registers are listed in Table 9−7.

Table 9−7.32-bit Hardware Multiplier Registers

Register Short Form RegisterType

Address Initial State

16-bit operand one − multiply MPY Read/write 0130h Unchanged

8-bit operand one − multiply MPY_B Read/write 0132h Unchanged

16-bit operand one − signed multiply MPYS Read/write 0132h Unchanged

8-bit operand one − signed multiply MPYS_B Read/write 0132h Unchanged

16-bit operand one − multiply accumulate MAC Read/write 0134h Unchanged

8-bit operand one − multiply accumulate MAC_B Read/write 0134h Unchanged

16-bit operand one − signed multiply accumulate MACS Read/write 0136h Unchanged

8-bit operand one − signed multiply accumulate MACS_B Read/write 0136h Unchanged

16-bit operand two OP2 Read/write 0138h Unchanged

8-bit operand two OP2_B Read/write 0138h Unchanged

16x16-bit result low word RESLO Read/write 013Ah Undefined

16x16-bit result high word RESHI Read/write 013Ch Undefined

16x16-bit sum extension register SUMEXT Read 013Eh Undefined

32-bit operand 1 − multiply − low word MPY32L Read/write 0140h Unchanged

32-bit operand 1 − multiply − high word MPY32H Read/write 0142h Unchanged

24-bit operand 1 − multiply − high byte MPY32H_B Read/write 0142h Unchanged

32-bit operand 1 − signed multiply − low word MPYS32L Read/write 0144h Unchanged

32-bit operand 1 − signed multiply − high word MPYS32H Read/write 0146h Unchanged

24-bit operand 1 − signed multiply − high byte MPYS32H_B Read/write 0146h Unchanged

32-bit operand 1 − multiply accumulate − low word MAC32L Read/write 0148h Unchanged

32-bit operand 1 − multiply accumulate − high word MAC32H Read/write 014Ah Unchanged

24-bit operand 1 − multiply accumulate − high byte MAC32H_B Read/write 014Ah Unchanged

32-bit operand 1 − signed multiply accumulate − lowword

MACS32L Read/write 014Ch Unchanged

32-bit operand 1 − signed multiply accumulate − highword

MACS32H Read/write 014Eh Unchanged

24-bit operand 1 − signed multiply accumulate − highbyte

MACS32H_B Read/write 014Eh Unchanged

32-bit operand 2 − low word OP2L Read/write 0150h Unchanged

32-bit operand 2 − high word OP2H Read/write 0152h Unchanged

24-bit operand 2 − high byte OP2H_B Read/write 0152h Unchanged

32x32-bit result 0 − least significant word RES0 Read/write 0154h Undefined

32x32-bit result 1 RES1 Read/write 0156h Undefined

32x32-bit result 2 RES2 Read/write 0158h Undefined

32x32-bit result 3 − most significant word RES3 Read/write 015Ah Undefined

MPY32 Control Register 0 MPY32CTL0 Read/write 015Ch Undefined

Page 374: MSP430 - general.pdf

32-Bit Hardware Multiplier Registers

9-22 32-Bit Hardware Multiplier

The registers listed in Table 9−8 are treated equally.

Table 9−8.Alternative Registers

Register Alternative 1 Alternative 2

16-bit operand one − multiply MPY MPY32L

8-bit operand one − multiply MPY_B MPYS32L_B

16-bit operand one − signed multiply MPYS MPYS32L

8-bit operand one − signed multiply MPYS_B MPYS32L_B

16-bit operand one − multiply accumulate MAC MAC32L

8-bit operand one − multiply accumulate MAC_B MAC32L_B

16-bit operand one − signed multiply accumulate MACS MACS32L

8-bit operand one − signed multiply accumulate MACS_B MACS32L_B

16x16-bit result low word RESLO RES0

16x16-bit result high word RESHI RES1

Page 375: MSP430 - general.pdf

32-Bit Hardware Multiplier Registers

9-2332-Bit Hardware Multiplier

MPY32CTL0, 32-bit Multiplier Control Register 0

15 14 13 12 11 10 9 8

Reserved

r−0 r−0 r−0 r−0 r−0 r−0 r−0 r−0

7 6 5 4 3 2 1 0

MPYOP2_32

MPYOP1_32 MPYMx MPYSAT MPYFRAC Reserved MPYC

rw rw rw rw rw−0 rw−0 rw−0 rw

Reserved Bits15−8

Reserved

MPYOP2_32

Bit 7 Multiplier bit-width of operand 20 16 bits1 32 bits

MPYOP1_32

Bit 6 Multiplier bit-width of operand 1.0 16 bits1 32 bits

MPYMx Bits5-4

Multiplier mode00 MPY − Multiply01 MPYS − Signed multiply10 MAC − Multiply accumulate11 MACS − Signed multiply accumulate

MPYSAT Bit 3 Saturation mode0 Saturation mode disabled1 Saturation mode enabled

MPYFRAC Bit 2 Fractional mode0 Fractional mode disabled1 Fractional mode enabled

Reserved Bit 1 Reserved

MPYC Bit 0 Carry of the multiplier. It can be considered as 33rd or 65th bit of the resultif fractional or saturation mode is not selected because the MPYC bit does notchange when switching to saturation or fractional mode.It is used to restore the SUMEXT content in MAC mode.0 No carry for result1 Result has a carry

Page 376: MSP430 - general.pdf

9-24 32-Bit Hardware Multiplier

Page 377: MSP430 - general.pdf

10-1DMA Controller

DMA Controller

The DMA controller module transfers data from one address to anotherwithout CPU intervention. This chapter describes the operation of the DMAcontroller. One DMA channel is implemented in MSP430FG43x and threeDMA channels are implemented in the MSP430FG461x and MSP430F471xxdevices.

Topic Page

10.1 DMA Introduction 10-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.2 DMA Operation 10-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.3 DMA Registers 10-21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 10

Page 378: MSP430 - general.pdf

DMA Introduction

10-2 DMA Controller

10.1 DMA Introduction

The direct memory access (DMA) controller transfers data from one addressto another, without CPU intervention, across the entire address range. Forexample, the DMA controller can move data from the ADC12 conversionmemory to RAM.

Devices that contain a DMA controller may have one, two, or three DMAchannels available. Therefore, depending on the number of DMA channelsavailable, some features described in this chapter are not applicable to alldevices.

Using the DMA controller can increase the throughput of peripheral modules.It can also reduce system power consumption by allowing the CPU to remainin a low-power mode without having to awaken to move data to or from aperipheral.

The DMA controller features include:

Up to three independent transfer channels

Configurable DMA channel priorities

Requires only two MCLK clock cycles per transfer

Byte or word and mixed byte/word transfer capability

Block sizes up to 65535 bytes or words

Configurable transfer trigger selections

Selectable edge or level-triggered transfer

Four addressing modes

Single, block, or burst-block transfer modes

The DMA controller block diagram is shown in Figure 10−1.

Page 379: MSP430 - general.pdf

DMA Introduction

10-3DMA Controller

Figure 10−1. DMA Controller Block Diagram

DM

A Priority A

nd Control

ENNMI

DT

DMA Channel 2

DMASRSBYTE

DMA2SZ

DMA2DA

DMA2SA

DMADSTBYTE

DMASRCINCRx

DMADSTINCRx

2

2

3

DMADTx

DMAEN

DT

DMA Channel 1

DMASRSBYTE

DMA1SZ

DMA1DA

DMA1SA

DMADSTBYTE

DMASRCINCRx

DMADSTINCRx

2

2

3

DMADTx

DMAEN

DT

DMA Channel 0

DMASRSBYTE

DMA0SZ

DMA0DA

DMA0SA

DMADSTBYTE

DMASRCINCRx

DMADSTINCRx

2

2

3

DMADTx

DMAEN

AddressSpace

NMI Interrupt Request

JTAG Active

Halt

Halt CPU

ROUNDROBIN

DMAONFETCH

DAC12_0IFG

DMAE0

DMAREQ

DMA0TSELx

4

DMA2IFG

TACCR2_CCIFGTBCCR2_CCIFG

Serial data receivedSerial transmit ready

USART1 transmit readyUSART1 data received

DMAE0

4

DMA0IFG

000000010010001101000101

11111110

01100111100010011010

DMAE0

4

DMA1IFG

000000010010001101000101

11111110

01100111100010011010

000000010010001101000101

11111110

01100111100010011010

Multiplier readySerial data received

Serial transmit ready

DAC12_0IFG

DMAREQTACCR2_CCIFGTBCCR2_CCIFG

Serial data receivedSerial transmit ready

USART1 transmit readyUSART1 data received

Multiplier readySerial data received

Serial transmit ready

DAC12_0IFG

DMAREQTACCR2_CCIFGTBCCR2_CCIFG

Serial data receivedSerial transmit ready

USART1 transmit readyUSART1 data received

Multiplier readySerial data received

Serial transmit ready

1011

1011

1011

DMA1TSELx

DMA2TSELx

TACCR0_CCIFGTBCCR0_CCIFG

TACCR0_CCIFGTBCCR0_CCIFG

TACCR0_CCIFGTBCCR0_CCIFG

ADC12IFGx

ADC12IFGx

ADC12IFGx

11001101

11001101

11001101

Page 380: MSP430 - general.pdf

DMA Operation

10-4 DMA Controller

10.2 DMA Operation

The DMA controller is configured with user software. The setup and operationof the DMA is discussed in the following sections.

10.2.1 DMA Addressing Modes

The DMA controller has four addressing modes. The addressing mode foreach DMA channel is independently configurable. For example, channel 0may transfer between two fixed addresses, while channel 1 transfers betweentwo blocks of addresses. The addressing modes are shown in Figure 10−2.The addressing modes are:

Fixed address to fixed address

Fixed address to block of addresses

Block of addresses to fixed address

Block of addresses to block of addresses

The addressing modes are configured with the DMASRCINCRx andDMADSTINCRx control bits. The DMASRCINCRx bits select if the sourceaddress is incremented, decremented, or unchanged after each transfer. TheDMADSTINCRx bits select if the destination address is incremented,decremented, or unchanged after each transfer.

Transfers may be byte-to-byte, word-to-word, byte-to-word, or word-to-byte.When transferring word-to-byte, only the lower byte of the source-wordtransfers. When transferring byte-to-word, the upper byte of thedestination-word is cleared when the transfer occurs.

Figure 10−2. DMA Addressing Modes

Address SpaceAddress Space

DMAController

Address Space Address SpaceDMAController

DMAController

DMAController

Fixed Address To Block Of AddressesFixed Address To Fixed Address

Block Of Addresses To Fixed Address Block Of Addresses To Block Of Addresses

Page 381: MSP430 - general.pdf

DMA Operation

10-5DMA Controller

10.2.2 DMA Transfer Modes

The DMA controller has six transfer modes selected by the DMADTx bits aslisted in Table 10−1. Each channel is individually configurable for its transfermode. For example, channel 0 may be configured in single transfer mode,while channel 1 is configured for burst-block transfer mode, and channel 2operates in repeated block mode. The transfer mode is configuredindependently from the addressing mode. Any addressing mode can be usedwith any transfer mode.

Two types of data can be transferred selectable by the DMAxCTL DSTBYTEand SRCBYTE fields. The source and/or destination location can be eitherbyte or word data. It is also possible to transfer byte to byte, word to word orany combination.

Table 10−1. DMA Transfer Modes

DMADTx TransferMode

Description

000 Single transfer Each transfer requires a trigger. DMAEN isautomatically cleared when DMAxSZ transfers havebeen made.

001 Block transfer A complete block is transferred with one trigger.DMAEN is automatically cleared at the end of theblock transfer.

010, 011 Burst-blocktransfer

CPU activity is interleaved with a block transfer.DMAEN is automatically cleared at the end of theburst-block transfer.

100 Repeatedsingle transfer

Each transfer requires a trigger. DMAEN remainsenabled.

101 Repeatedblock transfer

A complete block is transferred with one trigger.DMAEN remains enabled.

110, 111 Repeatedburst-blocktransfer

CPU activity is interleaved with a block transfer.DMAEN remains enabled.

Page 382: MSP430 - general.pdf

DMA Operation

10-6 DMA Controller

Single Transfer

In single transfer mode, each byte/word transfer requires a separate trigger.The single transfer state diagram is shown in Figure 10−3.

The DMAxSZ register is used to define the number of transfers to be made.The DMADSTINCRx and DMASRCINCRx bits select if the destinationaddress and the source address are incremented or decremented after eachtransfer. If DMAxSZ = 0, no transfers occur.

The DMAxSA, DMAxDA, and DMAxSZ registers are copied into temporaryregisters. The temporary values of DMAxSA and DMAxDA are incrementedor decremented after each transfer. The DMAxSZ register is decrementedafter each transfer. When the DMAxSZ register decrements to zero it isreloaded from its temporary register and the corresponding DMAIFG flag isset. When DMADTx = 0, the DMAEN bit is cleared automatically whenDMAxSZ decrements to zero and must be set again for another transfer tooccur.

In repeated single transfer mode, the DMA controller remains enabled withDMAEN = 1, and a transfer occurs every time a trigger occurs.

Page 383: MSP430 - general.pdf

DMA Operation

10-7DMA Controller

Figure 10−3. DMA Single Transfer State Diagram

Reset

Wait for Trigger

Idle

Hold CPU,Transfer one word/byte

[+Trigger AND DMALEVEL = 0 ]OR

[Trigger=1 AND DMALEVEL=1]

DMAABORT=0

DMAABORT = 1

2 x MCLK

DMAEN = 0

Modify T_SourceAddModify T_DestAdd

Decrement DMAxSZ

[ENNMI = 1AND NMI event]

OR[DMALEVEL = 1AND Trigger = 0]

[ DMADTx = 0AND DMAxSZ = 0]

OR DMAEN = 0

DMAxSZ → T_SizeDMAxSA → T_SourceAddDMAxDA → T_DestAdd

DMAREQ = 0

DMAxSZ > 0AND DMAEN = 1

DMAEN = 0DMAEN = 1

T_Size → DMAxSZDMAxSA → T_SourceAddDMAxDA → T_DestAdd

DMADTx = 4AND DMAxSZ = 0AND DMAEN = 1

DMAEN = 0DMAREQ = 0

T_Size → DMAxSZ

Page 384: MSP430 - general.pdf

DMA Operation

10-8 DMA Controller

Block Transfers

In block transfer mode, a transfer of a complete block of data occurs after onetrigger. When DMADTx = 1, the DMAEN bit is cleared after the completion ofthe block transfer and must be set again before another block transfer can betriggered. After a block transfer has been triggered, further trigger signalsoccurring during the block transfer are ignored. The block transfer statediagram is shown in Figure 10−4.

The DMAxSZ register is used to define the size of the block and theDMADSTINCRx and DMASRCINCRx bits select if the destination addressand the source address are incremented or decremented after each transferof the block. If DMAxSZ = 0, no transfers occur.

The DMAxSA, DMAxDA, and DMAxSZ registers are copied into temporaryregisters. The temporary values of DMAxSA and DMAxDA are incrementedor decremented after each transfer in the block. The DMAxSZ register isdecremented after each transfer of the block and shows the number oftransfers remaining in the block. When the DMAxSZ register decrements tozero it is reloaded from its temporary register and the corresponding DMAIFGflag is set.

During a block transfer, the CPU is halted until the complete block has beentransferred. The block transfer takes 2 x MCLK x DMAxSZ clock cycles tocomplete. CPU execution resumes with its previous state after the blocktransfer is complete.

In repeated block transfer mode, the DMAEN bit remains set after completionof the block transfer. The next trigger after the completion of a repeated blocktransfer triggers another block transfer.

Page 385: MSP430 - general.pdf

DMA Operation

10-9DMA Controller

Figure 10−4. DMA Block Transfer State Diagram

Reset

Wait for Trigger

Idle

Hold CPU,Transfer one word/byte

[+Trigger AND DMALEVEL = 0 ]OR

[Trigger=1 AND DMALEVEL=1]

DMAABORT=0

DMAABORT = 1

2 x MCLK

DMAEN = 0

Modify T_SourceAddModify T_DestAdd

Decrement DMAxSZ

DMAxSZ > 0

[ENNMI = 1AND NMI event]

OR[DMALEVEL = 1AND Trigger = 0]

[DMADTx = 1AND DMAxSZ = 0]

ORDMAEN = 0

DMAxSZ → T_SizeDMAxSA → T_SourceAddDMAxDA → T_DestAdd

DMAREQ = 0T_Size → DMAxSZ

DMAxSA → T_SourceAddDMAxDA → T_DestAdd

DMADTx = 5 AND DMAxSZ = 0AND DMAEN = 1

DMAEN = 0DMAEN = 1

DMAEN = 0DMAREQ = 0

T_Size → DMAxSZ

Page 386: MSP430 - general.pdf

DMA Operation

10-10 DMA Controller

Burst-Block Transfers

In burst-block mode, transfers are block transfers with CPU activityinterleaved. The CPU executes 2 MCLK cycles after every four byte/wordtransfers of the block resulting in 20% CPU execution capacity. After theburst-block, CPU execution resumes at 100% capacity and the DMAEN bit iscleared. DMAEN must be set again before another burst-block transfer canbe triggered. After a burst-block transfer has been triggered, further triggersignals occurring during the burst-block transfer are ignored. The burst-blocktransfer state diagram is shown in Figure 10−5.

The DMAxSZ register is used to define the size of the block and theDMADSTINCRx and DMASRCINCRx bits select if the destination addressand the source address are incremented or decremented after each transferof the block. If DMAxSZ = 0, no transfers occur.

The DMAxSA, DMAxDA, and DMAxSZ registers are copied into temporaryregisters. The temporary values of DMAxSA and DMAxDA are incrementedor decremented after each transfer in the block. The DMAxSZ register isdecremented after each transfer of the block and shows the number oftransfers remaining in the block. When the DMAxSZ register decrements tozero it is reloaded from its temporary register and the corresponding DMAIFGflag is set.

In repeated burst-block mode the DMAEN bit remains set after completion ofthe burst-block transfer and no further trigger signals are required to initiateanother burst-block transfer. Another burst-block transfer begins immediatelyafter completion of a burst-block transfer. In this case, the transfers must bestopped by clearing the DMAEN bit, or by an NMI interrupt when ENNMI is set.In repeated burst-block mode the CPU executes at 20% capacity continuouslyuntil the repeated burst-block transfer is stopped.

Page 387: MSP430 - general.pdf

DMA Operation

10-11DMA Controller

Figure 10−5. DMA Burst-Block Transfer State Diagram

2 x MCLK

Reset

Wait for Trigger

Idle

Hold CPU,Transfer one word/byte

Burst State(release CPU for 2xMCLK)

[+Trigger AND DMALEVEL = 0 ]OR

[Trigger=1 AND DMALEVEL=1]

DMAABORT=0

DMAABORT = 1

2 x MCLK

DMAEN = 0

Modify T_SourceAddModify T_DestAdd

Decrement DMAxSZ

[DMADTx = 6, 7AND DMAxSZ = 0]

[ENNMI = 1AND NMI event]

OR[DMALEVEL = 1AND Trigger = 0]

[DMADTx = 2, 3AND DMAxSZ = 0]

ORDMAEN = 0

DMAxSZ → T_SizeDMAxSA → T_SourceAddDMAxDA → T_DestAdd

T_Size → DMAxSZDMAxSA → T_SourceAddDMAxDA → T_DestAdd

DMAEN = 0DMAEN = 1

DMAxSZ > 0DMAxSZ > 0 AND

a multiple of 4 words/byteswere transferred

DMAxSZ > 0

DMAEN = 0DMAREQ = 0

T_Size → DMAxSZ

Page 388: MSP430 - general.pdf

DMA Operation

10-12 DMA Controller

10.2.3 Initiating DMA Transfers

Each DMA channel is independently configured for its trigger source with theDMAxTSELx bits as described in Table 10−2.The DMAxTSELx bits should bemodified only when the DMACTLx DMAEN bit is 0. Otherwise, unpredictableDMA triggers may occur.

When selecting the trigger, the trigger must not have already occurred, or thetransfer will not take place. For example, if the TACCR2 CCIFG bit is selectedas a trigger, and it is already set, no transfer will occur until the next time theTACCR2 CCIFG bit is set.

Edge-Sensitive Triggers

When DMALEVEL = 0, edge-sensitive triggers are used and the rising edgeof the trigger signal initiates the transfer. In single-transfer mode, each transferrequires its own trigger. When using block or burst-block modes, only onetrigger is required to initiate the block or burst-block transfer.

Level-Sensitive Triggers

When DMALEVEL = 1, level-sensitive triggers are used. For proper operation,level-sensitive triggers can only be used when external trigger DMAE0 isselected as the trigger. DMA transfers are triggered as long as the triggersignal is high and the DMAEN bit remains set.

The trigger signal must remain high for a block or burst-block transfer tocomplete. If the trigger signal goes low during a block or burst-block transfer,the DMA controller is held in its current state until the trigger goes back highor until the DMA registers are modified by software. If the DMA registers arenot modified by software, when the trigger signal goes high again, the transferresumes from where it was when the trigger signal went low.

When DMALEVEL = 1, transfer modes selected when DMADTx = 0, 1, 2, 3are recommended because the DMAEN bit is automatically reset after theconfigured transfer.

Halting Executing Instructions for DMA Transfers

The DMAONFETCH bit controls when the CPU is halted for a DMA transfer.When DMAONFETCH = 0, the CPU is halted immediately and the transferbegins when a trigger is received. When DMAONFETCH = 1, the CPU finishesthe currently executing instruction before the DMA controller halts the CPUand the transfer begins.

Note: DMAONFETCH Must Be Used When The DMA Writes To Flash

If the DMA controller is used to write to flash memory, the DMAONFETCHbit must be set. Otherwise, unpredictable operation can result.

Page 389: MSP430 - general.pdf

DMA Operation

10-13DMA Controller

Table 10−2. DMA Trigger Operation

DMAxTSELx Operation

0000 A transfer is triggered when the DMAREQ bit is set. The DMAREQ bit is automatically resetwhen the transfer starts

0001 A transfer is triggered when the TACCR2 CCIFG flag is set. The TACCR2 CCIFG flag isautomatically reset when the transfer starts. If the TACCR2 CCIE bit is set, the TACCR2CCIFG flag will not trigger a transfer.

0010 A transfer is triggered when the TBCCR2 CCIFG flag is set. The TBCCR2 CCIFG flag isautomatically reset when the transfer starts. If the TBCCR2 CCIE bit is set, the TBCCR2CCIFG flag will not trigger a transfer.

0011 Devices with USART0: A transfer is triggered when the URXIFG0 flag is set. URXIFG0 isautomatically reset when the transfer starts. If URXIE0 is set, the URXIFG0 flag will not triggera transfer.Devices with USCI_A0: A transfer is triggered when the UCA0RXIFG flag is set. UCA0RXIFGis automatically reset when the transfer starts. If UCA0RXIE is set, the UCA0RXIFG flag willnot trigger a transfer.

0100 Devices with USART0: A transfer is triggered when the UTXIFG0 flag is set. UTXIFG0 isautomatically reset when the transfer starts. If UTXIE0 is set, the UTXIFG0 flag will not triggera transfer.Devices with USCI_A0: A transfer is triggered when the UCA0TXIFG flag is set. UCA0TXIFGis automatically reset when the transfer starts. If UCA0TXIE is set, the UCA0TXIFG flag willnot trigger a transfer.

0101 Devices with DAC12: A transfer is triggered when the DAC12_0CTL DAC12IFG flag is set.The DAC12_0CTL DAC12IFG flag is automatically cleared when the transfer starts. If theDAC12_0CTL DAC12IE bit is set, the DAC12_0CTL DAC12IFG flag will not trigger a transfer.

0110 Devices with ADC12: A transfer is triggered by an ADC12IFGx flag. When single-channelconversions are performed, the corresponding ADC12IFGx is the trigger. When sequencesare used, the ADC12IFGx for the last conversion in the sequence is the trigger. A transfer istriggered when the conversion is completed and the ADC12IFGx is set. Setting theADC12IFGx with software will not trigger a transfer. All ADC12IFGx flags are automaticallyreset when the associated ADC12MEMx register is accessed by the DMA controller.Devices with SD16 or SD16_A: A transfer is triggered by the SD16IFG flag of the masterchannel in grouped mode or of channel 0. Setting the SD16IFG with software will not trigger atransfer. All SD16IFG flags are automatically reset when the associated SD16MEMx registeris accessed by the DMA controller. If the SD16IE of the master channel is set, the SD16IFGwill not trigger a transfer.

0111 A transfer is triggered when the TACCR0 CCIFG flag is set. The TACCR0 CCIFG flag isautomatically reset when the transfer starts. If the TACCR0 CCIE bit is set, the TACCR0CCIFG flag will not trigger a transfer.

1000 A transfer is triggered when the TBCCR0 CCIFG flag is set. The TBCCR0 CCIFG flag isautomatically reset when the transfer starts. If the TBCCR0 CCIE bit is set, the TBCCR0CCIFG flag will not trigger a transfer.

1001 Devices with USART1: A transfer is triggered when the URXIFG1 flag is set. URXIFG1 isautomatically reset when the transfer starts. If URXIE1 is set, the URXIFG1 flag will not trigger atransfer.Devices with USCI_A1: A transfer is triggered when the UCA1RXIFG flag is set. UCA1RXIFGis automatically reset when the transfer starts. If UCA1RXIE is set, the UCA1RXIFG flag willnot trigger a transfer.

Page 390: MSP430 - general.pdf

DMA Operation

10-14 DMA Controller

Table 10−2. DMA Trigger Operation (Continued)

DMAxTSELx Operation

1010 Devices with USART1: A transfer is triggered when the UTXIFG1 flag is set. UTXIFG1 isautomatically reset when the transfer starts. If UTXIE1 is set, the UTXIFG1 flag will not triggera transfer.Devices with USCI_A1: A transfer is triggered when the UCA1TXIFG flag is set. UCA1TXIFGis automatically reset when the transfer starts. If UCA1TXIE is set, the UCA1TXIFG flag willnot trigger a transfer.

1011 A transfer is triggered when the hardware multiplier is ready for a new operand.

1100 A transfer is triggered when the UCB0RXIFG flag is set. UCB0RXIFG is automatically resetwhen the transfer starts. If UCB0RXIE is set, the UCB0RXIFG flag will not trigger a transfer.

1101 A transfer is triggered when the UCB0TXIFG flag is set. UCB0TXIFG is automatically resetwhen the transfer starts. If UCB0TXIE is set, the UCB0TXIFG flag will not trigger a transfer.

1110 A transfer is triggered when the DMAxIFG flag is set. DMA0IFG triggers channel 1, DMA1IFGtriggers channel 2, and DMA2IFG triggers channel 0. None of the DMAxIFG flags areautomatically reset when the transfer starts.

1111 A transfer is triggered by the external trigger DMAE0.

Page 391: MSP430 - general.pdf

DMA Operation

10-15DMA Controller

10.2.4 Stopping DMA Transfers

There are two ways to stop DMA transfers in progress:

A single, block, or burst-block transfer may be stopped with an NMIinterrupt, if the ENNMI bit is set in register DMACTL1.

A burst-block transfer may be stopped by clearing the DMAEN bit.

10.2.5 DMA Channel Priorities

The default DMA channel priorities are DMA0−DMA1−DMA2. If two or threetriggers happen simultaneously or are pending, the channel with the highestpriority completes its transfer (single, block or burst-block transfer) first, thenthe second priority channel, then the third priority channel. Transfers inprogress are not halted if a higher priority channel is triggered. The higherpriority channel waits until the transfer in progress completes before starting.

The DMA channel priorities are configurable with the ROUNDROBIN bit.When the ROUNDROBIN bit is set, the channel that completes a transferbecomes the lowest priority. The order of the priority of the channels alwaysstays the same, DMA0−DMA1−DMA2, for example:

DMA Priority Transfer Occurs New DMA Priority

DMA0 − DMA1 − DMA2 DMA1 DMA2 − DMA0 − DMA1

DMA2 − DMA0 − DMA1 DMA2 DMA0 − DMA1 − DMA2

DMA0 − DMA1 − DMA2 DMA0 DMA1 − DMA2 − DMA0

When the ROUNDROBIN bit is cleared the channel priority returns to thedefault priority.

DMA channel priorities are not applicable to MSP430FG43x devices.

Page 392: MSP430 - general.pdf

DMA Operation

10-16 DMA Controller

10.2.6 DMA Transfer Cycle Time

The DMA controller requires one or two MCLK clock cycles to synchronizebefore each single transfer or complete block or burst-block transfer. Eachbyte/word transfer requires two MCLK cycles after synchronization, and onecycle of wait time after the transfer. Because the DMA controller uses MCLK,the DMA cycle time is dependent on the MSP430 operating mode and clocksystem setup.

If the MCLK source is active, but the CPU is off, the DMA controller will usethe MCLK source for each transfer, without re-enabling the CPU. If the MCLKsource is off, the DMA controller will temporarily restart MCLK, sourced withDCOCLK, for the single transfer or complete block or burst-block transfer. TheCPU remains off, and after the transfer completes, MCLK is turned off. Themaximum DMA cycle time for all operating modes is shown in Table 10−3.

Table 10−3. Maximum Single-Transfer DMA Cycle Time

CPU Operating Mode Clock Source Maximum DMA Cycle Time

Active mode MCLK=DCOCLK 4 MCLK cycles

Active mode MCLK=LFXT1CLK 4 MCLK cycles

Low-power mode LPM0/1 MCLK=DCOCLK 5 MCLK cycles

Low-power mode LPM3/4 MCLK=DCOCLK 5 MCLK cycles + 6 µs†

Low-power mode LPM0/1 MCLK=LFXT1CLK 5 MCLK cycles

Low-power mode LPM3 MCLK=LFXT1CLK 5 MCLK cycles

Low-power mode LPM4 MCLK=LFXT1CLK 5 MCLK cycles + 6 µs†

† The additional 6 µs are needed to start the DCOCLK. It is the t(LPMx) parameter in the data sheet.

Page 393: MSP430 - general.pdf

DMA Operation

10-17DMA Controller

10.2.7 Using DMA with System Interrupts

DMA transfers are not interruptible by system interrupts. System interruptsremain pending until the completion of the transfer. NMI interrupts caninterrupt the DMA controller if the ENNMI bit is set.

System interrupt service routines are interrupted by DMA transfers. If aninterrupt service routine or other routine must execute with no interruptions,the DMA controller should be disabled prior to executing the routine.

10.2.8 DMA Controller Interrupts

Each DMA channel has its own DMAIFG flag. Each DMAIFG flag is set in anymode when the corresponding DMAxSZ register counts to zero. If thecorresponding DMAIE and GIE bits are set, an interrupt request is generated.

All DMAIFG flags source only one DMA controller interrupt vector and theinterrupt vector may be shared with the other modules. See the device-specificdatasheet for specific interrupt assignments. In this case, software mustcheck the DMAIFG and other flags to determine the source of the interrupt.The DMAIFG flags are not reset automatically and must be reset by software.

10.2.9 DMAIV, DMA Interrupt Vector Generator

MSP430FG461x and MSP430F471xx devices implement the interrupt vectorregister DMAIV. In this case, all DMAIFG flags are prioritized and combinedto source a single interrupt vector. The interrupt vector register DMAIV is usedto determine which flag requested an interrupt.

The highest priority enabled interrupt generates a number in the DMAIVregister (see register description). This number can be evaluated or added tothe program counter to automatically enter the appropriate software routine.Disabled DMA interrupts do not affect the DMAIV value.

Any access, read or write, of the DMAIV register automatically resets thehighest pending interrupt flag. If another interrupt flag is set, another interruptis immediately generated after servicing the initial interrupt. For example, If theDMA0IFG and DMA2IFG flags are set when the interrupt service routineaccesses the DMAIV register, DMA0IFG is reset automatically. After the RETIinstruction of the interrupt service routine is executed, the DMA2IFG willgenerate another interrupt.

Page 394: MSP430 - general.pdf

DMA Operation

10-18 DMA Controller

DMAIV Software Example

The following software example shows the recommended use of DMAIV andthe handling overhead. The DMAIV value is added to the PC to automaticallyjump to the appropriate routine.

The numbers at the right margin show the necessary CPU cycles for eachinstruction. The software overhead for different interrupt sources includesinterrupt latency and return-from-interrupt cycles, but not the task handlingitself.

;Interrupt handler for DMA0IFG, DMA1IFG, DMA2IFG Cycles

DMA_HND ... ; Interrupt latency 6

ADD &DMAIV,PC ; Add offset to Jump table 3

RETI ; Vector 0: No interrupt5

JMP DMA0_HND ; Vector 2: DMA channel 0 2

JMP DMA1_HND ; Vector 4: DMA channel 1 2

JMP DMA2_HND ; Vector 6: DMA channel 2 2

RETI ; Vector 8: Reserved 5

RETI ; Vector 10: Reserved 5

RETI ; Vector 12: Reserved 5

RETI ; Vector 14: Reserved 5

DMA2_HND ; Vector 6: DMA channel 2

... ; Task starts here

RETI ; Back to main program 5

DMA1_HND ; Vector 4: DMA channel 1

... ; Task starts here

RETI ; Back to main program 5

DMA0_HND ; Vector 2: DMA channel 0

... ; Task starts here

RETI ; Back to main program 5

Page 395: MSP430 - general.pdf

DMA Operation

10-19DMA Controller

10.2.10 Using the USCI_B I2C Module with the DMA Controller

The USCI_B I2C module provides two trigger sources for the DMA controller.The USCI_B I2C module can trigger a transfer when new I2C data is receivedand when data is needed for transmit.

A transfer is triggered if UCB0RXIFG is set. The UCB0RXIFG is clearedautomatically when the DMA controller acknowledges the transfer. IfUCB0RXIE is set, UCB0RXIFG will not trigger a transfer.

A transfer is triggered if UCB0TXIFG is set. The UCB0TXIFG is clearedautomatically when the DMA controller acknowledges the transfer. IfUCB0TXIE is set, UCB0TXIFG will not trigger a transfer.

10.2.11 Using ADC12 with the DMA Controller

MSP430 devices with an integrated DMA controller can automatically movedata from any ADC12MEMx register to another location. DMA transfers aredone without CPU intervention and independently of any low-power modes.The DMA controller increases throughput of the ADC12 module, andenhances low-power applications allowing the CPU to remain off while datatransfers occur.

DMA transfers can be triggered from any ADC12IFGx flag. When CONSEQx= 0,2 the ADC12IFGx flag for the ADC12MEMx used for the conversion cantrigger a DMA transfer. When CONSEQx = 1,3, the ADC12IFGx flag for thelast ADC12MEMx in the sequence can trigger a DMA transfer. AnyADC12IFGx flag is automatically cleared when the DMA controller accessesthe corresponding ADC12MEMx.

10.2.12 Using DAC12 With the DMA Controller

MSP430 devices with an integrated DMA controller can automatically movedata to the DAC12_xDAT register. DMA transfers are done without CPUintervention and independently of any low-power modes. The DMA controllerincreases throughput to the DAC12 module, and enhances low-powerapplications allowing the CPU to remain off while data transfers occur.

Applications requiring periodic waveform generation can benefit from usingthe DMA controller with the DAC12. For example, an application that producesa sinusoidal waveform may store the sinusoid values in a table. The DMAcontroller can continuously and automatically transfer the values to theDAC12 at specific intervals creating the sinusoid with zero CPU execution.The DAC12_xCTL DAC12IFG flag is automatically cleared when the DMAcontroller accesses the DAC12_xDAT register.

Page 396: MSP430 - general.pdf

DMA Operation

10-20 DMA Controller

10.2.13 Using SD16 or SD16_A With the DMA Controller

MSP430 devices with an integrated DMA controller can automatically movedata from any SD16MEMx register to another location. DMA transfers aredone without CPU intervention and independently of any low-power modes.The DMA controller increases throughput of the SD16 or SD16_A module, andenhances low-power applications allowing the CPU to remain off while datatransfers occur.

In Grouped mode DMA transfers can be triggered by the master channel thatcontrols the group (i.e. the channel with the lowest channel number andSD16GRP = 0). Otherwise channel 0 can trigger DMA transfers. AnySD16IFG is automatically cleared when the DMA controller accesses thecorresponding SD16MEMx register.

10.2.14 Writing to Flash With the DMA Controller

MSP430 devices with an integrated DMA controller can automatically movedata to the Flash memory. DMA transfers are done without CPU interventionand independent of any low-power modes. The DMA controller performs themove of the data word/byte to the Flash. The write timing control is done bythe Flash controller. Write transfers to the Flash memory succeed if the Flashcontroller set−up is prior to the DMA transfer and if the Flash is not busy.

Page 397: MSP430 - general.pdf

DMA Registers

10-21DMA Controller

10.3 DMA Registers

The DMA registers for MSP430FG43x devices are listed in Table 10−4. TheDMA registers for MSP430FG461x and MSP430F471xx devices are listed inTable 10−5.

Table 10−4. DMA Registers, MSP430FG43x devices

Register Short Form Register Type Address Initial State

DMA control 0 DMACTL0 Read/write 0122h Reset with POR

DMA control 1 DMACTL1 Read/write 0124h Reset with POR

DMA channel 0 control DMA0CTL Read/write 01E0h Reset with POR

DMA channel 0 source address DMA0SA Read/write 01E2h Unchanged

DMA channel 0 destination address DMA0DA Read/write 01E4h Unchanged

DMA channel 0 transfer size DMA0SZ Read/write 01E6h Unchanged

DMA channel 1 control DMA1CTL Read/write 01E8h Reset with POR

DMA channel 1 source address DMA1SA Read/write 01EAh Unchanged

DMA channel 1 destination address DMA1DA Read/write 01ECh Unchanged

DMA channel 1 transfer size DMA1SZ Read/write 01EEh Unchanged

DMA channel 2 control DMA2CTL Read/write 01F0h Reset with POR

DMA channel 2 source address DMA2SA Read/write 01F2h Unchanged

DMA channel 2 destination address DMA2DA Read/write 01F4h Unchanged

DMA channel 2 transfer size DMA2SZ Read/write 01F6h Unchanged

Table 10−5. DMA Registers, MSP430FG461x, MSP430F471xx devices

Register Short Form Register Type Address Initial State

DMA control 0 DMACTL0 Read/write 0122h Reset with POR

DMA control 1 DMACTL1 Read/write 0124h Reset with POR

DMA interrupt vector DMAIV Read only 0126h Reset with POR

DMA channel 0 control DMA0CTL Read/write 01D0h Reset with POR

DMA channel 0 source address DMA0SA Read/write 01D2h Unchanged

DMA channel 0 destination address DMA0DA Read/write 01D6h Unchanged

DMA channel 0 transfer size DMA0SZ Read/write 01DAh Unchanged

DMA channel 1 control DMA1CTL Read/write 01DCh Reset with POR

DMA channel 1 source address DMA1SA Read/write 01DEh Unchanged

DMA channel 1 destination address DMA1DA Read/write 01E2h Unchanged

DMA channel 1 transfer size DMA1SZ Read/write 01E6h Unchanged

DMA channel 2 control DMA2CTL Read/write 01E8h Reset with POR

DMA channel 2 source address DMA2SA Read/write 01EAh Unchanged

DMA channel 2 destination address DMA2DA Read/write 01EEh Unchanged

DMA−channel 2 transfer size DMA2SZ Read/write 01F2h Unchanged

Page 398: MSP430 - general.pdf

DMA Registers

10-22 DMA Controller

DMACTL0, DMA Control Register 0

15 14 13 12 11 10 9 8

Reserved DMA2TSELx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

DMA1TSELx DMA0TSELx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Reserved Bits15−12

Reserved

DMA2TSELx

Bits11−8

DMA trigger select. These bits select the DMA transfer trigger.The trigger selection is device-specific. For MSP430FG43x andMSP430FG461x devices it is given below; for other devices, see thedevice-specific data sheet.0000 DMAREQ bit (software trigger)0001 TACCR2 CCIFG bit0010 TBCCR2 CCIFG bit0011 URXIFG0 (MSP430FG43x), UCA0RXIFG (MPS430FG461x)0100 UTXIFG0 (MSP430FG43x), UCA0TXIFG (MSP430FG461x)0101 DAC12_0CTL DAC12IFG bit0110 ADC12 ADC12IFGx bit0111 TACCR0 CCIFG bit1000 TBCCR0 CCIFG bit1001 URXIFG1 bit1010 UTXIFG1 bit1011 Multiplier ready1100 No action (MSP430FG43x), UCB0RXIFG (MSP430FG461x)1101 No action (MSP430FG43x), UCB0TXIFG (MSP430FG461x)1110 DMA0IFG bit triggers DMA channel 1

DMA1IFG bit triggers DMA channel 2DMA2IFG bit triggers DMA channel 0

1111 External trigger DMAE0

DMA1TSELx

Bits7−4

Same as DMA2TSELx

DMA0TSELx

Bits3–0

Same as DMA2TSELx

Page 399: MSP430 - general.pdf

DMA Registers

10-23DMA Controller

DMACTL1, DMA Control Register 1

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 0 0 DMAONFETCH

ROUNDROBIN ENNMI

r0 r0 r0 r0 r0 rw−(0) rw−(0) rw−(0)

Reserved Bits15−3

Reserved. Read only. Always read as 0.

DMAONFETCH

Bit 2 DMA on fetch0 The DMA transfer occurs immediately1 The DMA transfer occurs on next instruction fetch after the trigger

ROUNDROBIN

Bit 1 Round robin. This bit enables the round-robin DMA channel priorities.0 DMA channel priority is DMA0 − DMA1 − DMA21 DMA channel priority changes with each transfer

ENNMI Bit 0 Enable NMI. This bit enables the interruption of a DMA transfer by an NMIinterrupt. When an NMI interrupts a DMA transfer, the current transfer iscompleted normally, further transfers are stopped, and DMAABORT is set.0 NMI interrupt does not interrupt DMA transfer1 NMI interrupt interrupts a DMA transfer

Page 400: MSP430 - general.pdf

DMA Registers

10-24 DMA Controller

DMAxCTL, DMA Channel x Control Register

15 14 13 12 11 10 9 8

Reserved DMADTx DMADSTINCRx DMASRCINCRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

DMADSTBYTE

DMASRCBYTE DMALEVEL DMAEN DMAIFG DMAIE DMA

ABORT DMAREQ

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Reserved Bit 15 Reserved

DMADTx Bits14−12

DMA Transfer mode.000 Single transfer001 Block transfer010 Burst-block transfer011 Burst-block transfer100 Repeated single transfer101 Repeated block transfer110 Repeated burst-block transfer111 Repeated burst-block transfer

DMADSTINCRx

Bits11−10

DMA destination increment. This bit selects automatic incrementing ordecrementing of the destination address after each byte or word transfer.When DMADSTBYTE=1, the destination address increments/decrements byone. When DMADSTBYTE=0, the destination addressincrements/decrements by two. The DMAxDA is copied into a temporaryregister and the temporary register is incremented or decremented. DMAxDAis not incremented or decremented.00 Destination address is unchanged01 Destination address is unchanged10 Destination address is decremented11 Destination address is incremented

DMASRCINCRx

Bits9−8

DMA source increment. This bit selects automatic incrementing ordecrementing of the source address for each byte or word transfer. WhenDMASRCBYTE=1, the source address increments/decrements by one.When DMASRCBYTE=0, the source address increments/decrements bytwo. The DMAxSA is copied into a temporary register and the temporaryregister is incremented or decremented. DMAxSA is not incremented ordecremented.00 Source address is unchanged01 Source address is unchanged10 Source address is decremented11 Source address is incremented

DMADSTBYTE

Bit 7 DMA destination byte. This bit selects the destination as a byte or word.0 Word1 Byte

Page 401: MSP430 - general.pdf

DMA Registers

10-25DMA Controller

DMASRCBYTE

Bit 6 DMA source byte. This bit selects the source as a byte or word.0 Word1 Byte

DMALEVEL

Bit 5 DMA level. This bit selects between edge-sensitive and level-sensitivetriggers.0 Edge sensitive (rising edge)1 Level sensitive (high level)

DMAEN Bit 4 DMA enable0 Disabled1 Enabled

DMAIFG Bit 3 DMA interrupt flag0 No interrupt pending1 Interrupt pending

DMAIE Bit 2 DMA interrupt enable0 Disabled1 Enabled

DMAABORT

Bit 1 DMA Abort. This bit indicates if a DMA transfer was interrupt by an NMI.0 DMA transfer not interrupted1 DMA transfer was interrupted by NMI

DMAREQ Bit 0 DMA request. Software-controlled DMA start. DMAREQ is resetautomatically.0 No DMA start1 Start DMA

Page 402: MSP430 - general.pdf

DMA Registers

10-26 DMA Controller

DMAxSA, DMA Source Address Register

31 30 29 28 27 26 25 824

Reserved

r0 r0 r0 r0 r0 r0 r0 r0

23 22 21 20 19 18 17 16

Reserved DMAxSAx

r0 r0 r0 r0 rw rw rw rw

15 14 13 12 11 10 9 8

DMAxSAx

rw rw rw rw rw rw rw rw

7 6 5 4 3 2 1 0

DMAxSAx

rw rw rw rw rw rw rw rw

Reserved Bits31−20

Reserved

DMAxSAx Bits19−0

DMA source address. The source address register points to the DMA sourceaddress for single transfers or the first source address for block transfers. Thesource address register remains unchanged during block and burst-blocktransfers.Devices that have addressable memory range 64−KB or below contain asingle word for the DMAxSA.MSP430FG461x and MSP430F471xx devices implement two words for theDMAxSA register as shown. Bits 31−20 are reserved and always read aszero. Reading or writing bits 19-16 requires the use of extended instructions.When writing to DMAxSA with word instructions, bits 19-16 are cleared.

Page 403: MSP430 - general.pdf

DMA Registers

10-27DMA Controller

DMAxDA, DMA Destination Address Register

31 30 29 28 27 26 25 824

Reserved

r0 r0 r0 r0 r0 r0 r0 r0

23 22 21 20 19 18 17 16

Reserved DMAxDAx

r0 r0 r0 r0 rw rw rw rw

15 14 13 12 11 10 9 8

DMAxDAx

rw rw rw rw rw rw rw rw

7 6 5 4 3 2 1 0

DMAxDAx

rw rw rw rw rw rw rw rw

Reserved Bits31−20

Reserved

DMAxDAx Bits19−0

DMA destination address. The destination address register points to thedestination address for single transfers or the first address for block transfers.The DMAxDA register remains unchanged during block and burst-blocktransfers.Devices that have addressable memory range 64−KB or below contain asingle word for the DMAxDA.MSP430FG461x and MSP430F471xx devices implement two words for theDMAxDA register as shown. Bits 31−20 are reserved and always read aszero. Reading or writing bits 19-16 requires the use of extended instructions.When writing to DMAxDA with word instructions, bits 19-16 are cleared.

Page 404: MSP430 - general.pdf

DMA Registers

10-28 DMA Controller

DMAxSZ, DMA Size Address Register

15 14 13 12 11 10 9 8

DMAxSZx

rw rw rw rw rw rw rw rw

7 6 5 4 3 2 1 0

DMAxSZx

rw rw rw rw rw rw rw rw

DMAxSZx Bits15−0

DMA size. The DMA size register defines the number of byte/word data perblock transfer. DMAxSZ register decrements with each word or byte transfer.When DMAxSZ decrements to 0, it is immediately and automatically reloadedwith its previously initialized value.00000h Transfer is disabled00001h One byte or word to be transferred00002h Two bytes or words have to be transferred:0FFFFh 65535 bytes or words have to be transferred

Page 405: MSP430 - general.pdf

DMA Registers

10-29DMA Controller

DMAIV, DMA Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 0 DMAIVx 0

r0 r0 r0 r0 r−(0) r−(0) r−(0) r0

DMAIVx Bits15-0

DMA Interrupt Vector value

DMAIV Contents Interrupt Source Interrupt FlagInterruptPriority

00h No interrupt pending −

02h DMA channel 0 DMA0IFG Highest

04h DMA channel 1 DMA1IFG

06h DMA channel 2 DMA2IFG

08h Reserved −

0Ah Reserved −

0Ch Reserved −

0Eh Reserved − Lowest

Page 406: MSP430 - general.pdf

10-30 DMA Controller

Page 407: MSP430 - general.pdf

11-1Digital I/O

Digital I/O

This chapter describes the operation of the digital I/O ports.

Topic Page

11.1 Digital I/O Introduction 11-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.2 Digital I/O Operation 11-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.3 Digital I/O Registers 11-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 11

Page 408: MSP430 - general.pdf

Digital I/O Introduction

11-2 Digital I/O

11.1 Digital I/O Introduction

MSP430 devices have up to ten digital I/O ports implemented, P1 to P10. Eachport has eight I/O pins. Every I/O pin is individually configurable for input oroutput direction, and each I/O line can be individually read from or written to.

Ports P1 and P2 have interrupt capability. Each interrupt for the P1 and P2 I/Olines can be individually enabled and configured to provide an interrupt on arising edge or falling edge of an input signal. All P1 I/O lines source a singleinterrupt vector, and all P2 I/O lines source a different, single interrupt vector.

The digital I/O features include:

Independently programmable individual I/Os

Any combination of input or output

Individually configurable P1 and P2 interrupts

Independent input and output data registers

Page 409: MSP430 - general.pdf

Digital I/O Operation

11-3Digital I/O

11.2 Digital I/O Operation

The digital I/O is configured with user software. The setup and operation of thedigital I/O is described in the following sections. Each port register is an 8-bitregister and is accessed with byte instructions. Registers for P7/P8 andP9/P10 are arranged such that the two ports can be addressed at once as a16-bit port. The P7/P8 combination is referred to as PA and the P9/P10combination is referred to as PB in the standard definitions file. For example,to write to P7SEL and P8SEL simultaneously, a word write to PASEL wouldbe used. Some examples of accessing these ports follow:

BIS.B #01h,&P7OUT ; Set LSB of P7OUT.

; P8OUT is unchanged

MOV.W #05555h,&PAOUT ; P7OUT and P8OUT written

; simultaneously

CLR.B &P9SEL ; Clear P9SEL, P10SEL is unchanged

MOV.W &PBIN,&0200h ; P9IN and P10IN read simultaneously

; as 16-bit port.

11.2.1 Input Register PxIN

Each bit in each PxIN register reflects the value of the input signal at thecorresponding I/O pin when the pin is configured as I/O function.

Bit = 0: The input is low

Bit = 1: The input is high

Note: Writing to Read-Only Registers PxIN

Writing to these read-only registers results in increased current consumptionwhile the write attempt is active.

11.2.2 Output Registers PxOUT

Each bit in each PxOUT register is the value to be output on the correspondingI/O pin when the pin is configured as I/O function and output direction.

Bit = 0: The output is low

Bit = 1: The output is high

11.2.3 Direction Registers PxDIR

Each bit in each PxDIR register selects the direction of the corresponding I/Opin, regardless of the selected function for the pin. PxDIR bits for I/O pins thatare selected for other module functions must be set as required by the otherfunction.

Bit = 0: The port pin is switched to input direction

Bit = 1: The port pin is switched to output direction

Page 410: MSP430 - general.pdf

Digital I/O Operation

11-4 Digital I/O

11.2.4 Pullup/Pulldown Resistor Enable Registers PxREN (MSP430F47x3/4 and MSP430F471xx only)

In MSP430F47x3/4 and MSP430F471xx devices all port pins have aprogrammable pullup/pulldown resistor. Each bit in each PxREN registerenables or disables the pullup/pulldown resistor of the corresponding I/O pin.The corresponding bit in the PxOUT register selects if the pin is pulled up orpulled down.

Bit = 0: Pullup/pulldown resistor disabled

Bit = 1: Pullup/pulldown resistor enabled

11.2.5 Function Select Registers PxSEL

Port pins are often multiplexed with other peripheral module functions. See thedevice-specific data sheet to determine pin functions. Each PxSEL bit is usedto select the pin function — I/O port or peripheral module function.

Bit = 0: I/O function is selected for the pin

Bit = 1: Peripheral module function is selected for the pin

Setting PxSELx = 1 does not automatically set the pin direction. Otherperipheral module functions may require the PxDIRx bits to be configuredaccording to the direction needed for the module function. See the pinschematics in the device-specific data sheet.

;Output ACLK on P1.5 on MSP430F41x

BIS.B #020h,&P1SEL ; Select ACLK function for pin

BIS.B #020h,&P1DIR ; Set direction to output *Required*

Note: P1 and P2 Interrupts Are Disabled When PxSEL = 1

When any P1SELx or P2SELx bit is set, the corresponding pin’s interruptfunction is disabled. Therefore, signals on these pins do not generate P1 orP2 interrupts, regardless of the state of the corresponding P1IE or P2IE bit.

When a port pin is selected as an input to a peripheral, the input signal to theperipheral is a latched representation of the signal at the device pin. WhilePxSELx = 1, the internal input signal follows the signal at the pin. However, ifthe PxSELx = 0, the input to the peripheral maintains the value of the inputsignal at the device pin before the PxSELx bit was reset.

Page 411: MSP430 - general.pdf

Digital I/O Operation

11-5Digital I/O

11.2.6 P1 and P2 Interrupts

Each pin in ports P1 and P2 have interrupt capability, configured with thePxIFG, PxIE, and PxIES registers. All P1 pins source a single interrupt vector,and all P2 pins source a different single interrupt vector. The PxIFG registercan be tested to determine the source of a P1 or P2 interrupt.

Interrupt Flag Registers P1IFG, P2IFG

Each PxIFGx bit is the interrupt flag for its corresponding I/O pin and is setwhen the selected input signal edge occurs at the pin. All PxIFGx interruptflags request an interrupt when their corresponding PxIE bit and the GIE bitare set. Each PxIFG flag must be reset with software. Software can also seteach PxIFG flag, providing a way to generate a software-initiated interrupt.

Bit = 0: No interrupt is pending

Bit = 1: An interrupt is pending

Only transitions, not static levels, cause interrupts. If any PxIFGx flag becomesset during a Px interrupt service routine or is set after the RETI instruction ofa Px interrupt service routine is executed, the set PxIFGx flag generatesanother interrupt. This ensures that each transition is acknowledged.

Note: PxIFG Flags When Changing PxOUT or PxDIR

Writing to P1OUT, P1DIR, P2OUT, or P2DIR can result in setting thecorresponding P1IFG or P2IFG flags.

Note: Length of I/O Pin Interrupt Event

Any external interrupt event should be at least 1.5 times MCLK or longer, toensure that it is accepted and the corresponding interrupt flag is set.

Page 412: MSP430 - general.pdf

Digital I/O Operation

11-6 Digital I/O

Interrupt Edge Select Registers P1IES, P2IES

Each PxIES bit selects the interrupt edge for the corresponding I/O pin.

Bit = 0: The PxIFGx flag is set with a low-to-high transition

Bit = 1: The PxIFGx flag is set with a high-to-low transition

Note: Writing to PxIESx

Writing to P1IES or P2IES can result in setting the corresponding interruptflags.

PxIESx PxINx PxIFGx 0 → 1 0 May be set 0 → 1 1 Unchanged 1 → 0 0 Unchanged 1 → 0 1 May be set

Interrupt Enable P1IE, P2IE

Each PxIE bit enables the associated PxIFG interrupt flag.

Bit = 0: The interrupt is disabled

Bit = 1: The interrupt is enabled

11.2.7 Configuring Unused Port Pins

Unused I/O pins should be configured as I/O function, output direction, and leftunconnected on the PC board, to reduce power consumption. The value of thePxOUT bit is don’t care, because the pin is unconnected. See chapter SystemResets, Interrupts, and Operating Modes for termination of unused pins.

Page 413: MSP430 - general.pdf

Digital I/O Registers

11-7Digital I/O

11.3 Digital I/O Registers

The digital I/O registers are listed in Table 11−1 and Table 11−2.

Table 11−1.Digital I/O Registers, P1-P6

Port Register Short Form Address Register Type Initial State

P1 Input P1IN 020h Read only −

Output P1OUT 021h Read/write Unchanged

Direction P1DIR 022h Read/write Reset with PUC

Interrupt Flag P1IFG 023h Read/write Reset with PUC

Interrupt Edge Select P1IES 024h Read/write Unchanged

Interrupt Enable P1IE 025h Read/write Reset with PUC

Port Select P1SEL 026h Read/write Reset with PUC

Resistor Enable P1REN 027h Read/write Reset with PUC

P2 Input P2IN 028h Read only −

Output P2OUT 029h Read/write Unchanged

Direction P2DIR 02Ah Read/write Reset with PUC

Interrupt Flag P2IFG 02Bh Read/write Reset with PUC

Interrupt Edge Select P2IES 02Ch Read/write Unchanged

Interrupt Enable P2IE 02Dh Read/write Reset with PUC

Port Select P2SEL 02Eh Read/write 0C0h with PUC

Resistor Enable P2REN 02Fh Read/write Reset with PUC

P3 Input P3IN 018h Read only −

Output P3OUT 019h Read/write Unchanged

Direction P3DIR 01Ah Read/write Reset with PUC

Port Select P3SEL 01Bh Read/write Reset with PUC

Resistor Enable P3REN 010h Read/write Reset with PUC

P4 Input P4IN 01Ch Read only −

Output P4OUT 01Dh Read/write Unchanged

Direction P4DIR 01Eh Read/write Reset with PUC

Port Select P4SEL 01Fh Read/write Reset with PUC

Resistor Enable P4REN 011h Read/write Reset with PUC

P5 Input P5IN 030h Read only −

Output P5OUT 031h Read/write Unchanged

Direction P5DIR 032h Read/write Reset with PUC

Port Select P5SEL 033h Read/write Reset with PUC

Resistor Enable P5REN 012h Read/write Reset with PUC

P6 Input P6IN 034h Read only −

Output P6OUT 035h Read/write Unchanged

Direction P6DIR 036h Read/write Reset with PUC

Port Select P6SEL 037h Read/write Reset with PUC

Resistor Enable P6REN 013h Read/write Reset with PUCNote: Resistor enable registers RxREN only available in MSP430F47x3/4 and MSP430F471xx devices.

Page 414: MSP430 - general.pdf

Digital I/O Registers

11-8 Digital I/O

Table 11−2.Digital I/O Registers, P7-P10

Port Register Short Form Address Register Type Initial State

P7PA

Input P7IN 038h Read only −PA

Output P7OUT 03Ah Read/write Unchanged

Direction P7DIR 03Ch Read/write Reset with PUC

Port Select P7SEL 03Eh Read/write Reset with PUC

Resistor Enable P7REN 014h Read/write Reset with PUC

P8 Input P8IN 039h Read only −

Output P8OUT 03Bh Read/write Unchanged

Direction P8DIR 03Dh Read/write Reset with PUC

Port Select P8SEL 03Fh Read/write Reset with PUC

Resistor Enable P8REN 015h Read/write Reset with PUC

P9PB

Input P9IN 008h Read only −PB

Output P9OUT 00Ah Read/write Unchanged

Direction P9DIR 00Ch Read/write Reset with PUC

Port Select P9SEL 00Eh Read/write Reset with PUC

Resistor Enable P9REN 016h Read/write Reset with PUC

P10 Input P10IN 009h Read only −

Output P10OUT 00Bh Read/write Unchanged

Direction P10DIR 00Dh Read/write Reset with PUC

Port Select P10SEL 00Fh Read/write Reset with PUC

Resistor Enable P10REN 017h Read/write Reset with PUC

Note: Resistor enable registers RxREN only available in MSP430F47x3/4 and MSP430F471xx devices.

Page 415: MSP430 - general.pdf

12-1Watchdog Timer, Watchdog Timer+

W atchdog Timer , Watchdog Timer+

The watchdog timer is a 16-bit timer that can be used as a watchdog or as aninterval timer. This chapter describes the watchdog timer. The watchdog timeris implemented in all MSP430x4xx devices, except those with the enhancedwatchdog timer, WDT+. The WDT+ is implemented in the MSP430F41x2,MSP430F42x, MSP430F42xA, MSP430FE42x, MSP430FE42xA,MSP430FG461x, MSP430F47x, MSP430FG47x, MSP430F47x3/4, andMSP430F471xx devices.

Topic Page

12.1 Watchdog Timer Introduction 12-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.2 Watchdog Timer Operation 12-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.3 Watchdog Timer Registers 12-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 12

Page 416: MSP430 - general.pdf

Watchdog Timer Introduction

12-2 Watchdog Timer, Watchdog Timer+

12.1 Watchdog Timer Introduction

The primary function of the watchdog timer (WDT) module is to perform acontrolled system restart after a software problem occurs. If the selected timeinterval expires, a system reset is generated. If the watchdog function is notneeded in an application, the module can be configured as an interval timerand can generate interrupts at selected time intervals.

Features of the watchdog timer module include:

Four software-selectable time intervals

Watchdog mode

Interval mode

Access to WDT control register is password protected

Control of RST/NMI pin function

Selectable clock source

Can be stopped to conserve power

Clock fail-safe feature in WDT+

The WDT block diagram is shown in Figure 12−1.

Note: Watchdog Timer Powers Up Active

After a PUC, the WDT module is automatically configured in the watchdogmode with an initial 32768 clock cycle reset interval using the DCOCLK. Theuser must setup or halt the WDT prior to the expiration of the initial resetinterval.

Page 417: MSP430 - general.pdf

Watchdog Timer Introduction

12-3Watchdog Timer, Watchdog Timer+

Figure 12−1. Watchdog Timer Block Diagram

WDTQnY

1

2

3

4Q6

Q9

Q13

Q15

16−bitCounter

CLK

AB

1

1

A EN

PUC

SMCLK

ACLK

Clear

PasswordCompare

0

0

0

0

1

1

1

1

WDTCNTCL

WDTTMSEL

WDTNMI

WDTNMIES

WDTIS1

WDTSSEL

WDTIS0

WDTHOLD

EQU

EQUWrite Enable

Low ByteR / W

MDB

LSB

MSB

WDTCTL

(Asyn)

Int.Flag

PulseGenerator

SMCLK Active

MCLK Active

ACLK Active

16−bit

† MSP430x42x, MSP430FE42x, MSP430FG461x, and MSP430F47x devices only

Fail-SafeLogic†

ClockRequestLogic†

MCLK†

Page 418: MSP430 - general.pdf

Watchdog Timer Operation

12-4 Watchdog Timer, Watchdog Timer+

12.2 Watchdog Timer Operation

The WDT module can be configured as either a watchdog or interval timer withthe WDTCTL register. The WDTCTL register also contains control bits toconfigure the RST/NMI pin. WDTCTL is a 16-bit password-protectedread/write register. Any read or write access must use word instructions andwrite accesses must include the write password 05Ah in the upper byte. Anywrite to WDTCTL with any value other than 05Ah in the upper byte is a securitykey violation and triggers a PUC system reset regardless of timer mode. Anyread of WDTCTL reads 069h in the upper byte. The WDT+ counter clockshould be slower than or equal to the system (MCLK) frequency.

12.2.1 Watchdog Timer Counter

The watchdog timer counter (WDTCNT) is a 16-bit up-counter that is notdirectly accessible by software. The WDTCNT is controlled and time intervalsselected through the watchdog timer control register WDTCTL.

The WDTCNT can be sourced from ACLK or SMCLK. The clock source isselected with the WDTSSEL bit.

12.2.2 Watchdog Mode

After a PUC condition, the WDT module is configured in the watchdog modewith an initial 32768 cycle reset interval using the DCOCLK. The user mustsetup, halt, or clear the WDT prior to the expiration of the initial reset interval,or another PUC is generated. When the WDT is configured to operate inwatchdog mode, either writing to WDTCTL with an incorrect password orexpiration of the selected time interval triggers a PUC. A PUC resets the WDTto its default condition and configures the RST/NMI pin to reset mode.

12.2.3 Interval Timer Mode

Setting the WDTTMSEL bit to 1 selects the interval timer mode. This mode canbe used to provide periodic interrupts. In interval timer mode, the WDTIFG flagis set at the expiration of the selected time interval. A PUC is not generatedin interval timer mode at expiration of the selected timer interval and theWDTIFG enable bit WDTIE remains unchanged.

When the WDTIE bit and the GIE bit are set, the WDTIFG flag requests aninterrupt. The WDTIFG interrupt flag is automatically reset when its interruptrequest is serviced, or may be reset by software. The interrupt vector addressin interval timer mode is different from that in watchdog mode.

Page 419: MSP430 - general.pdf

Watchdog Timer Operation

12-5Watchdog Timer, Watchdog Timer+

Note: Modifying the Watchdog Timer

The WDT interval should be changed together with WDTCNTCL = 1 in asingle instruction to avoid an unexpected immediate PUC or interrupt.

The WDT should be halted before changing the clock source to avoid apossible incorrect interval.

12.2.4 Watchdog Timer Interrupts

The WDT uses two bits in the SFRs for interrupt control.

The WDT interrupt flag, WDTIFG, located in IFG1.0

The WDT interrupt enable, WDTIE, located in IE1.0

When using the WDT in the watchdog mode, the WDTIFG flag sources a resetvector interrupt. The WDTIFG can be used by the reset interrupt serviceroutine to determine if the watchdog caused the device to reset. If the flag isset, then the watchdog timer initiated the reset condition either by timing outor by a security key violation. If WDTIFG is cleared, the reset was caused bya different source.

When using the WDT in interval timer mode, the WDTIFG flag is set after theselected time interval and requests a WDT interval timer interrupt if the WDTIEand the GIE bits are set. The interval timer interrupt vector is different from thereset vector used in watchdog mode. In interval timer mode, the WDTIFG flagis reset automatically when the interrupt is serviced or can be reset withsoftware.

12.2.5 WDT+ Enhancements

The WDT+ module provides enhanced functionality over the WDT. The WDT+provides a fail-safe clocking feature to ensure that the clock to the WDT+cannot be disabled while in watchdog mode. This means the low-powermodes may be affected by the choice for the WDT+ clock. For example, ifACLK is the WDT+ clock source, LPM4 is not available, because the WDT+prevents ACLK from being disabled. Also, if ACLK or SMCLK fail whilesourcing the WDT+, the WDT+ clock source is automatically switched toMCLK. In this case, if MCLK is sourced from a crystal and the crystal has failed,the FLL+ fail-safe feature activates the DCO and uses it as the source forMCLK.

When the WDT+ module is used in interval timer mode, there is no fail-safefeature for the clock source.

Page 420: MSP430 - general.pdf

Watchdog Timer Operation

12-6 Watchdog Timer, Watchdog Timer+

12.2.6 Operation in Low-Power Modes

The MSP430 devices have several low-power modes. Different clock signalsare available in different low-power modes. The requirements of the user’sapplication and the type of clocking used determine how the WDT should beconfigured. For example, the WDT should not be configured in watchdogmode with SMCLK as its clock source if the user wants to use LPM3, becauseSMCLK is not active in LPM3 and the WDT would not function. If WDT+ issourced from SMCLK, SMCLK remains enabled during LPM3, whichincreases the current consumption of LPM3. When the watchdog timer is notrequired, the WDTHOLD bit can be used to hold the WDTCNT, reducing powerconsumption.

12.2.7 Software Examples

Any write operation to WDTCTL must be a word operation with 05Ah(WDTPW) in the upper byte:

; Periodically clear an active watchdog

MOV #WDTPW+WDTCNTCL,&WDTCTL

;

; Change watchdog timer interval

MOV #WDTPW+WDTCNTL+WDTSSEL,&WDTCTL

;

; Stop the watchdog

MOV #WDTPW+WDTHOLD,&WDTCTL

;

; Change WDT to interval timer mode, clock/8192 interval

MOV #WDTPW+WDTCNTCL+WDTTMSEL+WDTIS0,&WDTCTL

Page 421: MSP430 - general.pdf

Watchdog Timer Registers

12-7Watchdog Timer, Watchdog Timer+

12.3 Watchdog Timer Registers

The watchdog timer module registers are listed in Table 12−1.

Table 12−1.Watchdog Timer Registers

Register Short Form Register Type Address Initial State

Watchdog timer control register WDTCTL Read/write 0120h 06900h with PUC

SFR interrupt enable register 1 IE1 Read/write 0000h Reset with PUC

SFR interrupt flag register 1 IFG1 Read/write 0002h Reset with PUC†

† WDTIFG is reset with POR

Page 422: MSP430 - general.pdf

Watchdog Timer Registers

12-8 Watchdog Timer, Watchdog Timer+

WDTCTL, Watchdog Timer Control Register

15 14 13 12 11 10 9 8

WDTPWReads as 069h

Must be written as 05Ah

7 6 5 4 3 2 1 0

WDTHOLD WDTNMIES WDTNMI WDTTMSEL WDTCNTCL WDTSSEL WDTISx

rw−0 rw−0 rw−0 rw−0 r0(w) rw−0 rw−0 rw−0

WDTPW Bits15-8

Watchdog timer password. Always read as 069h. Must be written as 05Ah, ora PUC is generated.

WDTHOLD Bit 7 Watchdog timer hold. This bit stops the watchdog timer. SettingWDTHOLD = 1 when the WDT is not in use conserves power.0 Watchdog timer is not stopped1 Watchdog timer is stopped

WDTNMIES Bit 6 Watchdog timer NMI edge select. This bit selects the interrupt edge for theNMI interrupt when WDTNMI = 1. Modifying this bit can trigger an NMI. Modifythis bit when WDTNMI = 0 to avoid triggering an accidental NMI.0 NMI on rising edge1 NMI on falling edge

WDTNMI Bit 5 Watchdog timer NMI select. This bit selects the function for the RST/NMI pin.0 Reset function1 NMI function

WDTTMSEL Bit 4 Watchdog timer mode select0 Watchdog mode1 Interval timer mode

WDTCNTCL Bit 3 Watchdog timer counter clear. Setting WDTCNTCL = 1 clears the count valueto 0000h. WDTCNTCL is automatically reset.0 No action1 WDTCNT = 0000h

WDTSSEL Bit 2 Watchdog timer clock source select0 SMCLK1 ACLK

WDTISx Bits1-0

Watchdog timer interval select. These bits select the watchdog timer intervalto set the WDTIFG flag and/or generate a PUC.00 Watchdog clock source / 3276801 Watchdog clock source / 819210 Watchdog clock source / 51211 Watchdog clock source / 64

Page 423: MSP430 - general.pdf

Watchdog Timer Registers

12-9Watchdog Timer, Watchdog Timer+

IE1, Interrupt Enable Register 1

7 6 5 4 3 2 1 0

NMIIE WDTIE

rw−0 rw−0

Bits7-5

These bits may be used by other modules. See device-specific data sheet.

NMIIE Bit 4 NMI interrupt enable. This bit enables the NMI interrupt. Because other bitsin IE1 may be used for other modules, it is recommended to set or clear thisbit using BIS.B or BIC.B instructions, rather than MOV.B or CLR.Binstructions.0 Interrupt not enabled1 Interrupt enabled

Bits3-1

These bits may be used by other modules. See device-specific data sheet.

WDTIE Bit 0 Watchdog timer interrupt enable. This bit enables the WDTIFG interrupt forinterval timer mode. It is not necessary to set this bit for watchdog mode.Because other bits in IE1 may be used for other modules, it is recommendedto set or clear this bit using BIS.B or BIC.B instructions, rather than MOV.Bor CLR.B instructions.0 Interrupt not enabled1 Interrupt enabled

Page 424: MSP430 - general.pdf

Watchdog Timer Registers

12-10 Watchdog Timer, Watchdog Timer+

IFG1, Interrupt Flag Register 1

7 6 5 4 3 2 1 0

NMIIFG WDTIFG

rw−(0) rw−(0)

Bits7-5

These bits may be used by other modules. See device-specific data sheet.

NMIIFG Bit 4 NMI interrupt flag. NMIIFG must be reset by software. Because other bits inIFG1 may be used for other modules, it is recommended to clear NMIIFG byusing BIS.B or BIC.B instructions, rather than MOV.B or CLR.B instructions.0 No interrupt pending1 Interrupt pending

Bits3-1

These bits may be used by other modules. See device-specific data sheet.

WDTIFG Bit 0 Watchdog timer interrupt flag. In watchdog mode, WDTIFG remains set untilreset by software. In interval mode, WDTIFG is reset automatically byservicing the interrupt, or it can be reset by software. Because other bits inIFG1 may be used for other modules, it is recommended to clear WDTIFG byusing BIS.B or BIC.B instructions, rather than MOV.B or CLR.B instructions.0 No interrupt pending1 Interrupt pending

Page 425: MSP430 - general.pdf

13-1Basic Timer1

Basic Timer1

The Basic Timer1 module is composed of two independent cascadable 8-bittimers. This chapter describes the Basic Timer1. Basic Timer1 is implementedin all MSP430x4xx devices.

Topic Page

13.1 Basic Timer1 Introduction 13-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13.2 Basic Timer1 Operation 13-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13.3 Basic Timer1 Registers 13-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 13

Page 426: MSP430 - general.pdf

Basic Timer1 Introduction

13-2 Basic Timer1

13.1 Basic Timer1 Introduction

The Basic Timer1 supplies LCD timing and low frequency time intervals. TheBasic Timer1 is two independent 8-bit timers that can also be cascaded to formone 16-bit timer function.

Some uses for the Basic Timer1 include:

Real-time clock (RTC) function

Software time increments

Basic Timer1 features include:

Selectable clock source

Two independent, cascadable 8-bit timers

Interrupt capability

LCD control signal generation

The Basic Timer1 block diagram is shown in Figure 13−1.

Note: Basic Timer1 Initialization

The Basic Timer1 module registers have no initial condition. These registersmust be configured by user software before use.

Page 427: MSP430 - general.pdf

Basic Timer1 Introduction

13-3Basic Timer1

Figure 13−1. Basic Timer1 Block Diagram

BTCNT2

Set_BTIFG

BTCNT1EN1

CLK1

Q4 Q5 Q6 Q7

BTDIVBTHOLD

ACLK

EN2

CLK2

Q4 Q5 Q6 Q7Q3Q2Q1Q0

BTSSEL

SMCLKBTIPx

BTFRFQx

ACLK:256

fLCD

00

01

10

11

11

10

01

00

111

110

101

100

001

011

010

000

Page 428: MSP430 - general.pdf

Basic Timer1 Introduction

13-4 Basic Timer1

13.2 Basic Timer1 Operation

The Basic Timer1 module can be configured as two 8-bit timers or one 16-bittimer with the BTCTL register. The BTCTL register is an 8-bit read/writeregister. Any read or write access must use byte instructions. The BasicTimer1 controls the LCD frame frequency with BTCNT1.

13.2.1 Basic Timer1 Counter One

The Basic Timer1 counter one, BTCNT1, is an 8-bit timer/counter directlyaccessible by software. BTCNT1 is incremented with ACLK and provides theframe frequency for the LCD controller. BTCNT1 can be stopped by setting theBTHOLD and BTDIV bits.

13.2.2 Basic Timer1 Counter Two

The Basic Timer1 counter two, BTCNT2, is an 8-bit timer/counter directlyaccessible by software. BTCNT2 can be sourced from ACLK or SMCLK, orfrom ACLK/256 when cascaded with BTCNT1. The BTCNT2 clock source isselected with the BTSSEL and BTDIV bits. BTCNT2 can be stopped to reducepower consumption by setting the HOLD bit.

BTCNT2 sources the Basic Timer1 interrupt, BTIFG. The interrupt interval isselected with the BTIPx bits

Note: Reading or Writing BTCNT1 and BTCNT2

When the CPU clock and counter clock are asynchronous, any read fromBTCNT1 or BTCNT2 may be unpredictable. Any write to BTCNT1 orBTCNT2 takes effect immediately.

13.2.3 16-Bit Counter Mode

The 16-bit timer/counter mode is selected when control the BTDIV bit is set.In this mode, BTCNT1 is cascaded with BTCNT2. The clock source ofBTCNT1 is ACLK, and the clock source of BTCNT2 is ACLK/256.

Page 429: MSP430 - general.pdf

Basic Timer1 Introduction

13-5Basic Timer1

13.2.4 Basic Timer1 Operation: Signal fLCD

The LCD controller (but not the LCD_A controller) uses the fLCD signal fromthe BTCNT1 to generate the timing for common and segment lines. ACLKsources BTCNT1 and is assumed to be 32768 Hz for generating fLCD. The fLCDfrequency is selected with the BTFRFQx bits and can be ACLK/256,ACLK/128, ACLK/64, or ACLK/32. The proper fLCD frequency depends on theLCD’s frame frequency and the LCD multiplex rate and is calculated by:

fLCD = 2 × mux × fFrame

For example, to calculate fLCD for a 3-mux LCD, with a frame frequency of30 Hz to 100 Hz:

fFrame (from LCD data sheet) = 30 Hz to 100 Hz

fLCD = 2 × 3 × fFrame

fLCD(min) = 180 Hz

fLCD(max) = 600 Hz

select fLCD = 32768/128 = 256 Hz or 32768/64 = 512 Hz

The LCD_A controller does not use the Basic Timer1 for fLCD generation. Seethe LCD Controller and LCD_A Controller chapters for more details on the LCDcontrollers.

13.2.5 Basic Timer1 Interrupts

The Basic Timer1 uses two bits in the SFRs for interrupt control.

Basic Timer1 interrupt flag, BTIFG, located in IFG2.7

Basic Timer1 interrupt enable, BTIE, located in IE2.7

The BTIFG flag is set after the selected time interval and requests a BasicTimer1 interrupt if the BTIE and the GIE bits are set. The BTIFG flag is resetautomatically when the interrupt is serviced, or it can be reset with software.

Page 430: MSP430 - general.pdf

Basic Timer1 Introduction

13-6 Basic Timer1

13.3 Basic Timer1 Registers

The Basic Timer1 module registers are listed in Table 13−1.

Table 13−1.Basic Timer1 Registers

Register Short Form Register Type Address Initial State

Basic Timer1 Control BTCTL Read/write 040h Unchanged

Basic Timer1 Counter 1 BTCNT1 Read/write 046h Unchanged

Basic Timer1 Counter 2 BTCNT2 Read/write 047h Unchanged

SFR interrupt enable register 2 IE2 Read/write 001h Reset with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h Reset with PUC

Note: The Basic Timer1 registers should be configured at power-up. There is no initial state for BTCTL, BTCNT1, or BTCNT2.

Page 431: MSP430 - general.pdf

Basic Timer1 Introduction

13-7Basic Timer1

BTCTL, Basic Timer1 Control Register

7 6 5 4 3 2 1 0

BTSSEL BTHOLD BTDIV BTFRFQx BTIPx

rw rw rw rw rw rw rw rw

BTSSEL Bit 7 BTCNT2 clock select. This bit, together with the BTDIV bit, selects theclock source for BTCNT2. See the description for BTDIV.

BTHOLD Bit 6 Basic Timer1 hold0 BTCNT1 and BTCNT2 are operational1 BTCNT1 is held if BTDIV=1

BTCNT2 is held

BTDIV Bit 5 Basic Timer1 clock divide. This bit together with the BTSSEL bit, selectsthe clock source for BTCNT2.

BTSSEL BTDIV BTCNT2 Clock Source

0 0 ACLK

0 1 ACLK/256

1 0 SMCLK

1 1 ACLK/256

BTFRFQx Bits4−3

fLCD frequency. These bits control the LCD update frequency.00 fACLK/3201 fACLK/6410 fACLK/12811 fACLK/256

BTIPx Bits2−0

Basic Timer1 interrupt interval000 fCLK2/2001 fCLK2/4010 fCLK2/8011 fCLK2/16100 fCLK2/32101 fCLK2/64110 fCLK2/128111 fCLK2/256

Page 432: MSP430 - general.pdf

Basic Timer1 Introduction

13-8 Basic Timer1

BTCNT1, Basic Timer1 Counter 1

7 6 5 4 3 2 1 0

BTCNT1x

rw rw rw rw rw rw rw rw

BTCNT1x Bits7−0

BTCNT1 register. The BTCNT1 register is the count of BTCNT1.

BTCNT2, Basic Timer1 Counter 2

7 6 5 4 3 2 1 0

BTCNT2x

rw rw rw rw rw rw rw rw

BTCNT2x Bits7−0

BTCNT2 register. The BTCNT2 register is the count of BTCNT2.

Page 433: MSP430 - general.pdf

Basic Timer1 Introduction

13-9Basic Timer1

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

BTIE

rw−0

BTIE Bit 7 Basic Timer1 interrupt enable. This bit enables the BTIFG interrupt. Becauseother bits in IE2 may be used for other modules, it is recommended to set orclear this bit using BIS.B or BIC.B instructions, rather than MOV.B or CLR.Binstructions.0 Interrupt not enabled1 Interrupt enabled

Bits6-1

These bits may be used by other modules. See device-specific data sheet.

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

BTIFG

rw−0

BTIFG Bit 7 Basic Timer1 interrupt flag. Because other bits in IFG2 may be used for othermodules, it is recommended to clear BTIFG automatically by servicing theinterrupt, or by using BIS.B or BIC.B instructions, rather than MOV.B orCLR.B instructions.0 No interrupt pending1 Interrupt pending

Bits6-1

These bits may be used by other modules. See device-specific data sheet.

Page 434: MSP430 - general.pdf

13-10 Basic Timer1

Page 435: MSP430 - general.pdf

14-1Real Time Clock

Real Time Clock

The Real-Time Clock module is a 32-bit counter module with calendarfunction. This chapter describes the Real-Time Clock (RTC) module of theMSP430x4xx family. The RTC is implemented in MSP430F41x2,MSP430FG461x, MSP430F47x, MSP430FG47x, MSP430F47x3/4, andMSP430F471xx devices.

Topic Page

14.1 Real-Time Clock Introduction 14-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14.2 Real-Time Clock Operation 14-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14.3 Real-Time Clock Registers 14-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 14

Page 436: MSP430 - general.pdf

RTC Introduction

14-2 Real Time Clock

14.1 RTC Introduction

The Real-Time Clock (RTC) module can be used as a general-purpose 32-bittimer or as a RTC with calendar function.

RTC features include:

Calender and clock mode

32-bit counter mode with selectable clock sources

Automatic counting of seconds, minutes, hours, day of week, day ofmonth, month and year in calender mode.

Interrupt capability

Selectable BCD format

The RTC block diagram is shown in Figure 14−1.

Note: Real-Time Clock Initialization

Most RTC module registers have no initial condition. These registers mustbe configured by user software before use.

Page 437: MSP430 - general.pdf

RTC Introduction

14-3Real Time Clock

Figure 14−1. Real-Time Clock

RTCMODEx

00

01

10

078... ...15

SMCLK

Basic Timer BTCNT2.Q6

ACLK

11

Set_RTCFG

RTCNT3/RTCHOUR

00

01

10

11

RTCBCD

RTCNT1/RTCSEC

RTCNT2/RTCMIN

RTCNT4/RTCDOW

16...2324...31

Calendar

RTCMONRTCYEARLRTCYEARH

BCD

BCD

RTCDAY

RTCTEVx

EN

Mode

RTCHOLD

Set_BTIFG

RTCIE

0

1Set_BTIFG fromBasic Timer

Midnight

8−bit overflow / minute changed

16−bit overflow / hour changed

24−bit overflow / RTCHOUR = Midnight

32−bit overflow / RTCHOUR = Noon

Page 438: MSP430 - general.pdf

Real-Time Clock Operation

14-4 Real Time Clock

14.2 Real-Time Clock Operation

The Real-Time Clock module can be configured as a real-time clock withcalendar function or as a 32-bit general-purpose counter with the RTCMODExbits.

14.2.1 Counter Mode

Counter mode is selected when RTCMODEx < 11. In this mode, a 32-bitcounter is provided that is directly accessible by software. Switching fromcalendar to counter mode resets the count value.

The clock to increment the counter can be sourced from ACLK, SMCLK, orfrom the BTCNT2 input clock divided by 128 from the Basic Timer1 module,selected by the RTCMODEx bits. The counter can be stopped by setting theRTCHOLD bit.

Four individual 8-bit counters are cascaded to provide the 32-bit counter. Thisprovides interrupt triggers at 8-bit, 16-bit, 24-bit, and 32-bit overflows. Eachcounter RTCNT1 - RTCNT4 is individually accessible and may be read orwritten to.

Note: Accessing the RTCNTx registers

When the counter clock is asynchronous to the CPU clock, any read from anyRTCNTx register should occur while the counter is not operating. Otherwise,the results may be unpredictable. Alternatively, the counter may be readmultiple times while operating, and a majority vote taken in software todetermine the correct reading. Any write to any RTCNTx register takes effectimmediately.

Page 439: MSP430 - general.pdf

Real-Time Clock Operation

14-5Real Time Clock

14.2.2 Calendar Mode

Calendar mode is selected when RTCMODEx = 11. In calendar mode the RTCprovides seconds, minutes, hours, day of week, day of month, month, and yearin selectable BCD or hexadecimal format. Switching from counter to calendarmode clears the seconds, minutes, hours, day-of-week, and year counts andsets day-of-month and month counts to 1.

When RTCBCD = 1, BCD format is selected for the calendar registers. Theformat must be selected before the time is set. Changing the state of RTCBCDclears the seconds, minutes, hours, day-of-week, and year counts and setsday-of-month and month counts to 1.

The calendar includes a leap year algorithm that considers all years evenlydivisible by 4 as leap years. This algorithm is accurate from the year 1901through 2099.

Note: Accessing the Real-Time Clock registers

When the counter clock is asynchronous to the CPU clock, any read from anycounting register should occur while the counter is not operating. Otherwise,the results may be unpredictable. Alternatively, the counter may be readmultiple times while operating, and a majority vote taken in software todetermine the correct reading.

Any write to any counting register takes effect immediately. However theclock is stopped during the write. This could result in losing up to one secondduring a write. Writing of data outside the legal ranges results inunpredictable behavior.

The RTC does not provide an alarm function. It can easily be implemented insoftware if required.

14.2.3 RTC and Basic Timer1 Interaction

In calendar mode the Basic Timer1 is automatically configured as a pre-dividerfor the RTC module with the two 8-bit timers cascaded and ACLK selected asthe Basic Timer1 clock source. The BTSSEL, BTHOLD and BTDIV bits areignored and RTCHOLD controls both the RTC and the Basic Timer1.

RTC and Basic Timer1 interrupts interact as described in Section 14.2.4,Real-Time Clock Interrupts.

Page 440: MSP430 - general.pdf

Real-Time Clock Operation

14-6 Real Time Clock

14.2.4 Real-Time Clock Interrupts

The Real-Time Clock uses two bits for interrupt control.

Basic Timer1 interrupt flag, BTIFG, located in IFG2.7

Real-Time Clock interrupt enable, RTCIE, located in the module

The Real-Time Clock module shares the Basic Timer1 interrupt flag andvector. When RTCIE = 0, the Basic Timer1 controls interrupt generation withthe BTIPx bits. In this case, the RTCEVx bits select the interval for setting theRTCFG flag, but the RTCFG flag does not generate an interrupt. The RTCFGflag must be cleared with software when RTCIE = 0.

When RTCIE = 1, the RTC controls interrupt generation and the Basic Timer1BTIPx bits are ignored. In this case, the RTCFG and BTIFG flags are set at theinterval selected with the RTCEVx bits, and an interrupt request is generatedif the GIE bit is set. Both the RTCFG and BTIFG flags are reset automaticallywhen the interrupt is serviced, or can be reset with software.

The interrupt intervals are listed in Table 14−1.

Table 14−1.RTC Interrupt Intervals

RTC Mode RTCTEVx Interrupt Interval

Counter Mode 00 8-bit overflow

01 16-bit overflow

10 24-bit overflow

11 32-bit overflow

Calendar Mode 00 Minute changed

01 Hour changed

10 Every day at midnight (00:00)

11 Every day at noon (12:00)

Page 441: MSP430 - general.pdf

Real-Time Clock Registers

14-7Real Time Clock

14.3 Real-Time Clock Registers

The Real-Time Clock registers are listed in Table 14−2 for byte access. Theymay be accessed with word instructions as listed in Table 14−3.

Table 14−2.Real-Time Clock Registers

Register Short Form Register Type Address Initial State

Real-Time Clock control register RTCCTL Read/write 041h 040h with POR

Real-Timer Clock second RTCSEC/ Read/write 042h None, not resetReal-Timer Clock secondReal-Timer Counter register 1

RTCSEC/RTCNT1

Read/write 042h None, not reset

Real-Time Clock minute RTCMIN/ Read/write 043h None, not resetReal-Time Clock minuteReal-Time Counter register 2

RTCMIN/RTCNT2

Read/write 043h None, not reset

Real-Time Clock hour RTCHOUR/ Read/write 044h None, not resetReal-Time Clock hourReal-Time Counter register 3

RTCHOUR/RTCNT3

Read/write 044h None, not reset

Real-Time Clock day-of-Week RTCDOW/ Read/write 045h None, not resetReal-Time Clock day-of-WeekReal-Time Counter register 4

RTCDOW/RTCNT4

Read/write 045h None, not reset

Real-Time Clock day-of-month RTCDAY Read/write 04Ch None, not reset

Real-Time Clock month RTCMON Read/write 04Dh None, not reset

Real-Time Clock year (low byte) RTCYEARL Read/write 04Eh None, not reset

Real-Time Clock year (high byte) RTCYEARH Read/write 04Fh None, not reset

SFR interrupt enable register 2 IE2 Read/write 001h Reset with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h Reset with PUC

Note: Modifying SFR bits

To avoid modifying control bits of other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Table 14−3.Real-Time Clock Registers, Word Access

Word Register Short FormHigh-ByteRegister

Low-ByteRegister Address

Real-Time control register RTCTL RTCCTL BTCTL 040h

Real-Time Clock time 0 RTCTIM0/ RTCMIN/ RTCSEC/ 042hReal-Time Clock time 0Real-Time Counter registers 1,2

RTCTIM0/RTCNT12

RTCMIN/RTCNT2

RTCSEC/RTCNT1

042h

Real-Time Clock time 1 RTCTIM1/ RTCDOW/ RTCHOUR/ 044hReal-Time Clock time 1Real-Time Counter registers 3,4

RTCTIM1/RTCNT34

RTCDOW/RTCNT4

RTCHOUR/RTCNT3

044h

Real-Time Clock date RTCDATE RTCMON RTCDAY 04Ch

Real-Time Clock year RTCYEAR RTCYEARH RTCYEARL 04Eh

Page 442: MSP430 - general.pdf

Real-Time Clock Registers

14-8 Real Time Clock

RTCCTL, Real-Time Clock Control Register

7 6 5 4 3 2 1 0

RTCBCD RTCHOLD RTCMODEx RTCTEVx RTCIE RTCFG

rw-(0) rw-(1) rw-(0) rw-(0) rw-(0) rw-(0) rw-0 rw-0

RTCBCD Bit 7 BCD format select. This bit selects BCD format for the calendar registerswhen RTCMODEx = 11.0 Hexadecimal format1 BCD format

RTCHOLD Bit 6 Real-Time Clock hold0 Real-Time Clock is operational1 RTCMODEx < 11: The RTC module is stopped

RTCMODEx = 11: The RTC and the Basic Timer1 are stopped

RTCMODEx Bits5-4

Real-Time Clock mode and clock source select

RTCMODEx Counter Mode Clock Source

00 32-bit counter ACLK

01 32-bit counter BTCNT2.Q6

10 32-bit counter SMCLK

11 Calendar mode BTCNT2.Q6

RTCTEVx Bits3-2

Real-Time Clock interrupt event. These bits select the event for settingRTCFG.

RTC Mode RTCTEVx Interrupt Interval

Counter Mode 00 8-bit overflow

01 16-bit overflow

10 24-bit overflow

11 32-bit overflow

Calendar Mode 00 Minute changed

01 Hour changed

10 Every day at midnight (00:00)

11 Every day at noon (12:00)

RTCIE Bit 1 Real-Time Clock interrupt enable0 Interrupt not enabled1 Interrupt enabled

RTCFG Bit 0 Real-Time Clock interrupt flag0 No time event occurred1 Time event occurred

Page 443: MSP430 - general.pdf

Real-Time Clock Registers

14-9Real Time Clock

RTCNT1, RTC Counter 1, Counter Mode

7 6 5 4 3 2 1 0

RTCNT1x

rw rw rw rw rw rw rw rw

RTCNT1x Bits7−0

RTCNT1 register. The RTCNT1 register is the count of RTCNT1.

RTCNT2, RTC Counter 2, Counter Mode

7 6 5 4 3 2 1 0

RTCNT2x

rw rw rw rw rw rw rw rw

RTCNT2x Bits7−0

RTCNT2 register. The RTCNT2 register is the count of RTCNT2.

RTCNT3, RTC Counter 3, Counter Mode

7 6 5 4 3 2 1 0

RTCNT3x

rw rw rw rw rw rw rw rw

RTCNT3x Bits7−0

RTCNT3 register. The RTCNT3 register is the count of RTCNT3.

RTCNT4, RTC Counter 4, Counter Mode

− 7 6 5 4 3 2 1 0

RTCNT4x

rw rw rw rw rw rw rw rw

RTCNT4x Bits7−0

RTCNT4 register. The RTCNT4 register is the count of RTCNT4.

Page 444: MSP430 - general.pdf

Real-Time Clock Registers

14-10 Real Time Clock

RTCSEC, RTC Seconds Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 Seconds (0...59)

r-0 r-0 rw rw rw rw rw rw

RTCSEC, RTC Seconds Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 Seconds - high digit (0...5) Seconds - low digit (0...9)

r-0 rw rw rw rw rw rw rw

RTCMIN, RTC Minutes Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 Minutes (0...59)

r-0 r-0 rw rw rw rw rw rw

RTCMIN, RTC Minutes Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 Minutes - high digit (0...5) Minutes - low digit (0...9)

r-0 rw rw rw rw rw rw rw

Page 445: MSP430 - general.pdf

Real-Time Clock Registers

14-11Real Time Clock

RTCHOUR, RTC Hours Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 0 Hours (0...24)

r-0 r-0 r-0 rw rw rw rw rw

RTCHOUR, RTC Hours Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 0 Hours high digit (0...2) Hours low digit (0...9)

r-0 r-0 rw rw rw rw rw rw

RTCDOW, RTC Day-of-Week Register, Calendar Mode

7 6 5 4 3 2 1 0

0 0 0 0 0 Day-of-Week (0...6)

r-0 r-0 r-0 r-0 r-0 rw rw rw

Page 446: MSP430 - general.pdf

Real-Time Clock Registers

14-12 Real Time Clock

RTCDAY, RTC Day-of-Month Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 0 Day-of-Month (1...28,29,30,31)

r-0 r-0 r-0 rw rw rw rw rw

RTCDAY, RTC Day-of-Month Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 0 Day-of-Month high digit(0...3) Day-of-Month low digit (0...9)

r-0 r-0 rw rw rw rw rw rw

RTCMON, RTC Month Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 0 0 Month (1..12)

r-0 r-0 r-0 r-0 rw rw rw rw

RTCMON, RTC Month Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 0 0 Month highdigit (0...3) Month low digit (0...9)

r-0 r-0 r-0 rw rw rw rw rw

Page 447: MSP430 - general.pdf

Real-Time Clock Registers

14-13Real Time Clock

RTCYEARL, RTC Year Low-Byte Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

Year Low Byte of 0...4095

rw rw rw rw rw rw rw rw

RTCYEARL, RTC Year Low-Byte Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

Decade (0...9) Year lowest digit (0...9)

rw rw rw rw rw rw rw rw

RTCYEARH, RTC Year High-Byte Register, Calendar Mode with Hexadecimal Format

7 6 5 4 3 2 1 0

0 0 0 0 Year High Byte of 0...4095

r-0 r-0 r-0 r-0 rw rw rw rw

RTCYEARH, RTC Year High-Byte Register, Calendar Mode with BCD Format

7 6 5 4 3 2 1 0

0 Century high digit (0...4) Century low digit (0...9)

r-0 rw rw rw rw rw rw rw

Page 448: MSP430 - general.pdf

Real-Time Clock Registers

14-14 Real Time Clock

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

BTIE

rw-0

BTIE Bit 7 Basic Timer1 interrupt enable. This bit enables the BTIFG interrupt. Becauseother bits in IE2 may be used for other modules, it is recommended to set orclear this bit using BIS.B or BIC.B instructions, rather than MOV.B or CLR.Binstructions.0 Interrupt not enabled1 Interrupt enabled

Bits6-1

These bits may be used by other modules. See device-specific data sheet.

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

BTIFG

rw-0

BTIFG Bit 7 Basic Timer1 interrupt flag. Because other bits in IFG2 may be used for othermodules, it is recommended to clear BTIFG automatically by servicing theinterrupt, or by using BIS.B or BIC.B instructions, rather than MOV.B orCLR.B instructions.0 No interrupt pending1 Interrupt pending

Bits6-1

These bits may be used by other modules. See device-specific data sheet.

Page 449: MSP430 - general.pdf

15-1Timer_A

Timer_A

Timer_A is a 16-bit timer/counter with multiple capture/compare registers. Thischapter describes Timer_A. This chapter describes the operation of theTimer_A of the MSP430x4xx device family.

Topic Page

15.1 Timer_A Introduction 15-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15.2 Timer_A Operation 15-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15.3 Timer_A Registers 15-19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 15

Page 450: MSP430 - general.pdf

Timer_A Introduction

15-2 Timer_A

15.1 Timer_A Introduction

Timer_A is a 16-bit timer/counter with three or five capture/compare registers.Timer_A can support multiple capture/compares, PWM outputs, and intervaltiming. Timer_A also has extensive interrupt capabilities. Interrupts may begenerated from the counter on overflow conditions and from each of thecapture/compare registers.

Timer_A features include:

Asynchronous 16-bit timer/counter with four operating modes

Selectable and configurable clock source

Three or five configurable capture/compare registers

Configurable outputs with PWM capability

Asynchronous input and output latching

Interrupt vector register for fast decoding of all Timer_A interrupts

The block diagram of Timer_A is shown in Figure 15−1.

Note: Use of the Word Count

Count is used throughout this chapter. It means the counter must be in theprocess of counting for the action to take place. If a particular value is directlywritten to the counter, then an associated action does not take place.

Note: Second Timer_A On Select Devices

MSP430x415, MSP430x417, and MSP430xW42x devices implement asecond Timer_A with five capture/compare registers. On these devices, bothTimer_A modules are identical in function, except for the additionalcapture/compare registers.

Page 451: MSP430 - general.pdf

Timer_A Introduction

15-3Timer_A

Figure 15−1. Timer_A Block Diagram

CCR4

Compararator 4CCI

15 0

CCISx

OUTMODx

CaptureMode

CMx

Sync

SCS

COVlogic

OutputUnit4 D Set QEQU0

OUT

OUT4 Signal

Reset

GND

VCC

CCI4A

CCI4B

EQU4

Divider1/2/4/8

CountMode

16−bit TimerTAR

RC

Set TAIFG

15 0

TASSELx MCxIDx

00

01

10

11

Clear

Timer Clock

EQU0

Timer Clock

Timer Clock

TACCR4

SCCI Y AEN

CCR1

POR

TACLR

CCR0

Timer Block

00

01

10

11

Set TA1CCR4CCIFG

CAP

1

0

1

0

CCR2

CCR3

ACLK

SMCLK

TACLK

Page 452: MSP430 - general.pdf

Timer_A Operation

15-4 Timer_A

15.2 Timer_A Operation

The Timer_A module is configured with user software. The setup andoperation of Timer_A is discussed in the following sections.

15.2.1 16-Bit Timer Counter

The 16-bit timer/counter register, TAR, increments or decrements (dependingon mode of operation) with each rising edge of the clock signal. TAR can beread or written with software. Additionally, the timer can generate an interruptwhen it overflows.

TAR may be cleared by setting the TACLR bit. Setting TACLR also clears theclock divider and count direction for up/down mode.

Note: Modifying Timer_A Registers

It is recommended to stop the timer before modifying its operation (withexception of the interrupt enable, interrupt flag, and TACLR) to avoid errantoperating conditions.

When the timer clock is asynchronous to the CPU clock, any read from TARshould occur while the timer is not operating or the results may beunpredictable. Alternatively, the timer may be read multiple times whileoperating, and a majority vote taken in software to determine the correctreading. Any write to TAR takes effect immediately.

Clock Source Select and Divider

The timer clock can be sourced from ACLK, SMCLK, or externally via TACLKor INCLK. The clock source is selected with the TASSELx bits. The selectedclock source may be passed directly to the timer or divided by 2, 4, or 8 usingthe IDx bits. The clock divider is reset when TACLR is set.

Page 453: MSP430 - general.pdf

Timer_A Operation

15-5Timer_A

15.2.2 Starting the Timer

The timer may be started or restarted in the following ways:

The timer counts when MCx > 0 and the clock source is active.

When the timer mode is either up or up/down, the timer may be stoppedby writing 0 to TACCR0. The timer may then be restarted by writing anonzero value to TACCR0. In this scenario, the timer starts incrementingin the up direction from zero.

15.2.3 Timer Mode Control

The timer has four modes of operation as described in Table 15−1: stop, up,continuous, and up/down. The operating mode is selected with the MCx bits.

Table 15−1.Timer Modes

MCx Mode Description

00 Stop The timer is halted.

01 Up The timer repeatedly counts from zero to the value ofTACCR0.

10 Continuous The timer repeatedly counts from zero to 0FFFFh.

11 Up/down The timer repeatedly counts from zero up to the value ofTACCR0 and back down to zero.

Page 454: MSP430 - general.pdf

Timer_A Operation

15-6 Timer_A

Up Mode

The up mode is used if the timer period must be different from 0FFFFh counts.The timer repeatedly counts up to the value of compare register TACCR0,which defines the period, as shown in Figure 15−2. The number of timercounts in the period is TACCR0+1. When the timer value equals TACCR0 thetimer restarts counting from zero. If up mode is selected when the timer valueis greater than TACCR0, the timer immediately restarts counting from zero.

Figure 15−2. Up Mode

0h

0FFFFh

TACCR0

The TACCR0 CCIFG interrupt flag is set when the timer counts to the TACCR0value. The TAIFG interrupt flag is set when the timer counts from TACCR0 tozero. Figure 15−3 shows the flag set cycle.

Figure 15−3. Up Mode Flag Setting

CCR0−1 CCR0 0h

Timer Clock

Timer

Set TAIFG

Set TACCR0 CCIFG

1h CCR0−1 CCR0 0h

Changing the Period Register TACCR0

When changing TACCR0 while the timer is running, if the new period is greaterthan or equal to the old period or greater than the current count value, the timercounts up to the new period. If the new period is less than the current countvalue, the timer rolls to zero. However, one additional count may occur beforethe counter rolls to zero.

Page 455: MSP430 - general.pdf

Timer_A Operation

15-7Timer_A

Continuous Mode

In the continuous mode, the timer repeatedly counts up to 0FFFFh and restartsfrom zero as shown in Figure 15−4. The capture/compare register TACCR0works the same way as the other capture/compare registers.

Figure 15−4. Continuous Mode

0h

0FFFFh

The TAIFG interrupt flag is set when the timer counts from 0FFFFh to zero.Figure 15−5 shows the flag set cycle.

Figure 15−5. Continuous Mode Flag Setting

FFFEh FFFFh 0h

Timer Clock

Timer

Set TAIFG

1h FFFEh FFFFh 0h

Page 456: MSP430 - general.pdf

Timer_A Operation

15-8 Timer_A

Use of the Continuous Mode

The continuous mode can be used to generate independent time intervals andoutput frequencies. Each time an interval is completed, an interrupt isgenerated. The next time interval is added to the TACCRx register in theinterrupt service routine. Figure 15−6 shows two separate time intervals t0 andt1 being added to the capture/compare registers. In this usage, the timeinterval is controlled by hardware, not software, without impact from interruptlatency. Up to three (Timer_A3) or five (Timer_A5) independent time intervalsor output frequencies can be generated using capture/compare registers.

Figure 15−6. Continuous Mode Time Intervals

0FFFFh

TACCR0a

TACCR0b TACCR0c TACCR0d

t1

t0 t0

TACCR1a

TACCR1b TACCR1c

TACCR1d

t1 t1

t0

Time intervals can be produced with other modes as well, where TACCR0 isused as the period register. Their handling is more complex since the sum ofthe old TACCRx data and the new period can be higher than the TACCR0value. When the previous TACCRx value plus tx is greater than the TACCR0data, the TACCR0 value must be subtracted to obtain the correct time interval.

Page 457: MSP430 - general.pdf

Timer_A Operation

15-9Timer_A

Up/Down Mode

The up/down mode is used if the timer period must be different from 0FFFFhcounts, and if symmetrical pulse generation is needed. The timer repeatedlycounts up to the value of compare register TACCR0 and back down to zero,as shown in Figure 15−7. The period is twice the value in TACCR0.

Figure 15−7. Up/Down Mode

0h

TACCR0

0FFFFh

The count direction is latched. This allows the timer to be stopped and thenrestarted in the same direction it was counting before it was stopped. If this isnot desired, the TACLR bit must be set to clear the direction. The TACLR bitalso clears the TAR value and the clock divider.

In up/down mode, the TACCR0 CCIFG interrupt flag and the TAIFG interruptflag are set only once during a period, separated by 1/2 the timer period. TheTACCR0 CCIFG interrupt flag is set when the timer counts from TACCR0 − 1to TACCR0, and TAIFG is set when the timer completes counting down from0001h to 0000h. Figure 15−8 shows the flag set cycle.

Figure 15−8. Up/Down Mode Flag Setting

CCR0−1 CCR0 CCR0−1

Timer Clock

Timer

Set TAIFG

Set TACCR0 CCIFG

CCR0−2 1h 0h

Up/Down

Page 458: MSP430 - general.pdf

Timer_A Operation

15-10 Timer_A

Changing the Period Register TACCR0

When changing TACCR0 while the timer is running and counting in the downdirection, the timer continues its descent until it reaches zero. The value inTACCR0 is latched into TACL0 immediately; however, the new period takeseffect after the counter counts down to zero.

When the timer is counting in the up direction and the new period is greaterthan or equal to the old period or greater than the current count value, the timercounts up to the new period before counting down. When the timer is countingin the up direction, and the new period is less than the current count value, thetimer begins counting down. However, one additional count may occur beforethe counter begins counting down.

Use of the Up/Down Mode

The up/down mode supports applications that require dead times betweenoutput signals (See section Timer_A Output Unit). For example, to avoidoverload conditions, two outputs driving an H-bridge must never be in a highstate simultaneously. In the example shown in Figure 15−9 the tdead is:

tdead = ttimer × (TACCR1 − TACCR2)

With: tdead Time during which both outputs need to be inactive

ttimer Cycle time of the timer clock

TACCRx Content of capture/compare register x

The TACCRx registers are not buffered. They update immediately whenwritten to. Therefore, any required dead time is not maintained automatically.

Figure 15−9. Output Unit in Up/Down Mode

0h

0FFFFh

TAIFG

Output Mode 2: Toggle/Reset

Output Mode 6: Toggle/Set

TACCR0

TACCR1

EQU1TAIFG Interrupt EventsEQU1

EQU0EQU1 EQU1

EQU0

TACCR2

EQU2 EQU2EQU2 EQU2

Dead Time

Page 459: MSP430 - general.pdf

Timer_A Operation

15-11Timer_A

15.2.4 Capture/Compare Blocks

Three or five identical capture/compare blocks, TACCRx, are present inTimer_A. Any of the blocks may be used to capture the timer data or togenerate time intervals.

Capture Mode

The capture mode is selected when CAP = 1. Capture mode is used to recordtime events. It can be used for speed computations or time measurements.The capture inputs CCIxA and CCIxB are connected to external pins or internalsignals and are selected with the CCISx bits. The CMx bits select the captureedge of the input signal as rising, falling, or both. A capture occurs on theselected edge of the input signal. If a capture occurs:

The timer value is copied into the TACCRx register

The interrupt flag CCIFG is set

The input signal level can be read at any time via the CCI bit. MSP430x4xxfamily devices may have different signals connected to CCIxA and CCIxB. Seethe device-specific data sheet for the connections of these signals.

The capture signal can be asynchronous to the timer clock and cause a racecondition. Setting the SCS bit synchronizes the capture with the next timerclock. Setting the SCS bit to synchronize the capture signal with the timer clockis recommended. This is illustrated in Figure 15−10.

Figure 15−10. Capture Signal (SCS=1)

n−2 n−1

Timer Clock

Timer

Set TACCRx CCIFG

n+1 n+3 n+4

CCI

Capture

n+2n

Overflow logic is provided in each capture/compare register to indicate if asecond capture was performed before the value from the first capture wasread. Bit COV is set when this occurs as shown in Figure 15−11. COV mustbe reset with software.

Page 460: MSP430 - general.pdf

Timer_A Operation

15-12 Timer_A

Figure 15−11.Capture Cycle

SecondCaptureTaken

COV = 1

CaptureTaken

NoCaptureTaken

ReadTaken

Capture

Clear Bit COV

in Register TACCTLx

Idle

Idle

Capture

Capture Read and No Capture

Capture

Capture ReadCapture

Capture

Capture Initiated by Software

Captures can be initiated by software. The CMx bits can be set for capture onboth edges. Software then sets CCIS1 = 1 and toggles bit CCIS0 to switch thecapture signal between VCC and GND, initiating a capture each time CCIS0changes state:

MOV #CAP+SCS+CCIS1+CM_3,&TACCTLx ; Setup TACCTLx

XOR #CCIS0,&TACCTLx ; TACCTLx = TAR

Compare Mode

The compare mode is selected when CAP = 0. The compare mode is used togenerate PWM output signals or interrupts at specific time intervals. WhenTAR counts to the value in a TACCRx:

Interrupt flag CCIFG is set

Internal signal EQUx = 1

EQUx affects the output according to the output mode

The input signal CCI is latched into SCCI

Page 461: MSP430 - general.pdf

Timer_A Operation

15-13Timer_A

15.2.5 Output Unit

Each capture/compare block contains an output unit. The output unit is usedto generate output signals such as PWM signals. Each output unit has eightoperating modes that generate signals based on the EQU0 and EQUx signals.

Output Modes

The output modes are defined by the OUTMODx bits and are described inTable 15−2. The OUTx signal is changed with the rising edge of the timer clockfor all modes except mode 0. Output modes 2, 3, 6, and 7 are not useful foroutput unit 0, because EQUx = EQU0.

Table 15−2.Output Modes

OUTMODx Mode Description

000 Output The output signal OUTx is defined by theOUTx bit. The OUTx signal updatesimmediately when OUTx is updated.

001 Set The output is set when the timer counts to theTACCRx value. It remains set until a reset ofthe timer, or until another output mode isselected and affects the output.

010 Toggle/Reset The output is toggled when the timer countsto the TACCRx value. It is reset when thetimer counts to the TACCR0 value.

011 Set/Reset The output is set when the timer counts to theTACCRx value. It is reset when the timercounts to the TACCR0 value.

100 Toggle The output is toggled when the timer countsto the TACCRx value. The output period isdouble the timer period.

101 Reset The output is reset when the timer counts tothe TACCRx value. It remains reset untilanother output mode is selected and affectsthe output.

110 Toggle/Set The output is toggled when the timer countsto the TACCRx value. It is set when the timercounts to the TACCR0 value.

111 Reset/Set The output is reset when the timer counts tothe TACCRx value. It is set when the timercounts to the TACCR0 value.

Page 462: MSP430 - general.pdf

Timer_A Operation

15-14 Timer_A

Output Example—Timer in Up Mode

The OUTx signal is changed when the timer counts up to the TACCRx value,and rolls from TACCR0 to zero, depending on the output mode. An exampleis shown in Figure 15−12 using TACCR0 and TACCR1.

Figure 15−12. Output Example—Timer in Up Mode

0h

0FFFFh

EQU0TAIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TACCR0

TACCR1

EQU1 EQU0TAIFG

EQU1 EQU0TAIFG

Interrupt Events

Page 463: MSP430 - general.pdf

Timer_A Operation

15-15Timer_A

Output Example—Timer in Continuous Mode

The OUTx signal is changed when the timer reaches the TACCRx andTACCR0 values, depending on the output mode. An example is shown inFigure 15−13 using TACCR0 and TACCR1.

Figure 15−13. Output Example—Timer in Continuous Mode

0h

0FFFFh

TAIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TACCR0

TACCR1

EQU1 TAIFG EQU1 EQU0 Interrupt EventsEQU0

Page 464: MSP430 - general.pdf

Timer_A Operation

15-16 Timer_A

Output Example—Timer in Up/Down Mode

The OUTx signal changes when the timer equals TACCRx in either countdirection and when the timer equals TACCR0, depending on the output mode.An example is shown in Figure 15−14 using TACCR0 and TACCR2.

Figure 15−14. Output Example—Timer in Up/Down Mode

0h

0FFFFh

TAIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TACCR0

TACCR2

EQU2TAIFG

Interrupt EventsEQU2

EQU0EQU2 EQU2

EQU0

Note: Switching Between Output Modes

When switching between output modes, one of the OUTMODx bits shouldremain set during the transition, unless switching to mode 0. Otherwise,output glitching can occur because a NOR gate decodes output mode 0. Asafe method for switching between output modes is to use output mode 7 asa transition state:

BIS #OUTMOD_7,&TACCTLx ; Set output mode=7

BIC #OUTMODx,&TACCTLx ; Clear unwanted bits

Page 465: MSP430 - general.pdf

Timer_A Operation

15-17Timer_A

15.2.6 Timer_A Interrupts

Two interrupt vectors are associated with the 16-bit Timer_A module:

TACCR0 interrupt vector for TACCR0 CCIFG

TAIV interrupt vector for all other CCIFG flags and TAIFG

In capture mode any CCIFG flag is set when a timer value is captured in theassociated TACCRx register. In compare mode, any CCIFG flag is set if TARcounts to the associated TACCRx value. Software may also set or clear anyCCIFG flag. All CCIFG flags request an interrupt when their correspondingCCIE bit and the GIE bit are set.

TACCR0 Interrupt

The TACCR0 CCIFG flag has the highest Timer_A interrupt priority and hasa dedicated interrupt vector as shown in Figure 15−15. The TACCR0 CCIFGflag is automatically reset when the TACCR0 interrupt request is serviced.

Figure 15−15. Capture/Compare TACCR0 Interrupt Flag

DSet

Q IRQ, Interrupt Service Requested

ResetTimer Clock

POR

CAPEQU0

Capture

IRACC, Interrupt Request Accepted

CCIE

TAIV, Interrupt Vector Generator

The TACCR1 CCIFG, TACCR2 CCIFG, and TAIFG flags are prioritized andcombined to source a single interrupt vector. The interrupt vector register TAIVis used to determine which flag requested an interrupt.

The highest priority enabled interrupt generates a number in the TAIV register(see register description). This number can be evaluated or added to theprogram counter to automatically enter the appropriate software routine.Disabled Timer_A interrupts do not affect the TAIV value.

Any access, read or write, of the TAIV register automatically resets the highestpending interrupt flag. If another interrupt flag is set, another interrupt isimmediately generated after servicing the initial interrupt. For example, if theTACCR1 and TACCR2 CCIFG flags are set when the interrupt service routineaccesses the TAIV register, TACCR1 CCIFG is reset automatically. After theRETI instruction of the interrupt service routine is executed, the TACCR2CCIFG flag generates another interrupt.

Page 466: MSP430 - general.pdf

Timer_A Operation

15-18 Timer_A

TAIV Software Example

The following software example shows the recommended use of TAIV and thehandling overhead. The TAIV value is added to the PC to automatically jumpto the appropriate routine.

The numbers at the right margin show the necessary CPU cycles for eachinstruction. The software overhead for different interrupt sources includesinterrupt latency and return-from-interrupt cycles, but not the task handlingitself. The latencies are:

Capture/compare block TACCR0 11 cycles Capture/compare blocks TACCR1, TACCR2 16 cycles Timer overflow TAIFG 14 cycles

; Interrupt handler for TACCR0 CCIFG. Cycles

CCIFG_0_HND

; ... ; Start of handler Interrupt latency 6

RETI 5

; Interrupt handler for TAIFG, TACCR1 and TACCR2 CCIFG.

TA_HND ... ; Interrupt latency 6

ADD &TAIV,PC ; Add offset to Jump table 3

RETI ; Vector 0: No interrupt 5

JMP CCIFG_1_HND ; Vector 2: TACCR1 2

JMP CCIFG_2_HND ; Vector 4: TACCR2 2

RETI ; Vector 6: Reserved 5

RETI ; Vector 8: Reserved 5

TAIFG_HND ; Vector 10: TAIFG Flag

... ; Task starts here

RETI 5

CCIFG_2_HND ; Vector 4: TACCR2

... ; Task starts here

RETI ; Back to main program 5

CCIFG_1_HND ; Vector 2: TACCR1

... ; Task starts here

RETI ; Back to main program 5

Page 467: MSP430 - general.pdf

Timer_A Registers

15-19Timer_A

15.3 Timer_A Registers

The Timer_A registers are listed in Table 15−3 and Table 15−4.

Table 15−3.Timer_A3 Registers

Register Short Form Register Type Address Initial State

Timer_A controlTimer0_A3 Control

TACTL/TA0CTL

Read/write 0160h Reset with POR

Timer_A counterTimer0_A3 counter

TAR/TA0R

Read/write 0170h Reset with POR

Timer_A capture/compare control 0Timer0_A3 capture/compare control 0

TACCTL0/TA0CCTL

Read/write 0162h Reset with POR

Timer_A capture/compare 0Timer0_A3 capture/compare 0

TACCR0/TA0CCR0

Read/write 0172h Reset with POR

Timer_A capture/compare control 1Timer0_A3 capture/compare control 1

TACCTL1/TA0CCTL1

Read/write 0164h Reset with POR

Timer_A capture/compare 1Timer0_A3 capture/compare 1

TACCR1/TA0CCR1

Read/write 0174h Reset with POR

Timer_A capture/compare control 2Timer0_A3 capture/compare control 2

TACCTL2/TA0CCTL2

Read/write 0166h Reset with POR

Timer_A capture/compare 2Timer0_A3 capture/compare 2

TACCR2/TA0CCR2

Read/write 0176h Reset with POR

Timer_A interrupt vectorTimer0_A3 interrupt vector

TAIV/TA0IV

Read only 012Eh Reset with POR

Table 15−4.Timer1_A5 Registers

Register Short Form Register Type Address Initial State

Timer1_A5 control TA1CTL Read/write 0180h Reset with POR

Timer1_A5 counter TA1R Read/write 0190h Reset with POR

Timer1_A5 capture/compare control 0 TA1CCTL0 Read/write 0182h Reset with POR

Timer1_A5 capture/compare 0 TA1CCR0 Read/write 0192h Reset with POR

Timer1_A5 capture/compare control 1 TA1CCTL1 Read/write 0184h Reset with POR

Timer1_A5 capture/compare 1 TA1CCR1 Read/write 0194h Reset with POR

Timer1_A5 capture/compare control 2 TA1CCTL2 Read/write 0186h Reset with POR

Timer1_A5 capture/compare 2 TA1CCR2 Read/write 0196h Reset with POR

Timer1_A5 capture/compare control 3 TA1CCTL3 Read/write 0188h Reset with POR

Timer1_A5 capture/compare 3 TA1CCR3 Read/write 0198h Reset with POR

Timer1_A5 capture/compare control 4 TA1CCTL4 Read/write 018Ah Reset with POR

Timer1_A5 capture/compare 4 TA1CCR4 Read/write 019Ah Reset with POR

Timer1_A5 interrupt Vector TA1IV Read only 011Eh Reset with POR

Page 468: MSP430 - general.pdf

Timer_A Registers

15-20 Timer_A

TACTL, Timer_A Control Register

15 14 13 12 11 10 9 8

Unused TASSELx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

IDx MCx Unused TACLR TAIE TAIFG

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) w−(0) rw−(0) rw−(0)

Unused Bits15-10

Unused

TASSELx Bits9-8

Timer_A clock source select00 TACLK01 ACLK10 SMCLK11 Inverted TACLK

IDx Bits7-6

Input divider. These bits select the divider for the input clock.00 /101 /210 /411 /8

MCx Bits5-4

Mode control. Setting MCx = 00h when Timer_A is not in use conservespower.00 Stop mode: the timer is halted01 Up mode: the timer counts up to TACCR010 Continuous mode: the timer counts up to 0FFFFh11 Up/down mode: the timer counts up to TACCR0 then down to 0000h

Unused Bit 3 Unused

TACLR Bit 2 Timer_A clear. Setting this bit resets TAR, the clock divider, and the countdirection. The TACLR bit is automatically reset and is always read as zero.

TAIE Bit 1 Timer_A interrupt enable. This bit enables the TAIFG interrupt request.0 Interrupt disabled1 Interrupt enabled

TAIFG Bit 0 Timer_A interrupt flag0 No interrupt pending1 Interrupt pending

Page 469: MSP430 - general.pdf

Timer_A Registers

15-21Timer_A

TAR, Timer_A Register

15 14 13 12 11 10 9 8

TARx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

TARx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

TARx Bits15-0

Timer_A register. The TAR register is the count of Timer_A.

TACCRx, Timer_A Capture/Compare Register x

15 14 13 12 11 10 9 8

TACCRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

TACCRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

TACCRx Bits15-0

Timer_A capture/compare register.Compare mode: TACCRx holds the data for the comparison to the timer valuein the Timer_A Register, TAR.Capture mode: The Timer_A Register, TAR, is copied into the TACCRxregister when a capture is performed.

Page 470: MSP430 - general.pdf

Timer_A Registers

15-22 Timer_A

TACCTLx, Capture/Compare Control Register

15 14 13 12 11 10 9 8

CMx CCISx SCS SCCI Unused CAP

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r r0 rw−(0)

7 6 5 4 3 2 1 0

OUTMODx CCIE CCI OUT COV CCIFG

rw−(0) rw−(0) rw−(0) rw−(0) r rw−(0) rw−(0) rw−(0)

CMx Bit15-14

Capture mode00 No capture01 Capture on rising edge10 Capture on falling edge11 Capture on both rising and falling edges

CCISx Bit13-12

Capture/compare input select. These bits select the TACCRx input signal.See the device-specific data sheet for specific signal connections.00 CCIxA01 CCIxB10 GND11 VCC

SCS Bit 11 Synchronize capture source. This bit is used to synchronize the capture inputsignal with the timer clock.0 Asynchronous capture1 Synchronous capture

SCCI Bit 10 Synchronized capture/compare input. The selected CCI input signal islatched with the EQUx signal and can be read via this bit.

Unused Bit 9 Unused. Read only. Always read as 0.

CAP Bit 8 Capture mode0 Compare mode1 Capture mode

OUTMODx Bits7-5

Output mode. Modes 2, 3, 6, and 7 are not useful for TACCR0 because EQUx = EQU0.000 OUT bit value001 Set010 Toggle/reset011 Set/reset100 Toggle101 Reset110 Toggle/set111 Reset/set

Page 471: MSP430 - general.pdf

Timer_A Registers

15-23Timer_A

CCIE Bit 4 Capture/compare interrupt enable. This bit enables the interrupt request ofthe corresponding CCIFG flag.0 Interrupt disabled1 Interrupt enabled

CCI Bit 3 Capture/compare input. The selected input signal can be read by this bit.

OUT Bit 2 Output. For output mode 0, this bit directly controls the state of the output.0 Output low1 Output high

COV Bit 1 Capture overflow. This bit indicates a capture overflow occurred. COV mustbe reset with software.0 No capture overflow occurred1 Capture overflow occurred

CCIFG Bit 0 Capture/compare interrupt flag0 No interrupt pending1 Interrupt pending

TAIV, Timer_A Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 0 TAIVx 0

r0 r0 r0 r0 r−(0) r−(0) r−(0) r0

TAIVx Bits15-0

Timer_A interrupt vector value

TAIV Contents Interrupt Source Interrupt FlagInterruptPriority

00h No interrupt pending −

02h Capture/compare 1 TACCR1 CCIFG Highest

04h Capture/compare 2 TACCR2 CCIFG

06h Capture/compare 3† TACCR3 CCIFG

08h Capture/compare 4† TACCR4 CCIFG

0Ah Timer overflow TAIFG

0Ch Reserved −

0Eh Reserved − Lowest† Timer1_A5 only

Page 472: MSP430 - general.pdf

15-24 Timer_A

Page 473: MSP430 - general.pdf

16-1Timer_B

Timer_B

Timer_B is a 16-bit timer/counter with multiple capture/compare registers. Thischapter describes the operation of the Timer_B of the MSP430x4xx devicefamily.

Topic Page

16.1 Timer_B Introduction 16-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.2 Timer_B Operation 16-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.3 Timer_B Registers 16-20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 16

Page 474: MSP430 - general.pdf

Timer_B Introduction

16-2 Timer_B

16.1 Timer_B Introduction

Timer_B is a 16-bit timer/counter with three or seven capture/compareregisters. Timer_B can support multiple capture/compares, PWM outputs, andinterval timing. Timer_B also has extensive interrupt capabilities. Interruptsmay be generated from the counter on overflow conditions and from each ofthe capture/compare registers.

Timer_B features include :

Asynchronous 16-bit timer/counter with four operating modes and fourselectable lengths

Selectable and configurable clock source

Three or seven configurable capture/compare registers

Configurable outputs with PWM capability

Double-buffered compare latches with synchronized loading

Interrupt vector register for fast decoding of all Timer_B interrupts

The block diagram of Timer_B is shown in Figure 16−1.

Note: Use of the Word Count

Count is used throughout this chapter. It means the counter must be in theprocess of counting for the action to take place. If a particular value is directlywritten to the counter, then an associated action does not take place.

16.1.1 Similarities and Differences From Timer_A

Timer_B is identical to Timer_A with the following exceptions:

The length of Timer_B is programmable to be 8, 10, 12, or 16 bits.

Timer_B TBCCRx registers are double-buffered and can be grouped.

All Timer_B outputs can be put into a high-impedance state.

The SCCI bit function is not implemented in Timer_B.

Page 475: MSP430 - general.pdf

Timer_B Introduction

16-3Timer_B

Figure 16−1. Timer_B Block Diagram

CCR6

Compararator 6

CCI

15 0

OUTMODx

CaptureMode

CMx

Sync

COVlogic

OutputUnit6 D Set Q

EQU0

OUT

OUT6 Signal

Reset

POR

EQU6

Divider1/2/4/8

CountMode

16−bit TimerTBR

Set TBIFG

15 0MCxIDx

Clear

TBCLR

Timer Clock

CCR0

EQU0

Timer Clock

Timer Clock

VCC

TBR=0

UP/DOWNEQU0

CLLDx

CNTLx

Load

CCR1

CCR2

CCR3

CCR4

CCR5

Timer Block

TBCCR6

RC10 12 168

TBCLGRPx

CCR5

CCR4

CCR1

GroupLoad Logic

GroupLoad Logic

TBSSELx

00

01

10

11

GND

VCC

CCI6A

CCI6B

00

01

10

11

CCISx

00

01

10

11

00

01

10

11CAP

1

0

SCS

1

0

Set TBCCR6CCIFG

Compare Latch TBCL6

ACLK

SMCLK

TBCLK

Page 476: MSP430 - general.pdf

Timer_B Operation

16-4 Timer_B

16.2 Timer_B Operation

The Timer_B module is configured with user software. The setup andoperation of Timer_B is discussed in the following sections.

16.2.1 16-Bit Timer Counter

The 16-bit timer/counter register, TBR, increments or decrements (dependingon mode of operation) with each rising edge of the clock signal. TBR can beread or written with software. Additionally, the timer can generate an interruptwhen it overflows.

TBR may be cleared by setting the TBCLR bit. Setting TBCLR also clears theclock divider and count direction for up/down mode.

Note: Modifying Timer_B Registers

It is recommended to stop the timer before modifying its operation (withexception of the interrupt enable, interrupt flag, and TBCLR) to avoid errantoperating conditions.

When the timer clock is asynchronous to the CPU clock, any read from TBRshould occur while the timer is not operating, or the results may beunpredictable. Alternatively, the timer may be read multiple times whileoperating, and a majority vote taken in software to determine the correctreading. Any write to TBR takes effect immediately.

TBR Length

Timer_B is configurable to operate as an 8-, 10-, 12-, or 16-bit timer with theCNTLx bits. The maximum count value, TBR(max), for the selectable lengthsis 0FFh, 03FFh, 0FFFh, and 0FFFFh, respectively. Data written to the TBRregister in 8-, 10-, and 12-bit modes is right-justified with leading zeros.

Clock Source Select and Divider

The timer clock can be sourced from ACLK, SMCLK, or externally via TBCLKor INCLK. The clock source is selected with the TBSSELx bits. The selectedclock source may be passed directly to the timer or divided by 2,4, or 8 usingthe IDx bits. The clock divider is reset when TBCLR is set.

Page 477: MSP430 - general.pdf

Timer_B Operation

16-5Timer_B

16.2.2 Starting the Timer

The timer may be started or restarted in the following ways:

The timer counts when MCx > 0 and the clock source is active.

When the timer mode is either up or up/down, the timer may be stoppedby loading 0 to TBCL0. The timer may then be restarted by loading anonzero value to TBCL0. In this scenario, the timer starts incrementing inthe up direction from zero.

16.2.3 Timer Mode Control

The timer has four modes of operation as described in Table 16−1: stop, up,continuous, and up/down. The operating mode is selected with the MCx bits.

Table 16−1.Timer Modes

MCx Mode Description

00 Stop The timer is halted.

01 Up The timer repeatedly counts from zero to the value ofcompare register TBCL0.

10 Continuous The timer repeatedly counts from zero to the valueselected by the CNTLx bits.

11 Up/down The timer repeatedly counts from zero up to the value ofTBCL0 and then back down to zero.

Page 478: MSP430 - general.pdf

Timer_B Operation

16-6 Timer_B

Up Mode

The up mode is used if the timer period must be different from TBR(max) counts.The timer repeatedly counts up to the value of compare latch TBCL0, whichdefines the period, as shown in Figure 16−2. The number of timer counts inthe period is TBCL0+1. When the timer value equals TBCL0 the timer restartscounting from zero. If up mode is selected when the timer value is greater thanTBCL0, the timer immediately restarts counting from zero.

Figure 16−2. Up Mode

0h

TBR(max)

TBCL0

The TBCCR0 CCIFG interrupt flag is set when the timer counts to the TBCL0value. The TBIFG interrupt flag is set when the timer counts from TBCL0 tozero. Figure 15−3 shows the flag set cycle.

Figure 16−3. Up Mode Flag Setting

TBCL0−1 TBCL0 0h

Timer Clock

Timer

Set TBIFG

Set TBCCR0 CCIFG

1h TBCL0−1 TBCL0 0h

Changing the Period Register TBCL0

When changing TBCL0 while the timer is running and when the TBCL0 loadevent is immediate, CLLD0 = 00, if the new period is greater than or equal tothe old period, or greater than the current count value, the timer counts up tothe new period. If the new period is less than the current count value, the timerrolls to zero. However, one additional count may occur before the counter rollsto zero.

Page 479: MSP430 - general.pdf

Timer_B Operation

16-7Timer_B

Continuous Mode

In continuous mode the timer repeatedly counts up to TBR(max) and restartsfrom zero as shown in Figure 16−4. The compare latch TBCL0 works the sameway as the other capture/compare registers.

Figure 16−4. Continuous Mode

0h

TBR(max)

The TBIFG interrupt flag is set when the timer counts from TBR(max) to zero.Figure 16−5 shows the flag set cycle.

Figure 16−5. Continuous Mode Flag Setting

TBR (max)−1 TBR (max) 0h

Timer Clock

Timer

Set TBIFG

1h TBR (max) 0hTBR (max)−1

Page 480: MSP430 - general.pdf

Timer_B Operation

16-8 Timer_B

Use of the Continuous Mode

The continuous mode can be used to generate independent time intervals andoutput frequencies. Each time an interval is completed, an interrupt isgenerated. The next time interval is added to the TBCLx latch in the interruptservice routine. Figure 16−6 shows two separate time intervals t0 and t1 beingadded to the capture/compare registers. The time interval is controlled byhardware, not software, without impact from interrupt latency. Up to three(Timer_B3) or 7 (Timer_B7) independent time intervals or output frequenciescan be generated using capture/compare registers.

Figure 16−6. Continuous Mode Time Intervals

0h

EQU0 Interrupt

TBCL0a

TBCL0b TBCL0c TBCL0d

t1

t0 t0

TBCL1a

TBCL1b TBCL1c

TBCL1d

t1 t1

t0

EQU1 Interrupt

TBR(max)

Time intervals can be produced with other modes as well, where TBCL0 isused as the period register. Their handling is more complex since the sum ofthe old TBCLx data and the new period can be higher than the TBCL0 value.When the sum of the previous TBCLx value plus tx is greater than the TBCL0data, TBCL0 + 1 must be subtracted to obtain the correct time interval.

Page 481: MSP430 - general.pdf

Timer_B Operation

16-9Timer_B

Up/Down Mode

The up/down mode is used if the timer period must be different from TBR(max)counts, and if a symmetrical pulse generation is needed. The timer repeatedlycounts up to the value of compare latch TBCL0, and back down to zero, asshown in Figure 16−7. The period is twice the value in TBCL0.

Note: TBCL0 > TBR(max)

If TBCL0 > TBR(max), the counter operates as if it were configured forcontinuous mode. It does not count down from TBR(max) to zero.

Figure 16−7. Up/Down Mode

0h

TBCL0

The count direction is latched. This allows the timer to be stopped and thenrestarted in the same direction it was counting before it was stopped. If this isnot desired, the TBCLR bit must be used to clear the direction. The TBCLR bitalso clears the TBR value and the clock divider.

In up/down mode, the TBCCR0 CCIFG interrupt flag and the TBIFG interruptflag are set only once during the period, separated by 1/2 the timer period. TheTBCCR0 CCIFG interrupt flag is set when the timer counts from TBCL0−1 toTBCL0, and TBIFG is set when the timer completes counting down from 0001hto 0000h. Figure 16−8 shows the flag set cycle.

Figure 16−8. Up/Down Mode Flag Setting

TBCL0−1 TBCL0 TBCL0−1

Timer Clock

Timer

Set TBIFG

Set TBCCR0 CCIFG

TBCL0−2 1h 0h 1h

Up/Down

Page 482: MSP430 - general.pdf

Timer_B Operation

16-10 Timer_B

Changing the Value of Period Register TBCL0

When changing TBCL0 while the timer is running and counting in the downdirection, and when the TBCL0 load event is immediate, the timer continuesits descent until it reaches zero. The value in TBCCR0 is latched into TBCL0immediately; however, the new period takes effect after the counter countsdown to zero.

If the timer is counting in the up direction when the new period is latched intoTBCL0, and the new period is greater than or equal to the old period, or greaterthan the current count value, the timer counts up to the new period beforecounting down. When the timer is counting in the up direction, and the newperiod is less than the current count value when TBCL0 is loaded, the timerbegins counting down. However, one additional count may occur before thecounter begins counting down.

Use of the Up/Down Mode

The up/down mode supports applications that require dead times betweenoutput signals (see section Timer_B Output Unit). For example, to avoidoverload conditions, two outputs driving an H-bridge must never be in a highstate simultaneously. In the example shown in Figure 16−9 the tdead is:

tdead = ttimer × (TBCL1 − TBCL3)

With: tdead Time during which both outputs need to be inactive

ttimer Cycle time of the timer clock

TBCLx Content of compare latch x

The ability to simultaneously load grouped compare latches assures the deadtimes.

Figure 16−9. Output Unit in Up/Down Mode

TBIFG

0h

TBR(max)

Output Mode 2: Toggle/Reset

Output Mode 6: Toggle/Set

TBCL0

TBCL1

EQU1TBIFG Interrupt EventsEQU1

EQU0EQU1 EQU1

EQU0

TBCL3

EQU3 EQU3EQU3 EQU3

Dead Time

Page 483: MSP430 - general.pdf

Timer_B Operation

16-11Timer_B

16.2.4 Capture/Compare Blocks

Three or seven identical capture/compare blocks, TBCCRx, are present inTimer_B. Any of the blocks may be used to capture the timer data or togenerate time intervals.

Capture Mode

The capture mode is selected when CAP = 1. Capture mode is used to recordtime events. It can be used for speed computations or time measurements.The capture inputs CCIxA and CCIxB are connected to external pins or internalsignals and are selected with the CCISx bits. The CMx bits select the captureedge of the input signal as rising, falling, or both. A capture occurs on theselected edge of the input signal. If a capture is performed:

The timer value is copied into the TBCCRx register

The interrupt flag CCIFG is set

The input signal level can be read at any time via the CCI bit. MSP430x4xxfamily devices may have different signals connected to CCIxA and CCIxB.Refer to the device-specific data sheet for the connections of these signals.

The capture signal can be asynchronous to the timer clock and cause a racecondition. Setting the SCS bit synchronizes the capture with the next timerclock. Setting the SCS bit to synchronize the capture signal with the timer clockis recommended. This is illustrated in Figure 16−10.

Figure 16−10. Capture Signal (SCS = 1)

n−2 n−1

Timer Clock

Timer

Set TBCCRx CCIFG

n+1 n+3 n+4

CCI

Capture

n+2n

Overflow logic is provided in each capture/compare register to indicate if asecond capture was performed before the value from the first capture wasread. Bit COV is set when this occurs as shown in Figure 16−11. COV mustbe reset with software.

Page 484: MSP430 - general.pdf

Timer_B Operation

16-12 Timer_B

Figure 16−11.Capture Cycle

SecondCaptureTaken

COV = 1

CaptureTaken

NoCaptureTaken

ReadTaken

Capture

Clear Bit COV

in Register TBCCTLx

Idle

Idle

Capture

Capture Read and No Capture

Capture

Capture ReadCapture

Capture

Capture Initiated by Software

Captures can be initiated by software. The CMx bits can be set for capture onboth edges. Software then sets bit CCIS1 = 1 and toggles bit CCIS0 to switchthe capture signal between VCC and GND, initiating a capture each timeCCIS0 changes state:

MOV #CAP+SCS+CCIS1+CM_3,&TBCCTLx ; Setup TBCCTLx

XOR #CCIS0,&TBCCTLx ; TBCCTLx = TBR

Compare Mode

The compare mode is selected when CAP = 0. Compare mode is used togenerate PWM output signals or interrupts at specific time intervals. WhenTBR counts to the value in a TBCLx:

Interrupt flag CCIFG is set

Internal signal EQUx = 1

EQUx affects the output according to the output mode

Page 485: MSP430 - general.pdf

Timer_B Operation

16-13Timer_B

Compare Latch TBCLx

The TBCCRx compare latch, TBCLx, holds the data for the comparison to thetimer value in compare mode. TBCLx is buffered by TBCCRx. The bufferedcompare latch gives the user control over when a compare period updates.The user cannot directly access TBCLx. Compare data is written to eachTBCCRx and automatically transferred to TBCLx. The timing of the transferfrom TBCCRx to TBCLx is user-selectable with the CLLDx bits as describedin Table 16−2.

Table 16−2.TBCLx Load Events

CLLDx Description

00 New data is transferred from TBCCRx to TBCLx immediately whenTBCCRx is written to.

01 New data is transferred from TBCCRx to TBCLx when TBR counts to 0

10 New data is transferred from TBCCRx to TBCLx when TBR counts to 0for up and continuous modes. New data is transferred to from TBCCRxto TBCLx when TBR counts to the old TBCL0 value or to 0 for up/downmode

11 New data is transferred from TBCCRx to TBCLx when TBR counts tothe old TBCLx value.

Grouping Compare Latches

Multiple compare latches may be grouped together for simultaneous updateswith the TBCLGRPx bits. When using groups, the CLLDx bits of the lowestnumbered TBCCRx in the group determine the load event for each comparelatch of the group, except when TBCLGRP = 3, as shown in Table 16−3. TheCLLDx bits of the controlling TBCCRx must not be set to zero. When theCLLDx bits of the controlling TBCCRx are set to zero, all compare latchesupdate immediately when their corresponding TBCCRx is written; no comparelatches are grouped.

Two conditions must exist for the compare latches to be loaded when grouped.First, all TBCCRx registers of the group must be updated, even when newTBCCRx data equals old TBCCRx data. Second, the load event must occur.

Table 16−3.Compare Latch Operating Modes

TBCLGRPx Grouping Update Control

00 None Individual

01 TBCL1+TBCL2TBCL3+TBCL4TBCL5+TBCL6

TBCCR1TBCCR3TBCCR5

10 TBCL1+TBCL2+TBCL3TBCL4+TBCL5+TBCL6

TBCCR1TBCCR4

11 TBCL0+TBCL1+TBCL2+TBCL3+TBCL4+TBCL5+TBCL6

TBCCR1

Page 486: MSP430 - general.pdf

Timer_B Operation

16-14 Timer_B

16.2.5 Output Unit

Each capture/compare block contains an output unit. The output unit is usedto generate output signals such as PWM signals. Each output unit has eightoperating modes that generate signals based on the EQU0 and EQUx signals.The TBOUTH pin function can be used to put all Timer_B outputs into ahigh-impedance state. When the TBOUTH pin function is selected for the pin,and when the pin is pulled high, all Timer_B outputs are in a high-impedancestate.

Output Modes

The output modes are defined by the OUTMODx bits and are described inTable 16−4. The OUTx signal is changed with the rising edge of the timer clockfor all modes except mode 0. Output modes 2, 3, 6, and 7 are not useful foroutput unit 0, because EQUx = EQU0.

Table 16−4.Output Modes

OUTMODx Mode Description

000 Output The output signal OUTx is defined by theOUTx bit. The OUTx signal updatesimmediately when OUTx is updated.

001 Set The output is set when the timer counts to theTBCLx value. It remains set until a reset ofthe timer, or until another output mode isselected and affects the output.

010 Toggle/Reset The output is toggled when the timer countsto the TBCLx value. It is reset when the timercounts to the TBCL0 value.

011 Set/Reset The output is set when the timer counts to theTBCLx value. It is reset when the timercounts to the TBCL0 value.

100 Toggle The output is toggled when the timer countsto the TBCLx value. The output period isdouble the timer period.

101 Reset The output is reset when the timer counts tothe TBCLx value. It remains reset untilanother output mode is selected and affectsthe output.

110 Toggle/Set The output is toggled when the timer countsto the TBCLx value. It is set when the timercounts to the TBCL0 value.

111 Reset/Set The output is reset when the timer counts tothe TBCLx value. It is set when the timercounts to the TBCL0 value.

Page 487: MSP430 - general.pdf

Timer_B Operation

16-15Timer_B

Output Example—Timer in Up Mode

The OUTx signal is changed when the timer counts up to the TBCLx value, androlls from TBCL0 to zero, depending on the output mode. An example is shownin Figure 16−12 using TBCL0 and TBCL1.

Figure 16−12. Output Example—Timer in Up Mode

0h

TBR(max)

EQU0TBIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TBCL0

TBCL1

EQU1 EQU0TBIFG

EQU1 EQU0TBIFG

Interrupt Events

Page 488: MSP430 - general.pdf

Timer_B Operation

16-16 Timer_B

Output Example—Timer in Continuous Mode

The OUTx signal is changed when the timer reaches the TBCLx and TBCL0values, depending on the output mode, An example is shown in Figure 16−13using TBCL0 and TBCL1.

Figure 16−13. Output Example—Timer in Continuous Mode

0h

TBR(max)

TBIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TBCL0

TBCL1

EQU1 TBIFG EQU1 EQU0 Interrupt EventsEQU0

Page 489: MSP430 - general.pdf

Timer_B Operation

16-17Timer_B

Output Example − Timer in Up/Down Mode

The OUTx signal changes when the timer equals TBCLx in either countdirection and when the timer equals TBCL0, depending on the output mode.An example is shown in Figure 16−14 using TBCL0 and TBCL3.

Figure 16−14. Output Example—Timer in Up/Down Mode

0h

TBR(max)

TBIFG

Output Mode 1: Set

Output Mode 2: Toggle/Reset

Output Mode 3: Set/Reset

Output Mode 4: Toggle

Output Mode 5: Reset

Output Mode 6: Toggle/Set

Output Mode 7: Reset/Set

TBCL0

TBCL3

EQU3TBIFG

Interrupt EventsEQU3

EQU0EQU3 EQU3

EQU0

Note: Switching Between Output Modes

When switching between output modes, one of the OUTMODx bits shouldremain set during the transition, unless switching to mode 0. Otherwise,output glitching can occur because a NOR gate decodes output mode 0. Asafe method for switching between output modes is to use output mode 7 asa transition state:

BIS #OUTMOD_7,&TBCCTLx ; Set output mode=7

BIC #OUTMODx,&TBCCTLx ; Clear unwanted bits

Page 490: MSP430 - general.pdf

Timer_B Operation

16-18 Timer_B

16.2.6 Timer_B Interrupts

Two interrupt vectors are associated with the 16-bit Timer_B module:

TBCCR0 interrupt vector for TBCCR0 CCIFG

TBIV interrupt vector for all other CCIFG flags and TBIFG

In capture mode, any CCIFG flag is set when a timer value is captured in theassociated TBCCRx register. In compare mode, any CCIFG flag is set whenTBR counts to the associated TBCLx value. Software may also set or clear anyCCIFG flag. All CCIFG flags request an interrupt when their correspondingCCIE bit and the GIE bit are set.

TBCCR0 Interrupt Vector

The TBCCR0 CCIFG flag has the highest Timer_B interrupt priority and hasa dedicated interrupt vector as shown in Figure 16−15. The TBCCR0 CCIFGflag is automatically reset when the TBCCR0 interrupt request is serviced.

Figure 16−15. Capture/Compare TBCCR0 Interrupt Flag

DSet

Q IRQ, Interrupt Service Requested

ResetTimer Clock

POR

CAPEQU0

Capture

IRACC, Interrupt Request Accepted

CCIE

TBIV, Interrupt Vector Generator

The TBIFG flag and TBCCRx CCIFG flags (excluding TBCCR0 CCIFG) areprioritized and combined to source a single interrupt vector. The interruptvector register TBIV is used to determine which flag requested an interrupt.

The highest priority enabled interrupt (excluding TBCCR0 CCIFG) generatesa number in the TBIV register (see register description). This number can beevaluated or added to the program counter to automatically enter theappropriate software routine. Disabled Timer_B interrupts do not affect theTBIV value.

Any access, read or write, of the TBIV register automatically resets the highestpending interrupt flag. If another interrupt flag is set, another interrupt isimmediately generated after servicing the initial interrupt. For example, if theTBCCR1 and TBCCR2 CCIFG flags are set when the interrupt service routineaccesses the TBIV register, TBCCR1 CCIFG is reset automatically. After theRETI instruction of the interrupt service routine is executed, the TBCCR2CCIFG flag generates another interrupt.

Page 491: MSP430 - general.pdf

Timer_B Operation

16-19Timer_B

TBIV, Interrupt Handler Examples

The following software example shows the recommended use of TBIV and thehandling overhead. The TBIV value is added to the PC to automatically jumpto the appropriate routine.

The numbers at the right margin show the necessary CPU clock cycles foreach instruction. The software overhead for different interrupt sourcesincludes interrupt latency and return-from-interrupt cycles, but not the taskhandling itself. The latencies are:

Capture/compare block CCR0 11 cycles Capture/compare blocks CCR1 to CCR6 16 cycles Timer overflow TBIFG 14 cycles

The following software example shows the recommended use of TBIV forTimer_B3.

; Interrupt handler for TBCCR0 CCIFG. Cycles

CCIFG_0_HND

... ; Start of handler Interrupt latency 6

RETI 5

; Interrupt handler for TBIFG, TBCCR1 and TBCCR2 CCIFG.

TB_HND ... ; Interrupt latency 6

ADD &TBIV,PC ; Add offset to Jump table 3

RETI ; Vector 0: No interrupt 5

JMP CCIFG_1_HND ; Vector 2: Module 1 2

JMP CCIFG_2_HND ; Vector 4: Module 2 2

RETI ; Vector 6

RETI ; Vector 8

RETI ; Vector 10

RETI ; Vector 12

TBIFG_HND ; Vector 14: TIMOV Flag

... ; Task starts here

RETI 5

CCIFG_2_HND ; Vector 4: Module 2

... ; Task starts here

RETI ; Back to main program 5

; The Module 1 handler shows a way to look if any other

; interrupt is pending: 5 cycles have to be spent, but

; 9 cycles may be saved if another interrupt is pending

CCIFG_1_HND ; Vector 6: Module 3

... ; Task starts here

JMP TB_HND ; Look for pending ints 2

Page 492: MSP430 - general.pdf

Timer_B Registers

16-20 Timer_B

16.3 Timer_B Registers

The Timer_B registers are listed in Table 16−5.

Table 16−5.Timer_B Registers

Register Short Form Register Type Address Initial State

Timer_B control TBCTL Read/write 0180h Reset with POR

Timer_B counter TBR Read/write 0190h Reset with POR

Timer_B capture/compare control 0 TBCCTL0 Read/write 0182h Reset with POR

Timer_B capture/compare 0 TBCCR0 Read/write 0192h Reset with POR

Timer_B capture/compare control 1 TBCCTL1 Read/write 0184h Reset with POR

Timer_B capture/compare 1 TBCCR1 Read/write 0194h Reset with POR

Timer_B capture/compare control 2 TBCCTL2 Read/write 0186h Reset with POR

Timer_B capture/compare 2 TBCCR2 Read/write 0196h Reset with POR

Timer_B capture/compare control 3 TBCCTL3 Read/write 0188h Reset with POR

Timer_B capture/compare 3 TBCCR3 Read/write 0198h Reset with POR

Timer_B capture/compare control 4 TBCCTL4 Read/write 018Ah Reset with POR

Timer_B capture/compare 4 TBCCR4 Read/write 019Ah Reset with POR

Timer_B capture/compare control 5 TBCCTL5 Read/write 018Ch Reset with POR

Timer_B capture/compare 5 TBCCR5 Read/write 019Ch Reset with POR

Timer_B capture/compare control 6 TBCCTL6 Read/write 018Eh Reset with POR

Timer_B capture/compare 6 TBCCR6 Read/write 019Eh Reset with POR

Timer_B Interrupt Vector TBIV Read only 011Eh Reset with POR

Page 493: MSP430 - general.pdf

Timer_B Registers

16-21Timer_B

Timer_B Control Register TBCTL

15 14 13 12 11 10 9 8

Unused TBCLGRPx CNTLx Unused TBSSELx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

IDx MCx Unused TBCLR TBIE TBIFG

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) w−(0) rw−(0) rw−(0)

Unused Bit 15 Unused

TBCLGRP Bit14-13

TBCLx group00 Each TBCLx latch loads independently01 TBCL1+TBCL2 (TBCCR1 CLLDx bits control the update)

TBCL3+TBCL4 (TBCCR3 CLLDx bits control the update)TBCL5+TBCL6 (TBCCR5 CLLDx bits control the update)TBCL0 independent

10 TBCL1+TBCL2+TBCL3 (TBCCR1 CLLDx bits control the update)TBCL4+TBCL5+TBCL6 (TBCCR4 CLLDx bits control the update)TBCL0 independent

11 TBCL0+TBCL1+TBCL2+TBCL3+TBCL4+TBCL5+TBCL6(TBCCR1 CLLDx bits control the update)

CNTLx Bits12-11

Counter length00 16-bit, TBR(max) = 0FFFFh01 12-bit, TBR(max) = 0FFFh10 10-bit, TBR(max) = 03FFh11 8-bit, TBR(max) = 0FFh

Unused Bit 10 Unused

TBSSELx Bits9-8

Timer_B clock source select00 TBCLK01 ACLK10 SMCLK11 Inverted TBCLK

IDx Bits7-6

Input divider. These bits select the divider for the input clock.00 /101 /210 /411 /8

MCx Bits5-4

Mode control. Setting MCx = 00h when Timer_B is not in use conservespower.00 Stop mode: the timer is halted01 Up mode: the timer counts up to TBCL010 Continuous mode: the timer counts up to the value set by TBCNTLx11 Up/down mode: the timer counts up to TBCL0 and down to 0000h

Page 494: MSP430 - general.pdf

Timer_B Registers

16-22 Timer_B

Unused Bit 3 Unused

TBCLR Bit 2 Timer_B clear. Setting this bit resets TBR, the clock divider, and the countdirection. The TBCLR bit is automatically reset and is always read as zero.

TBIE Bit 1 Timer_B interrupt enable. This bit enables the TBIFG interrupt request.0 Interrupt disabled1 Interrupt enabled

TBIFG Bit 0 Timer_B interrupt flag.0 No interrupt pending1 Interrupt pending

TBR, Timer_B Register

15 14 13 12 11 10 9 8

TBRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

TBRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

TBRx Bits15-0

Timer_B register. The TBR register is the count of Timer_B.

Page 495: MSP430 - general.pdf

Timer_B Registers

16-23Timer_B

TBCCRx, Timer_B Capture/Compare Register x

15 14 13 12 11 10 9 8

TBCCRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

TBCCRx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

TBCCRx Bits15-0

Timer_B capture/compare registerCompare mode: Compare data is written to each TBCCRx and automaticallytransferred to TBCLx. TBCLx holds the data for the comparison to the timervalue in the Timer_B Register, TBR.Capture mode: The Timer_B Register, TBR, is copied into the TBCCRxregister when a capture is performed.

Page 496: MSP430 - general.pdf

Timer_B Registers

16-24 Timer_B

TBCCTLx, Capture/Compare Control Register

15 14 13 12 11 10 9 8

CMx CCISx SCS CLLDx CAP

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

OUTMODx CCIE CCI OUT COV CCIFG

rw−(0) rw−(0) rw−(0) rw−(0) r rw−(0) rw−(0) rw−(0)

CMx Bit15-14

Capture mode00 No capture01 Capture on rising edge10 Capture on falling edge11 Capture on both rising and falling edges

CCISx Bit13-12

Capture/compare input select. These bits select the TBCCRx input signal.See the device-specific data sheet for specific signal connections.00 CCIxA01 CCIxB10 GND11 VCC

SCS Bit 11 Synchronize capture source. This bit is used to synchronize the capture inputsignal with the timer clock.0 Asynchronous capture1 Synchronous capture

CLLDx Bit10-9

Compare latch load. These bits select the compare latch load event.00 TBCLx loads on write to TBCCRx01 TBCLx loads when TBR counts to 010 TBCLx loads when TBR counts to 0 (up or continuous mode)

TBCLx loads when TBR counts to TBCL0 or to 0 (up/down mode)11 TBCLx loads when TBR counts to TBCLx

CAP Bit 8 Capture mode0 Compare mode1 Capture mode

OUTMODx Bits7-5

Output mode. Modes 2, 3, 6, and 7 are not useful for TBCL0, because EQUx = EQU0.000 OUT bit value001 Set010 Toggle/reset011 Set/reset100 Toggle101 Reset110 Toggle/set111 Reset/set

Page 497: MSP430 - general.pdf

Timer_B Registers

16-25Timer_B

CCIE Bit 4 Capture/compare interrupt enable. This bit enables the interrupt request ofthe corresponding CCIFG flag.0 Interrupt disabled1 Interrupt enabled

CCI Bit 3 Capture/compare input. The selected input signal can be read by this bit.

OUT Bit 2 Output. For output mode 0, this bit directly controls the state of the output.0 Output low1 Output high

COV Bit 1 Capture overflow. This bit indicates a capture overflow occurred. COV mustbe reset with software.0 No capture overflow occurred1 Capture overflow occurred

CCIFG Bit 0 Capture/compare interrupt flag0 No interrupt pending1 Interrupt pending

Page 498: MSP430 - general.pdf

Timer_B Registers

16-26 Timer_B

TBIV, Timer_B Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 0 TBIVx 0

r0 r0 r0 r0 r−(0) r−(0) r−(0) r0

TBIVx Bits15-0

Timer_B interrupt vector value

TBIV Contents Interrupt Source Interrupt FlagInterruptPriority

00h No interrupt pending −

02h Capture/compare 1 TBCCR1 CCIFG Highest

04h Capture/compare 2 TBCCR2 CCIFG

06h Capture/compare 3† TBCCR3 CCIFG

08h Capture/compare 4† TBCCR4 CCIFG

0Ah Capture/compare 5† TBCCR5 CCIFG

0Ch Capture/compare 6† TBCCR6 CCIFG

0Eh Timer overflow TBIFG Lowest† MSP430x4xx devices only

Page 499: MSP430 - general.pdf

17-1USART Peripheral Interface, UART Mode

USART Peripheral Interface, UART Mode

The universal synchronous/asynchronous receive/transmit (USART)peripheral interface supports two serial modes with one hardware module.This chapter discusses the operation of the asynchronous UART mode.USART0 is implemented on the MSP430x42x and MSP430x43x devices. Inaddition to USART0, the MSP430x44x devices implement a second identicalUSART module, USART1. USART1 is also implemented in MSP430FG461xdevices.

Topic Page

17.1 USART Introduction: UART Mode 17-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17.2 USART Operation: UART Mode 17-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17.3 USART Registers: UART Mode 17-21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 17

Page 500: MSP430 - general.pdf

USART Introduction: UART Mode

17-2 USART Peripheral Interface, UART Mode

17.1 USART Introduction: UART Mode

In asynchronous mode, the USART connects the MSP430 to an externalsystem via two external pins, URXD and UTXD. UART mode is selected whenthe SYNC bit is cleared.

UART mode features include:

7- or 8-bit data with odd parity, even parity, or non-parity

Independent transmit and receive shift registers

Separate transmit and receive buffer registers

LSB-first data transmit and receive

Built-in idle-line and address-bit communication protocols formultiprocessor systems

Receiver start-edge detection for auto-wake up from LPMx modes

Programmable baud rate with modulation for fractional baud rate support

Status flags for error detection and suppression and address detection

Independent interrupt capability for receive and transmit

Figure 17−1 shows the USART when configured for UART mode.

Page 501: MSP430 - general.pdf

USART Introduction: UART Mode

17-3USART Peripheral Interface, UART Mode

Figure 17−1. USART Block Diagram: UART Mode

Receiver Shift Register

Transmit Shift Register

Receiver Buffer UxRXBUF

Transmit Buffer UxTXBUF

LISTEN MM

UCLK

Clock Phase and Polarity

Receive Status

SYNC CKPH CKPL

SSEL1 SSEL0

UCLKI

ACLK

SMCLK

SMCLK

00

01

10

11

OEPE BRK

TXWAKE

UCLKS

UCLKI

Receive Control

RXERR

FE

SWRST URXEx* URXEIE URXWIE

Transmit Control

SWRST UTXEx* TXEPT

RXWAKE

SPB CHAR PENAPEV

SPB CHAR PENAPEV

WUT

UTXD

URXD

SOMI

STE

Prescaler/Divider UxBRx

Modulator UxMCTL

Baud−Rate Generator

UTXIFGx*

* Refer to the device-specific datasheet for SFR locations

SYNC

URXIFGx*

01

0

0

0

0

1

1

1

1SIMO1

0

STC

SYNC= 0

Page 502: MSP430 - general.pdf

USART Operation: UART Mode

17-4 USART Peripheral Interface, UART Mode

17.2 USART Operation: UART Mode

In UART mode, the USART transmits and receives characters at a bit rateasynchronous to another device. Timing for each character is based on theselected baud rate of the USART. The transmit and receive functions use thesame baud rate frequency.

17.2.1 USART Initialization and Reset

The USART is reset by a PUC or by setting the SWRST bit. After a PUC, theSWRST bit is automatically set, keeping the USART in a reset condition. Whenset, the SWRST bit resets the URXIEx, UTXIEx, URXIFGx, RXWAKE,TXWAKE, RXERR, BRK, PE, OE, and FE bits and sets the UTXIFGx andTXEPT bits. The receive and transmit enable flags, URXEx and UTXEx, arenot altered by SWRST. Clearing SWRST releases the USART for operation.See also chapter USART Module, I2C mode for USART0 when reconfiguringfrom I2C mode to UART mode.

Note: Initializing or Reconfiguring the USART Module

The required USART initialization/reconfiguration process is:

1) Set SWRST (BIS.B #SWRST,&UxCTL)

2) Initialize all USART registers with SWRST = 1 (including UxCTL)

3) Enable USART module via the MEx SFRs (URXEx and/or UTXEx)

4) Clear SWRST via software (BIC.B #SWRST,&UxCTL)

5) Enable interrupts (optional) via the IEx SFRs (URXIEx and/or UTXIEx)

Failure to follow this process may result in unpredictable USART behavior.

17.2.2 Character Format

The UART character format, shown in Figure 17−2, consists of a start bit,seven or eight data bits, an even/odd/no parity bit, an address bit (address-bitmode), and one or two stop bits. The bit period is defined by the selected clocksource and setup of the baud rate registers.

Figure 17−2. Character Format

[Parity Bit, PENA = 1]

[Address Bit, MM = 1]

Mark

SpaceD0 D6 D7 AD PA SP SP

[Optional Bit, Condition]

[2nd Stop Bit, SPB = 1]

[8th Data Bit, CHAR = 1]

ST

Page 503: MSP430 - general.pdf

USART Operation: UART Mode

17-5USART Peripheral Interface, UART Mode

17.2.3 Asynchronous Communication Formats

When two devices communicate asynchronously, the idle-line format is usedfor the protocol. When three or more devices communicate, the USARTsupports the idle-line and address-bit multiprocessor communication formats.

Idle-Line Multiprocessor Format

When MM = 0, the idle-line multiprocessor format is selected. Blocks of dataare separated by an idle time on the transmit or receive lines as shown inFigure 17−3. An idle receive line is detected when 10 or more continuous ones(marks) are received after the first stop bit of a character. When two stop bitsare used for the idle line the second stop bit is counted as the first mark bit ofthe idle period.

The first character received after an idle period is an address character. TheRXWAKE bit is used as an address tag for each block of characters. In theidle-line multiprocessor format, this bit is set when a received character is anaddress and is transferred to UxRXBUF.

Figure 17−3. Idle-Line Format

ST Address SP ST Data SP ST Data SP

Blocks ofCharacters

Idle Periods of 10 Bits or More

UTXDx/URXDx Expanded

UTXDx/URXDx

First Character Within BlockIs Address. It Follows IdlePeriod of 10 Bits or More

Character Within Block

Idle Period Less Than 10 Bits

Character Within Block

UTXDx/URXDx

Page 504: MSP430 - general.pdf

USART Operation: UART Mode

17-6 USART Peripheral Interface, UART Mode

The URXWIE bit is used to control data reception in the idle-linemultiprocessor format. When the URXWIE bit is set, all non-addresscharacters are assembled but not transferred into the UxRXBUF, andinterrupts are not generated. When an address character is received, thereceiver is temporarily activated to transfer the character to UxRXBUF andsets the URXIFGx interrupt flag. Any applicable error flag is also set. The usercan then validate the received address.

If an address is received, user software can validate the address and mustreset URXWIE to continue receiving data. If URXWIE remains set, onlyaddress characters are received. The URXWIE bit is not modified by theUSART hardware automatically.

For address transmission in idle-line multiprocessor format, a precise idleperiod can be generated by the USART to generate address characteridentifiers on UTXDx. The wake-up temporary (WUT) flag is an internal flagdouble-buffered with the user-accessible TXWAKE bit. When the transmitteris loaded from UxTXBUF, WUT is also loaded from TXWAKE resetting theTXWAKE bit.

The following procedure sends out an idle frame to indicate an addresscharacter follows:

1) Set TXWAKE, then write any character to UxTXBUF. UxTXBUF must beready for new data (UTXIFGx = 1).

The TXWAKE value is shifted to WUT and the contents of UxTXBUF areshifted to the transmit shift register when the shift register is ready for newdata. This sets WUT, which suppresses the start, data, and parity bits of anormal transmission, then transmits an idle period of exactly 11 bits. Whentwo stop bits are used for the idle line, the second stop bit is counted as thefirst mark bit of the idle period. TXWAKE is reset automatically.

2) Write desired address character to UxTXBUF. UxTXBUF must be readyfor new data (UTXIFGx = 1).

The new character representing the specified address is shifted outfollowing the address-identifying idle period on UTXDx. Writing the first“don’t care” character to UxTXBUF is necessary in order to shift theTXWAKE bit to WUT and generate an idle-line condition. This data isdiscarded and does not appear on UTXDx.

Page 505: MSP430 - general.pdf

USART Operation: UART Mode

17-7USART Peripheral Interface, UART Mode

Address-Bit Multiprocessor Format

When MM = 1, the address-bit multiprocessor format is selected. Eachprocessed character contains an extra bit used as an address indicator shownin Figure 17−4. The first character in a block of characters carries a setaddress bit which indicates that the character is an address. The USARTRXWAKE bit is set when a received character is a valid address character andis transferred to UxRXBUF.

The URXWIE bit is used to control data reception in the address-bitmultiprocessor format. If URXWIE is set, data characters (address bit = 0) areassembled by the receiver but are not transferred to UxRXBUF and nointerrupts are generated. When a character containing a set address bit isreceived, the receiver is temporarily activated to transfer the character toUxRXBUF and set URXIFGx. All applicable error status flags are also set.

If an address is received, user software must reset URXWIE to continuereceiving data. If URXWIE remains set, only address characters (addressbit = 1) are received. The URXWIE bit is not modified by the USART hardwareautomatically.

Figure 17−4. Address-Bit Multiprocessor Format

ST Address SP ST Data SP ST Data SP

Blocks ofCharacters

Idle Periods of No Significance

UTXDx/URXDxExpanded

UTXDx/URXDx

First Character Within BlockIs an Address. AD Bit Is 1

AD Bit Is 0 forData Within Block.

Idle Time Is of No Significance

UTXDx/URXDx1 0 0

For address transmission in address-bit multiprocessor mode, the address bitof a character can be controlled by writing to the TXWAKE bit. The value of theTXWAKE bit is loaded into the address bit of the character transferred fromUxTXBUF to the transmit shift register, automatically clearing the TXWAKE bit.TXWAKE must not be cleared by software. It is cleared by USART hardwareafter it is transferred to WUT or by setting SWRST.

Page 506: MSP430 - general.pdf

USART Operation: UART Mode

17-8 USART Peripheral Interface, UART Mode

Automatic Error Detection

Glitch suppression prevents the USART from being accidentally started. Anylow-level on URXDx shorter than the deglitch time tτ (approximately 300 ns)is ignored. See the device-specific data sheet for parameters.

When a low period on URXDx exceeds tτ a majority vote is taken for the startbit. If the majority vote fails to detect a valid start bit the USART halts characterreception and waits for the next low period on URXDx. The majority vote is alsoused for each bit in a character to prevent bit errors.

The USART module automatically detects framing errors, parity errors,overrun errors, and break conditions when receiving characters. The bits FE,PE, OE, and BRK are set when their respective condition is detected. Whenany of these error flags are set, RXERR is also set. The error conditions aredescribed in Table 17−1.

Table 17−1.Receive Error Conditions

Error Condition Description

Framing error

A framing error occurs when a low stop bit is detected.When two stop bits are used, only the first stop bit ischecked for framing error. When a framing error isdetected, the FE bit is set.

Parity error

A parity error is a mismatch between the number of 1s ina character and the value of the parity bit. When anaddress bit is included in the character, it is included inthe parity calculation. When a parity error is detected, thePE bit is set.

Receive overrun errorAn overrun error occurs when a character is loaded intoUxRXBUF before the prior character has been read.When an overrun occurs, the OE bit is set.

Break condition

A break condition is a period of 10 or more low bitsreceived on URXDx after a missing stop bit. When abreak condition is detected, the BRK bit is set. A breakcondition can also set the interrupt flag URXIFGx whenURXEIE = 0.

When URXEIE = 0 and a framing error, parity error, or break condition isdetected, no character is received into UxRXBUF. When URXEIE = 1,characters are received into UxRXBUF and any applicable error bit is set.

When any of the FE, PE, OE, BRK, or RXERR bits are set, the bit remains setuntil user software resets it or UxRXBUF is read.

Page 507: MSP430 - general.pdf

USART Operation: UART Mode

17-9USART Peripheral Interface, UART Mode

17.2.4 USART Receive Enable

The receive enable bit, URXEx, enables or disables data reception on URXDxas shown in Figure 17−5. Disabling the USART receiver stops the receiveoperation following completion of any character currently being received orimmediately if no receive operation is active. The receive-data buffer,UxRXBUF, contains the character moved from the RX shift register after thecharacter is received.

Figure 17−5. State Diagram of Receiver Enable

Idle State(ReceiverEnabled)

ReceiveDisable

ReceiverCollects

Character

URXEx = 0No Valid Start Bit

Not Completed

URXEx = 1

URXEx = 0

URXEx = 1Valid Start Bit

Handle InterruptConditions

CharacterReceivedURXEx = 1

URXEx = 0

Note: Re-Enabling the Receiver (Setting URXEx): UART Mode

When the receiver is disabled (URXEx = 0), re-enabling the receiver(URXEx = 1) is asynchronous to any data stream that may be present onURXDx at the time. Synchronization can be performed by testing for an idleline condition before receiving a valid character (see URXWIE).

Page 508: MSP430 - general.pdf

USART Operation: UART Mode

17-10 USART Peripheral Interface, UART Mode

17.2.5 USART Transmit Enable

When UTXEx is set, the UART transmitter is enabled. Transmission is initiatedby writing data to UxTXBUF. The data is then moved to the transmit shiftregister on the next BITCLK after the TX shift register is empty, andtransmission begins. This process is shown in Figure 17−6.

When the UTXEx bit is reset the transmitter is stopped. Any data moved toUxTXBUF and any active transmission of data currently in the transmit shiftregister prior to clearing UTXEx continue until all data transmission iscompleted.

Figure 17−6. State Diagram of Transmitter Enable

Idle State(Transmitter

Enabled)

TransmitDisable

TransmissionActive

UTXEx = 0 No Data Writtento Transmit Buffer Not Completed

UTXEx = 1

UTXEx = 0

UTXEx = 1Data Written toTransmit Buffer Handle Interrupt

Conditions

CharacterTransmittedUTXEx = 1

UTXEx = 0 And Last Buffer Entry Is Transmitted

When the transmitter is enabled (UTXEx = 1), data should not be written toUxTXBUF unless it is ready for new data indicated by UTXIFGx = 1. Violationcan result in an erroneous transmission if data in UxTXBUF is modified as itis being moved into the TX shift register.

It is recommended that the transmitter be disabled (UTXEx = 0) only after anyactive transmission is complete. This is indicated by a set transmitter emptybit (TXEPT = 1). Any data written to UxTXBUF while the transmitter is disabledare held in the buffer but are not moved to the transmit shift register ortransmitted. Once UTXEx is set, the data in the transmit buffer is immediatelyloaded into the transmit shift register and character transmission resumes.

Page 509: MSP430 - general.pdf

USART Operation: UART Mode

17-11USART Peripheral Interface, UART Mode

17.2.6 USART Baud Rate Generation

The USART baud rate generator is capable of producing standard baud ratesfrom non-standard source frequencies. The baud rate generator uses oneprescaler/divider and a modulator as shown in Figure 17−7. This combinationsupports fractional divisors for baud rate generation. The maximum USARTbaud rate is one-third the UART source clock frequency BRCLK.

Figure 17−7. MSP430 Baud Rate Generator

Bit Start

mX

BRCLK88UCLKI

ACLK

SMCLK

SMCLK 11

BITCLK

10

01

00

202728215

Compare (0 or 1)

Modulation Data Shift Register(LSB first)

16−Bit Counter

Q0............Q15

m0m7

......

8

UxBR1 UxBR0

ToggleFF

N =

R

R

R

UxMCTL

+0 or 1

SSEL1 SSEL0

Timing for each bit is shown in Figure 17−8. For each bit received, a majorityvote is taken to determine the bit value. These samples occur at the N/2−1,N/2, and N/2+1 BRCLK periods, where N is the number of BRCLKs perBITCLK.

Figure 17−8. BITCLK Baud Rate Timing

N/2

Bit Start

BRCLK

Counter

BITCLK

N/2−1 N/2−21 N/2 N/2−1 1 N/2 N/2−1N/2−2

0 N/2 N/2−11

INT(N/2) + m(= 0)

INT(N/2) + m(= 1)

1 0 N/2

Bit Period

NEVEN: INT(N/2)

NODD : INT(N/2) + R(= 1)

m: corresponding modulation bitR: Remainder from N/2 division

Majority Vote: (m= 0)

(m= 1)

Page 510: MSP430 - general.pdf

USART Operation: UART Mode

17-12 USART Peripheral Interface, UART Mode

Baud Rate Bit Timing

The first stage of the baud rate generator is the 16-bit counter and comparator.At the beginning of each bit transmitted or received, the counter is loaded withINT(N/2) where N is the value stored in the combination of UxBR0 and UxBR1.The counter reloads INT(N/2) for each bit period half-cycle, giving a total bitperiod of N BRCLKs. For a given BRCLK clock source, the baud rate useddetermines the required division factor N:

N = BRCLKbaud rate

The division factor N is often a non-integer value of which the integer portioncan be realized by the prescaler/divider. The second stage of the baud rategenerator, the modulator, is used to meet the fractional part as closely aspossible. The factor N is then defined as:

N UxBR 1n

n1

i0mi

Where:

N: Target division factorUxBR: 16-bit representation of registers UxBR0 and UxBR1i: Bit position in the charactern: Total number of bits in the charactermi : Data of each corresponding modulation bit (1 or 0)

Baud rate BRCLKN

BRCLK

UxBR 1n

n–1

i0mi

The BITCLK can be adjusted from bit to bit with the modulator to meet timingrequirements when a non-integer divisor is needed. Timing of each bit isexpanded by one BRCLK clock cycle if the modulator bit mi is set. Each timea bit is received or transmitted, the next bit in the modulation control registerdetermines the timing for that bit. A set modulation bit increases the divisionfactor by one while a cleared modulation bit maintains the division factor givenby UxBR.

The timing for the start bit is determined by UxBR plus m0, the next bit isdetermined by UxBR plus m1, and so on. The modulation sequence beginswith the LSB. When the character is greater than 8 bits, the modulationsequence restarts with m0 and continues until all bits are processed.

Determining the Modulation Value

Determining the modulation value is an interactive process. Using the timingerror formula provided, beginning with the start bit , the individual bit errors arecalculated with the corresponding modulator bit set and cleared. Themodulation bit setting with the lower error is selected and the next bit error iscalculated. This process is continued until all bit errors are minimized. Whena character contains more than 8 bits, the modulation bits repeat. For example,the ninth bit of a character uses modulation bit 0.

Page 511: MSP430 - general.pdf

USART Operation: UART Mode

17-13USART Peripheral Interface, UART Mode

Transmit Bit Timing

The timing for each character is the sum of the individual bit timings. Bymodulating each bit, the cumulative bit error is reduced. The individual bit errorcan be calculated by:

Error [%] baud rateBRCLK

(j 1) UxBR

j

i0mi (j 1) 100%

With:baud rate: Desired baud rate BRCLK: Input frequency − UCLKI, ACLK, or SMCLKj: Bit position - 0 for the start bit, 1 for data bit D0, and so onUxBR: Division factor in registers UxBR1 and UxBR0

For example, the transmit errors for the following conditions are calculated:

Baud rate = 2400BRCLK = 32,768 Hz (ACLK)UxBR = 13, since the ideal division factor is 13.65UxMCTL = 6Bh: m7=0, m6=1, m5=1, m4=0, m3=1, m2=0,

m1=1, and m0=1. The LSB of UxMCTL is used first.

Start bit Error [%] baud rateBRCLK

((0 1) UxBR 1)–1 100% 2.54%

Data bit D0 Error [%] baud rateBRCLK

((1 1) UxBR 2)–2 100% 5.08%

Data bit D1 Error [%] baud rateBRCLK

((2 1) UxBR 2)–3 100% 0.29%

Data bit D2 Error [%] baud rateBRCLK

((3 1) UxBR 3)–4 100% 2.83%

Data bit D3 Error [%] baud rateBRCLK

((4 1) UxBR 3)–5 100% 1.95%

Data bit D4 Error [%] baud rateBRCLK

((5 1) UxBR 4)–6 100% 0.59%

Data bit D5 Error [%] baud rateBRCLK

((6 1) UxBR 5)–7 100% 3.13%

Data bit D6 Error [%] baud rateBRCLK

((7 1) UxBR 5)–8 100% 1.66%

Data bit D7 Error [%] baud rateBRCLK

((8 1) UxBR 6)–9 100% 0.88%

Parity bit Error [%] baud rateBRCLK

((9 1) UxBR 7)–10 100% 3.42%

Stop bit 1 Error [%] baud rateBRCLK

((10 1) UxBR 7)–11 100% 1.37%

The results show the maximum per-bit error to be 5.08% of a BITCLK period.

Page 512: MSP430 - general.pdf

USART Operation: UART Mode

17-14 USART Peripheral Interface, UART Mode

Receive Bit Timing

Receive timing is subject to two error sources. The first is the bit-to-bit timingerror. The second is the error between a start edge occurring and the startedge being accepted by the USART. Figure 17−9 shows the asynchronoustiming errors between data on the URXDx pin and the internal baud-rate clock.

Figure 17−9. Receive Error

1 2 3 4 5 6

0i

t0tideal

7 8

1

t1

2

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

t0 t1 t2

ST D0 D1

D0 D1ST

Synchronization Error ± 0.5x BRCLK

Int(UxBR/2)+m0 =Int (13/2)+1 = 6+1 = 7

Majority Vote Taken Majority Vote Taken

UxBR +m1 = 13+1 = 14 UxBR +m2 = 13+0 = 13

Majority Vote Taken

BRCLK

URXDx

URXDS

tactual

SampleURXDS

The ideal start bit timing tideal(0) is half the baud-rate timing tbaudrate, becausethe bit is tested in the middle of its period. The ideal baud-rate timing tideal(i)for the remaining character bits is the baud rate timing tbaudrate. The individualbit errors can be calculated by:

Error [%] baud rateBRCLK

2 m0 int UxBR2 i UxBR

j

i1mi 1 j 100%

Where:baud rate is the required baud rate BRCLK is the input frequency—selected for UCLK, ACLK, or SMCLKj = 0 for the start bit, 1 for data bit D0, and so onUxBR is the division factor in registers UxBR1 and UxBR0

Page 513: MSP430 - general.pdf

USART Operation: UART Mode

17-15USART Peripheral Interface, UART Mode

For example, the receive errors for the following conditions are calculated:

Baud rate = 2400BRCLK = 32,768 Hz (ACLK)UxBR = 13, since the ideal division factor is 13.65UxMCTL = 6B:m7=0, m6=1, m5=1, m4=0, m3=1, m2=0, m1=1 and

m0=1 The LSB of UxMCTL is used first.

Data bit D1 Error [%] baud rateBRCLK

[2x(1 6) (2 UxBR 1)] 1 2 100% 0.29%

Data bit D2 Error [%] baud rateBRCLK

[2x(1 6) (3 UxBR 2)] 1 3 100% 2.83%

Data bit D3 Error [%] baud rateBRCLK

[2x(1 6) (4 UxBR 2)] 1 4 100% −1.95%

Data bit D4 Error [%] baud rateBRCLK

[2x(1 6) (5 UxBR 3)] 1 5 100% 0.59%

Data bit D5 Error [%] baud rateBRCLK

[2x(1 6) (6 UxBR 4)] 1 6 100% 3.13%

Data bit D6 Error [%] baud rateBRCLK

[2x(1 6) (7 UxBR 4)] 1 7 100% −1.66%

Data bit D7 Error [%] baud rateBRCLK

[2x(1 6) (8 UxBR 5)] 1 8 100% 0.88%

Parity bit Error [%] baud rateBRCLK

[2x(1 6) (9 UxBR 6)] 1 9 100% 3.42%

Stop bit 1 Error [%] baud rateBRCLK

[2x(1 6) (10 UxBR 6)] 1 10 100% −1.37%

Start bit Error [%] baud rateBRCLK

[2x(1 6) (0 UxBR 0)] 1 0 100% 2.54%

Data bit D0 Error [%] baud rateBRCLK

[2x(1 6) (1 UxBR 1)] 1 1 100% 5.08%

The results show the maximum per-bit error to be 5.08% of a BITCLK period.

Page 514: MSP430 - general.pdf

USART Operation: UART Mode

17-16 USART Peripheral Interface, UART Mode

Typical Baud Rates and Errors

Standard baud rate frequency data for UxBRx and UxMCTL are listed inTable 17−2 for a 32,768-Hz watch crystal (ACLK) and a typical 1,048,576-HzSMCLK.

The receive error is the accumulated time versus the ideal scanning time in themiddle of each bit. The transmit error is the accumulated timing error versusthe ideal time of the bit period.

Table 17−2.Commonly Used Baud Rates, Baud Rate Data, and Errors

Divide by A: BRCLK = 32,768 Hz B: BRCLK = 1,048,576 Hz

BaudRate A: B: UxBR1 UxBR0 UxMCTL

Max.TXError %

Max.RXError %

Synchr.RX Error % UxBR1 UxBR0 UxMCTL

Max.TX Error %

Max.RX Error %

1200 27.31 873.81 0 1B 03 −4/3 −4/3 ±2 03 69 FF 0/0.3 ±2

2400 13.65 436.91 0 0D 6B −6/3 −6/3 ±4 01 B4 FF 0/0.3 ±2

4800 6.83 218.45 0 06 6F −9/11 −9/11 ±7 0 DA 55 0/0.4 ±2

9600 3.41 109.23 0 03 4A −21/12 −21/12 ±15 0 6D 03 −0.4/1 ±2

19,200 54.61 0 36 6B −0.2/2 ±2

38,400 27.31 0 1B 03 −4/3 ±2

76,800 13.65 0 0D 6B −6/3 ±4

115,200

9.1 0 09 08 −5/7 ±7

Page 515: MSP430 - general.pdf

USART Operation: UART Mode

17-17USART Peripheral Interface, UART Mode

17.2.7 USART Interrupts

The USART has one interrupt vector for transmission and one interrupt vectorfor reception.

USART Transmit Interrupt Operation

The UTXIFGx interrupt flag is set by the transmitter to indicate that UxTXBUFis ready to accept another character. An interrupt request is generated ifUTXIEx and GIE are also set. UTXIFGx is automatically reset if the interruptrequest is serviced or if a character is written to UxTXBUF.

UTXIFGx is set after a PUC or when SWRST = 1. UTXIEx is reset after a PUCor when SWRST = 1. The operation is shown is Figure 17−10.

Figure 17−10. Transmit Interrupt Operation

Clear

UTXIEx

Clear

D

Character Moved FromBuffer to Shift Register

Interrupt Service Requested

SWRST

Data written to UxTXBUF

Q

UTXIFGx

IRQA

VCC

PUC or SWRST

QSet

Page 516: MSP430 - general.pdf

USART Operation: UART Mode

17-18 USART Peripheral Interface, UART Mode

USART Receive Interrupt Operation

The URXIFGx interrupt flag is set each time a character is received and loadedinto UxRXBUF. An interrupt request is generated if URXIEx and GIE are alsoset. URXIFGx and URXIEx are reset by a system reset PUC signal or whenSWRST = 1. URXIFGx is automatically reset if the pending interrupt is served(when URXSE = 0) or when UxRXBUF is read. The operation is shown inFigure 17−11.

Figure 17−11.Receive Interrupt Operation

Clear

URXS

Clear

τ

S

SYNCValid Start Bit

Receiver Collects CharacterURXSE

From URXD

PEFE

BRKURXEIE

URXWIE

RXWAKE

Erroneous Character Rejection

Non-Address Character RejectionCharacter Received

orBreak Detected

URXIFGx

URXIEx Interrupt ServiceRequested

SWRSTPUCUxRXBUF ReadURXSE

IRQA

S

URXEIE is used to enable or disable erroneous characters from settingURXIFGx. When using multiprocessor addressing modes, URXWIE is usedto auto-detect valid address characters and reject unwanted data characters.

Two types of characters do not set URXIFGx:

Erroneous characters when URXEIE = 0 Non-address characters when URXWIE = 1

When URXEIE = 1 a break condition sets the BRK bit and the URXIFGx flag.

Page 517: MSP430 - general.pdf

USART Operation: UART Mode

17-19USART Peripheral Interface, UART Mode

Receive-Start Edge Detect Operation

The URXSE bit enables the receive start-edge detection feature. Therecommended usage of the receive-start edge feature is when BRCLK issourced by the DCO and when the DCO is off because of low-power modeoperation. The ultra-fast turn-on of the DCO allows character reception afterthe start edge detection.

When URXSE, URXIEx and GIE are set and a start edge occurs on URXDx,the internal signal URXS is set. When URXS is set, a receive interrupt requestis generated but URXIFGx is not set. User software in the receive interruptservice routine can test URXIFGx to determine the source of the interrupt.When URXIFGx = 0 a start edge was detected, and when URXIFGx = 1 a validcharacter (or break) was received.

When the ISR determines the interrupt request was from a start edge, usersoftware toggles URXSE, and must enable the BRCLK source by returningfrom the ISR to active mode or to a low-power mode where the source is active.If the ISR returns to a low-power mode where the BRCLK source is inactive,the character is not received. Toggling URXSE clears the URXS signal andre-enables the start edge detect feature for future characters. See chapterSystem Resets, Interrupts, and Operating Modes for information on enteringand exiting low-power modes.

The now active BRCLK allows the USART to receive the balance of thecharacter. After the full character is received and moved to UxRXBUF,URXIFGx is set and an interrupt service is again requested. Upon ISR entry,URXIFGx = 1 indicating a character was received. The URXIFGx flag iscleared when user software reads UxRXBUF.

; Interrupt handler for start condition and

; Character receive. BRCLK = DCO.

U0RX_Int BIT.B #URXIFG0,&IFG1 ; Test URXIFGx to determine

JZ ST_COND ; If start or character

MOV.B &UxRXBUF,dst ; Read buffer

... ;

RETI ;

ST_COND BIC.B #URXSE,&U0TCTL ; Clear URXS signal

BIS.B #URXSE,&U0TCTL ; Re-enable edge detect

BIC #SCG0+SCG1,0(SP) ; Enable BRCLK = DCO

RETI ;

Note: Break Detect With Halted UART Clock

When using the receive start-edge detect feature, a break condition cannotbe detected when the BRCLK source is off.

Page 518: MSP430 - general.pdf

USART Operation: UART Mode

17-20 USART Peripheral Interface, UART Mode

Receive-Start Edge Detect Conditions

When URXSE = 1, glitch suppression prevents the USART from beingaccidentally started. Any low-level on URXDx shorter than the deglitch time tτ(approximately 300 ns) is ignored by the USART and no interrupt request isgenerated (see Figure 17−12). See the device-specific data sheet forparameters.

Figure 17−12. Glitch Suppression, USART Receive Not Started

URXDx

URXS

When a glitch is longer than tτ or a valid start bit occurs on URXDx, the USARTreceive operation is started and a majority vote is taken as shown inFigure 17−13. If the majority vote fails to detect a start bit, the USART haltscharacter reception.

If character reception is halted, an active BRCLK is not necessary. A time-outperiod longer than the character receive duration can be used by software toindicate that a character was not received in the expected time, and thesoftware can disable BRCLK.

Figure 17−13. Glitch Suppression, USART Activated

URXDx

URXS

Majority Vote Taken

Page 519: MSP430 - general.pdf

USART Registers: UART Mode

17-21USART Peripheral Interface, UART Mode

17.3 USART Registers: UART Mode

Table 17−3 lists the registers for all devices implementing a USART module.Table 17−4 applies only to devices with a second USART module, USART1.

Table 17−3.USART0 Control and Status Registers

Register Short Form Register Type Address Initial State

USART control register U0CTL Read/write 070h 001h with PUC

Transmit control register U0TCTL Read/write 071h 001h with PUC

Receive control register U0RCTL Read/write 072h 000h with PUC

Modulation control register U0MCTL Read/write 073h Unchanged

Baud rate control register 0 U0BR0 Read/write 074h Unchanged

Baud rate control register 1 U0BR1 Read/write 075h Unchanged

Receive buffer register U0RXBUF Read 076h Unchanged

Transmit buffer register U0TXBUF Read/write 077h Unchanged

SFR module enable register 1 ME1 Read/write 004h 000h with PUC

SFR interrupt enable register 1 IE1 Read/write 000h 000h with PUC

SFR interrupt flag register 1 IFG1 Read/write 002h 082h with PUC

Table 17−4.USART1 Control and Status Registers

Register Short Form Register Type Address Initial State

USART control register U1CTL Read/write 078h 001h with PUC

Transmit control register U1TCTL Read/write 079h 001h with PUC

Receive control register U1RCTL Read/write 07Ah 000h with PUC

Modulation control register U1MCTL Read/write 07Bh Unchanged

Baud rate control register 0 U1BR0 Read/write 07Ch Unchanged

Baud rate control register 1 U1BR1 Read/write 07Dh Unchanged

Receive buffer register U1RXBUF Read 07Eh Unchanged

Transmit buffer register U1TXBUF Read/write 07Fh Unchanged

SFR module enable register 2 ME2 Read/write 005h 000h with PUC

SFR interrupt enable register 2 IE2 Read/write 001h 000h with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h 020h with PUC

Note: Modifying SFR bits

To avoid modifying control bits of other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Page 520: MSP430 - general.pdf

USART Registers: UART Mode

17-22 USART Peripheral Interface, UART Mode

UxCTL, USART Control Register

7 6 5 4 3 2 1 0

PENA PEV SPB CHAR LISTEN SYNC MM SWRST

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−1

PENA Bit 7 Parity enable0 Parity disabled1 Parity enabled. Parity bit is generated (UTXDx) and expected

(URXDx). In address-bit multiprocessor mode, the address bit isincluded in the parity calculation.

PEV Bit 6 Parity select. PEV is not used when parity is disabled.0 Odd parity1 Even parity

SPB Bit 5 Stop bit select. Number of stop bits transmitted. The receiver alwayschecks for one stop bit.0 One stop bit1 Two stop bits

CHAR Bit 4 Character length. Selects 7-bit or 8-bit character length.0 7-bit data1 8-bit data

LISTEN Bit 3 Listen enable. The LISTEN bit selects loopback mode.0 Disabled1 Enabled. UTXDx is internally fed back to the receiver.

SYNC Bit 2 Synchronous mode enable0 UART mode1 SPI Mode

MM Bit 1 Multiprocessor mode select0 Idle-line multiprocessor protocol1 Address-bit multiprocessor protocol

SWRST Bit 0 Software reset enable0 Disabled. USART reset released for operation1 Enabled. USART logic held in reset state

Page 521: MSP430 - general.pdf

USART Registers: UART Mode

17-23USART Peripheral Interface, UART Mode

UxTCTL, USART Transmit Control Register

7 6 5 4 3 2 1 0

Unused CKPL SSELx URXSE TXWAKE Unused TXEPT

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−1

Unused Bit 7 Unused

CKPL Bit 6 Clock polarity select0 UCLKI = UCLK1 UCLKI = inverted UCLK

SSELx Bits5-4

Source select. These bits select the BRCLK source clock.00 UCLKI01 ACLK10 SMCLK11 SMCLK

URXSE Bit 3 UART receive start-edge. The bit enables the UART receive start-edgefeature.0 Disabled1 Enabled

TXWAKE Bit 2 Transmitter wake0 Next frame transmitted is data1 Next frame transmitted is an address

Unused Bit 1 Unused

TXEPT Bit 0 Transmitter empty flag0 UART is transmitting data and/or data is waiting in UxTXBUF1 Transmitter shift register and UxTXBUF are empty or SWRST = 1

Page 522: MSP430 - general.pdf

USART Registers: UART Mode

17-24 USART Peripheral Interface, UART Mode

UxRCTL, USART Receive Control Register

7 6 5 4 3 2 1 0

FE PE OE BRK URXEIE URXWIE RXWAKE RXERR

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

FE Bit 7 Framing error flag0 No error1 Character received with low stop bit

PE Bit 6 Parity error flag. When PENA = 0, PE is read as 0.0 No error1 Character received with parity error

OE Bit 5 Overrun error flag. This bit is set when a character is transferred intoUxRXBUF before the previous character was read.0 No error1 Overrun error occurred

BRK Bit 4 Break detect flag0 No break condition1 Break condition occurred

URXEIE Bit 3 Receive erroneous-character interrupt-enable0 Erroneous characters rejected and URXIFGx is not set1 Erroneous characters received set URXIFGx

URXWIE Bit 2 Receive wake-up interrupt-enable. This bit enables URXIFGx to be setwhen an address character is received. When URXEIE = 0, an addresscharacter does not set URXIFGx if it is received with errors.0 All received characters set URXIFGx1 Only received address characters set URXIFGx

RXWAKE Bit 1 Receive wake-up flag0 Received character is data1 Received character is an address

RXERR Bit 0 Receive error flag. This bit indicates a character was received with error(s).When RXERR = 1, on or more error flags (FE,PE,OE, BRK) is also set.RXERR is cleared when UxRXBUF is read.0 No receive errors detected1 Receive error detected

Page 523: MSP430 - general.pdf

USART Registers: UART Mode

17-25USART Peripheral Interface, UART Mode

UxBR0, USART Baud Rate Control Register 0

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

rw rw rw rw rw rw rw rw

UxBR1, USART Baud Rate Control Register 1

7 6 5 4 3 2 1 0

215 214 213 212 211 210 29 28

rw rw rw rw rw rw rw rw

UxBRx The valid baud-rate control range is 3 ≤ UxBR < 0FFFFh, where UxBR = UxBR1+UxBR0. Unpredictable receive and transmit timingoccurs if UxBR < 3.

UxMCTL, USART Modulation Control Register

7 6 5 4 3 2 1 0

m7 m6 m5 m4 m3 m2 m1 m0

rw rw rw rw rw rw rw rw

UxMCTLx Bits7−0

Modulation bits. These bits select the modulation for BRCLK.

Page 524: MSP430 - general.pdf

USART Registers: UART Mode

17-26 USART Peripheral Interface, UART Mode

UxRXBUF, USART Receive Buffer Register

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

r r r r r r r r

UxRXBUFx Bits7−0

The receive-data buffer is user accessible and contains the last receivedcharacter from the receive shift register. Reading UxRXBUF resets thereceive-error bits, the RXWAKE bit, and URXIFGx. In 7-bit data mode,UxRXBUF is LSB justified and the MSB is always reset.

UxTXBUF, USART Transmit Buffer Register

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

rw rw rw rw rw rw rw rw

UxTXBUFx Bits7−0

The transmit data buffer is user accessible and holds the data waiting to bemoved into the transmit shift register and transmitted on UTXDx. Writing tothe transmit data buffer clears UTXIFGx. The MSB of UxTXBUF is notused for 7-bit data and is reset.

Page 525: MSP430 - general.pdf

USART Registers: UART Mode

17-27USART Peripheral Interface, UART Mode

ME1, Module Enable Register 1

7 6 5 4 3 2 1 0

UTXE0 URXE0

rw−0 rw−0

UTXE0 Bit 7 USART0 transmit enable. This bit enables the transmitter for USART0.0 Module not enabled1 Module enabled

URXE0 Bit 6 USART0 receive enable. This bit enables the receiver for USART0.0 Module not enabled1 Module enabled

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

ME2, Module Enable Register 2

7 6 5 4 3 2 1 0

UTXE1 URXE1

rw−0 rw−0

Bits7-6

These bits may be used by other modules. See device-specific data sheet.

UTXE1 Bit 5 USART1 transmit enable. This bit enables the transmitter for USART1.0 Module not enabled1 Module enabled

URXE1 Bit 4 USART1 receive enable. This bit enables the receiver for USART1.0 Module not enabled1 Module enabled

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 526: MSP430 - general.pdf

USART Registers: UART Mode

17-28 USART Peripheral Interface, UART Mode

IE1, Interrupt Enable Register 1

7 6 5 4 3 2 1 0

UTXIE0 URXIE0

rw−0 rw−0

UTXIE0 Bit 7 USART0 transmit interrupt enable. This bit enables the UTXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabled

URXIE0 Bit 6 USART0 receive interrupt enable. This bit enables the URXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabled

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

UTXIE1 URXIE1

rw−0 rw−0

Bits7-6

These bits may be used by other modules. See device-specific data sheet.

UTXIE1 Bit 5 USART1 transmit interrupt enable. This bit enables the UTXIFG1 interrupt.0 Interrupt not enabled1 Interrupt enabled

URXIE1 Bit 4 USART1 receive interrupt enable. This bit enables the URXIFG1 interrupt.0 Interrupt not enabled1 Interrupt enabled

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 527: MSP430 - general.pdf

USART Registers: UART Mode

17-29USART Peripheral Interface, UART Mode

IFG1, Interrupt Flag Register 1

7 6 5 4 3 2 1 0

UTXIFG0 URXIFG0

rw−1 rw−0

UTXIFG0 Bit 7 USART0 transmit interrupt flag. UTXIFG0 is set when U0TXBUF is empty.0 No interrupt pending1 Interrupt pending

URXIFG0 Bit 6 USART0 receive interrupt flag. URXIFG0 is set when U0RXBUF has receiveda complete character.0 No interrupt pending1 Interrupt pending

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

UTXIFG1 URXIFG1

rw−1 rw−0

Bits7-6

These bits may be used by other modules. See device-specific data sheet.

UTXIFG1 Bit 5 USART1 transmit interrupt flag. UTXIFG1 is set when U1TXBUF empty.0 No interrupt pending1 Interrupt pending

URXIFG1 Bit 4 USART1 receive interrupt flag. URXIFG1 is set when U1RXBUF has receiveda complete character.0 No interrupt pending1 Interrupt pending

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 528: MSP430 - general.pdf

17-30 USART Peripheral Interface, UART Mode

Page 529: MSP430 - general.pdf

18-1USART Peripheral Interface, SPI Mode

USART Peripheral Interface, SPI Mode

The universal synchronous/asynchronous receive/transmit (USART)peripheral interface supports two serial modes with one hardware module.This chapter discusses the operation of the synchronous peripheral interfaceor SPI mode. USART0 is implemented on the MSP430x42x and MSP430x43xdevices. In addition to USART0, the MSP430x44x devices implement asecond identical USART module, USART1. USART1 is also implemented inMSP430FG461x devices.

Topic Page

18.1 USART Introduction: SPI Mode 18-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18.2 USART Operation: SPI Mode 18-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18.3 USART Registers: SPI Mode 18-13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 18

Page 530: MSP430 - general.pdf

USART Introduction: SPI Mode

18-2 USART Peripheral Interface, SPI Mode

18.1 USART Introduction: SPI Mode

In synchronous mode, the USART connects the MSP430 to an externalsystem via three or four pins: SIMO, SOMI, UCLK, and STE. SPI mode isselected when the SYNC bit is set and the I2C bit is cleared.

SPI mode features include:

7-bit or 8-bit data length

3-pin and 4-pin SPI operation

Master or slave modes

Independent transmit and receive shift registers

Separate transmit and receive buffer registers

Selectable UCLK polarity and phase control

Programmable UCLK frequency in master mode

Independent interrupt capability for receive and transmit

Figure 18−1 shows the USART when configured for SPI mode.

Page 531: MSP430 - general.pdf

USART Introduction: SPI Mode

18-3USART Peripheral Interface, SPI Mode

Figure 18−1. USART Block Diagram: SPI Mode

Receiver Shift Register

Transmit Shift Register

Receiver Buffer UxRXBUF

Transmit Buffer UxTXBUF

LISTEN MM

UCLK

Clock Phase and Polarity

Receive Status

SYNC CKPH CKPL

SSEL1 SSEL0

UCLKI

ACLK

SMCLK

SMCLK

00

01

10

11

OEPE BRK

TXWAKE

UCLKS

UCLKI

Receive Control

RXERR

FE

SWRST USPIEx* URXEIE URXWIE

Transmit Control

SWRST USPIEx* TXEPT

RXWAKE

SPB CHAR PENAPEV

SPB CHAR PENAPEV

WUT SIMO

UTXD

URXD

SOMI

STE

Prescaler/Divider UxBRx

Modulator UxMCTL

Baud−Rate Generator

UTXIFGx*

* See the device-specific data sheet for SFR locations.

SYNC

URXIFGx*

01

0

0

0

1

0

1

1

1

0

1

STC

SYNC= 1

Page 532: MSP430 - general.pdf

USART Operation: SPI Mode

18-4 USART Peripheral Interface, SPI Mode

18.2 USART Operation: SPI Mode

In SPI mode, serial data is transmitted and received by multiple devices usinga shared clock provided by the master. An additional pin, STE, is provided asto enable a device to receive and transmit data and is controlled by the master.

Three or four signals are used for SPI data exchange:

SIMO Slave in, master outMaster mode: SIMO is the data output line.Slave mode: SIMO is the data input line.

SOMI Slave out, master inMaster mode: SOMI is the data input line.Slave mode: SOMI is the data output line.

UCLK USART SPI clockMaster mode: UCLK is an output.Slave mode: UCLK is an input.

STE Slave transmit enable. Used in 4-pin mode to allow multiple masters on a single bus. Not used in 3-pin mode.4-Pin master mode:

When STE is high, SIMO and UCLK operate normally.When STE is low, SIMO and UCLK are set to the input direction.

4-pin slave mode:When STE is high, RX/TX operation of the slave is disabled andSOMI is forced to the input direction.When STE is low, RX/TX operation of the slave is enabled andSOMI operates normally.

18.2.1 USART Initialization and Reset

The USART is reset by a PUC or by the SWRST bit. After a PUC, the SWRSTbit is automatically set, keeping the USART in a reset condition. When set, theSWRST bit resets the URXIEx, UTXIEx, URXIFGx, OE, and FE bits and setsthe UTXIFGx flag. The USPIEx bit is not altered by SWRST. Clearing SWRSTreleases the USART for operation. See also chapter 17.

Note: Initializing or Reconfiguring the USART Module

The required USART initialization/reconfiguration process is:

1) Set SWRST (BIS.B #SWRST,&UxCTL)

2) Initialize all USART registers with SWRST=1 (including UxCTL)

3) Enable USART module via the MEx SFRs (USPIEx)

4) Clear SWRST via software (BIC.B #SWRST,&UxCTL)

5) Enable interrupts (optional) via the IEx SFRs (URXIEx and/or UTXIEx)

Failure to follow this process may result in unpredictable USART behavior.

Page 533: MSP430 - general.pdf

USART Operation: SPI Mode

18-5USART Peripheral Interface, SPI Mode

18.2.2 Master Mode

Figure 18−2. USART Master and External Slave

Receive Buffer UxRXBUF

Receive Shift Register

MSB LSB

Transmit Buffer UxTXBUF

Transmit Shift Register

MSB LSB

SPI Receive Buffer

Data Shift Register (DSR)

MSB LSB

SOMI SOMI

SIMO SIMOMASTER SLAVE

Px.x STE

STE SSPort.x

UCLK SCLKMSP430 USART COMMON SPI

Figure 18−2 shows the USART as a master in both 3-pin and 4-pinconfigurations. The USART initiates a data transfer when data is moved to thetransmit data buffer UxTXBUF. The UxTXBUF data is moved to the TX shiftregister when the TX shift register is empty, initiating data transfer on SIMOstarting with the most significant bit. Data on SOMI is shifted into the receiveshift register on the opposite clock edge, starting with the most significant bit.When the character is received, the receive data is moved from the RX shiftregister to the received data buffer UxRXBUF and the receive interrupt flag,URXIFGx, is set, indicating the RX/TX operation is complete.

A set transmit interrupt flag, UTXIFGx, indicates that data has moved fromUxTXBUF to the TX shift register and UxTXBUF is ready for new data. It doesnot indicate RX/TX completion. In master mode, the completion of an activetransmission is indicated by a set transmitter empty bit TXEPT = 1.

To receive data into the USART in master mode, data must be written toUxTXBUF because receive and transmit operations operate concurrently.

Four-Pin SPI Master Mode

In 4-pin master mode, STE is used to prevent conflicts with another master.The master operates normally when STE is high. When STE is low:

SIMO and UCLK are set to inputs and no longer drive the bus

The error bit FE is set indicating a communication integrity violation to behandled by the user

A low STE signal does not reset the USART module. The STE input signal isnot used in 3-pin master mode.

Page 534: MSP430 - general.pdf

USART Operation: SPI Mode

18-6 USART Peripheral Interface, SPI Mode

18.2.3 Slave Mode

Figure 18−3. USART Slave and External Master

Receive Buffer UxRXBUF

Receive Shift Register

LSBMSB

Transmit Buffer UxTXBUF

Transmit Shift Register

LSBMSB

SPI Receive Buffer

Data Shift Register DSR

LSBMSB

SOMISOMI

SIMOSIMOMASTER SLAVE

Px.x STE

STE SSPort.x

UCLKSCLKMSP430 USARTCOMMON SPI

Figure 18−3 shows the USART as a slave in both 3-pin and 4-pinconfigurations. UCLK is used as the input for the SPI clock and must besupplied by the external master. The data transfer rate is determined by thisclock and not by the internal baud rate generator. Data written to UxTXBUFand moved to the TX shift register before the start of UCLK is transmitted onSOMI. Data on SIMO is shifted into the receive shift register on the oppositeedge of UCLK and moved to UxRXBUF when the set number of bits arereceived. When data is moved from the RX shift register to UxRXBUF, theURXIFGx interrupt flag is set, indicating that data has been received. Theoverrun error bit, OE, is set when the previously received data is not read fromUxRXBUF before new data is moved to UxRXBUF.

Four-Pin SPI Slave Mode

In 4-pin slave mode, STE is used by the slave to enable the transmit andreceive operations and is provided by the SPI master. When STE is low, theslave operates normally. When STE is high:

Any receive operation in progress on SIMO is halted

SOMI is set to the input direction

A high STE signal does not reset the USART module. The STE input signalis not used in 3-pin slave mode.

Page 535: MSP430 - general.pdf

USART Operation: SPI Mode

18-7USART Peripheral Interface, SPI Mode

18.2.4 SPI Enable

The SPI transmit/receive enable bit USPIEx enables or disables the USARTin SPI mode. When USPIEx = 0, the USART stops operation after the currenttransfer completes, or immediately if no operation is active. A PUC or setSWRST bit disables the USART immediately and any active transfer isterminated.

Transmit Enable

When USPIEx = 0, any further write to UxTXBUF does not transmit. Datawritten to UxTXBUF begin to transmit when USPIEx = 1 and the BRCLKsource is active. Figure 18−4 and Figure 18−5 show the transmit enable statediagrams.

Figure 18−4. Master Mode Transmit Enable

Idle State(Transmitter

Enabled)

TransmitDisable

TransmissionActive

USPIEx = 0 No Data Writtento Transfer Buffer Not Completed

USPIEx = 1

USPIEx = 0

USPIEx = 1,Data Written toTransmit Buffer Handle Interrupt

Conditions

Character TransmittedUSPIEx = 1

USPIEx = 0 And Last BufferEntry Is Transmitted

SWRSTPUC

USPIEx = 0

Figure 18−5. Slave Transmit Enable State Diagram

Idle State(Transmitter

Enabled)

TransmitDisable

TransmissionActive

USPIEx = 0 No Clock at UCLK Not Completed

USPIEx = 1

USPIEx = 0

USPIEx = 1 Handle InterruptConditions

Character TransmittedUSPIEx = 1

USPIEx = 0

SWRSTPUC

External ClockPresent

Page 536: MSP430 - general.pdf

USART Operation: SPI Mode

18-8 USART Peripheral Interface, SPI Mode

Receive Enable

The SPI receive enable state diagrams are shown in Figure 18−6 andFigure 18−7. When USPIEx = 0, UCLK is disabled from shifting data into theRX shift register.

Figure 18−6. SPI Master Receive-Enable State Diagram

Idle State(ReceiverEnabled)

ReceiveDisable

ReceiverCollects

Character

USPIEx = 0 No Data Writtento UxTXBUF Not Completed

USPIEx = 1

USPIEx = 0

USPIEx = 1 Handle InterruptConditions

Character Received

USPIEx = 1

USPIEx = 0

SWRSTPUC

Data Writtento UxTXBUF

Figure 18−7. SPI Slave Receive-Enable State Diagram

Idle State(ReceiveEnabled)

ReceiveDisable

ReceiverCollects

Character

USPIEx = 0 No Clock at UCLKNot Completed

USPIEx = 1

USPIEx = 0

USPIEx = 1 Handle InterruptConditions

Character ReceivedUSPIEx = 1

USPIEx = 0

SWRSTPUC

External ClockPresent

Page 537: MSP430 - general.pdf

USART Operation: SPI Mode

18-9USART Peripheral Interface, SPI Mode

18.2.5 Serial Clock Control

UCLK is provided by the master on the SPI bus. When MM = 1, BITCLK isprovided by the USART baud rate generator on the UCLK pin as shown inFigure 18−8. When MM = 0, the USART clock is provided on the UCLK pin bythe master and, the baud rate generator is not used and the SSELx bits are“don’t care”. The SPI receiver and transmitter operate in parallel and use thesame clock source for data transfer.

Figure 18−8. SPI Baud Rate Generator

Bit Start

mX

BRCLK88UCLKI

ACLK

SMCLK

SMCLK 11

BITCLK

10

01

00

202728215

Compare (0 or 1)

Modulation Data Shift Register(LSB first)

16−Bit Counter

Q0............Q15

m0m7

......

8

UxBR1 UxBR0

ToggleFF

N =

R

R

R

UxMCTL

SSEL1 SSEL0

The 16-bit value of UxBR0+UxBR1 is the division factor of the USART clocksource, BRCLK. The maximum baud rate that can be generated in mastermode is BRCLK/2. The maximum baud rate that can be generated in slavemode is BRCLK The modulator in the USART baud rate generator is not usedfor SPI mode and is recommended to be set to 000h. The UCLK frequency isgiven by:

Baud rate = BRCLKUxBR

with UxBR= [UxBR1, UxBR0]

Page 538: MSP430 - general.pdf

USART Operation: SPI Mode

18-10 USART Peripheral Interface, SPI Mode

Serial Clock Polarity and Phase

The polarity and phase of UCLK are independently configured via the CKPLand CKPH control bits of the USART. Timing for each case is shown inFigure 18−9.

Figure 18−9. USART SPI Timing

CKPH CKPL Cycle#

UCLK

UCLK

UCLK

UCLK

SIMO/SOMI

SIMO/SOMI

Move to UxTXBUF

RX Sample Points

0

1

0

0

01

1 1

0 X

1 X

MSB

MSB

1 2 3 4 5 6 7 8

LSB

LSB

TX Data Shifted Out

STE

Page 539: MSP430 - general.pdf

USART Operation: SPI Mode

18-11USART Peripheral Interface, SPI Mode

18.2.6 SPI Interrupts

The USART has one interrupt vector for transmission and one interrupt vectorfor reception.

SPI Transmit Interrupt Operation

The UTXIFGx interrupt flag is set by the transmitter to indicate that UxTXBUFis ready to accept another character. An interrupt request is generated ifUTXIEx and GIE are also set. UTXIFGx is automatically reset if the interruptrequest is serviced or if a character is written to UxTXBUF.

UTXIFGx is set after a PUC or when SWRST = 1. UTXIEx is reset after a PUCor when SWRST = 1. The operation is shown is Figure 18−10.

Figure 18−10. Transmit Interrupt Operation

Clear

UTXIEx

Clear

D

Character Moved FromBuffer to Shift Register

Interrupt Service Requested

SWRST

Data moved to UxTXBUF

Q

UTXIFGx

IRQA

VCC

PUC or SWRST

QSet

SYNC = 1

Note: Writing to UxTXBUF in SPI Mode

Data written to UxTXBUF when UTXIFGx = 0 and USPIEx = 1 may result inerroneous data transmission.

Page 540: MSP430 - general.pdf

USART Operation: SPI Mode

18-12 USART Peripheral Interface, SPI Mode

SPI Receive Interrupt Operation

The URXIFGx interrupt flag is set each time a character is received and loadedinto UxRXBUF as shown in Figure 18−11 and Figure 18−12. An interruptrequest is generated if URXIEx and GIE are also set. URXIFGx and URXIExare reset by a system reset PUC signal or when SWRST = 1. URXIFGx isautomatically reset if the pending interrupt is served or when UxRXBUF isread.

Figure 18−11.Receive Interrupt Operation

URXS

Clear

τ

(S)

SYNCValid Start Bit

Receiver Collects CharacterURXSE

From URXD

PEFE

BRKURXEIE

URXWIE

RXWAKE

Character Received

URXIFGx

URXIEx Interrupt ServiceRequested

SWRSTPUCUxRXBUF ReadURXSE

IRQA

SYNC = 1

Clear

Figure 18−12. Receive Interrupt State Diagram

ReceiveCharacterCompleted

InterruptService Started,

GIE = 0URXIFGx = 0

USPIEx = 0

URXIFGx = 1USPIEx = 1 and

URXIEx = 1 andGIE = 1 andPriority Valid

GIE = 0Priority

TooLow

URXIFGx = 0Wait For NextStart

USPIEx = 0

SWRST = 1

PUC

USPIEx = 1

URXIEx = 0

SWRST = 1

ReceiveCharacter

Page 541: MSP430 - general.pdf

USART Registers: SPI Mode

18-13USART Peripheral Interface, SPI Mode

18.3 USART Registers: SPI Mode

Table 18−1 lists the registers for all devices implementing a USART module.Table 18−2 applies only to devices with a second USART module, USART1.

Table 18−1.USART0 Control and Status Registers

Register Short Form Register Type Address Initial State

USART control register U0CTL Read/write 070h 001h with PUC

Transmit control register U0TCTL Read/write 071h 001h with PUC

Receive control register U0RCTL Read/write 072h 000h with PUC

Modulation control register U0MCTL Read/write 073h Unchanged

Baud rate control register 0 U0BR0 Read/write 074h Unchanged

Baud rate control register 1 U0BR1 Read/write 075h Unchanged

Receive buffer register U0RXBUF Read 076h Unchanged

Transmit buffer register U0TXBUF Read/write 077h Unchanged

SFR module enable register 1 ME1 Read/write 004h 000h with PUC

SFR interrupt enable register 1 IE1 Read/write 000h 000h with PUC

SFR interrupt flag register 1 IFG1 Read/write 002h 082h with PUC

Table 18−2.USART1 Control and Status Registers

Register Short Form Register Type Address Initial State

USART control register U1CTL Read/write 078h 001h with PUC

Transmit control register U1TCTL Read/write 079h 001h with PUC

Receive control register U1RCTL Read/write 07Ah 000h with PUC

Modulation control register U1MCTL Read/write 07Bh Unchanged

Baud rate control register 0 U1BR0 Read/write 07Ch Unchanged

Baud rate control register 1 U1BR1 Read/write 07Dh Unchanged

Receive buffer register U1RXBUF Read 07Eh Unchanged

Transmit buffer register U1TXBUF Read/write 07Fh Unchanged

SFR module enable register 2 ME2 Read/write 005h 000h with PUC

SFR interrupt enable register 2 IE2 Read/write 001h 000h with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h 020h with PUC

Note: Modifying the SFR bits

To avoid modifying control bits for other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Page 542: MSP430 - general.pdf

USART Registers: SPI Mode

18-14 USART Peripheral Interface, SPI Mode

UxCTL, USART Control Register

7 6 5 4 3 2 1 0

Unused Unused I2C† CHAR LISTEN SYNC MM SWRST

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−1

Unused Bits7−6

Unused

I2C† Bit 5 I2C mode enable. This bit selects I2C or SPI operation when SYNC = 1.0 SPI mode1 I2C mode

CHAR Bit 4 Character length0 7-bit data1 8-bit data

LISTEN Bit 3 Listen enable. The LISTEN bit selects the loopback mode0 Disabled1 Enabled. The transmit signal is internally fed back to the receiver

SYNC Bit 2 Synchronous mode enable0 UART mode1 SPI mode

MM Bit 1 Master mode0 USART is slave1 USART is master

SWRST Bit 0 Software reset enable0 Disabled. USART reset released for operation1 Enabled. USART logic held in reset state

† Not implemented in 4xx devices.

Page 543: MSP430 - general.pdf

USART Registers: SPI Mode

18-15USART Peripheral Interface, SPI Mode

UxTCTL, USART Transmit Control Register

7 6 5 4 3 2 1 0

CKPH CKPL SSELx Unused Unused STC TXEPT

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−1

CKPH Bit 7 Clock phase select.0 Data is changed on the first UCLK edge and captured on the

following edge.1 Data is captured on the first UCLK edge and changed on the

following edge.

CKPL Bit 6 Clock polarity select0 The inactive state is low.1 The inactive state is high.

SSELx Bits5-4

Source select. These bits select the BRCLK source clock.00 External UCLK (valid for slave mode only)01 ACLK (valid for master mode only)10 SMCLK (valid for master mode only)11 SMCLK (valid for master mode only)

Unused Bit 3 Unused

Unused Bit 2 Unused

STC Bit 1 Slave transmit control.0 4-pin SPI mode: STE enabled.1 3-pin SPI mode: STE disabled.

TXEPT Bit 0 Transmitter empty flag. The TXEPT flag is not used in slave mode.0 Transmission active and/or data waiting in UxTXBUF1 UxTXBUF and TX shift register are empty

Page 544: MSP430 - general.pdf

USART Registers: SPI Mode

18-16 USART Peripheral Interface, SPI Mode

UxRCTL, USART Receive Control Register

7 6 5 4 3 2 1 0

FE Unused OE Unused Unused Unused Unused Unused

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

FE Bit 7 Framing error flag. This bit indicates a bus conflict when MM = 1 and STC = 0. FE is unused in slave mode.0 No conflict detected1 A negative edge occurred on STE, indicating bus conflict

Undefined Bit 6 Unused

OE Bit 5 Overrun error flag. This bit is set when a character is transferred intoUxRXBUF before the previous character was read. OE is automaticallyreset when UxRXBUF is read, when SWRST = 1, or can be reset bysoftware.0 No error1 Overrun error occurred

Unused Bit 4 Unused

Unused Bit 3 Unused

Unused Bit 2 Unused

Unused Bit 1 Unused

Unused Bit 0 Unused

Page 545: MSP430 - general.pdf

USART Registers: SPI Mode

18-17USART Peripheral Interface, SPI Mode

UxBR0, USART Baud Rate Control Register 0

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

rw rw rw rw rw rw rw rw

UxBR1, USART Baud Rate Control Register 1

7 6 5 4 3 2 1 0

215 214 213 212 211 210 29 28

rw rw rw rw rw rw rw rw

UxBRx The baud-rate generator uses the content of UxBR1+UxBR0 to set thebaud rate. Unpredictable SPI operation occurs if UxBR < 2.

UxMCTL, USART Modulation Control Register

7 6 5 4 3 2 1 0

m7 m6 m5 m4 m3 m2 m1 m0

rw rw rw rw rw rw rw rw

UxMCTLx Bits7−0

The modulation control register is not used for SPI mode and should be setto 000h.

Page 546: MSP430 - general.pdf

USART Registers: SPI Mode

18-18 USART Peripheral Interface, SPI Mode

UxRXBUF, USART Receive Buffer Register

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

r r r r r r r r

UxRXBUFx Bits7−0

The receive-data buffer is user accessible and contains the last receivedcharacter from the receive shift register. Reading UxRXBUF resets the OEbit and URXIFGx flag. In 7-bit data mode, UxRXBUF is LSB justified andthe MSB is always reset.

UxTXBUF, USART Transmit Buffer Register

7 6 5 4 3 2 1 0

27 26 25 24 23 22 21 20

rw rw rw rw rw rw rw rw

UxTXBUFx Bits7−0

The transmit data buffer is user accessible and contains current data to betransmitted. When seven-bit character-length is used, the data should beMSB justified before being moved into UxTXBUF. Data is transmitted MSBfirst. Writing to UxTXBUF clears UTXIFGx.

Page 547: MSP430 - general.pdf

USART Registers: SPI Mode

18-19USART Peripheral Interface, SPI Mode

ME1, Module Enable Register 1

7 6 5 4 3 2 1 0

USPIE0

rw−0

Bit 7 This bit may be used by other modules. See device-specific data sheet.

USPIE0 Bit 6 USART0 SPI enable. This bit enables the SPI mode for USART0.0 Module not enabled1 Module enabled

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

ME2, Module Enable Register 2

7 6 5 4 3 2 1 0

USPIE1

rw−0

Bits7-5

These bits may be used by other modules. See device-specific data sheet.

USPIE1 Bit 4 USART1 SPI enable. This bit enables the SPI mode for USART1.0 Module not enabled1 Module enabled

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 548: MSP430 - general.pdf

USART Registers: SPI Mode

18-20 USART Peripheral Interface, SPI Mode

IE1, Interrupt Enable Register 1

7 6 5 4 3 2 1 0

UTXIE0 URXIE0

rw−0 rw−0

UTXIE0 Bit 7 USART0 transmit interrupt enable. This bit enables the UTXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabled

URXIE0 Bit 6 USART0 receive interrupt enable. This bit enables the URXIFG0 interrupt.0 Interrupt not enabled1 Interrupt enabled

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

UTXIE1 URXIE1

rw−0 rw−0

Bits7-6

These bits may be used by other modules. See device-specific data sheet.

UTXIE1 Bit 5 USART1 transmit interrupt enable. This bit enables the UTXIFG1 interrupt.0 Interrupt not enabled1 Interrupt enabled

URXIE1 Bit 4 USART1 receive interrupt enable. This bit enables the URXIFG1 interrupt.0 Interrupt not enabled1 Interrupt enabled

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 549: MSP430 - general.pdf

USART Registers: SPI Mode

18-21USART Peripheral Interface, SPI Mode

IFG1, Interrupt Flag Register 1

7 6 5 4 3 2 1 0

UTXIFG0 URXIFG0

rw−1 rw−0

UTXIFG0 Bit 7 USART0 transmit interrupt flag. UTXIFG0 is set when U0TXBUF is empty.0 No interrupt pending1 Interrupt pending

URXIFG0 Bit 6 USART0 receive interrupt flag. URXIFG0 is set when U0RXBUF has receiveda complete character.0 No interrupt pending1 Interrupt pending

Bits5-0

These bits may be used by other modules. See device-specific data sheet.

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

UTXIFG1 URXIFG1

rw−1 rw−0

Bits7-6

These bits may be used by other modules. See device-specific data sheet.

UTXIFG1 Bit 5 USART1 transmit interrupt flag. UTXIFG1 is set when U1TXBUF is empty.0 No interrupt pending1 Interrupt pending

URXIFG1 Bit 4 USART1 receive interrupt flag. URXIFG1 is set when U1RXBUF has receiveda complete character.0 No interrupt pending1 Interrupt pending

Bits3-0

These bits may be used by other modules. See device-specific data sheet.

Page 550: MSP430 - general.pdf

18-22 USART Peripheral Interface, SPI Mode

Page 551: MSP430 - general.pdf

19-1Universal Serial Communication Interface, UART Mode

Universal Serial Communication Interface,UART Mode

The universal serial communication interface (USCI) supports multiple serialcommunication modes with one hardware module. This chapter discusses theoperation of the asynchronous UART mode.

Topic Page

19.1 USCI Overview 19-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19.2 USCI Introduction: UART Mode 19-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19.3 USCI Operation: UART Mode 19-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19.4 USCI Registers: UART Mode 19-27. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 19

Page 552: MSP430 - general.pdf

USCI Overview

19-2 Universal Serial Communication Interface, UART Mode

19.1 USCI Overview

The universal serial communication interface (USCI) modules supportmultiple serial communication modes. Different USCI modules supportdifferent modes. Each different USCI module is named with a different letter.For example, USCI_A is different from USCI_B, etc. If more than one identicalUSCI module is implemented on one device, those modules are named withincrementing numbers. For example, if one device has two USCI_A modules,they are named USCI_A0 and USCI_A1. See the device-specific data sheetto determine which USCI modules, if any, are implemented on which devices.

The USCI_Ax modules support:

UART mode Pulse shaping for IrDA communications Automatic baud rate detection for LIN communications SPI mode

The USCI_Bx modules support:

I2C mode SPI mode

Page 553: MSP430 - general.pdf

USCI Introduction: UART Mode

19-3Universal Serial Communication Interface, UART Mode

19.2 USCI Introduction: UART Mode

In asynchronous mode, the USCI_Ax modules connect the MSP430 to anexternal system via two external pins, UCAxRXD and UCAxTXD. UART modeis selected when the UCSYNC bit is cleared.

UART mode features include:

7- or 8-bit data with odd, even, or non-parity

Independent transmit and receive shift registers

Separate transmit and receive buffer registers

LSB-first or MSB-first data transmit and receive

Built-in idle-line and address-bit communication protocols formultiprocessor systems

Receiver start-edge detection for auto-wake up from LPMx modes

Programmable baud rate with modulation for fractional baud rate support

Status flags for error detection and suppression

Status flags for address detection

Independent interrupt capability for receive and transmit

Figure 19−1 shows the USCI_Ax when configured for UART mode.

Page 554: MSP430 - general.pdf

USCI Introduction: UART Mode

19-4 Universal Serial Communication Interface, UART Mode

Figure 19−1. USCI_Ax Block Diagram: UART Mode (UCSYNC = 0)

Modulator

ACLK

SMCLK

SMCLK

00

01

10

11

UCSSELx

UC0CLK

Prescaler/Divider

Receive Baudrate Generator

UC0BRx

16

UCBRFx

4

UCBRSx

3

UCOS16

UCRXERRError Flags

Set Flags

UCPEUCFEUCOE

UCABEN

Receive Shift Register

Receive Buffer UC 0RXBUF

Receive State Machine

1

0

UCIREN

UCPEN UCPAR UCMSB UC7BIT

UCDORMUCMODEx

2

UCSPB

Set UCBRK

Set UCADDR/UCIDLE

0

1

UCLISTEN

UC0RX

1

0

UCIRRXPL

IrDA Decoder

UCIRRXFEUCIRRXFLx

6

Transmit Buffer UC 0TXBUF

Transmit State Machine

UCTXADDR

UCTXBRK

Transmit Shift Register

UCPEN UCPAR UCMSB UC7BIT UCIREN

UCIRTXPLx

6

0

1IrDA Encoder

UC0TX

Transmit Clock

Receive ClockBRCLK

UCMODEx

2

UCSPB

UCRXEIE

UCRXBRKIE

Set UC0RXIFG

Set UC0TXIFG

Set RXIFG

Page 555: MSP430 - general.pdf

USCI Operation: UART Mode

19-5Universal Serial Communication Interface, UART Mode

19.3 USCI Operation: UART Mode

In UART mode, the USCI transmits and receives characters at a bit rateasynchronous to another device. Timing for each character is based on theselected baud rate of the USCI. The transmit and receive functions use thesame baud rate frequency.

19.3.1 USCI Initialization and Reset

The USCI is reset by a PUC or by setting the UCSWRST bit. After a PUC, theUCSWRST bit is automatically set, keeping the USCI in a reset condition.When set, the UCSWRST bit resets the UCAxRXIE, UCAxTXIE, UCAxRXIFG,UCRXERR, UCBRK, UCPE, UCOE, UCFE, UCSTOE and UCBTOE bits andsets the UCAxTXIFG bit. Clearing UCSWRST releases the USCI foroperation.

Note: Initializing or Re-Configuring the USCI Module

The recommended USCI initialization/re-configuration process is:

1) Set UCSWRST (BIS.B #UCSWRST,&UCAxCTL1)

2) Initialize all USCI registers with UCSWRST = 1 (including UCAxCTL1)

3) Configure ports.

4) Clear UCSWRST via software (BIC.B #UCSWRST,&UCAxCTL1)

5) Enable interrupts (optional) via UCAxRXIE and/or UCAxTXIE

19.3.2 Character Format

The UART character format, shown in Figure 19−2, consists of a start bit,seven or eight data bits, an even/odd/no parity bit, an address bit (address-bitmode), and one or two stop bits. The UCMSB bit controls the direction of thetransfer and selects LSB or MSB first. LSB-first is typically required for UARTcommunication.

Figure 19−2. Character Format

[Parity Bit, UCPEN = 1]

[Address Bit, UCMODEx = 10]

Mark

SpaceD0 D6 D7 AD PA SP SP

[Optional Bit, Condition]

[2nd Stop Bit, UCSPB = 1]

[8th Data Bit, UC7BIT = 0]

ST

Page 556: MSP430 - general.pdf

USCI Operation: UART Mode

19-6 Universal Serial Communication Interface, UART Mode

19.3.3 Asynchronous Communication Formats

When two devices communicate asynchronously, no multiprocessor format isrequired for the protocol. When three or more devices communicate, the USCIsupports the idle-line and address-bit multiprocessor communication formats.

Idle-Line Multiprocessor Format

When UCMODEx = 01, the idle-line multiprocessor format is selected. Blocksof data are separated by an idle time on the transmit or receive lines as shownin Figure 19−3. An idle receive line is detected when 10 or more continuousones (marks) are received after the one or two stop bits of a character. Thebaud rate generator is switched off after reception of an idle line until the nextstart edge is detected. When an idle line is detected the UCIDLE bit is set. TheUCIDLE bit is reset by software or by reading the UCAxRXBUF.

The first character received after an idle period is an address character. TheUCIDLE bit is used as an address tag for each block of characters. In idle-linemultiprocessor format, this bit is set when a received character is an address.

Figure 19−3. Idle-Line Format

ST Address SP ST Data SP ST Data SP

Blocks ofCharacters

Idle Periods of 10 Bits or More

UCAxTXD/RXD Expanded

UCAxTXD/RXD

First Character Within BlockIs Address. It Follows IdlePeriod of 10 Bits or More

Character Within Block

Idle Period Less Than 10 Bits

Character Within Block

UCAxTXD/RXD

Page 557: MSP430 - general.pdf

USCI Operation: UART Mode

19-7Universal Serial Communication Interface, UART Mode

The UCDORM bit is used to control data reception in the idle-linemultiprocessor format. When UCDORM = 1, all non-address characters areassembled but not transferred into the UCAxRXBUF, and interrupts are notgenerated. When an address character is received, the character istransferred into UCAxRXBUF, UCAxRXIFG is set, and any applicable errorflag is set when UCRXEIE = 1. When UCRXEIE = 0 and an address characteris received but has a framing error or parity error, the character is nottransferred into UCAxRXBUF and UCAxRXIFG is not set.

If an address is received, user software can validate the address and mustreset UCDORM to continue receiving data. If UCDORM remains set, onlyaddress characters will be received. When UCDORM is cleared during thereception of a character the receive interrupt flag will be set after the receptioncompleted. The UCDORM bit is not modified by the USCI hardwareautomatically.

For address transmission in idle-line multiprocessor format, a precise idleperiod can be generated by the USCI to generate address character identifierson UCAxTXD. The double-buffered UCTXADDR flag indicates if the nextcharacter loaded into UCAxTXBUF is preceded by an idle line of 11 bits.UCTXADDR is automatically cleared when the start bit is generated.

Transmitting an Idle Frame

The following procedure sends out an idle frame to indicate an addresscharacter followed by associated data:

1) Set UCTXADDR, then write the address character to UCAxTXBUF.UCAxTXBUF must be ready for new data (UCAxTXIFG = 1).

This generates an idle period of exactly 11 bits followed by the addresscharacter. UCTXADDR is reset automatically when the address characteris transferred from UCAxTXBUF into the shift register.

2) Write desired data characters to UCAxTXBUF. UCAxTXBUF must beready for new data (UCAxTXIFG = 1).

The data written to UCAxTXBUF is transferred to the shift register andtransmitted as soon as the shift register is ready for new data.

The idle-line time must not be exceeded between address and datatransmission or between data transmissions. Otherwise, the transmitteddata will be misinterpreted as an address.

Page 558: MSP430 - general.pdf

USCI Operation: UART Mode

19-8 Universal Serial Communication Interface, UART Mode

Address-Bit Multiprocessor Format

When UCMODEx = 10, the address-bit multiprocessor format is selected.Each processed character contains an extra bit used as an address indicatorshown in Figure 19−4. The first character in a block of characters carries a setaddress bit which indicates that the character is an address. The USCIUCADDR bit is set when a received character has its address bit set and istransferred to UCAxRXBUF. The UCADDR bit is reset by software or byreading the UCAxRXBUF.

The UCDORM bit is used to control data reception in the address-bitmultiprocessor format. When UCDORM is set, data characters with addressbit = 0 are assembled by the receiver but are not transferred to UCAxRXBUFand no interrupts are generated. When a character containing a set addressbit is received, the character is transferred into UCAxRXBUF, UCAxRXIFG isset, and any applicable error flag is set when UCRXEIE = 1. When UCRXEIE= 0 and a character containing a set address bit is received, but has a framingerror or parity error, the character is not transferred into UCAxRXBUF andUCAxRXIFG is not set.

If an address is received, user software can validate the address and mustreset UCDORM to continue receiving data. If UCDORM remains set, onlyaddress characters with address bit = 1 will be received. The UCDORM bit isnot modified by the USCI hardware automatically.

When UCDORM = 0 all received characters will set the receive interrupt flagUCAxRXIFG. If UCDORM is cleared during the reception of a character thereceive interrupt flag will be set after the reception is completed.

For address transmission in address-bit multiprocessor mode, the address bitof a character is controlled by the UCTXADDR bit. The value of theUCTXADDR bit is loaded into the address bit of the character transferred fromUCAxTXBUF to the transmit shift register. UCTXADDR is automaticallycleared when the start bit is generated.

Page 559: MSP430 - general.pdf

USCI Operation: UART Mode

19-9Universal Serial Communication Interface, UART Mode

Figure 19−4. Address-Bit Multiprocessor Format

ST Address SP ST Data SP ST Data SP

Blocks ofCharacters

Idle Periods of No Significance

UCAxTXD/UCAxRXDExpanded

UCAxTXD/UCAxRXD

First Character Within BlockIs an Address. AD Bit Is 1

AD Bit Is 0 forData Within Block. Idle Time Is of No Significance

UCAxTXD/UCAxRXD 1 0 0

Break Reception and Generation

When UCMODEx = 00, 01, or 10 the receiver detects a break when all data,parity, and stop bits are low, regardless of the parity, address mode, or othercharacter settings. When a break is detected, the UCBRK bit is set. If the breakinterrupt enable bit, UCBRKIE, is set, the receive interrupt flag UCAxRXIFGwill also be set. In this case, the value in UCAxRXBUF is 0h since all data bitswere zero.

To transmit a break set the UCTXBRK bit, then write 0h to UCAxTXBUF.UCAxTXBUF must be ready for new data (UCAxTXIFG = 1). This generatesa break with all bits low. UCTXBRK is automatically cleared when the start bitis generated.

Page 560: MSP430 - general.pdf

USCI Operation: UART Mode

19-10 Universal Serial Communication Interface, UART Mode

19.3.4 Automatic Baud Rate Detection

When UCMODEx = 11 UART mode with automatic baud rate detection isselected. For automatic baud rate detection, a data frame is preceded by asynchronization sequence that consists of a break and a synch field. A breakis detected when 11 or more continuous zeros (spaces) are received. If thelength of the break exceeds 21 bit times the break timeout error flag UCBTOEis set. The synch field follows the break as shown in Figure 19−5.

Figure 19−5. Auto Baud Rate Detection − Break/Synch Sequence

Break Delimiter Synch

For LIN conformance the character format should be set to 8 data bits, LSBfirst, no parity and one stop bit. No address bit is available.

The synch field consists of the data 055h inside a byte field as shown inFigure 19−6. The synchronization is based on the time measurement betweenthe first falling edge and the last falling edge of the pattern. The transmit baudrate generator is used for the measurement if automatic baud rate detectionis enabled by setting UCABDEN. Otherwise, the pattern is received but notmeasured. The result of the measurement is transferred into the baud ratecontrol registers UCAxBR0, UCAxBR1, and UCAxMCTL. If the length of thesynch field exceeds the measurable time the synch timeout error flagUCSTOE is set.

Figure 19−6. Auto Baud Rate Detection − Synch Field

Synch

StartBit

StopBit

0 1 2 3 4 5 6 7

8 Bit Times

The UCDORM bit is used to control data reception in this mode. WhenUCDORM is set, all characters are received but not transferred into theUCAxRXBUF, and interrupts are not generated. When a break/synch field isdetected the UCBRK flag is set. The character following the break/synch fieldis transferred into UCAxRXBUF and the UCAxRXIFG interrupt flag is set. Anyapplicable error flag is also set. If the UCBRKIE bit is set, reception of thebreak/synch sets the UCAxRXIFG. The UCBRK bit is reset by user softwareor by reading the receive buffer UCAxRXBUF.

Page 561: MSP430 - general.pdf

USCI Operation: UART Mode

19-11Universal Serial Communication Interface, UART Mode

When a break/synch field is received, user software must reset UCDORM tocontinue receiving data. If UCDORM remains set, only the character after thenext reception of a break/synch field will be received. The UCDORM bit is notmodified by the USCI hardware automatically.

When UCDORM = 0 all received characters will set the receive interrupt flagUCAxRXIFG. If UCDORM is cleared during the reception of a character thereceive interrupt flag will be set after the reception is complete.

The counter used to detect the baud rate is limited to 07FFFh (32767) counts.This means the minimum baud rate detectable is 488 Baud in oversamplingmode and 30 Baud in low-frequency mode.

The automatic baud rate detection mode can be used in a full-duplexcommunication system with some restrictions. The USCI can not transmit datawhile receiving the break/sync field and if a 0h byte with framing error isreceived any data transmitted during this time gets corrupted. The latter casecan be discovered by checking the received data and the UCFE bit.

Transmitting a Break/Synch Field

The following procedure transmits a break/synch field:

1) Set UCTXBRK with UMODEx = 11.

2) Write 055h to UCAxTXBUF. UCAxTXBUF must be ready for new data(UCAxTXIFG = 1).

This generates a break field of 13 bits followed by a break delimiter and thesynch character. The length of the break delimiter is controlled with theUCDELIMx bits. UCTXBRK is reset automatically when the synchcharacter is transferred from UCAxTXBUF into the shift register.

3) Write desired data characters to UCAxTXBUF. UCAxTXBUF must beready for new data (UCAxTXIFG = 1).

The data written to UCAxTXBUF is transferred to the shift register andtransmitted as soon as the shift register is ready for new data.

Page 562: MSP430 - general.pdf

USCI Operation: UART Mode

19-12 Universal Serial Communication Interface, UART Mode

19.3.5 IrDA Encoding and Decoding

When UCIREN is set the IrDA encoder and decoder are enabled and providehardware bit shaping for IrDA communication.

IrDA Encoding

The encoder sends a pulse for every zero bit in the transmit bit stream comingfrom the UART as shown in Figure 19−7. The pulse duration is defined byUCIRTXPLx bits specifying the number of half clock periods of the clockselected by UCIRTXCLK.

Figure 19−7. UART vs. IrDA Data Format

UART

StartBit Data Bits

StopBit

IrDA

To set the pulse time of 3/16 bit period required by the IrDA standard theBITCLK16 clock is selected with UCIRTXCLK = 1 and the pulse length is setto 6 half clock cycles with UCIRTXPLx = 6 − 1 = 5.

When UCIRTXCLK = 0, the pulse length tPULSE is based on BRCLK and iscalculated as follows:

UCIRTXPLx tPULSE 2 fBRCLK 1

When the pulse length is based on BRCLK the prescaler UCBRx must to beset to a value greater or equal to 5.

IrDA Decoding

The decoder detects high pulses when UCIRRXPL = 0. Otherwise it detectslow pulses. In addition to the analog deglitch filter an additional programmabledigital filter stage can be enabled by setting UCIRRXFE. When UCIRRXFE isset, only pulses longer than the programmed filter length are passed. Shorterpulses are discarded. The equation to program the filter length UCIRRXFLxis:

UCIRRXFLx (tPULSE tWAKE) 2 fBRCLK 4

where:

tPULSE: Minimum receive pulse width

tWAKE: Wake time from any low power mode. Zero whenMSP430 is in active mode.

Page 563: MSP430 - general.pdf

USCI Operation: UART Mode

19-13Universal Serial Communication Interface, UART Mode

19.3.6 Automatic Error Detection

Glitch suppression prevents the USCI from being accidentally started. Anypulse on UCAxRXD shorter than the deglitch time tτ (approximately 150 ns)will be ignored. See the device-specific data sheet for parameters.

When a low period on UCAxRXD exceeds tτ a majority vote is taken for thestart bit. If the majority vote fails to detect a valid start bit the USCI haltscharacter reception and waits for the next low period on UCAxRXD. Themajority vote is also used for each bit in a character to prevent bit errors.

The USCI module automatically detects framing errors, parity errors, overrunerrors, and break conditions when receiving characters. The bits UCFE,UCPE, UCOE, and UCBRK are set when their respective condition isdetected. When the error flags UCFE, UCPE or UCOE are set, UCRXERR isalso set. The error conditions are described in Table 19−1.

Table 19−1.Receive Error Conditions

Error ConditionErrorFlag Description

Framing error UCFE

A framing error occurs when a low stop bit isdetected. When two stop bits are used, bothstop bits are checked for framing error. When aframing error is detected, the UCFE bit is set.

Parity error UCPE

A parity error is a mismatch between thenumber of 1s in a character and the value ofthe parity bit. When an address bit is includedin the character, it is included in the paritycalculation. When a parity error is detected, theUCPE bit is set.

Receive overrun UCOE

An overrun error occurs when a character isloaded into UCAxRXBUF before the priorcharacter has been read. When an overrunoccurs, the UCOE bit is set.

Break condition UCBRK

When not using automatic baud rate detection,a break is detected when all data, parity, andstop bits are low. When a break condition isdetected, the UCBRK bit is set. A breakcondition can also set the interrupt flagUCAxRXIFG if the break interrupt enableUCBRKIE bit is set.

When UCRXEIE = 0 and a framing error, or parity error is detected, nocharacter is received into UCAxRXBUF. When UCRXEIE = 1, characters arereceived into UCAxRXBUF and any applicable error bit is set.

When UCFE, UCPE, UCOE, UCBRK, or UCRXERR is set, the bit remains setuntil user software resets it or UCAxRXBUF is read. UCOE must be reset byreading UCAxRXBUF. Otherwise it will not function properly. To detectoverflows reliably the following flow is recommended. After a character wasreceived and UCAxRXIFG is set, first read UCAxSTAT to check the error flagsincluding the overflow flag UCOE. Read UCAxRXBUF next. This will clear all

Page 564: MSP430 - general.pdf

USCI Operation: UART Mode

19-14 Universal Serial Communication Interface, UART Mode

error flags except UCOE if UCAxRXBUF was overwritten between the readaccess to UCAxSTAT and to UCAxRXBUF. So the UCOE flag should bechecked after reading UCAxRXBUF to detect this condition. Note, in this casethe UCRXERR flag is not set.

19.3.7 USCI Receive Enable

The USCI module is enabled by clearing the UCSWRST bit and the receiveris ready and in an idle state. The receive baud rate generator is in a ready statebut is not clocked nor producing any clocks.

The falling edge of the start bit enables the baud rate generator and the UARTstate machine checks for a valid start bit. If no valid start bit is detected theUART state machine returns to its idle state and the baud rate generator isturned off again. If a valid start bit is detected a character will be received.

When the idle-line multiprocessor mode is selected with UCMODEx = 01 theUART state machine checks for an idle line after receiving a character. If a startbit is detected another character is received. Otherwise the UCIDLE flag is setafter 10 ones are received and the UART state machine returns to its idle stateand the baud rate generator is turned off.

19.3.8 Receive Data Glitch Suppression

Glitch suppression prevents the USCI from being accidentally started. Anyglitch on UCAxRXD shorter than the deglitch time tτ (approximately 150 ns)will be ignored by the USCI and further action will be initiated as shown inFigure 19−8. See the device-specific data sheet for parameters.

Figure 19−8. Glitch Suppression, USCI Receive Not Started

URXDx

URXS

When a glitch is longer than tτ, or a valid start bit occurs on UCAxRXD, theUSCI receive operation is started and a majority vote is taken as shown inFigure 19−9. If the majority vote fails to detect a start bit the USCI haltscharacter reception.

Page 565: MSP430 - general.pdf

USCI Operation: UART Mode

19-15Universal Serial Communication Interface, UART Mode

Figure 19−9. Glitch Suppression, USCI Activated

URXDx

URXS

Majority Vote Taken

19.3.9 USCI Transmit Enable

The USCI module is enabled by clearing the UCSWRST bit and the transmitteris ready and in an idle state. The transmit baud rate generator is ready but isnot clocked nor producing any clocks.

A transmission is initiated by writing data to UCAxTXBUF. When this occurs,the baud rate generator is enabled and the data in UCAxTXBUF is moved tothe transmit shift register on the next BITCLK after the transmit shift registeris empty. UCAxTXIFG is set when new data can be written into UCAxTXBUF.

Transmission continues as long as new data is available in UCAxTXBUF at theend of the previous byte transmission. If new data is not in UCAxTXBUF whenthe previous byte has transmitted, the transmitter returns to its idle state andthe baud rate generator is turned off.

19.3.10 UART Baud Rate Generation

The USCI baud rate generator is capable of producing standard baud ratesfrom non-standard source frequencies. It provides two modes of operationselected by the UCOS16 bit.

Low-Frequency Baud Rate Generation

The low-frequency mode is selected when UCOS16 = 0. This mode allowsgeneration of baud rates from low frequency clock sources (e.g. 9600 baudfrom a 32768Hz crystal). By using a lower input frequency the powerconsumption of the module is reduced. Using this mode with higherfrequencies and higher prescaler settings will cause the majority votes to betaken in an increasingly smaller window and thus decrease the benefit of themajority vote.

In low-frequency mode the baud rate generator uses one prescaler and onemodulator to generate bit clock timing. This combination supports fractionaldivisors for baud rate generation. In this mode, the maximum USCI baud rateis one-third the UART source clock frequency BRCLK.

Timing for each bit is shown in Figure 19−10. For each bit received, a majorityvote is taken to determine the bit value. These samples occur at the N/2 − 1/2,N/2, and N/2 + 1/2 BRCLK periods, where N is the number of BRCLKs perBITCLK.

Page 566: MSP430 - general.pdf

USCI Operation: UART Mode

19-16 Universal Serial Communication Interface, UART Mode

Figure 19−10. BITCLK Baud Rate Timing with UCOS16 = 0

N/2

Bit Start

BRCLK

Counter

BITCLK

N/2−1 N/2−21 N/2 N/2−1 1 N/2 N/2−1N/2−2

0 N/2 N/2−11

INT(N/2) + m(= 0)

INT(N/2) + m(= 1)

1 0 N/2

Bit Period

NEVEN: INT(N/2)

NODD : INT(N/2) + R(= 1)

m: corresponding modulation bitR: Remainder from N/2 division

Majority Vote: (m= 0)

(m= 1)

Modulation is based on the UCBRSx setting as shown in Table 19−2. A 1 inthe table indicates that m = 1 and the corresponding BITCLK period is oneBRCLK period longer than a BITCLK period with m = 0. The modulation wrapsaround after 8 bits but restarts with each new start bit.

Table 19−2.BITCLK Modulation Pattern

UCBRSxBit 0

(Start Bit) Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7

0 0 0 0 0 0 0 0 0

1 0 1 0 0 0 0 0 0

2 0 1 0 0 0 1 0 0

3 0 1 0 1 0 1 0 0

4 0 1 0 1 0 1 0 1

5 0 1 1 1 0 1 0 1

6 0 1 1 1 0 1 1 1

7 0 1 1 1 1 1 1 1

Oversampling Baud Rate GenerationThe oversampling mode is selected when UCOS16 = 1. This mode supportssampling a UART bit stream with higher input clock frequencies. This resultsin majority votes that are always 1/16 of a bit clock period apart. This mode alsoeasily supports IrDA pulses with a 3/16 bit-time when the IrDA encoder anddecoder are enabled.

This mode uses one prescaler and one modulator to generate the BITCLK16clock that is 16 times faster than the BITCLK. An additional divider andmodulator stage generates BITCLK from BITCLK16. This combinationsupports fractional divisions of both BITCLK16 and BITCLK for baud rate

Page 567: MSP430 - general.pdf

USCI Operation: UART Mode

19-17Universal Serial Communication Interface, UART Mode

generation. In this mode, the maximum USCI baud rate is 1/16 the UARTsource clock frequency BRCLK. When UCBRx is set to 0 or 1 the first prescalerand modulator stage is bypassed and BRCLK is equal to BITCLK16.

Modulation for BITCLK16 is based on the UCBRFx setting as shown inTable 19−3. A 1 in the table indicates that the corresponding BITCLK16 periodis one BRCLK period longer than the periods m=0. The modulation restartswith each new bit timing.

Modulation for BITCLK is based on the UCBRSx setting as shown inTable 19−2 as previously described.

Table 19−3.BITCLK16 Modulation Pattern

UCBRFNumber of BITCLK16 Clocks After Last Falling BITCLK Edge

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

00h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

01h 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

02h 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1

03h 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1

04h 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1

05h 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1

06h 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1

07h 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1

08h 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1

09h 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1

0Ah 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1

0Bh 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1

0Ch 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1

0Dh 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1

0Eh 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1

0Fh 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Page 568: MSP430 - general.pdf

USCI Operation: UART Mode

19-18 Universal Serial Communication Interface, UART Mode

19.3.11 Setting a Baud Rate

For a given BRCLK clock source, the baud rate used determines the requireddivision factor N:

N fBRCLK

Baudrate

The division factor N is often a non-integer value thus at least one divider andone modulator stage is used to meet the factor as closely as possible.

If N is equal or greater than 16 the oversampling baud rate generation modecan be chosen by setting UCOS16.

Low-Frequency Baud Rate Mode Setting

In the low-frequency mode, the integer portion of the divisor is realized by theprescaler:

UCBRx = INT(N)

and the fractional portion is realized by the modulator with the followingnominal formula:

UCBRSx = round( ( N − INT(N) ) × 8 )

Incrementing or decrementing the UCBRSx setting by one count may give alower maximum bit error for any given bit. To determine if this is the case, adetailed error calculation must be performed for each bit for each UCBRSxsetting.

Oversampling Baud Rate Mode Setting

In the oversampling mode the prescaler is set to:

UCBRx = INT(N/16).

and the first stage modulator is set to:

UCBRFx = round( ( (N/16) − INT(N/16) ) × 16 )

When greater accuracy is required, the UCBRSx modulator can also beimplemented with values from 0 − 7. To find the setting that gives the lowestmaximum bit error rate for any given bit, a detailed error calculation must beperformed for all settings of UCBRSx from 0 − 7 with the initial UCBRFx settingand with the UCBRFx setting incremented and decremented by one.

Page 569: MSP430 - general.pdf

USCI Operation: UART Mode

19-19Universal Serial Communication Interface, UART Mode

19.3.12 Transmit Bit Timing

The timing for each character is the sum of the individual bit timings. Using themodulation features of the baud rate generator reduces the cumulative biterror. The individual bit error can be calculated using the following steps.

Low−Frequency Baud Rate Mode Bit Timing

In low-frequency mode, calculate the length of bit i Tbit,TX[i] based on theUCBRx and UCBRSx settings:

Tbit,TX[i] 1fBRCLK

UCBRx mUCBRSx[i]

where:

mUCBRSx[i]: Modulation of bit i from Table 19−2

Oversampling Baud Rate Mode Bit Timing

In oversampling baud rate mode calculate the length of bit i Tbit,TX[i] based onthe baud rate generator UCBRx, UCBRFx and UCBRSx settings:

Tbit,TX[i] 1fBRCLK16 mUCBRSx[i] UCBRx

15

j0

mUCBRFx[j]where:

15

j0

mUCBRFx[j]: Sum of ones from the corresponding row in Table 19−3

mUCBRSx[i]: Modulation of bit i from Table 19−2

This results in an end-of-bit time tbit,TX[i] equal to the sum of all previous andthe current bit times:

tbit,TX[i] i

j0

Tbit,TX[j]

To calculate bit error, this time is compared to the ideal bit time tbit,ideal,TX[i]:

tbit,ideal,TX[i] 1Baudrate

(i 1)

This results in an error normalized to one ideal bit time (1/baudrate):

ErrorTX[i] tbit,TX[i] tbit,ideal,TX[i] Baudrate 100%

Page 570: MSP430 - general.pdf

USCI Operation: UART Mode

19-20 Universal Serial Communication Interface, UART Mode

19.3.13 Receive Bit Timing

Receive timing error consists of two error sources. The first is the bit-to-bittiming error similar to the transmit bit timing error. The second is the errorbetween a start edge occurring and the start edge being accepted by the USCImodule. Figure 19−11 shows the asynchronous timing errors between data onthe UCAxRXD pin and the internal baud-rate clock. This results in an additionalsynchronization error. The synchronization error tSYNC is between−0.5 BRCLKs and +0.5 BRCLKs, independent of the selected baud rategeneration mode.

Figure 19−11.Receive Error

1 2 3 4 5 6

0i

t0tideal

7 8

1

t1

2

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

t0 t1 t2

ST D0 D1

D0 D1ST

Synchronization Error ± 0.5x BRCLK

Majority Vote Taken Majority Vote Taken Majority Vote Taken

BRCLK

UCAxRXD

RXD synch.

tactual

SampleRXD synch.

The ideal sampling time tbit,ideal,RX[i] is in the middle of a bit period:

tbit,ideal,RX[i] 1

Baudrate(i 0.5)

The real sampling time tbit,RX[i] is equal to the sum of all previous bits accordingto the formulas shown in the transmit timing section, plus one half BITCLK forthe current bit i, plus the synchronization error tSYNC.

This results in the following tbit,RX[i] for the low-frequency baud rate mode

tbit,RX[i] tSYNC i1

j0

Tbit,RX[j] 1fBRCLK

INT(12

UCBRx) mUCBRSx[i]

where:

Tbit,RX[i] 1

fBRCLK

UCBRx mUCBRSx[i]

mUCBRSx[i]: Modulation of bit i from Table 19−2

Page 571: MSP430 - general.pdf

USCI Operation: UART Mode

19-21Universal Serial Communication Interface, UART Mode

For the oversampling baud rate mode the sampling time tbit,RX[i] of bit i iscalculated by:

tbit,RX[i] tSYNC i1

j0

Tbit,RX[j]

1fBRCLK8 mUCBRSx[i] UCBRx

7mUCBRSx[i]

j0

mUCBRFx[j]where:

Tbit,RX[i] 1

fBRCLK16 mUCBRSx[i] UCBRx

15

j0

mUCBRFx[j]

7mUCBRSx[i]

j0

mUCBRFx[j]: Sum of ones from columns 0 − 7 mUCBRSx[i]

from the corresponding row in Table 19−3

mUCBRSx[i]: Modulation of bit i from Table 19−2

This results in an error normalized to one ideal bit time (1/baudrate) accordingto the following formula:

ErrorRX[i] tbit,RX[i] tbit,ideal,RX[i] Baudrate 100%

19.3.14 Typical Baud Rates and Errors

Standard baud rate data for UCBRx, UCBRSx and UCBRFx are listed inTable 19−4 and Table 19−5 for a 32,768 Hz crystal sourcing ACLK and typicalSMCLK frequencies. Please ensure that the selected BRCLK frequency doesnot exceed the device specific maximum USCI input frequency. Please referto the device-specific data sheet.

The receive error is the accumulated time versus the ideal scanning time in themiddle of each bit. The worst case error is given for the reception of an 8-bitcharacter with parity and one stop bit including synchronization error.

The transmit error is the accumulated timing error versus the ideal time of thebit period. The worst case error is given for the transmission of an 8-bitcharacter with parity and stop bit.

Page 572: MSP430 - general.pdf

USCI Operation: UART Mode

19-22 Universal Serial Communication Interface, UART Mode

Table 19−4.Commonly Used Baud Rates, Settings, and Errors, UCOS16 = 0

BRCLKFrequency

[Hz]

BaudRate

[Baud]UCBRx UCBRSx UCBRFx Max TX Error [%] Max RX Error [%]

32,768 1200 27 2 0 −2.8 1.4 −5.9 2.0

32,768 2400 13 6 0 −4.8 6.0 −9.7 8.3

32,768 4800 6 7 0 −12.1 5.7 −13.4 19.0

32,768 9600 3 3 0 −21.1 15.2 −44.3 21.3

1,000,000 9600 104 1 0 −0.5 0.6 −0.9 1.2

1,000,000 19200 52 0 0 −1.8 0 −2.6 0.9

1,000,000 38400 26 0 0 −1.8 0 −3.6 1.8

1,000,000 57600 17 3 0 −2.1 4.8 −6.8 5.8

1,000,000 115200 8 6 0 −7.8 6.4 −9.7 16.1

1,048,576 9600 109 2 0 −0.2 0.7 −1.0 0.8

1,048,576 19200 54 5 0 −1.1 1.0 −1.5 2.5

1,048,576 38400 27 2 0 −2.8 1.4 −5.9 2.0

1,048,576 57600 18 1 0 −4.6 3.3 −6.8 6.6

1,048,576 115200 9 1 0 −1.1 10.7 −11.5 11.3

4,000,000 9600 416 6 0 −0.2 0.2 −0.2 0.4

4,000,000 19200 208 3 0 −0.2 0.5 −0.3 0.8

4,000,000 38400 104 1 0 −0.5 0.6 −0.9 1.2

4,000,000 57600 69 4 0 −0.6 0.8 −1.8 1.1

4,000,000 115200 34 6 0 −2.1 0.6 −2.5 3.1

4,000,000 230400 17 3 0 −2.1 4.8 −6.8 5.8

8,000,000 9600 833 2 0 −0.1 0 −0.2 0.1

8,000,000 19200 416 6 0 −0.2 0.2 −0.2 0.4

8,000,000 38400 208 3 0 −0.2 0.5 −0.3 0.8

8,000,000 57600 138 7 0 −0.7 0 −0.8 0.6

8,000,000 115200 69 4 0 −0.6 0.8 −1.8 1.1

8,000,000 230400 34 6 0 −2.1 0.6 −2.5 3.1

8,000,000 460800 17 3 0 −2.1 4.8 −6.8 5.8

12,000,000 9600 1250 0 0 0 0 −0.05 0.05

12,000,000 19200 625 0 0 0 0 −0.2 0

12,000,000 38400 312 4 0 −0.2 0 −0.2 0.2

12,000,000 57600 208 2 0 −0.5 0.2 −0.6 0.5

12,000,000 115200 104 1 0 −0.5 0.6 −0.9 1.2

12,000,000 230400 52 0 0 −1.8 0 −2.6 0.9

12,000,000 460800 26 0 0 −1.8 0 −3.6 1.8

Page 573: MSP430 - general.pdf

USCI Operation: UART Mode

19-23Universal Serial Communication Interface, UART Mode

Table 19−4.Commonly Used Baud Rates, Settings, and Errors, UCOS16 = 0 (Continued)

BRCLKFrequency

[Hz]

BaudRate

[Baud]UCBRx UCBRSx UCBRFx Max TX Error [%] Max RX Error [%]

16,000,000 9600 1666 6 0 −0.05 0.05 −0.05 0.1

16,000,000 19200 833 2 0 −0.1 0.05 −0.2 0.1

16,000,000 38400 416 6 0 −0.2 0.2 −0.2 0.4

16,000,000 57600 277 7 0 −0.3 0.3 −0.5 0.4

16,000,000 115200 138 7 0 −0.7 0 −0.8 0.6

16,000,000 230400 69 4 0 −0.6 0.8 −1.8 1.1

16,000,000 460800 34 6 0 −2.1 0.6 −2.5 3.1

Page 574: MSP430 - general.pdf

USCI Operation: UART Mode

19-24 Universal Serial Communication Interface, UART Mode

Table 19−5.Commonly Used Baud Rates, Settings, and Errors, UCOS16 = 1

BRCLKfrequency

[Hz]

BaudRate

[Baud]UCBRx UCBRSx UCBRFx Max. TX Error [%] Max. RX Error [%]

1,000,000 9600 6 0 8 −1.8 0 −2.2 0.4

1,000,000 19200 3 0 4 −1.8 0 −2.6 0.9

1,048,576 9600 6 0 13 −2.3 0 −2.2 0.8

1,048,576 19200 3 1 6 −4.6 3.2 −5.0 4.7

4,000,000 9600 26 0 1 0 0.9 0 1.1

4,000,000 19200 13 0 0 −1.8 0 −1.9 0.2

4,000,000 38400 6 0 8 −1.8 0 −2.2 0.4

4,000,000 57600 4 5 3 −3.5 3.2 −1.8 6.4

4,000,000 115200 2 3 2 −2.1 4.8 −2.5 7.3

8,000,000 9600 52 0 1 −0.4 0 −0.4 0.1

8,000,000 19200 26 0 1 0 0.9 0 1.1

8,000,000 38400 13 0 0 −1.8 0 −1.9 0.2

8,000,000 57600 8 0 11 0 0.88 0 1.6

8,000,000 115200 4 5 3 −3.5 3.2 −1.8 6.4

8,000,000 230400 2 3 2 −2.1 4.8 −2.5 7.3

12,000,000 9600 78 0 2 0 0 −0.05 0.05

12,000,000 19200 39 0 1 0 0 0 0.2

12,000,000 38400 19 0 8 −1.8 0 −1.8 0.1

12,000,000 57600 13 0 0 −1.8 0 −1.9 0.2

12,000,000 115200 6 0 8 −1.8 0 −2.2 0.4

12,000,000 230400 3 0 4 −1.8 0 −2.6 0.9

16,000,000 9600 104 0 3 0 0.2 0 0.3

16,000,000 19200 52 0 1 −0.4 0 −0.4 0.1

16,000,000 38400 26 0 1 0 0.9 0 1.1

16,000,000 57600 17 0 6 0 0.9 −0.1 1.0

16,000,000 115200 8 0 11 0 0.9 0 1.6

16,000,000 230400 4 5 3 −3.5 3.2 −1.8 6.4

16,000,000 460800 2 3 2 −2.1 4.8 −2.5 7.3

Page 575: MSP430 - general.pdf

USCI Operation: UART Mode

19-25Universal Serial Communication Interface, UART Mode

19.3.15 Using the USCI Module in UART Mode with Low-Power Modes

The USCI module provides automatic clock activation for SMCLK for use withlow-power modes. When SMCLK is the USCI clock source, and is inactivebecause the device is in a low-power mode, the USCI module automaticallyactivates it when needed, regardless of the control-bit settings for the clocksource. The clock remains active until the USCI module returns to its idlecondition. After the USCI module returns to the idle condition, control of theclock source reverts to the settings of its control bits. Automatic clock activationis not provided for ACLK.

When the USCI module activates an inactive clock source, the clock sourcebecomes active for the whole device and any peripheral configured to use theclock source may be affected. For example, a timer using SMCLK willincrement while the USCI module forces SMCLK active.

19.3.16 USCI Interrupts

The USCI has one interrupt vector for transmission and one interrupt vectorfor reception.

USCI Transmit Interrupt Operation

The UCAxTXIFG interrupt flag is set by the transmitter to indicate thatUCAxTXBUF is ready to accept another character. An interrupt request isgenerated if UCAxTXIE and GIE are also set. UCAxTXIFG is automaticallyreset if a character is written to UCAxTXBUF.

UCAxTXIFG is set after a PUC or when UCSWRST = 1. UCAxTXIE is resetafter a PUC or when UCSWRST = 1.

USCI Receive Interrupt Operation

The UCAxRXIFG interrupt flag is set each time a character is received andloaded into UCAxRXBUF. An interrupt request is generated if UCAxRXIE andGIE are also set. UCAxRXIFG and UCAxRXIE are reset by a system resetPUC signal or when UCSWRST = 1. UCAxRXIFG is automatically reset whenUCAxRXBUF is read.

Additional interrupt control features include:

When UCAxRXEIE = 0 erroneous characters will not set UCAxRXIFG.

When UCDORM = 1, non-address characters will not set UCAxRXIFG inmultiprocessor modes. In plain UART mode no characters will setUCAxRXIFG.

When UCBRKIE = 1 a break condition will set the UCBRK bit and theUCAxRXIFG flag.

Page 576: MSP430 - general.pdf

USCI Operation: UART Mode

19-26 Universal Serial Communication Interface, UART Mode

USCI Interrupt Usage

USCI_Ax and USCI_Bx share the same interrupt vectors. The receiveinterrupt flags UCAxRXIFG and UCBxRXIFG are routed to one interruptvector, the transmit interrupt flags UCAxTXIFG and UCBxTXIFG shareanother interrupt vector.

Shared Interrupt Vectors Software Example

The following software example shows an extract of an interrupt serviceroutine to handle data receive interrupts from USCI_A0 in either UART or SPImode and USCI_B0 in SPI mode.

USCIA0_RX_USCIB0_RX_ISR

BIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?

JNZ USCIA0_RX_ISR

USCIB0_RX_ISR?

; Read UCB0RXBUF (clears UCB0RXIFG)

...

RETI

USCIA0_RX_ISR

; Read UCA0RXBUF (clears UCA0RXIFG)

...

RETI

The following software example shows an extract of an interrupt serviceroutine to handle data transmit interrupts from USCI_A0 in either UART or SPImode and USCI_B0 in SPI mode.

USCIA0_TX_USCIB0_TX_ISR

BIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?JNZ USCIA0_TX_ISR

USCIB0_TX_ISR; Write UCB0TXBUF (clears UCB0TXIFG)...RETI

USCIA0_TX_ISR; Write UCA0TXBUF (clears UCA0TXIFG)...RETI

Page 577: MSP430 - general.pdf

USCI Registers: UART Mode

19-27Universal Serial Communication Interface, UART Mode

19.4 USCI Registers: UART Mode

The USCI registers applicable in UART mode are listed in Table 19−6 andTable 19−7.

Table 19−6.USCI_A0 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_A0 control register 0 UCA0CTL0 Read/write 060h Reset with PUC

USCI_A0 control register 1 UCA0CTL1 Read/write 061h 001h with PUC

USCI_A0 Baud rate control register 0 UCA0BR0 Read/write 062h Reset with PUC

USCI_A0 Baud rate control register 1 UCA0BR1 Read/write 063h Reset with PUC

USCI_A0 modulation control register UCA0MCTL Read/write 064h Reset with PUC

USCI_A0 status register UCA0STAT Read/write 065h Reset with PUC

USCI_A0 Receive buffer register UCA0RXBUF Read 066h Reset with PUC

USCI_A0 Transmit buffer register UCA0TXBUF Read/write 067h Reset with PUC

USCI_A0 Auto Baud control register UCA0ABCTL Read/write 05Dh Reset with PUC

USCI_A0 IrDA Transmit control register UCA0IRTCTL Read/write 05Eh Reset with PUC

USCI_A0 IrDA Receive control register UCA0IRRCTL Read/write 05Fh Reset with PUC

SFR interrupt enable register 2 IE2 Read/write 001h Reset with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h 00Ah with PUC

Note: Modifying SFR bits

To avoid modifying control bits of other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Table 19−7.USCI_A1 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_A1 control register 0 UCA1CTL0 Read/write 0D0h Reset with PUC

USCI_A1 control register 1 UCA1CTL1 Read/write 0D1h 001h with PUC

USCI_A1 Baud rate control register 0 UCA1BR0 Read/write 0D2h Reset with PUC

USCI_A1 Baud rate control register 1 UCA1BR1 Read/write 0D3h Reset with PUC

USCI_A1 modulation control register UCA1MCTL Read/write 0D4h Reset with PUC

USCI_A1 status register UCA1STAT Read/write 0D5h Reset with PUC

USCI_A1 Receive buffer register UCA1RXBUF Read 0D6h Reset with PUC

USCI_A1 Transmit buffer register UCA1TXBUF Read/write 0D7h Reset with PUC

USCI_A1 Auto Baud control register UCA1ABCTL Read/write 0CDh Reset with PUC

USCI_A1 IrDA Transmit control register UCA1IRTCTL Read/write 0CEh Reset with PUC

USCI_A1 IrDA Receive control register UCA1IRRCTL Read/write 0CFh Reset with PUC

USCI_A1/B1 interrupt enable register UC1IE Read/write 006h Reset with PUC

USCI_A1/B1 interrupt flag register UC1IFG Read/write 007h 00Ah with PUC

Page 578: MSP430 - general.pdf

USCI Registers: UART Mode

19-28 Universal Serial Communication Interface, UART Mode

UCAxCTL0, USCI_Ax Control Register 0

7 6 5 4 3 2 1 0

UCPEN UCPAR UCMSB UC7BIT UCSPB UCMODEx UCSYNC=0

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

UCPEN Bit 7 Parity enable0 Parity disabled.1 Parity enabled. Parity bit is generated (UCAxTXD) and expected

(UCAxRXD). In address-bit multiprocessor mode, the address bit isincluded in the parity calculation.

UCPAR Bit 6 Parity select. UCPAR is not used when parity is disabled.0 Odd parity1 Even parity

UCMSB Bit 5 MSB first select. Controls the direction of the receive and transmit shiftregister.0 LSB first1 MSB first

UC7BIT Bit 4 Character length. Selects 7-bit or 8-bit character length.0 8-bit data1 7-bit data

UCSPB Bit 3 Stop bit select. Number of stop bits.0 One stop bit1 Two stop bits

UCMODEx Bits2−1

USCI mode. The UCMODEx bits select the asynchronous mode whenUCSYNC = 0.00 UART Mode.01 Idle-Line Multiprocessor Mode.10 Address-Bit Multiprocessor Mode.11 UART Mode with automatic baud rate detection.

UCSYNC Bit 0 Synchronous mode enable0 Asynchronous mode1 Synchronous Mode

Page 579: MSP430 - general.pdf

USCI Registers: UART Mode

19-29Universal Serial Communication Interface, UART Mode

UCAxCTL1, USCI_Ax Control Register 1

7 6 5 4 3 2 1 0

UCSSELx UCRXEIE UCBRKIE UCDORM UCTXADDR UCTXBRK UCSWRST

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−1

UCSSELx Bits7-6

USCI clock source select. These bits select the BRCLK source clock.00 UCLK01 ACLK10 SMCLK11 SMCLK

UCRXEIE Bit 5 Receive erroneous-character interrupt-enable0 Erroneous characters rejected and UCAxRXIFG is not set1 Erroneous characters received will set UCAxRXIFG

UCBRKIE Bit 4 Receive break character interrupt-enable0 Received break characters do not set UCAxRXIFG.1 Received break characters set UCAxRXIFG.

UCDORM Bit 3 Dormant. Puts USCI into sleep mode.0 Not dormant. All received characters will set UCAxRXIFG.1 Dormant. Only characters that are preceded by an idle-line or with

address bit set will set UCAxRXIFG. In UART mode with automatic baudrate detection only the combination of a break and synch field will setUCAxRXIFG.

UCTXADDR Bit 2 Transmit address. Next frame to be transmitted will be marked as addressdepending on the selected multiprocessor mode.0 Next frame transmitted is data1 Next frame transmitted is an address

UCTXBRK Bit 1 Transmit break. Transmits a break with the next write to the transmit buffer.In UART mode with automatic baud rate detection 055h must be writteninto UCAxTXBUF to generate the required break/synch fields. Otherwise0h must be written into the transmit buffer.0 Next frame transmitted is not a break1 Next frame transmitted is a break or a break/synch

UCSWRST Bit 0 Software reset enable0 Disabled. USCI reset released for operation.1 Enabled. USCI logic held in reset state.

Page 580: MSP430 - general.pdf

USCI Registers: UART Mode

19-30 Universal Serial Communication Interface, UART Mode

UCAxBR0, USCI_Ax Baud Rate Control Register 0

7 6 5 4 3 2 1 0

UCBRx − low byte

rw rw rw rw rw rw rw rw

UCAxBR1, USCI_Ax Baud Rate Control Register 1

7 6 5 4 3 2 1 0

UCBRx − high byte

rw rw rw rw rw rw rw rw

UCBRx Clock prescaler setting of the Baud rate generator. The 16-bit value of(UCAxBR0 + UCAxBR1 × 256) forms the prescaler value UCBRx.

UCAxMCTL, USCI_Ax Modulation Control Register

7 6 5 4 3 2 1 0

UCBRFx UCBRSx UCOS16

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

UCBRFx Bits7−4

First modulation stage select. These bits determine the modulation patternfor BITCLK16 when UCOS16 = 1. Ignored with UCOS16 = 0. Table 19−3shows the modulation pattern.

UCBRSx Bits3−1

Second modulation stage select. These bits determine the modulationpattern for BITCLK. Table 19−2 shows the modulation pattern.

UCOS16 Bit 0 Oversampling mode enabled0 Disabled1 Enabled

Page 581: MSP430 - general.pdf

USCI Registers: UART Mode

19-31Universal Serial Communication Interface, UART Mode

UCAxSTAT, USCI_Ax Status Register

7 6 5 4 3 2 1 0

UCLISTEN UCFE UCOE UCPE UCBRK UCRXERR UCADDRUCIDLE UCBUSY

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r−0

UCLISTEN Bit 7 Listen enable. The UCLISTEN bit selects loopback mode.0 Disabled1 Enabled. UCAxTXD is internally fed back to the receiver.

UCFE Bit 6 Framing error flag0 No error1 Character received with low stop bit

UCOE Bit 5 Overrun error flag. This bit is set when a character is transferred intoUCAxRXBUF before the previous character was read. UCOE is clearedautomatically when UCxRXBUF is read, and must not be cleared bysoftware. Otherwise, it will not function correctly.0 No error1 Overrun error occurred

UCPE Bit 4 Parity error flag. When UCPEN = 0, UCPE is read as 0.0 No error1 Character received with parity error

UCBRK Bit 3 Break detect flag0 No break condition1 Break condition occurred

UCRXERR Bit 2 Receive error flag. This bit indicates a character was received with error(s).When UCRXERR = 1, on or more error flags (UCFE, UCPE, UCOE) is alsoset. UCRXERR is cleared when UCAxRXBUF is read.0 No receive errors detected1 Receive error detected

UCADDR Bit 1 Address received in address-bit multiprocessor mode.0 Received character is data1 Received character is an address

UCIDLE Idle line detected in idle-line multiprocessor mode.0 No idle line detected1 Idle line detected

UCBUSY Bit 0 USCI busy. This bit indicates if a transmit or receive operation is inprogress.0 USCI inactive1 USCI transmitting or receiving

Page 582: MSP430 - general.pdf

USCI Registers: UART Mode

19-32 Universal Serial Communication Interface, UART Mode

UCAxRXBUF, USCI_Ax Receive Buffer Register

7 6 5 4 3 2 1 0

UCRXBUFx

r r r r r r r r

UCRXBUFx Bits7−0

The receive-data buffer is user accessible and contains the last receivedcharacter from the receive shift register. Reading UCAxRXBUF resets thereceive-error bits, the UCADDR or UCIDLE bit, and UCAxRXIFG. In 7-bitdata mode, UCAxRXBUF is LSB justified and the MSB is always reset.

UCAxTXBUF, USCI_Ax Transmit Buffer Register

7 6 5 4 3 2 1 0

UCTXBUFx

rw rw rw rw rw rw rw rw

UCTXBUFx Bits7−0

The transmit data buffer is user accessible and holds the data waiting tobe moved into the transmit shift register and transmitted on UCAxTXD.Writing to the transmit data buffer clears UCAxTXIFG. The MSB ofUCAxTXBUF is not used for 7-bit data and is reset.

Page 583: MSP430 - general.pdf

USCI Registers: UART Mode

19-33Universal Serial Communication Interface, UART Mode

UCAxIRTCTL, USCI_Ax IrDA Transmit Control Register

7 6 5 4 3 2 1 0

UCIRTXPLx UCIRTXCLK UCIREN

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

UCIRTXPLx Bits7−2

Transmit pulse lengthPulse Length tPULSE = (UCIRTXPLx + 1) / (2 × fIRTXCLK)

UCIRTXCLK Bit 1 IrDA transmit pulse clock select0 BRCLK1 BITCLK16 when UCOS16 = 1. Otherwise, BRCLK

UCIREN Bit 0 IrDA encoder/decoder enable.0 IrDA encoder/decoder disabled1 IrDA encoder/decoder enabled

UCAxIRRCTL, USCI_Ax IrDA Receive Control Register

7 6 5 4 3 2 1 0

UCIRRXFLx UCIRRXPL UCIRRXFE

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

UCIRRXFLx Bits7−2

Receive filter length. The minimum pulse length for receive is given by: tMIN = (UCIRRXFLx + 4) / (2 × fBRCLK)

UCIRRXPL Bit 1 IrDA receive input UCAxRXD polarity0 IrDA transceiver delivers a high pulse when a light pulse is seen1 IrDA transceiver delivers a low pulse when a light pulse is seen

UCIRRXFE Bit 0 IrDA receive filter enabled0 Receive filter disabled1 Receive filter enabled

Page 584: MSP430 - general.pdf

USCI Registers: UART Mode

19-34 Universal Serial Communication Interface, UART Mode

UCAxABCTL, USCI_Ax Auto Baud Rate Control Register

7 6 5 4 3 2 1 0

Reserved UCDELIMx UCSTOE UCBTOE Reserved UCABDEN

r−0 r−0 rw−0 rw−0 rw−0 rw−0 r−0 rw−0

Reserved Bits7-6

Reserved

UCDELIMx Bits5−4

Break/synch delimiter length00 1 bit time01 2 bit times10 3 bit times11 4 bit times

UCSTOE Bit 3 Synch field time out error0 No error1 Length of synch field exceeded measurable time.

UCBTOE Bit 2 Break time out error0 No error1 Length of break field exceeded 22 bit times.

Reserved Bit 1 Reserved

UCABDEN Bit 0 Automatic baud rate detect enable0 Baud rate detection disabled. Length of break and synch field is not

measured.1 Baud rate detection enabled. Length of break and synch field is

measured and baud rate settings are changed accordingly.

Page 585: MSP430 - general.pdf

USCI Registers: UART Mode

19-35Universal Serial Communication Interface, UART Mode

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

UCA0TXIE UCA0RXIE

rw−0 rw−0

Bits7-2

These bits may be used by other modules. See device-specific data sheet.

UCA0TXIE Bit 1 USCI_A0 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA0RXIE Bit 0 USCI_A0 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

UCA0TXIFG

UCA0RXIFG

rw−1 rw−0

Bits7-2

These bits may be used by other modules (see the device-specific datasheet).

UCA0TXIFG

Bit 1 USCI_A0 transmit interrupt flag. UCA0TXIFG is set when UCA0TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCA0RXIFG

Bit 0 USCI_A0 receive interrupt flag. UCA0RXIFG is set when UCA0RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Page 586: MSP430 - general.pdf

USCI Registers: UART Mode

19-36 Universal Serial Communication Interface, UART Mode

UC1IE, USCI_A1 Interrupt Enable Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCA1TXIE UCA1RXIE

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bits7-4

Unused

Bits3-2

These bits may be used by other USCI modules (see the device-specific datasheet).

UCA1TXIE Bit 1 USCI_A1 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA1RXIE Bit 0 USCI_A1 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

UC1IFG, USCI_A1 Interrupt Flag Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCA1TXIFG

UCA1RXIFG

rw−0 rw−0 rw−0 rw−0 rw−1 rw−0

Unused Bits7-4

Unused

Bits3-2

These bits may be used by other USCI modules (see the device-specific datasheet).

UCA1TXIFG

Bit 1 USCI_A1 transmit interrupt flag. UCA1TXIFG is set when UCA1TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCA1RXIFG

Bit 0 USCI_A1 receive interrupt flag. UCA1RXIFG is set when UCA1RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Page 587: MSP430 - general.pdf

20-1Universal Serial Communication Interface, SPI Mode

Universal Serial Communication Interface,SPI Mode

The universal serial communication interface (USCI) supports multiple serialcommunication modes with one hardware module. This chapter discusses theoperation of the synchronous peripheral interface or SPI mode.

Topic Page

20.1 USCI Overview 20-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20.2 USCI Introduction: SPI Mode 20-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20.3 USCI Operation: SPI Mode 20-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20.4 USCI Registers: SPI Mode 20-14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 20

Page 588: MSP430 - general.pdf

USCI Overview

20-2 Universal Serial Communication Interface, SPI Mode

20.1 USCI Overview

The universal serial communication interface (USCI) modules supportmultiple serial communication modes. Different USCI modules supportdifferent modes. Each different USCI module is named with a different letter.For example, USCI_A is different from USCI_B, etc. If more than one identicalUSCI module is implemented on one device, those modules are named withincrementing numbers. For example, if one device has two USCI_A modules,they are named USCI_A0 and USCI_A1. See the device-specific data sheetto determine which USCI modules, if any, are implemented on which devices.

The USCI_Ax modules support:

UART mode Pulse shaping for IrDA communications Automatic baud rate detection for LIN communications SPI mode

The USCI_Bx modules support:

I2C mode SPI mode

Page 589: MSP430 - general.pdf

USCI Introduction: SPI Mode

20-3Universal Serial Communication Interface, SPI Mode

20.2 USCI Introduction: SPI Mode

In synchronous mode, the USCI connects the MSP430 to an external systemvia three or four pins: UCxSIMO, UCxSOMI, UCxCLK, and UCxSTE. SPImode is selected when the UCSYNC bit is set and SPI mode (3-pin or 4-pin)is selected with the UCMODEx bits.

SPI mode features include:

7- or 8-bit data length

LSB-first or MSB-first data transmit and receive

3-pin and 4-pin SPI operation

Master or slave modes

Independent transmit and receive shift registers

Separate transmit and receive buffer registers

Continuous transmit and receive operation

Selectable clock polarity and phase control

Programmable clock frequency in master mode

Independent interrupt capability for receive and transmit

Slave operation in LPM4

Figure 20−1 shows the USCI when configured for SPI mode.

Page 590: MSP430 - general.pdf

USCI Introduction: SPI Mode

20-4 Universal Serial Communication Interface, SPI Mode

Figure 20−1. USCI Block Diagram: SPI Mode

ACLK

SMCLK

SMCLK

00

01

10

11

UCSSELx

N/A

Prescaler/Divider

Bit Clock Generator

UCxBRx

16

Receive Shift Register

Receive Buffer UC xRXBUF

Receive State Machine

UCMSB UC7BIT

1

0

UCMST

UCxSOMI

Transmit Buffer UC xTXBUF

Transmit State Machine

Transmit Shift Register

UCMSB UC7BIT

BRCLK

Set UCxRXIFG

Set UCxTXIFG

0

1

UCLISTEN

Clock Direction,Phase and Polarity

UCCKPH UCCKPL

UCxSIMO

UCxCLK

Set UCOE

Transmit EnableControl

2

UCMODEx

UCxSTE

Set UCFE

Page 591: MSP430 - general.pdf

USCI Operation: SPI Mode

20-5Universal Serial Communication Interface, SPI Mode

20.3 USCI Operation: SPI Mode

In SPI mode, serial data is transmitted and received by multiple devices usinga shared clock provided by the master. An additional pin, UCxSTE, is providedto enable a device to receive and transmit data and is controlled by the master.

Three or four signals are used for SPI data exchange:

UCxSIMO Slave in, master outMaster mode: UCxSIMO is the data output line.Slave mode: UCxSIMO is the data input line.

UCxSOMI Slave out, master inMaster mode: UCxSOMI is the data input line.Slave mode: UCxSOMI is the data output line.

UCxCLK USCI SPI clockMaster mode: UCxCLK is an output.Slave mode: UCxCLK is an input.

UCxSTE Slave transmit enable. Used in 4-pin mode to allow multiplemasters on a single bus. Not used in 3-pin mode. Table 20−1describes the UCxSTE operation.

Table 20−1.UCxSTE Operation

UCMODEx UCxSTE Active State UCxSTE Slave Master

01 high0 inactive active

01 high1 active inactive

10 low0 active inactive

10 low1 inactive active

Page 592: MSP430 - general.pdf

USCI Operation: SPI Mode

20-6 Universal Serial Communication Interface, SPI Mode

20.3.1 USCI Initialization and Reset

The USCI is reset by a PUC or by the UCSWRST bit. After a PUC, theUCSWRST bit is automatically set, keeping the USCI in a reset condition.When set, the UCSWRST bit resets the UCxRXIE, UCxTXIE, UCxRXIFG,UCOE, and UCFE bits and sets the UCxTXIFG flag. Clearing UCSWRSTreleases the USCI for operation.

Note: Initializing or Re-Configuring the USCI Module

The recommended USCI initialization/re-configuration process is:

1) Set UCSWRST (BIS.B #UCSWRST,&UCxCTL1)

2) Initialize all USCI registers with UCSWRST=1 (including UCxCTL1)

3) Configure ports.

4) Clear UCSWRST via software (BIC.B #UCSWRST,&UCxCTL1)

5) Enable interrupts (optional) via UCxRXIE and/or UCxTXIE

20.3.2 Character Format

The USCI module in SPI mode supports 7- and 8-bit character lengthsselected by the UC7BIT bit. In 7-bit data mode, UCxRXBUF is LSB justifiedand the MSB is always reset. The UCMSB bit controls the direction of thetransfer and selects LSB or MSB first.

Note: Default Character Format

The default SPI character transmission is LSB first. For communication withother SPI interfaces it MSB-first mode may be required.

Note: Character Format for Figures

Figures throughout this chapter use MSB first format.

Page 593: MSP430 - general.pdf

USCI Operation: SPI Mode

20-7Universal Serial Communication Interface, SPI Mode

20.3.3 Master Mode

Figure 20−2. USCI Master and External Slave

Receive BufferUCxRXBUF

Receive Shift Register

Transmit BufferUCxTXBUF

Transmit Shift Register

SPI Receive Buffer

Data Shift Register (DSR)

UCxSOMI SOMI

UCxSIMO SIMOMASTER SLAVE

Px.x STE

UCxSTE SSPort.x

UCxCLK SCLKMSP430 USCI COMMON SPI

Figure 20−2 shows the USCI as a master in both 3-pin and 4-pinconfigurations. The USCI initiates data transfer when data is moved to thetransmit data buffer UCxTXBUF. The UCxTXBUF data is moved to the TX shiftregister when the TX shift register is empty, initiating data transfer onUCxSIMO starting with either the most-significant or least-significant bitdepending on the UCMSB setting. Data on UCxSOMI is shifted into the receiveshift register on the opposite clock edge. When the character is received, thereceive data is moved from the RX shift register to the received data bufferUCxRXBUF and the receive interrupt flag, UCxRXIFG, is set, indicating theRX/TX operation is complete.

A set transmit interrupt flag, UCxTXIFG, indicates that data has moved fromUCxTXBUF to the TX shift register and UCxTXBUF is ready for new data. Itdoes not indicate RX/TX completion.

To receive data into the USCI in master mode, data must be written toUCxTXBUF because receive and transmit operations operate concurrently.

Page 594: MSP430 - general.pdf

USCI Operation: SPI Mode

20-8 Universal Serial Communication Interface, SPI Mode

Four-Pin SPI Master Mode

In 4-pin master mode, UCxSTE is used to prevent conflicts with anothermaster and controls the master as described in Table 20−1. When UCxSTEis in the master-inactive state:

UCxSIMO and UCxCLK are set to inputs and no longer drive the bus

The error bit UCFE is set indicating a communication integrity violation tobe handled by the user.

The internal state machines are reset and the shift operation is aborted.

If data is written into UCxTXBUF while the master is held inactive by UCxSTE,it will be transmit as soon as UCxSTE transitions to the master-active state.If an active transfer is aborted by UCxSTE transitioning to the master-inactivestate, the data must be re-written into UCxTXBUF to be transferred whenUCxSTE transitions back to the master-active state. The UCxSTE input signalis not used in 3-pin master mode.

Page 595: MSP430 - general.pdf

USCI Operation: SPI Mode

20-9Universal Serial Communication Interface, SPI Mode

20.3.4 Slave Mode

Figure 20−3. USCI Slave and External Master

Receive BufferUCxRXBUF

Receive Shift Register

Transmit BufferUCxTXBUF

Transmit Shift Register

SPI Receive Buffer

Data Shift Register DSR

UCxSOMISOMI

UCxSIMOSIMOMASTER SLAVE

Px.x UCxSTE

STE SSPort.x

UCxCLKSCLKMSP430 USCICOMMON SPI

Figure 20−3 shows the USCI as a slave in both 3-pin and 4-pin configurations.UCxCLK is used as the input for the SPI clock and must be supplied by theexternal master. The data-transfer rate is determined by this clock and not bythe internal bit clock generator. Data written to UCxTXBUF and moved to theTX shift register before the start of UCxCLK is transmitted on UCxSOMI. Dataon UCxSIMO is shifted into the receive shift register on the opposite edge ofUCxCLK and moved to UCxRXBUF when the set number of bits are received.When data is moved from the RX shift register to UCxRXBUF, the UCxRXIFGinterrupt flag is set, indicating that data has been received. The overrun errorbit, UCOE, is set when the previously received data is not read fromUCxRXBUF before new data is moved to UCxRXBUF.

Four-Pin SPI Slave Mode

In 4-pin slave mode, UCxSTE is used by the slave to enable the transmit andreceive operations and is provided by the SPI master. When UCxSTE is in theslave-active state, the slave operates normally. When UCxSTE is in theslave-inactive state:

Any receive operation in progress on UCxSIMO is halted

UCxSOMI is set to the input direction

The shift operation is halted until the UCxSTE line transitions into the slavetransmit active state.

The UCxSTE input signal is not used in 3-pin slave mode.

Page 596: MSP430 - general.pdf

USCI Operation: SPI Mode

20-10 Universal Serial Communication Interface, SPI Mode

20.3.5 SPI Enable

When the USCI module is enabled by clearing the UCSWRST bit it is readyto receive and transmit. In master mode the bit clock generator is ready, butis not clocked nor producing any clocks. In slave mode the bit clock generatoris disabled and the clock is provided by the master.

A transmit or receive operation is indicated by UCBUSY = 1. The UCBUSYflag is set by writing UCxTXBUF in master mode and in slave mode withUCCKPH=1. In slave mode with UCCKPH=0 UCBUSY is set with the firstUCLK edge. UCBUSY is reset by the following conditions:

In master mode when transfer completed and UCxTXBUF empty. In slave mode with UCCKPH=0 when transfer completed. In slave mode with UCCKPH=1 when transfer completed and UCxTXBUF

empty.

A PUC or set UCSWRST bit disables the USCI immediately and any activetransfer is terminated.

Transmit Enable

In master mode, writing to UCxTXBUF activates the bit clock generator andthe data will begin to transmit.

In slave mode, transmission begins when a master provides a clock and, in4-pin mode, when the UCxSTE is in the slave-active state.

Receive Enable

The SPI receives data when a transmission is active. Receive and transmitoperations operate concurrently.

Page 597: MSP430 - general.pdf

USCI Operation: SPI Mode

20-11Universal Serial Communication Interface, SPI Mode

20.3.6 Serial Clock Control

UCxCLK is provided by the master on the SPI bus. When UCMST = 1, the bitclock is provided by the USCI bit clock generator on the UCxCLK pin. The clockused to generate the bit clock is selected with the UCSSELx bits. WhenUCMST = 0, the USCI clock is provided on the UCxCLK pin by the master, thebit clock generator is not used, and the UCSSELx bits are don’t care. The SPIreceiver and transmitter operate in parallel and use the same clock source fordata transfer.

The 16-bit value of UCBRx in the bit rate control registers UCxxBR1 andUCxxBR0 is the division factor of the USCI clock source, BRCLK. Themaximum bit clock that can be generated in master mode is BRCLK.Modulation is not used in SPI mode and UCAxMCTL should be cleared whenusing SPI mode for USCI_A. The UCAxCLK/UCBxCLK frequency is given by:

fBitClock fBRCLKUCBRx

Serial Clock Polarity and Phase

The polarity and phase of UCxCLK are independently configured via theUCCKPL and UCCKPH control bits of the USCI. Timing for each case is shownin Figure 20−4.

Figure 20−4. USCI SPI Timing with UCMSB = 1

CKPH CKPL Cycle#

UCxCLK

UCxCLK

UCxCLK

UCxCLK

UCxSIMO/UCxSOMI

UCxSIMOUCxSOMI

Move to UCxTXBUF

RX Sample Points

0

1

0

0

01

1 1

0 X

1 X

MSB

MSB

1 2 3 4 5 6 7 8

LSB

LSB

TX Data Shifted Out

UCxSTE

UC UC

Page 598: MSP430 - general.pdf

USCI Operation: SPI Mode

20-12 Universal Serial Communication Interface, SPI Mode

20.3.7 Using the SPI Mode with Low Power Modes

The USCI module provides automatic clock activation for SMCLK for use withlow-power modes. When SMCLK is the USCI clock source, and is inactivebecause the device is in a low-power mode, the USCI module automaticallyactivates it when needed, regardless of the control-bit settings for the clocksource. The clock remains active until the USCI module returns to its idlecondition. After the USCI module returns to the idle condition, control of theclock source reverts to the settings of its control bits. Automatic clock activationis not provided for ACLK.

When the USCI module activates an inactive clock source, the clock sourcebecomes active for the whole device and any peripheral configured to use theclock source may be affected. For example, a timer using SMCLK willincrement while the USCI module forces SMCLK active.

In SPI slave mode no internal clock source is required because the clock isprovided by the external master. It is possible to operate the USCI in SPI slavemode while the device is in LPM4 and all clock sources are disabled. Thereceive or transmit interrupt can wake up the CPU from any low power mode.

20.3.8 SPI Interrupts

The USCI has one interrupt vector for transmission and one interrupt vectorfor reception.

SPI Transmit Interrupt Operation

The UCxTXIFG interrupt flag is set by the transmitter to indicate thatUCxTXBUF is ready to accept another character. An interrupt request isgenerated if UCxTXIE and GIE are also set. UCxTXIFG is automatically resetif a character is written to UCxTXBUF. UCxTXIFG is set after a PUC or whenUCSWRST = 1. UCxTXIE is reset after a PUC or when UCSWRST = 1.

Note: Writing to UCxTXBUF in SPI Mode

Data written to UCxTXBUF when UCxTXIFG = 0 may result in erroneousdata transmission.

SPI Receive Interrupt Operation

The UCxRXIFG interrupt flag is set each time a character is received andloaded into UCxRXBUF. An interrupt request is generated if UCxRXIE and GIEare also set. UCxRXIFG and UCxRXIE are reset by a system reset PUC signalor when UCSWRST = 1. UCxRXIFG is automatically reset when UCxRXBUFis read.

Page 599: MSP430 - general.pdf

USCI Operation: SPI Mode

20-13Universal Serial Communication Interface, SPI Mode

USCI Interrupt Usage

USCI_Ax and USCI_Bx share the same interrupt vectors. The receiveinterrupt flags UCAxRXIFG and UCBxRXIFG are routed to one interruptvector, the transmit interrupt flags UCAxTXIFG and UCBxTXIFG shareanother interrupt vector.

Shared Interrupt Vectors Software Example

The following software example shows an extract of an interrupt serviceroutine to handle data receive interrupts from USCI_A0 in either UART or SPImode and USCI_B0 in SPI mode.

USCIA0_RX_USCIB0_RX_ISR

BIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?

JNZ USCIA0_RX_ISR

USCIB0_RX_ISR?

; Read UCB0RXBUF (clears UCB0RXIFG)

...

RETI

USCIA0_RX_ISR

; Read UCA0RXBUF (clears UCA0RXIFG)

...

RETI

The following software example shows an extract of an interrupt serviceroutine to handle data transmit interrupts from USCI_A0 in either UART or SPImode and USCI_B0 in SPI mode.

USCIA0_TX_USCIB0_TX_ISR

BIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?JNZ USCIA0_TX_ISR

USCIB0_TX_ISR; Write UCB0TXBUF (clears UCB0TXIFG)...RETI

USCIA0_TX_ISR; Write UCA0TXBUF (clears UCA0TXIFG)...RETI

Page 600: MSP430 - general.pdf

USCI Registers: SPI Mode

20-14 Universal Serial Communication Interface, SPI Mode

20.4 USCI Registers: SPI Mode

The USCI registers applicable in SPI mode for USCI_A0 and USCI_B0 arelisted in Table 20−2. Registers applicable in SPI mode for USCI_A1 andUSCI_B1 are listed in Table 20−3.

Table 20−2.USCI_A0 and USCI_B0 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_A0 control register 0 UCA0CTL0 Read/write 060h Reset with PUC

USCI_A0 control register 1 UCA0CTL1 Read/write 061h 001h with PUC

USCI_A0 Baud rate control register 0 UCA0BR0 Read/write 062h Reset with PUC

USCI_A0 Baud rate control register 1 UCA0BR1 Read/write 063h Reset with PUC

USCI_A0 modulation control register UCA0MCTL Read/write 064h Reset with PUC

USCI_A0 status register UCA0STAT Read/write 065h Reset with PUC

USCI_A0 Receive buffer register UCA0RXBUF Read 066h Reset with PUC

USCI_A0 Transmit buffer register UCA0TXBUF Read/write 067h Reset with PUC

USCI_B0 control register 0 UCB0CTL0 Read/write 068h 001h with PUC

USCI_B0 control register 1 UCB0CTL1 Read/write 069h 001h with PUC

USCI_B0 Bit rate control register 0 UCB0BR0 Read/write 06Ah Reset with PUC

USCI_B0 Bit rate control register 1 UCB0BR1 Read/write 06Bh Reset with PUC

USCI_B0 status register UCB0STAT Read/write 06Dh Reset with PUC

USCI_B0 Receive buffer register UCB0RXBUF Read 06Eh Reset with PUC

USCI_B0 Transmit buffer register UCB0TXBUF Read/write 06Fh Reset with PUC

SFR interrupt enable register 2 IE2 Read/write 001h Reset with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h 00Ah with PUC

Note: Modifying SFR bits

To avoid modifying control bits of other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Page 601: MSP430 - general.pdf

USCI Registers: SPI Mode

20-15Universal Serial Communication Interface, SPI Mode

Table 20−3.USCI_A1 and USCI_B1 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_A1 control register 0 UCA1CTL0 Read/write 0D0h Reset with PUC

USCI_A1 control register 1 UCA1CTL1 Read/write 0D1h 001h with PUC

USCI_A1 Baud rate control register 0 UCA1BR0 Read/write 0D2h Reset with PUC

USCI_A1 Baud rate control register 1 UCA1BR1 Read/write 0D3h Reset with PUC

USCI_A1 modulation control register UCA1MCTL Read/write 0D4h Reset with PUC

USCI_A1 status register UCA1STAT Read/write 0D5h Reset with PUC

USCI_A1 Receive buffer register UCA1RXBUF Read 0D6h Reset with PUC

USCI_A1 Transmit buffer register UCA1TXBUF Read/write 0D7h Reset with PUC

USCI_B1 control register 0 UCB1CTL0 Read/write 0D8h 001h with PUC

USCI_B1 control register 1 UCB1CTL1 Read/write 0D9h 001h with PUC

USCI_B1 Bit rate control register 0 UCB1BR0 Read/write 0DAh Reset with PUC

USCI_B1 Bit rate control register 1 UCB1BR1 Read/write 0DBh Reset with PUC

USCI_B1 status register UCB1STAT Read/write 0DDh Reset with PUC

USCI_B1 Receive buffer register UCB1RXBUF Read 0DEh Reset with PUC

USCI_B1 Transmit buffer register UCB1TXBUF Read/write 0DFh Reset with PUC

USCI_A1/B1 interrupt enable register UC1IE Read/write 006h Reset with PUC

USCI_A1/B1 interrupt flag register UC1IFG Read/write 007h 00Ah with PUC

Page 602: MSP430 - general.pdf

USCI Registers: SPI Mode

20-16 Universal Serial Communication Interface, SPI Mode

UCAxCTL0, USCI_Ax Control Register 0UCBxCTL0, USCI_Bx Control Register 0

7 6 5 4 3 2 1 0

UCCKPH UCCKPL UCMSB UC7BIT UCMST UCMODEx UCSYNC=1

rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

UCCKPH Bit 7 Clock phase select.0 Data is changed on the first UCLK edge and captured on the

following edge.1 Data is captured on the first UCLK edge and changed on the

following edge.

UCCKPL Bit 6 Clock polarity select.0 The inactive state is low.1 The inactive state is high.

UCMSB Bit 5 MSB first select. Controls the direction of the receive and transmit shiftregister.0 LSB first1 MSB first

UC7BIT Bit 4 Character length. Selects 7-bit or 8-bit character length.0 8-bit data1 7-bit data

UCMST Bit 3 Master mode select0 Slave mode1 Master mode

UCMODEx Bits2-1

USCI Mode. The UCMODEx bits select the synchronous mode whenUCSYNC = 1.00 3-Pin SPI01 4-Pin SPI with UCxSTE active high: slave enabled when UCxSTE = 110 4-Pin SPI with UCxSTE active low: slave enabled when UCxSTE = 011 I2C Mode

UCSYNC Bit 0 Synchronous mode enable0 Asynchronous mode1 Synchronous Mode

Page 603: MSP430 - general.pdf

USCI Registers: SPI Mode

20-17Universal Serial Communication Interface, SPI Mode

UCAxCTL1, USCI_Ax Control Register 1UCBxCTL1, USCI_Bx Control Register 1

7 6 5 4 3 2 1 0

UCSSELx Unused UCSWRST

rw-0 rw-0rw-0†

r0‡ rw-0 rw-0 rw-0 rw-0 rw-1

† UCAxCTL1 (USCI_Ax)‡ UCBxCTL1 (USCI_Bx)

UCSSELx Bits7-6

USCI clock source select. These bits select the BRCLK source clock inmaster mode. UCxCLK is always used in slave mode.00 NA01 ACLK10 SMCLK11 SMCLK

Unused Bits5-1

Unused in synchronous mode (UCSYNC=1).

UCSWRST Bit 0 Software reset enable0 Disabled. USCI reset released for operation.1 Enabled. USCI logic held in reset state.

Page 604: MSP430 - general.pdf

USCI Registers: SPI Mode

20-18 Universal Serial Communication Interface, SPI Mode

UCAxBR0, USCI_Ax Bit Rate Control Register 0UCBxBR0, USCI_Bx Bit Rate Control Register 0

7 6 5 4 3 2 1 0

UCBRx − low byte

rw rw rw rw rw rw rw rw

UCAxBR1, USCI_Ax Bit Rate Control Register 1UCBxBR1, USCI_Bx Bit Rate Control Register 1

7 6 5 4 3 2 1 0

UCBRx − high byte

rw rw rw rw rw rw rw rw

UCBRx Bit clock prescaler setting.The 16-bit value of (UCxxBR0+UCxxBR1×256) form the prescaler valueUCBRx.

Page 605: MSP430 - general.pdf

USCI Registers: SPI Mode

20-19Universal Serial Communication Interface, SPI Mode

UCAxSTAT, USCI_Ax Status RegisterUCBxSTAT, USCI_Bx Status Register

7 6 5 4 3 2 1 0

UCLISTEN UCFE UCOE Unused Unused Unused Unused UCBUSY

rw-0 rw-0 rw-0rw-0†

r0‡ rw-0 rw-0 rw-0 r-0

† UCAxSTAT (USCI_Ax)‡ UCBxSTAT (USCI_Bx)

UCLISTEN Bit 7 Listen enable. The UCLISTEN bit selects loopback mode.0 Disabled1 Enabled. The transmitter output is internally fed back to the receiver.

UCFE Bit 6 Framing error flag. This bit indicates a bus conflict in 4-wire master mode.UCFE is not used in 3-wire master or any slave mode.0 No error1 Bus conflict occurred

UCOE Bit 5 Overrun error flag. This bit is set when a character is transferred intoUCxRXBUF before the previous character was read. UCOE is clearedautomatically when UCxRXBUF is read, and must not be cleared bysoftware. Otherwise, it will not function correctly.0 No error1 Overrun error occurred

Unused Bits4−1

Unused in synchronous mode (UCSYNC=1).

UCBUSY Bit 0 USCI busy. This bit indicates if a transmit or receive operation is inprogress.0 USCI inactive1 USCI transmitting or receiving

Page 606: MSP430 - general.pdf

USCI Registers: SPI Mode

20-20 Universal Serial Communication Interface, SPI Mode

UCAxRXBUF, USCI_Ax Receive Buffer RegisterUCBxRXBUF, USCI_Bx Receive Buffer Register

7 6 5 4 3 2 1 0

UCRXBUFx

r r r r r r r r

UCRXBUFx Bits7-0

The receive-data buffer is user accessible and contains the last receivedcharacter from the receive shift register. Reading UCxRXBUF resets thereceive-error bits, and UCxRXIFG. In 7-bit data mode, UCxRXBUF is LSBjustified and the MSB is always reset.

UCAxTXBUF, USCI_Ax Transmit Buffer RegisterUCBxTXBUF, USCI_Bx Transmit Buffer Register

7 6 5 4 3 2 1 0

UCTXBUFx

rw rw rw rw rw rw rw rw

UCTXBUFx Bits7-0

The transmit data buffer is user accessible and holds the data waiting tobe moved into the transmit shift register and transmitted. Writing to thetransmit data buffer clears UCxTXIFG. The MSB of UCxTXBUF is notused for 7-bit data and is reset.

Page 607: MSP430 - general.pdf

USCI Registers: SPI Mode

20-21Universal Serial Communication Interface, SPI Mode

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

UCB0TXIE UCB0RXIE UCA0TXIE UCA0RXIE

rw-0 rw-0 rw-0 rw-0

Bits7-4

These bits may be used by other modules. See device-specific data sheet.

UCB0TXIE Bit 3 USCI_B0 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCB0RXIE Bit 2 USCI_B0 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA0TXIE Bit 1 USCI_A0 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA0RXIE Bit 0 USCI_A0 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

Page 608: MSP430 - general.pdf

USCI Registers: SPI Mode

20-22 Universal Serial Communication Interface, SPI Mode

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

UCB0TXIFG

UCB0RXIFG

UCA0TXIFG

UCA0RXIFG

rw-1 rw-0 rw-1 rw-0

Bits7-4

These bits may be used by other modules. See device-specific data sheet.

UCB0TXIFG

Bit 3 USCI_B0 transmit interrupt flag. UCB0TXIFG is set when UCB0TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCB0RXIFG

Bit 2 USCI_B0 receive interrupt flag. UCB0RXIFG is set when UCB0RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

UCA0TXIFG

Bit 1 USCI_A0 transmit interrupt flag. UCA0TXIFG is set when UCA0TXBUFempty.0 No interrupt pending1 Interrupt pending

UCA0RXIFG

Bit 0 USCI_A0 receive interrupt flag. UCA0RXIFG is set when UCA0RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Page 609: MSP430 - general.pdf

USCI Registers: SPI Mode

20-23Universal Serial Communication Interface, SPI Mode

UC1IE, USCI_A1/USCI_B1 Interrupt Enable Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCB1TXIE UCB1RXIE UCA1TXIE UCA1RXIE

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bits7-4

Unused

UCB1TXIE Bit 3 USCI_B1 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCB1RXIE Bit 2 USCI_B1 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA1TXIE Bit 1 USCI_A1 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCA1RXIE Bit 0 USCI_A1 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

Page 610: MSP430 - general.pdf

USCI Registers: SPI Mode

20-24 Universal Serial Communication Interface, SPI Mode

UC1IFG, USCI_A1/USCI_B1 Interrupt Flag Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCB1TXIFG

UCB1RXIFG

UCA1TXIFG

UCA1RXIFG

rw−0 rw−0 rw−0 rw−0 rw−1 rw−0 rw−1 rw−0

Unused Bits7-4

Unused

UCB1TXIFG

Bit 3 USCI_B1 transmit interrupt flag. UCB1TXIFG is set when UCB1TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCB1RXIFG

Bit 2 USCI_B1 receive interrupt flag. UCB1RXIFG is set when UCB1RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

UCA1TXIFG

Bit 1 USCI_A1 transmit interrupt flag. UCA1TXIFG is set when UCA1TXBUFempty.0 No interrupt pending1 Interrupt pending

UCA1RXIFG

Bit 0 USCI_A1 receive interrupt flag. UCA1RXIFG is set when UCA1RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Page 611: MSP430 - general.pdf

21-1Universal Serial Communication Interface, I2C Mode

Universal Serial Communication Interface,I2C Mode

The universal serial communication interface (USCI) supports multiple serialcommunication modes with one hardware module. This chapter discusses theoperation of the I2C mode.

Topic Page

21.1 USCI Overview 21-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21.2 USCI Introduction: I2C Mode 21-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21.3 USCI Operation: I2C Mode 21-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21.4 USCI Registers: I2C Mode 21-26. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 21

Page 612: MSP430 - general.pdf

USCI Overview

21-2 Universal Serial Communication Interface, I2C Mode

21.1 USCI Overview

The universal serial communication interface (USCI) modules supportmultiple serial communication modes. Different USCI modules supportdifferent modes. Each different USCI module is named with a different letter.For example, USCI_A is different from USCI_B, etc. If more than one identicalUSCI module is implemented on one device, those modules are named withincrementing numbers. For example, if one device has two USCI_A modules,they are named USCI_A0 and USCI_A1. See the device-specific data sheetto determine which USCI modules, if any, are implemented on which devices.

The USCI_Ax modules support:

UART mode Pulse shaping for IrDA communications Automatic baud rate detection for LIN communications SPI mode

The USCI_Bx modules support:

I2C mode SPI mode

Page 613: MSP430 - general.pdf

USCI Introduction: I2C Mode

21-3Universal Serial Communication Interface, I2C Mode

21.2 USCI Introduction: I2C Mode

In I2C mode, the USCI module provides an interface between the MSP430 andI2C-compatible devices connected by way of the two-wire I2C serial bus.External components attached to the I2C bus serially transmit and/or receiveserial data to/from the USCI module through the 2-wire I2C interface.

The I2C mode features include:

Compliance to the Philips Semiconductor I2C specification v2.1 7-bit and 10-bit device addressing modes General call START/RESTART/STOP Multi-master transmitter/receiver mode Slave receiver/transmitter mode Standard mode up to 100 kbps and fast mode up to 400 kbps support

Programmable UCxCLK frequency in master mode

Designed for low power

Slave receiver START detection for auto-wake up from LPMx modes

Slave operation in LPM4

Figure 21−1 shows the USCI when configured in I2C mode.

Page 614: MSP430 - general.pdf

USCI Introduction: I2C Mode

21-4 Universal Serial Communication Interface, I2C Mode

Figure 21−1. USCI Block Diagram: I2C Mode

ACLK

SMCLK

SMCLK

00

01

10

11

UCSSELx

UC1CLK

Prescaler/Divider

Bit Clock Generator

UCxBRx

16

BRCLK

Slave Address UC 1SA

Transmit Shift Register

UCMST

Transmit Buffer UC 1TXBUF

I2C State Machine

Own Address UC1OA

Receive Shift Register

UCA10

Receive Buffer UC1RXBUF

UCGCEN

UCxSDA

UCxSCL

UCSLA10

Page 615: MSP430 - general.pdf

USCI Operation: I2C Mode

21-5Universal Serial Communication Interface, I2C Mode

21.3 USCI Operation: I2C Mode

The I2C mode supports any slave or master I2C-compatible device.Figure 21−2 shows an example of an I2C bus. Each I2C device is recognizedby a unique address and can operate as either a transmitter or a receiver. Adevice connected to the I2C bus can be considered as the master or the slavewhen performing data transfers. A master initiates a data transfer andgenerates the clock signal SCL. Any device addressed by a master isconsidered a slave.

I2C data is communicated using the serial data pin (SDA) and the serial clockpin (SCL). Both SDA and SCL are bidirectional, and must be connected to apositive supply voltage using a pullup resistor.

Figure 21−2. I2C Bus Connection Diagram

MSP430

VCC

Serial Data (SDA)Serial Clock (SCL)

Device A

Device B Device C

Note: SDA and SCL Levels

The MSP430 SDA and SCL pins must not be pulled up above the MSP430VCC level.

Page 616: MSP430 - general.pdf

USCI Operation: I2C Mode

21-6 Universal Serial Communication Interface, I2C Mode

21.3.1 USCI Initialization and Reset

The USCI is reset by a PUC or by setting the UCSWRST bit. After a PUC, theUCSWRST bit is automatically set, keeping the USCI in a reset condition. Toselect I2C operation the UCMODEx bits must be set to 11. After moduleinitialization, it is ready for transmit or receive operation. Clearing UCSWRSTreleases the USCI for operation.

Configuring and reconfiguring the USCI module should be done whenUCSWRST is set to avoid unpredictable behavior. Setting UCSWRST in I2Cmode has the following effects:

I2C communication stops SDA and SCL are high impedance UCBxI2CSTAT, bits 6-0 are cleared UCBxTXIE and UCBxRXIE are cleared UCBxTXIFG and UCBxRXIFG are cleared All other bits and registers remain unchanged.

Note: Initializing or Reconfiguring the USCI Module

The recommended USCI initialization/re-configuration process is:

1) Set UCSWRST (BIS.B #UCSWRST,&UCxCTL1)

2) Initialize all USCI registers with UCSWRST=1 (including UCxCTL1)

3) Configure ports.

4) Clear UCSWRST via software (BIC.B #UCSWRST,&UCxCTL1)

5) Enable interrupts (optional) via UCxRXIE and/or UCxTXIE

Page 617: MSP430 - general.pdf

USCI Operation: I2C Mode

21-7Universal Serial Communication Interface, I2C Mode

21.3.2 I2C Serial Data

One clock pulse is generated by the master device for each data bittransferred. The I2C mode operates with byte data. Data is transferred mostsignificant bit first as shown in Figure 21−3.

The first byte after a START condition consists of a 7-bit slave address and theR/W bit. When R/W = 0, the master transmits data to a slave. When R/W = 1,the master receives data from a slave. The ACK bit is sent from the receiverafter each byte on the 9th SCL clock.

Figure 21−3. I2C Module Data Transfer

SDA

SCL

MSB AcknowledgementSignal From Receiver

AcknowledgementSignal From Receiver

1 2 7 8 9 1 2 8 9ACK ACK

STARTCondition (S)

STOPCondition (P)R/W

START and STOP conditions are generated by the master and are shown inFigure 21−3. A START condition is a high-to-low transition on the SDA linewhile SCL is high. A STOP condition is a low-to-high transition on the SDA linewhile SCL is high. The bus busy bit, UCBBUSY, is set after a START andcleared after a STOP.

Data on SDA must be stable during the high period of SCL as shown inFigure 21−4. The high and low state of SDA can only change when SCL is low,otherwise START or STOP conditions will be generated.

Figure 21−4. Bit Transfer on the I2C Bus

Data LineStable Data

Change of Data Allowed

SDA

SCL

Page 618: MSP430 - general.pdf

USCI Operation: I2C Mode

21-8 Universal Serial Communication Interface, I2C Mode

21.3.3 I2C Addressing Modes

The I2C mode supports 7-bit and 10-bit addressing modes.

7-Bit Addressing

In the 7-bit addressing format, shown in Figure 21−5, the first byte is the 7-bitslave address and the R/W bit. The ACK bit is sent from the receiver after eachbyte.

Figure 21−5. I2C Module 7-Bit Addressing Format

S Slave Address R/W ACK Data ACK Data ACK P

7 8 81 1 1 1 1 1

10-Bit Addressing

In the 10-bit addressing format, shown in Figure 21−6, the first byte is madeup of 11110b plus the two MSBs of the 10-bit slave address and the R/W bit.The ACK bit is sent from the receiver after each byte. The next byte is theremaining 8 bits of the 10-bit slave address, followed by the ACK bit and the8-bit data.

Figure 21−6. I2C Module 10-Bit Addressing Format

S

1

Slave Address 1st byte

7

Slave Address 2nd byteACKR/W

11 8

ACK

1

Data

8

ACK

1

P

1

1 1 1 1 0 X X

Repeated Start Conditions

The direction of data flow on SDA can be changed by the master, without firststopping a transfer, by issuing a repeated START condition. This is called aRESTART. After a RESTART is issued, the slave address is again sent out withthe new data direction specified by the R/W bit. The RESTART condition isshown in Figure 21−7.

Figure 21−7. I2C Module Addressing Format with Repeated START Condition

1 7 8 7 81 1 1 1 1 1 1 1

S Slave Address R/W ACK Data ACK S Slave Address R/W ACK Data ACK P

1 AnyNumber

1 Any Number

Page 619: MSP430 - general.pdf

USCI Operation: I2C Mode

21-9Universal Serial Communication Interface, I2C Mode

21.3.4 I2C Module Operating Modes

In I2C mode the USCI module can operate in master transmitter, masterreceiver, slave transmitter, or slave receiver mode. The modes are discussedin the following sections. Time lines are used to illustrate the modes.

Figure 21−8 shows how to interpret the time line figures. Data transmitted bythe master is represented by grey rectangles, data transmitted by the slave bywhite rectangles. Data transmitted by the USCI module, either as master orslave, is shown by rectangles that are taller than the others.

Actions taken by the USCI module are shown in grey rectangles with an arrowindicating where in the the data stream the action occurs. Actions that mustbe handled with software are indicated with white rectangles with an arrowpointing to where in the data stream the action must take place.

Figure 21−8. I2C Time line Legend

...

USCI Master

USCI Slave

Other Master

Other Slave

... Bits set or reset by software

Bits set or reset by hardware

Page 620: MSP430 - general.pdf

USCI Operation: I2C Mode

21-10 Universal Serial Communication Interface, I2C Mode

Slave Mode

The USCI module is configured as an I2C slave by selecting the I2C mode withUCMODEx = 11 and UCSYNC = 1 and clearing the UCMST bit.

Initially the USCI module must be configured in receiver mode by clearing theUCTR bit to receive the I2C address. Afterwards, transmit and receiveoperations are controlled automatically depending on the R/W bit receivedtogether with the slave address.

The USCI slave address is programmed with the UCBxI2COA register. WhenUCA10 = 0, 7-bit addressing is selected. When UCA10 = 1, 10-bit addressingis selected. The UCGCEN bit selects if the slave responds to a general call.

When a START condition is detected on the bus, the USCI module will receivethe transmitted address and compare it against its own address stored inUCBxI2COA. The UCSTTIFG flag is set when address received matches theUSCI slave address.

I2C Slave Transmitter Mode

Slave transmitter mode is entered when the slave address transmitted by themaster is identical to its own address with a set R/W bit. The slave transmittershifts the serial data out on SDA with the clock pulses that are generated bythe master device. The slave device does not generate the clock, but it will holdSCL low while intervention of the CPU is required after a byte has beentransmitted.

If the master requests data from the slave the USCI module is automaticallyconfigured as a transmitter and UCTR and UCBxTXIFG become set. The SCLline is held low until the first data to be sent is written into the transmit bufferUCBxTXBUF. Then the address is acknowledged, the UCSTTIFG flag iscleared, and the data is transmitted. As soon as the data is transferred into theshift register the UCBxTXIFG is set again. After the data is acknowledged bythe master the next data byte written into UCBxTXBUF is transmitted or if thebuffer is empty the bus is stalled during the acknowledge cycle by holding SCLlow until new data is written into UCBxTXBUF. If the master sends a NACKsucceeded by a STOP condition the UCSTPIFG flag is set. If the NACK issucceeded by a repeated START condition the USCI I2C state machinereturns to its address-reception state.

Figure 21−9 illustrates the slave transmitter operation.

Page 621: MSP430 - general.pdf

USCI Operation: I2C Mode

21-11Universal Serial Communication Interface, I2C Mode

Figure 21−9. I2C Slave Transmitter Mode

S SLA/R A DATA A P

UCTR= 1(Transmitter)UCSTTIFG= 1UCBxTXIFG= 1UCSTPIFG=?0UCBxTXBUF discarded

Reception of ownaddress andtransmission of databytes

Bus stalled (SCL held low)until data available

DATADATA A

UCSTPIFG= 1UCSTTIFG= 0

A

A

DATA A S SLA/R

UCTR= 1(Transmitter)UCSTTIFG= 1UCBxTXIFG= 1UCBxTXBUF discarded

DATA A S SLA/W

UCTR= 0(Receiver)UCSTTIFG= 1

Arbitration lost asmaster andaddressed as slave

UCALIFG= 1UCMST= 0UCTR= 1(Transmitter)UCSTTIFG= 1UCBxTXIFG= 1UCSTPIFG= 0

UCBxTXIFG= 0

Repeated start −continue asslave transmitter

Repeated start −continue asslave receiver

Write data to UCBxTXBUF

UCBxTXIFG= 1

UCBxTXIFG=0

UCBxTXIFG= 0

Write data to UCBxTXBUF

Page 622: MSP430 - general.pdf

USCI Operation: I2C Mode

21-12 Universal Serial Communication Interface, I2C Mode

I2C Slave Receiver Mode

Slave receiver mode is entered when the slave address transmitted by themaster is identical to its own address and a cleared R/W bit is received. In slavereceiver mode, serial data bits received on SDA are shifted in with the clockpulses that are generated by the master device. The slave device does notgenerate the clock, but it can hold SCL low if intervention of the CPU is requiredafter a byte has been received.

If the slave should receive data from the master the USCI module isautomatically configured as a receiver and UCTR is cleared. After the first databyte is received the receive interrupt flag UCBxRXIFG is set. The USCImodule automatically acknowledges the received data and can receive thenext data byte.

If the previous data was not read from the receive buffer UCBxRXBUF at theend of a reception, the bus is stalled by holding SCL low. As soon asUCBxRXBUF is read the new data is transferred into UCBxRXBUF, anacknowledge is sent to the master, and the next data can be received.

Setting the UCTXNACK bit causes a NACK to be transmitted to the masterduring the next acknowledgment cycle. A NACK is sent even if UCBxRXBUFis not ready to receive the latest data. If the UCTXNACK bit is set while SCLis held low the bus will be released, a NACK is transmitted immediately, andUCBxRXBUF is loaded with the last received data. Since the previous datawas not read that data will be lost. To avoid loss of data the UCBxRXBUFneeds to be read before UCTXNACK is set.

When the master generates a STOP condition the UCSTPIFG flag is set.

If the master generates a repeated START condition the USCI I2C statemachine returns to its address reception state.

Figure 21−10 illustrates the the I2C slave receiver operation.

Page 623: MSP430 - general.pdf

USCI Operation: I2C Mode

21-13Universal Serial Communication Interface, I2C Mode

Figure 21−10. I2C Slave Receiver Mode

S SLA/W A DATA A P or SReception of ownaddress and databytes. All areacknowledged.

UCBxRXIFG= 1

DATADATA A A

UCTXNACK= 1

Refer to:

Timing Diagram

Bus not stalled even ifUCBxRXBUF not read

P or SDATA A

AArbitration lost asmaster andaddressed as slave

UCALIFG= 1UCMST= 0UCTR= 0 (Receiver)UCSTTIFG= 1(UCGC= 1if general call)UCBxTXIFG= 0UCSTPIFG= 0

Last byte is notacknowledged.

UCTR= 0(Receiver)UCSTTIFG= 1UCSTPIFG= 0

Gen Call A

UCTR= 0(Receiver)UCSTTIFG= 1UCGC= 1

Reception of thegeneral calladdress.

UCTXNACK= 0

Bus stalled(SCL held low)if UCBxRXBUF not read

Read data from UCBxRXBUF

Slave Transmitter

Page 624: MSP430 - general.pdf

USCI Operation: I2C Mode

21-14 Universal Serial Communication Interface, I2C Mode

I2C Slave 10-Bit Addressing Mode

The 10-bit addressing mode is selected when UCA10 = 1 and is as shown inFigure 21−11. In 10-bit addressing mode, the slave is in receive mode after thefull address is received. The USCI module indicates this by setting theUCSTTIFG flag while the UCTR bit is cleared. To switch the slave intotransmitter mode the master sends a repeated START condition together withthe first byte of the address but with the R/W bit set. This will set the UCSTTIFGflag if it was previously cleared by software and the USCI modules switchesto transmitter mode with UCTR = 1.

Figure 21−11.I2C Slave 10-bit Addressing Mode

S

S 11110 xx/W A SLA (2.) A P or SReception of ownaddress and databytes. All areacknowledged.

UCBxRXIFG= 1

DATA DATAA A

UCTR= 0( Receiver)UCSTTIFG= 1UCSTPIFG= 0

Gen Call A

UCTR= 0(Receiver)UCSTTIFG= 1UCGC= 1

Reception of thegeneral calladdress.

P or S

UCBxRXIFG= 1

DATA DATAA A

S 11110 xx/W A SLA (2.) A

UCTR= 0(Receiver)UCSTTIFG= 1UCSTPIFG= 0

11110 xx/R A

UCTR= 1(Transmitter)UCSTTIFG= 1UCBxTXIFG= 1UCSTPIFG= 0

UCSTTIFG= 0

DATA A P or SReception of ownaddress andtransmission of databytes

Slave Transmitter

Slave Receiver

Page 625: MSP430 - general.pdf

USCI Operation: I2C Mode

21-15Universal Serial Communication Interface, I2C Mode

Master Mode

The USCI module is configured as an I2C master by selecting the I2C modewith UCMODEx = 11 and UCSYNC = 1 and setting the UCMST bit. When themaster is part of a multi-master system, UCMM must be set and its ownaddress must be programmed into the UCBxI2COA register. WhenUCA10 = 0, 7-bit addressing is selected. When UCA10 = 1, 10-bit addressingis selected. The UCGCEN bit selects if the USCI module responds to a generalcall.

I2C Master Transmitter Mode

After initialization, master transmitter mode is initiated by writing the desiredslave address to the UCBxI2CSA register, selecting the size of the slaveaddress with the UCSLA10 bit, setting UCTR for transmitter mode, and settingUCTXSTT to generate a START condition.

The USCI module checks if the bus is available, generates the STARTcondition, and transmits the slave address. The UCBxTXIFG bit is set whenthe START condition is generated and the first data to be transmitted can bewritten into UCBxTXBUF. As soon as the slave acknowledges the address theUCTXSTT bit is cleared.

Note: Handling of TXIFG in a multi-master system

In a multi−master system (UCMM =1), if the bus is unavailable, the USCImodule waits and checks for bus release. Bus unavailability can occur evenafter the UCTXSTT bit has been set. While waiting for the bus to becomeavailable, the USCI may update the TXIFG based on SCL clock line activity.Checking the UCTXSTT bit to verify if the START condition has been sentensures that the TXIFG is being serviced correctly.

The data written into UCBxTXBUF is transmitted if arbitration is not lost duringtransmission of the slave address. UCBxTXIFG is set again as soon as thedata is transferred from the buffer into the shift register. If there is no dataloaded to UCBxTXBUF before the acknowledge cycle, the bus is held duringthe acknowledge cycle with SCL low until data is written into UCBxTXBUF.Data is transmitted or the bus is held as long as the UCTXSTP bit or UCTXSTTbit is not set.

Setting UCTXSTP will generate a STOP condition after the next acknowledgefrom the slave. If UCTXSTP is set during the transmission of the slave’saddress or while the USCI module waits for data to be written intoUCBxTXBUF, a STOP condition is generated even if no data was transmittedto the slave. When transmitting a single byte of data, the UCTXSTP bit mustbe set while the byte is being transmitted, or anytime after transmissionbegins, without writing new data into UCBxTXBUF. Otherwise, only theaddress will be transmitted. When the data is transferred from the buffer to theshift register, UCBxTXIFG will become set indicating data transmission hasbegun and the UCTXSTP bit may be set.

Page 626: MSP430 - general.pdf

USCI Operation: I2C Mode

21-16 Universal Serial Communication Interface, I2C Mode

Setting UCTXSTT will generate a repeated START condition. In this case,UCTR may be set or cleared to configure transmitter or receiver, and a differentslave address may be written into UCBxI2CSA if desired.

If the slave does not acknowledge the transmitted data the not-acknowledgeinterrupt flag UCNACKIFG is set. The master must react with either a STOPcondition or a repeated START condition. If data was already written intoUCBxTXBUF it will be discarded. If this data should be transmitted after arepeated START it must be written into UCBxTXBUF again. Any set UCTXSTTis discarded, too. To trigger a repeated start, UCTXSTT needs to be set again.

Figure 21−12 illustrates the I2C master transmitter operation.

Page 627: MSP430 - general.pdf

USCI Operation: I2C Mode

21-17Universal Serial Communication Interface, I2C Mode

Figure 21−12. I2C Master Transmitter Mode

Other master continues

S SLA/W A DATA A PSuccessfultransmission to aslave receiver

UCBxTXIFG= 1

DATADATA A A

UCTXSTP= 1UCBxTXIFG=0

Next transfer startedwith a repeated startcondition

DATA A S SLA/W

1) UCTR= 1(Transmitter)2) UCTXSTT= 1

DATA A S SLA/R

1) UCTR= 0(Receiver)2) UCTXSTT= 13) UCBxTXIFG= 0

Not acknowledgereceived after slaveaddress

P

S SLA/W

S SLA/R

UCTXSTP= 1

1) UCTR= 1(Transmitter)2) UCTXSTT= 1

1) UCTR= 0(Receiver)2) UCTXSTT= 1

Arbitration lost inslave address ordata byte

A

A

Other master continues

Arbitration lost andaddressed as slave

Other master continuesA

UCALIFG= 1UCMST= 0UCTR= 0(Receiver)UCSTTIFG= 1(UCGC= 1if general call)UCBxTXIFG= 0UCSTPIFG= 0

USCI continues as Slave Receiver

Not acknowledgereceived after a databyte

UCTXSTT= 0 UCTXSTP= 0

UCTXSTP= 0

UCALIFG= 1UCMST= 0(UCSTTIFG= 0)

Bus stalled (SCL held low)until data available

Write data to UCBxTXBUF

1) UCTR= 1(Transmitter)2) UCTXSTT= 1

UCBxTXIFG= 1UCBxTXBUF discarded

UCTXSTT= 0UCNACKIFG= 1UCBxTXIFG= 0UCBxTXBUF discarded

UCBxTXIFG= 1UCBxTXBUF discarded

UCNACKIFG= 1UCBxTXIFG= 0UCBxTXBUF discarded

UCALIFG= 1UCMST= 0(UCSTTIFG= 0)

Page 628: MSP430 - general.pdf

USCI Operation: I2C Mode

21-18 Universal Serial Communication Interface, I2C Mode

I2C Master Receiver Mode

After initialization, master receiver mode is initiated by writing the desiredslave address to the UCBxI2CSA register, selecting the size of the slaveaddress with the UCSLA10 bit, clearing UCTR for receiver mode, and settingUCTXSTT to generate a START condition.

The USCI module checks if the bus is available, generates the STARTcondition, and transmits the slave address. As soon as the slaveacknowledges the address the UCTXSTT bit is cleared.

After the acknowledge of the address from the slave the first data byte fromthe slave is received and acknowledged and the UCBxRXIFG flag is set. Datais received from the slave as long as UCTXSTP or UCTXSTT is not set. IfUCBxRXBUF is not read the master holds the bus during reception of the lastdata bit and until the UCBxRXBUF is read.

If the slave does not acknowledge the transmitted address thenot-acknowledge interrupt flag UCNACKIFG is set. The master must reactwith either a STOP condition or a repeated START condition.

Setting the UCTXSTP bit will generate a STOP condition. After settingUCTXSTP, a NACK followed by a STOP condition is generated after receptionof the data from the slave, or immediately if the USCI module is currentlywaiting for UCBxRXBUF to be read.

If a master wants to receive a single byte only, the UCTXSTP bit must be setwhile the byte is being received. For this case, the UCTXSTT may be polledto determine when it is cleared:

BIS.B #UCTXSTT,&UCB0CTL1 ;Transmit START cond.

POLL_STT BIT.B #UCTXSTT,&UCB0CTL1 ;Poll UCTXSTT bit

JC POLL_STT ;When cleared,

BIS.B #UCTXSTP,&UCB0CTL1 ;transmit STOP cond.

Setting UCTXSTT will generate a repeated START condition. In this case,UCTR may be set or cleared to configure transmitter or receiver, and a differentslave address may be written into UCBxI2CSA if desired.

Figure 21−13 illustrates the I2C master receiver operation.

Note: Consecutive Master Transactions Without Repeated Start

When performing multiple consecutive I2C master transactions without therepeated start feature, the current transaction must be completed before thenext one is initiated. This can be done by ensuring that the transmit stopcondition flag UCTXSTP is cleared before the next I2C transaction is initiatedwith setting UCTXSTT = 1. Otherwise, the current transaction might beaffected.

Page 629: MSP430 - general.pdf

USCI Operation: I2C Mode

21-19Universal Serial Communication Interface, I2C Mode

Figure 21−13. I2C Master Receiver Mode

Other master continues

S SLA/R A DATA A P

1) UCTR= 0 (Receiver)2) UCTXSTT= 1

Successfulreception from aslave transmitter

UCBxRXIFG= 1

DATADATA A

UCTXSTP= 1

Next transfer startedwith a repeated startcondition

DATA S SLA/W

1) UCTR= 1(Transmitter)2) UCTXSTT= 1

DATA S SLA/R

1) UCTR=0 (Receiver)2) UCTXSTT= 1

Not acknowledgereceived after slaveaddress

UCTXSTT= 0UCNACKIFG= 1

P

S SLA/W

S SLA/R

1) UCTR=1 (Transmitter)2) UCTXSTT= 1

1) UCTR=0 (Receiver)2) UCTXSTT= 1

Arbitration lost inslave address ordata byte

A

Other master continues

UCALIFG= 1UCMST= 0(UCSTTIFG= 0)

Arbitration lost andaddressed as slave

Other master continuesA

UCALIFG= 1UCMST= 0UCTR= 1( Transmitter)UCSTTIFG= 1UCBxTXIFG= 1UCSTPIFG= 0

USCI continues as Slave Transmitter

A

A

A

UCTXSTT= 0 UCTXSTP= 0

UCBxTXIFG= 1

UCALIFG= 1UCMST= 0(UCSTTIFG= 0)

UCTXSTP= 1

UCTXSTP= 0

Page 630: MSP430 - general.pdf

USCI Operation: I2C Mode

21-20 Universal Serial Communication Interface, I2C Mode

I2C Master 10-Bit Addressing Mode

The 10-bit addressing mode is selected when UCSLA10 = 1 and is shown inFigure 21−14.

Figure 21−14. I2C Master 10-bit Addressing Mode

Master Transmitter

S A A P

1) UCTR=1 (Transmitter)2) UCTXSTT= 1

Successfultransmission to aslave receiver

UCBxTXIFG= 1UCBxTXIFG = 1

DATADATA A A

UCTXSTP= 1

UCTXSTT= 0 UCTXSTP= 0

11110 xx/W SLA (2.)

S A P

1) UCTR= 0 (Receiver)2) UCTXSTT= 1

Successfulreception from aslave transmitter

DATADATA A

UCTXSTP= 1

A

UCTXSTT= 0 UCTXSTP= 0

A A11110 xx/W SLA (2.) 11110 xx/R

Master Receiver

S

UCBxRXIFG= 1

Page 631: MSP430 - general.pdf

USCI Operation: I2C Mode

21-21Universal Serial Communication Interface, I2C Mode

Arbitration

If two or more master transmitters simultaneously start a transmission on thebus, an arbitration procedure is invoked. Figure 21−15 illustrates thearbitration procedure between two devices. The arbitration procedure usesthe data presented on SDA by the competing transmitters. The first mastertransmitter that generates a logic high is overruled by the opposing mastergenerating a logic low. The arbitration procedure gives priority to the devicethat transmits the serial data stream with the lowest binary value. The mastertransmitter that lost arbitration switches to the slave receiver mode, and setsthe arbitration lost flag UCALIFG. If two or more devices send identical firstbytes, arbitration continues on the subsequent bytes.

Figure 21−15. Arbitration Procedure Between Two Master Transmitters

1

0 0 0

1

0 0 0

1 1

111

nDevice #1 Lost Arbitrationand Switches Off

Bus LineSCL

Data FromDevice #1

Data FromDevice #2

Bus LineSDA

If the arbitration procedure is in progress when a repeated START conditionor STOP condition is transmitted on SDA, the master transmitters involved inarbitration must send the repeated START condition or STOP condition at thesame position in the format frame. Arbitration is not allowed between:

A repeated START condition and a data bit A STOP condition and a data bit A repeated START condition and a STOP condition

Page 632: MSP430 - general.pdf

USCI Operation: I2C Mode

21-22 Universal Serial Communication Interface, I2C Mode

21.3.5 I2C Clock Generation and Synchronization

The I2C clock SCL is provided by the master on the I2C bus. When the USCIis in master mode, BITCLK is provided by the USCI bit clock generator and theclock source is selected with the UCSSELx bits. In slave mode the bit clockgenerator is not used and the UCSSELx bits are don’t care.

The 16-bit value of UCBRx in registers UCBxBR1 and UCBxBR0 is the divisionfactor of the USCI clock source, BRCLK. The maximum bit clock that can beused in single master mode is fBRCLK/4. In multi-master mode the maximumbit clock is fBRCLK/8. The BITCLK frequency is given by:

fBitClock fBRCLKUCBRx

The minimum high and low periods of the generated SCL are

tLOW,MIN tHIGH,MIN UCBRx2fBRCLK

when UCBRx is even and

tLOW,MIN tHIGH,MIN (UCBRx 1)2

fBRCLK when UCBRx is odd.

The USCI clock source frequency and the prescaler setting UCBRx must tobe chosen such that the minimum low and high period times of the I2Cspecification are met.

During the arbitration procedure the clocks from the different masters must besynchronized. A device that first generates a low period on SCL overrules theother devices forcing them to start their own low periods. SCL is then held lowby the device with the longest low period. The other devices must wait for SCLto be released before starting their high periods. Figure 21−16 illustrates theclock synchronization. This allows a slow slave to slow down a fast master.

Figure 21−16. Synchronization of Two I2C Clock Generators During Arbitration

WaitState Start HIGH

Period

SCL FromDevice #1

SCL FromDevice #2

Bus LineSCL

Page 633: MSP430 - general.pdf

USCI Operation: I2C Mode

21-23Universal Serial Communication Interface, I2C Mode

Clock Stretching

The USCI module supports clock stretching and also makes use of this featureas described in the operation mode sections.

The UCSCLLOW bit can be used to observe if another device pulls SCL lowwhile the USCI module already released SCL due to the following conditions:

USCI is acting as master and a connected slave drives SCL low.

USCI is acting as master and another master drives SCL low duringarbitration.

The UCSCLLOW bit is also active if the USCI holds SCL low because it iswaiting as transmitter for data being written into UCBxTXBUF or as receiverfor the data being read from UCBxRXBUF.

The UCSCLLOW bit might get set for a short time with each rising SCL edgebecause the logic observes the external SCL and compares it to the internallygenerated SCL.

21.3.6 Using the USCI Module in I2C Mode With Low-Power Modes

The USCI module provides automatic clock activation for SMCLK for use withlow-power modes. When SMCLK is the USCI clock source, and is inactivebecause the device is in a low-power mode, the USCI module automaticallyactivates it when needed, regardless of the control-bit settings for the clocksource. The clock remains active until the USCI module returns to its idlecondition. After the USCI module returns to the idle condition, control of theclock source reverts to the settings of its control bits. Automatic clock activationis not provided for ACLK.

When the USCI module activates an inactive clock source, the clock sourcebecomes active for the whole device and any peripheral configured to use theclock source may be affected. For example, a timer using SMCLK willincrement while the USCI module forces SMCLK active.

In I2C slave mode no internal clock source is required because the clock isprovided by the external master. It is possible to operate the USCI in I2C slavemode while the device is in LPM4 and all internal clock sources are disabled.The receive or transmit interrupts can wake up the CPU from any low powermode.

Page 634: MSP430 - general.pdf

USCI Operation: I2C Mode

21-24 Universal Serial Communication Interface, I2C Mode

21.3.7 USCI Interrupts in I2C Mode

Their are two interrupt vectors for the USCI module in I2C mode. One interruptvector is associated with the transmit and receive interrupt flags. The otherinterrupt vector is associated with the four state change interrupt flags. Eachinterrupt flag has its own interrupt enable bit. When an interrupt is enabled, andthe GIE bit is set, the interrupt flag will generate an interrupt request. DMAtransfers are controlled by the UCBxTXIFG and UCBxRXIFG flags on deviceswith a DMA controller.

I2C Transmit Interrupt Operation

The UCBxTXIFG interrupt flag is set by the transmitter to indicate thatUCBxTXBUF is ready to accept another character. An interrupt request isgenerated if UCBxTXIE and GIE are also set. UCBxTXIFG is automaticallyreset if a character is written to UCBxTXBUF or if a NACK is received.UCBxTXIFG is set when UCSWRST = 1 and the I2C mode is selected.UCBxTXIE is reset after a PUC or when UCSWRST = 1.

I2C Receive Interrupt Operation

The UCBxRXIFG interrupt flag is set when a character is received and loadedinto UCBxRXBUF. An interrupt request is generated if UCBxRXIE and GIE arealso set. UCBxRXIFG and UCBxRXIE are reset after a PUC signal or whenUCSWRST = 1. UCxRXIFG is automatically reset when UCxRXBUF is read.

I2C State Change Interrupt Operation.

Table 21−1 Describes the I2C state change interrupt flags.

Table 21−1.I2C State Change Interrupt Flags

Interrupt Flag Interrupt Condition

UCALIFG Arbitration-lost. Arbitration can be lost when two or moretransmitters start a transmission simultaneously, or when theUSCI operates as master but is addressed as a slave by anothermaster in the system. The UCALIFG flag is set when arbitration islost. When UCALIFG is set the UCMST bit is cleared and the I2Ccontroller becomes a slave.

UCNACKIFG Not-acknowledge interrupt. This flag is set when an acknowledgeis expected but is not received. UCNACKIFG is automaticallycleared when a START condition is received.

UCSTTIFG Start condition detected interrupt. This flag is set when the I2Cmodule detects a START condition together with its own addresswhile in slave mode. UCSTTIFG is used in slave mode only andis automatically cleared when a STOP condition is received.

UCSTPIFG Stop condition detected interrupt. This flag is set when the I2Cmodule detects a STOP condition while in slave mode.UCSTPIFG is used in slave mode only and is automaticallycleared when a START condition is received.

Page 635: MSP430 - general.pdf

USCI Operation: I2C Mode

21-25Universal Serial Communication Interface, I2C Mode

Interrupt Vector Assignment

USCI_Ax and USCI_Bx share the same interrupt vectors. In I2C mode thestate change interrupt flags UCSTTIFG, UCSTPIFG, UCNACKIFG, UCALIFGfrom USCI_Bx and UCAxRXIFG from USCI_Ax are routed to one interruptvector. The I2C transmit and receive interrupt flags UCBxTXIFG andUCBxRXIFG from USCI_Bx and UCAxTXIFG from USCI_Ax share anotherinterrupt vector.

Shared Interrupt Vectors Software Example

The following software example shows an extract of the interrupt serviceroutine to handle data receive interrupts from USCI_A0 in either UART or SPImode and state change interrupts from USCI_B0 in I2C mode.

USCIA0_RX_USCIB0_I2C_STATE_ISR

BIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?

JNZ USCIA0_RX_ISR

USCIB0_I2C_STATE_ISR

; Decode I2C state changes ...

; Decode I2C state changes ...

...

RETI

USCIA0_RX_ISR

; Read UCA0RXBUF ... − clears UCA0RXIFG

...

RETI

The following software example shows an extract of the interrupt serviceroutine that handles data transmit interrupts from USCI_A0 in either UART orSPI mode and the data transfer interrupts from USCI_B0 in I2C mode.

USCIA0_TX_USCIB0_I2C_DATA_ISR

BIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?

JNZ USCIA0_TX_ISR

USCIB0_I2C_DATA_ISR

BIT.B #UCB0RXIFG, &IFG2

JNZ USCIB0_I2C_RX

USCIB0_I2C_TX

; Write UCB0TXBUF... − clears UCB0TXIFG

...

RETI

USCIB0_I2C_RX; Read UCB0RXBUF... − clears UCB0RXIFG

...RETI

USCIA0_TX_ISR; Write UCA0TXBUF ... − clears UCA0TXIFG

...RETI

Page 636: MSP430 - general.pdf

USCI Registers: I2C Mode

21-26 Universal Serial Communication Interface, I2C Mode

21.4 USCI Registers: I2C Mode

The USCI registers applicable in I2C mode for USCI_B0 are listed inTable 21−2 and for USCI_B1 in Table 21−3.

Table 21−2.USCI_B0 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_B0 control register 0 UCB0CTL0 Read/write 068h 001h with PUC

USCI_B0 control register 1 UCB0CTL1 Read/write 069h 001h with PUC

USCI_B0 bit rate control register 0 UCB0BR0 Read/write 06Ah Reset with PUC

USCI_B0 bit rate control register 1 UCB0BR1 Read/write 06Bh Reset with PUC

USCI_B0 I2C interrupt enable register UCB0I2CIE Read/write 06Ch Reset with PUC

USCI_B0 status register UCB0STAT Read/write 06Dh Reset with PUC

USCI_B0 receive buffer register UCB0RXBUF Read 06Eh Reset with PUC

USCI_B0 transmit buffer register UCB0TXBUF Read/write 06Fh Reset with PUC

USCI_B0 I2C own address register UCB0I2COA Read/write 0118h Reset with PUC

USCI_B0 I2C slave address register UCB0I2CSA Read/write 011Ah Reset with PUC

SFR interrupt enable register 2 IE2 Read/write 001h Reset with PUC

SFR interrupt flag register 2 IFG2 Read/write 003h 00Ah with PUC

Note: Modifying SFR bits

To avoid modifying control bits of other modules, it is recommended to setor clear the IEx and IFGx bits using BIS.B or BIC.B instructions, rather thanMOV.B or CLR.B instructions.

Table 21−3.USCI_B1 Control and Status Registers

Register Short Form Register Type Address Initial State

USCI_B1 control register 0 UCB1CTL0 Read/write 0D8h Reset with PUC

USCI_B1 control register 1 UCB1CTL1 Read/write 0D9h 001h with PUC

USCI_B1 baud rate control register 0 UCB1BR0 Read/write 0DAh Reset with PUC

USCI_B1 baud rate control register 1 UCB1BR1 Read/write 0DBh Reset with PUC

USCI_B1 I2C Interrupt enable register UCB1I2CIE Read/write 0DCh Reset with PUC

USCI_B1 status register UCB1STAT Read/write 0DDh Reset with PUC

USCI_B1 receive buffer register UCB1RXBUF Read 0DEh Reset with PUC

USCI_B1 transmit buffer register UCB1TXBUF Read/write 0DFh Reset with PUC

USCI_B1 I2C own address register UCB1I2COA Read/write 017Ch Reset with PUC

USCI_B1 I2C slave address register UCB1I2CSA Read/write 017Eh Reset with PUC

USCI_A1/B1 interrupt enable register UC1IE Read/write 006h Reset with PUC

USCI_A1/B1 interrupt flag register UC1IFG Read/write 007h 00Ah with PUC

Page 637: MSP430 - general.pdf

USCI Registers: I2C Mode

21-27Universal Serial Communication Interface, I2C Mode

UCBxCTL0, USCI_Bx Control Register 0

7 6 5 4 3 2 1 0

UCA10 UCSLA10 UCMM Unused UCMST UCMODEx=11 UCSYNC=1

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r−1

UCA10 Bit 7 Own addressing mode select0 Own address is a 7-bit address1 Own address is a 10-bit address

UCSLA10 Bit 6 Slave addressing mode select0 Address slave with 7-bit address1 Address slave with 10-bit address

UCMM Bit 5 Multi-master environment select0 Single master environment. There is no other master in the system.

The address compare unit is disabled.1 Multi master environment

Unused Bit 4 Unused

UCMST Bit 3 Master mode select. When a master looses arbitration in a multi-masterenvironment (UCMM = 1) the UCMST bit is automatically cleared and themodule acts as slave.0 Slave mode1 Master mode

UCMODEx Bits2−1

USCI Mode. The UCMODEx bits select the synchronous mode whenUCSYNC = 1.00 3-pin SPI01 4−Pin SPI (master/slave enabled if STE = 1)10 4−Pin SPI (master/slave enabled if STE = 0)11 I2C mode

UCSYNC Bit 0 Synchronous mode enable0 Asynchronous mode1 Synchronous mode

Page 638: MSP430 - general.pdf

USCI Registers: I2C Mode

21-28 Universal Serial Communication Interface, I2C Mode

UCBxCTL1, USCI_Bx Control Register 1

7 6 5 4 3 2 1 0

UCSSELx Unused UCTR UCTXNACK UCTXSTP UCTXSTT UCSWRST

rw−0 rw−0 r0 rw−0 rw−0 rw−0 rw−0 rw−1

UCSSELx Bits7-6

USCI clock source select. These bits select the BRCLK source clock.00 UCLKI01 ACLK10 SMCLK11 SMCLK

Unused Bit 5 Unused

UCTR Bit 4 Transmitter/Receiver0 Receiver1 Transmitter

UCTXNACK Bit 3 Transmit a NACK. UCTXNACK is automatically cleared after a NACK istransmitted.0 Acknowledge normally1 Generate NACK

UCTXSTP Bit 2 Transmit STOP condition in master mode. Ignored in slave mode. Inmaster receiver mode the STOP condition is preceded by a NACK.UCTXSTP is automatically cleared after STOP is generated.0 No STOP generated1 Generate STOP

UCTXSTT Bit 1 Transmit START condition in master mode. Ignored in slave mode. Inmaster receiver mode a repeated START condition is preceded by aNACK. UCTXSTT is automatically cleared after START condition andaddress information is transmitted.Ignored in slave mode.0 Do not generate START condition1 Generate START condition

UCSWRST Bit 0 Software reset enable0 Disabled. USCI reset released for operation.1 Enabled. USCI logic held in reset state.

Page 639: MSP430 - general.pdf

USCI Registers: I2C Mode

21-29Universal Serial Communication Interface, I2C Mode

UCBxBR0, USCI_Bx Baud Rate Control Register 0

7 6 5 4 3 2 1 0

UCBRx − low byte

rw rw rw rw rw rw rw rw

UCBxBR1, USCI_Bx Baud Rate Control Register 1

7 6 5 4 3 2 1 0

UCBRx − high byte

rw rw rw rw rw rw rw rw

UCBRx Bit clock prescaler setting.The 16-bit value of (UCBxBR0 + UCBxBR1 × 256 forms the prescalervalue.

Page 640: MSP430 - general.pdf

USCI Registers: I2C Mode

21-30 Universal Serial Communication Interface, I2C Mode

UCBxSTAT, USCI_Bx Status Register

7 6 5 4 3 2 1 0

Unused UCSCLLOW UCGC UCBBUSY UCNACK

IFG UCSTPIFG UCSTTIFG UCALIFG

rw−0 r−0 rw−0 r−0 rw−0 rw−0 rw−0 rw−0

Unused Bit 7 Unused.

UCSCLLOW

Bit 6 SCL low0 SCL is not held low1 SCL is held low

UCGC Bit 5 General call address received. UCGC is automatically cleared when aSTART condition is received.0 No general call address received1 General call address received

UCBBUSY Bit 4 Bus busy0 Bus inactive1 Bus busy

UCNACKIFG

Bit 3 Not-acknowledge received interrupt flag. UCNACKIFG is automaticallycleared when a START condition is received.0 No interrupt pending1 Interrupt pending

UCSTPIFG Bit 2 Stop condition interrupt flag. UCSTPIFG is automatically cleared when aSTART condition is received.0 No interrupt pending1 Interrupt pending

UCSTTIFG Bit 1 Start condition interrupt flag. UCSTTIFG is automatically cleared if a STOPcondition is received.0 No interrupt pending1 Interrupt pending

UCALIFG Bit 0 Arbitration lost interrupt flag0 No interrupt pending1 Interrupt pending

Page 641: MSP430 - general.pdf

USCI Registers: I2C Mode

21-31Universal Serial Communication Interface, I2C Mode

UCBxRXBUF, USCI_Bx Receive Buffer Register

7 6 5 4 3 2 1 0

UCRXBUFx

r r r r r r r r

UCRXBUFx Bits7−0

The receive-data buffer is user accessible and contains the last receivedcharacter from the receive shift register. Reading UCBxRXBUF resetsUCBxRXIFG.

UCBxTXBUF, USCI_Bx Transmit Buffer Register

7 6 5 4 3 2 1 0

UCTXBUFx

rw rw rw rw rw rw rw rw

UCTXBUFx Bits7−0

The transmit data buffer is user accessible and holds the data waiting tobe moved into the transmit shift register and transmitted. Writing to thetransmit data buffer clears UCBxTXIFG.

Page 642: MSP430 - general.pdf

USCI Registers: I2C Mode

21-32 Universal Serial Communication Interface, I2C Mode

UCBxI2COA, USCIBx I2C Own Address Register

15 14 13 12 11 10 9 8

UCGCEN 0 0 0 0 0 I2COAx

rw−0 r0 r0 r0 r0 r0 rw−0 rw−0

7 6 5 4 3 2 1 0

I2COAx

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

UCGCEN Bit 15 General call response enable0 Do not respond to a general call1 Respond to a general call

I2COAx Bits9-0

I2C own address. The I2COAx bits contain the local address of the USCI_BxI2C controller. The address is right-justified. In 7-bit addressing mode Bit 6 isthe MSB, Bits 9-7 are ignored. In 10-bit addressing mode Bit 9 is the MSB.

UCBxI2CSA, USCI_Bx I2C Slave Address Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 I2CSAx

r0 r0 r0 r0 r0 r0 rw−0 rw−0

7 6 5 4 3 2 1 0

I2CSAx

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

I2CSAx Bits9-0

I2C slave address. The I2CSAx bits contain the slave address of the externaldevice to be addressed by the USCI_Bx module. It is only used in mastermode. The address is right-justified. In 7-bit slave addressing mode Bit 6 isthe MSB, Bits 9-7 are ignored. In 10-bit slave addressing mode Bit 9 is theMSB.

Page 643: MSP430 - general.pdf

USCI Registers: I2C Mode

21-33Universal Serial Communication Interface, I2C Mode

UCBxI2CIE, USCI_Bx I2C Interrupt Enable Register

7 6 5 4 3 2 1 0

Reserved UCNACKIE UCSTPIE UCSTTIE UCALIE

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Reserved Bits7−4

Reserved

UCNACKIE Bit 3 Not-acknowledge interrupt enable0 Interrupt disabled1 Interrupt enabled

UCSTPIE Bit 2 Stop condition interrupt enable0 Interrupt disabled1 Interrupt enabled

UCSTTIE Bit 1 Start condition interrupt enable0 Interrupt disabled1 Interrupt enabled

UCALIE Bit 0 Arbitration lost interrupt enable0 Interrupt disabled1 Interrupt enabled

Page 644: MSP430 - general.pdf

USCI Registers: I2C Mode

21-34 Universal Serial Communication Interface, I2C Mode

IE2, Interrupt Enable Register 2

7 6 5 4 3 2 1 0

UCB0TXIE UCB0RXIE

rw−0 rw−0

Bits7-4

These bits may be used by other modules (see the device-specific datasheet).

UCB0TXIE Bit 3 USCI_B0 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCB0RXIE Bit 2 USCI_B0 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

Bits1-0

These bits may be used by other modules (see the device-specific datasheet).

IFG2, Interrupt Flag Register 2

7 6 5 4 3 2 1 0

UCB0TXIFG

UCB0RXIFG

rw−1 rw−0

Bits7-4

These bits may be used by other modules (see the device-specific datasheet).

UCB0TXIFG

Bit 3 USCI_B0 transmit interrupt flag. UCB0TXIFG is set when UCB0TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCB0RXIFG

Bit 2 USCI_B0 receive interrupt flag. UCB0RXIFG is set when UCB0RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Bits1-0

These bits may be used by other modules (see the device-specific datasheet).

Page 645: MSP430 - general.pdf

USCI Registers: I2C Mode

21-35Universal Serial Communication Interface, I2C Mode

UC1IE, USCI_B1 Interrupt Enable Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCB1TXIE UCB1RXIE

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bits7-4

Unused

UCB1TXIE Bit 3 USCI_B1 transmit interrupt enable0 Interrupt disabled1 Interrupt enabled

UCB1RXIE Bit 2 USCI_B1 receive interrupt enable0 Interrupt disabled1 Interrupt enabled

Bits1-0

These bits may be used by other USCI modules (see the device-specific datasheet).

UC1IFG, USCI_B1 Interrupt Flag Register

7 6 5 4 3 2 1 0

Unused Unused Unused Unused UCB1TXIFG

UCB1RXIFG

rw−0 rw−0 rw−0 rw−0 rw−1 rw−0

Unused Bits7-4

Unused.

UCB1TXIFG

Bit 3 USCI_B1 transmit interrupt flag. UCB1TXIFG is set when UCB1TXBUF isempty.0 No interrupt pending1 Interrupt pending

UCB1RXIFG

Bit 2 USCI_B1 receive interrupt flag. UCB1RXIFG is set when UCB1RXBUF hasreceived a complete character.0 No interrupt pending1 Interrupt pending

Bits1-0

These bits may be used by other modules (see the device-specific datasheet).

Page 646: MSP430 - general.pdf

21-36 Universal Serial Communication Interface, I2C Mode

Page 647: MSP430 - general.pdf

22-1OA

OA

The OA is a general purpose operational amplifier. This chapter describes theOA. Three OA modules are implemented in the MSP430FG43x andMSP430xG461x devices. Two OA modules are implemented in theMSP430FG42x0 and MSP430FG47x devices.

Topic Page

22.1 OA Introduction 22-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.2 OA Operation 22-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.3 OA Modules in MSP430FG42x0 Devices 22-11. . . . . . . . . . . . . . . . . . . . . . .

22.4 OA Modules in MSP430FG47x Devices 22-16. . . . . . . . . . . . . . . . . . . . . . . .

22.5 OA Registers 22-24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22.6 OA Registers in MSP430FG42x0 Devices 22-27. . . . . . . . . . . . . . . . . . . . . .

22.7 OA Registers in MSP430FG47x Devices 22-31. . . . . . . . . . . . . . . . . . . . . . .

Chapter 22

Page 648: MSP430 - general.pdf

OA Introduction

22-2 OA

22.1 OA Introduction

The OA op amps support front-end analog signal conditioning prior toanalog-to-digital conversion.

Features of the OA include:

Single supply, low-current operation

Rail-to-rail output

Software selectable rail-to-rail input

Programmable settling time vs power consumption

Software selectable configurations

Software selectable feedback resistor ladder for PGA implementations

Note: Multiple OA Modules

Some devices may integrate more than one OA module. If more than one OAmodule is present on a device, the multiple OA modules operate identically.

Throughout this chapter, nomenclature appears such as OAxCTL0 todescribe register names. When this occurs, the x is used to indicate whichOA module is being discussed. In cases where operation is identical, theregister is simply referred to as OAxCTL0.

The block diagram of the OA module is shown in Figure 22−1.

Page 649: MSP430 - general.pdf

OA Introduction

22-3OA

Figure 22−1. OA Block Diagram

OAPMx

OAPx

0

1

1

OAFBRx

A12 ext. (OA0)A13 ext. (OA1)A14 ext. (OA2)

OAADC0

4R

4R

2R

2R

R

R

R

R

OAxOUT

RBOTTOM

RTOP

OAx

+

OAFCx=2 − 7

OAFBRx > 0

OAADC1OAFCx=0

OAFCx=1

RBOTTOM

OAxTAP

OAFCx=6

OAxI0OA0I1 (FG43x)

Int. DAC12_0OUT

00

01

10

11

0

1

OANx=3

00

01

10

11

OAFCx

3

NA

000

001

100

011

010

111

110

101000

001

100

011

010

111

110

101

3

OAPx=3

1

OAFCx=2,4,5,6

1

1OAFCx = 0,1,3

OAFCx = 7

reserved

AVCC

reserved

OANx

00

01

10

11

OANx

00

01

10

11

OAxI0

OAxI1

unused

OAxOUT

unused

OANx = 0

A1 int./ext., OA0O (OA0)A3 int./ext., OA1O (OA1)A5 int./ext., OA2O (OA2)

A12 int. (OA0)A13 int. (OA1)A14 int. (OA2)

Int. DAC12_1OUT

OAxI0

OAxI1

Int. DAC12_0OUT

Int. DAC12_1OUTOA1RBOTTOM (OA0)OA2RBOTTOM (OA1)OA0RBOTTOM (OA2)

OA1TAP (OA0)OA2TAP (OA1)OA0TAP (OA2)

0

1

OAADC1

OA2OUT (OA0)OA0OUT (OA1)OA1OUT (OA2)

OAxI1 (FG461x)

Page 650: MSP430 - general.pdf

OA Operation

22-4 OA

22.2 OA Operation

The OA module is configured with user software. The setup and operation ofthe OA is discussed in the following sections.

22.2.1 OA Amplifier

The OA is a configurable low-current rail-to-rail operational amplifier. It can beconfigured as an inverting amplifier or a non-inverting amplifier, or it can becombined with other OA modules to form differential amplifiers. The outputslew rate of the OA can be configured for optimized settling time vs powerconsumption with the OAPMx bits. When OAPMx = 00, the OA is off, and theoutput is high-impedance. When OAPMx > 0, the OA is on. See thedevice-specific data sheet for parameters.

22.2.2 OA Input

The OA has configurable input selection. The signals for the + and − inputs areindividually selected with the OANx and OAPx bits and can be selected asexternal signals or internal signals from one of the DAC12 modules. One of thenon-inverting inputs is tied together internally for all OA modules.

The OA input signal swing is software selectable with the OARRIP bit. WhenOARRIP = 0, rail-to-rail input mode is selected, and the OA uses higherquiescent current. See the device data sheet for parameters.

22.2.3 OA Output

The OA has configurable output selection. The OA output signals can berouted to ADC12 inputs A12 (OA0), A13 (OA1), or A14 (OA2) with theOAADC0 bit. When OAADC0 = 1 and OAPMx > 0, the OA output is connectedinternally to the corresponding ADC input, and the external ADC input is notconnected. The OA output signals can also be routed to ADC12 inputs A1(OA0), A3 (OA1), or A5 (OA2) when OAFCx = 0 or when OAADC1 = 1. In thiscase, the OA output is connected to both the ADC12 input internally and thecorresponding pin on the device. The OA output is also connected to aninternal R-ladder with the OAFCx bits. The R-ladder tap is selected with theOAFBRx bits to provide programmable gain amplifier functionality.

Page 651: MSP430 - general.pdf

OA Operation

22-5OA

22.2.4 OA Configurations

The OA can be configured for different amplifier functions with the OAFCx bits.as listed in Table 22−1.

Table 22−1.OA Mode Select

OAFCx OA Mode

000 General-purpose op amp

001 Unity gain buffer

010 Reserved

011 Comparator

100 Non-inverting PGA amplifier

101 Reserved

110 Inverting PGA amplifier

111 Differential amplifier

General-Purpose Opamp Mode

In this mode, the feedback resistor ladder is isolated from the OAx, and theOAxCTL0 bits define the signal routing. The OAx inputs are selected with theOAPx and OANx bits. The OAx output is connected internally to the ADC12input channel as selected by the OAxCTL0 bits.

Unity Gain Mode

In this mode, the output of the OAx is connected to RBOTTOM, and the invertinginput of the OAx providing a unity-gain buffer. The non-inverting input isselected by the OAPx bits. The external connection for the inverting input isdisabled, and the OANx bits are don’t care. The OAx output is connectedinternally to the ADC12 input channel as selected by the OAxCTL0 bits.

Comparator Mode

In this mode, the output of the OAx is isolated from the resistor ladder. RTOPis connected to AVSS, and RBOTTOM is connected to AVCC. The OAxTAP signalis connected to the inverting input of the OAx, providing a comparator with aprogrammable threshold voltage selected by the OAFBRx bits. Thenon-inverting input is selected by the OAPx bits. Hysteresis can be added byan external positive feedback resistor. The external connection for theinverting input is disabled, and the OANx bits are don’t care. The OAx outputis connected internally to the ADC12 input channel as selected by theOAxCTL0 bits.

Page 652: MSP430 - general.pdf

OA Operation

22-6 OA

Non-Inverting PGA Mode

In this mode, the output of the OAx is connected to RTOP, and RBOTTOM isconnected to AVSS. The OAxTAP signal is connected to the inverting input ofthe OAx, providing a non-inverting amplifier configuration with aprogrammable gain of [1+ OAxTAP ratio]. The OAxTAP ratio is selected by theOAFBRx bits. If the OAFBRx bits = 0, the gain is unity. The non-inverting inputis selected by the OAPx bits. The external connection for the inverting inputis disabled, and the OANx bits are don’t care. The OAx output is connectedinternally to the ADC12 input channel as selected by the OAxCTL0 bits.

Inverting PGA Mode

In this mode, the output of the OAx is connected to RTOP, and RBOTTOM isconnected to an analog multiplexer that multiplexes the OAxI0, OAxI1, or theoutput of one of the remaining OAs, selected with the OANx bits. The OAxTAPsignal is connected to the inverting input of the OAx, providing an invertingamplifier with a gain of −OAxTAP ratio. The OAxTAP ratio is selected by theOAFBRx bits. The non-inverting input is selected by the OAPx bits. The OAxoutput is connected internally to the ADC12 input channel as selected by theOAxCTL0 bits.

Differential Amplifier Mode

This mode allows internal routing of the OA signals for a two-opamp orthree-opamp instrumentation amplifier. Figure 22−2 shows a two-opampconfiguration with OA0 and OA1. In this mode, the output of the OAx isconnected to RTOP by routing through another OAx in the Inverting PGA mode.RBOTTOM is unconnected, providing a unity-gain buffer. This buffer iscombined with one or two remaining OAx modules to form the differentialamplifier. The OAx output is connected internally to the ADC12 input channelas selected by the OAxCTL0 bits.

Page 653: MSP430 - general.pdf

OA Operation

22-7OA

Figure 22−2 shows an example of a two-opamp differential amplifier usingOA0 and OA1. The control register settings and are shown in Table 22−2. Thegain for the amplifier is selected by the OAFBRx bits for OA1 and is shown inTable 22−3. The OAx interconnections are shown in Figure 22−3.

Table 22−2.Two-Opamp Differential Amplifier Control Register Settings

Register Settings (Binary)

OA0CTL0 00 xx xx 0 0

OA0CTL1 000 111 0 x

OA1CTL0 10 xx xx x x

OA1CTL1 xxx 110 0 x

Table 22−3.Two-Opamp Differential Amplifier Gain Settings

OA1 OAFBRx Gain

000 0

001 1/3

010 1

011 1 2/3

100 3

101 4 1/3

110 7

111 15

Figure 22−2. Two Opamp Differential Amplifier

OA0

+

OA1

+

1

2)12(

R

xRVVVdiff

−=

R2R1

V2

V1

Page 654: MSP430 - general.pdf

OA Operation

22-8 OA

Figure 22−3. Two Opamp Differential Amplifier OAx Interconnections

OAPx

00

01

10

11

OAPMx

0

1

1

OAFBRx

A13 ext.

OAADC0

4R

4R

2R

2R

R

R

R

R

OA1

+

OAADC10

1

00

01

10

11

000

001

100

011

010

111

110

101000

001

100

011

010

111

110

101

3

00

01

10

11

A3 int./ext., OA1O

A13 int.

0

1

OAADC1

OAPMx

OAPx

OA0OUT

OA0

+

00

01

10

11

0

1

00

01

10

11

000

001

100

011

010

111

110

101

OA1RBOTTOM

V2

V1

Page 655: MSP430 - general.pdf

OA Operation

22-9OA

Figure 22−4 shows an example of a three-opamp differential amplifier usingOA0, OA1, and OA2. The control register settings are shown in Table 22−4.The gain for the amplifier is selected by the OAFBRx bits of OA0 and OA2. TheOAFBRx settings for both OA0 and OA2 must be equal. The gain settings areshown in Table 22−5. The OAx interconnections are shown in Figure 22−5.

Table 22−4.Three-Opamp Differential Amplifier Control Register Settings

Register Settings (Binary)

OA0CTL0 00 xx xx 0 0

OA0CTL1 xxx 001 0 x

OA1CTL0 00 xx xx 0 0

OA1CTL1 000 111 0 x

OA2CTL0 11 11 xx x x

OA2CTL1 xxx 110 0 x

Table 22−5.Three-Opamp Differential Amplifier Gain Settings

OA0/OA2 OAFBRx Gain

000 0

001 1/3

010 1

011 1 2/3

100 3

101 4 1/3

110 7

111 15

Figure 22−4. Three-Opamp Differential Amplifier

OA1

+

OA2

+

1

2)12(

R

xRVVVdiff

−=

R2R1

V2

V1

OA0

+

R2R1

Page 656: MSP430 - general.pdf

OA Operation

22-10 OA

Figure 22−5. Three-Opamp Differential Amplifier OAx Interconnections

OAPMx

OAPx

OAFBRx

4R

4R

2R

2R

R

R

R

R

OA0OUT

OA0RBOTTOM

OA0

+

OA0TAP

00

01

10

11

0

1

00

01

10

11

000

001

100

011

010

111

110

101000

001

100

011

010

111

110

101

3

OAPMx

0

1

1

OAFBRx

A14 ext.

OAADC0

4R

4R

2R

2R

R

R

R

R

OA2

+

OAADC10

1

00

01

10

11

000

001

100

011

010

111

110

101000

001

100

011

010

111

110

101

3

00

01

10

11

A5 int./ext., OA2O

A14 int.

OA0TAP 0

1

OAADC1

OA1OUT

OAPMx

OAPx

OA1

+

00

01

10

11

0

1

00

01

10

11

000

001

100

011

010

111

110

101

OA2RBOTTOM

V2

V1

Page 657: MSP430 - general.pdf

OA Modules in MSP430FG42x0 Devices

22-11OA

22.3 OA Modules in MSP430FG42x0 Devices

In MSP430FG42x0 devices, two operational amplifiers, a DAC, and asigma-delta converter are combined into a measurement front end. TheDAC12 module and the SD16A_1 module are described in separate chapters.

The block diagram of the operational amplifier is shown in Figure 22−6.

Figure 22−6. FG42x0 Operational Amplifiers Block Diagram

OAPMx

OAPx

OAx

+

OAFCx=001

OAxI0

OA0I0

Int. DAC12

00

01

10

11

0

1

0

1

OAFCx

OANx

00

01

10

11

OA0OUT/A0+ (OA0)OA1OUT/A1+ (OA1)

OAxI1

OAxI2

Int. DAC12

3

000

001

101

...

111

110

reserved

unused

unused

reserved

unused

OAN0OA0FB/A0− (OA0)OA1FB/A1− (OA1)

1SWCTL3 (OA0)SWCTL7 (OA1)

1

0

OACAL

Int. SD16_A.A0− (OA0)Int. SD16_A.A1− (OA1)

OAxP

SWCTL2 (OA0)SWCTL6 (OA1)

SWxC1

2 SWCTL0/1 (OA0)SWCTL6/7 (OA1)

Page 658: MSP430 - general.pdf

OA Modules in MSP430FG42x0 Devices

22-12 OA

22.3.1 OA Amplifier

Each OA is a configurable low-current operational amplifier that can beconfigured as an inverting amplifier or a non-inverting amplifier.

22.3.2 OA Inputs

The OA has configurable input selection. The signals for the + and − inputs areindividually selected with the OANx and OAPx bits and can be selected asexternal signals or internal signals from the DAC12 modules or VSS. One ofthe non-inverting inputs (OA0I0) is tied together internally for all OA modules.

The SWCTL0, SWCTL1, SWCTL4, and SWCTL5 bits force settings of theOANx and OAPx bits. See section Switch Control for more details.

22.3.3 OA Outputs

The OA outputs are routed to the respective output pin OAxOUT and thepositive SD16_A inputs A0+ (OA0), or A1+ (OA1).

22.3.4 OA Configurations

The OA can be configured for different amplifier functions with the OAFCx bitsas listed in Table 22−6. The SWCTL0, SWCTL1, SWCTL4, and SWCTL5 bitsforce settings of the OAFCx bits. See section Switch Control for more details.

Table 22−6.FG42x0 OA Mode Select

OAFCx OA Mode

000 General-purpose opamp

001 Unity gain buffer

010 Reserved

011 Reserved

100 Reserved

101 Reserved

110 Inverting amplifier

111 Reserved

General-Purpose Opamp Mode

In this mode, the OAx inputs are selected with the OAPx and OANx bits. TheOAx output is connected to the output pin and to the SD16_A input. Anyfeedback needs to be done externally from the output pins OAxOUT to one ofthe input pins OAxI0 to OAxI2.

Page 659: MSP430 - general.pdf

OA Modules in MSP430FG42x0 Devices

22-13OA

Unity-Gain Mode

In this mode, the output of the OAx is connected directly to the inverting inputof the OAx providing a unity-gain buffer. The non-inverting input is selected bythe OAPx bits. The external connection for the inverting input is disabled, andthe OANx bits are don’t care.

Inverting Amplifier Mode

In this mode, an additional feedback connection is provided as shown inFigure 22−7. The OANx bits select the inverting input signal, which is alsoconnected to the feedback input and to the negative SD16_A input. Thecircuitry shown in Figure 22−7 mimics a low resistive multiplexer between theinputs OAxI1 and OAxI2. Because the current into the negative terminal ofoperational amplifier is very low, the voltage drop over the negative inputmultiplexer can be neglected. The multiplexer connecting the input OAxI1 orOAxI2 to the feedback path is included in the feedback loop, thuscompensating for the voltage drop across this multiplexer. This mode isespecially useful for transimpedance amplifiers as shown in Figure 22−12.

The non-inverting input is selected by the OAPx bits. The OAx output isconnected to the output pin and to the positive SD16_A input.

Figure 22−7. Inverting Amplifier Configuration

OAPMx

OAPx

OAx

+

0

1

OANx

00

01

10

11

OA0OUT/A0+ (OA0)OA1OUT/A1+ (OA1)

OAxI1

OAxI2

OA0FB/A0− (OA0)OA1FB/A1− (OA1)

Page 660: MSP430 - general.pdf

OA Modules in MSP430FG42x0 Devices

22-14 OA

Figure 22−8. Transimpedance Amplifier With Two Current Inputs

OAx

+

OA0OUT/A0+ (OA0)OA1OUT/A1+ (OA1)

OAxI1 OA0FB/A0− (OA0)OA1FB/A1− (OA1)

OAxI2

to SD16_A

I1

I2

RFBOANx

00

01

10

11

OAPx

00

01

10

11

DAC12

22.3.5 Switch Control

The switch control register SWCTL controls the low resistive switches toground SW0C and SW1C as well as simplifies the operation of the operationalamplifier as transimpedance amplifier.

SWCTL2 closes the switch SW0C to ground, and SWCTL6 closes the switchSW1C. SWCTL3 shorts the external feedback resistor for OA0, and SWCTL7shorts the external feedback resistor for OA1. SWCTL0 and SWCTL1 selectthe negative analog input to the transimpedance amplifier OA0, and SWCTL4and SWCTL5 select them for OA1 as shown in Table 22−9.

Table 22−7.Input Control of Transimpedance Amplifier

SWCTL0 (OA0)SWCTL4 (OA1)

SWCTL1 (OA0)SWCTL5 (OA1) Forced Settings

1 0 OANx = 00OAFCx = 110

0 1 OANx = 01OAFCx = 110

0 0 No forced settings

1 1 No forced settings

Page 661: MSP430 - general.pdf

OA Modules in MSP430FG42x0 Devices

22-15OA

22.3.6 Offset Calibration

Figure 22−9 shows the configuration for the offset measurement. To measurethe offset of the operational amplifier OAx, the unity-gain buffer mode needsto be selected with OAFCx = 001, and the positive input of the amplifier needsto be connected to the negative input of the sigma-delta ADC by setting thecalibration bit OACAL. The voltage that can be measured between thenegative and the positive SD16_A input represents the offset voltage of theoperational amplifier. The measurement result can be incorporated into thelater measurement results to compensate for the offset of the amplifier.

Figure 22−9. Offset Calibration

OAx

+

A0+ (OA0)A1+ (OA1)

A0− (OA0)A1− (OA1)

1

OACAL

0

to SD16_AVOffset

OAPx

OAxI0

OA0I0

Int. DAC12

00

01

10

11

Page 662: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-16 OA

22.4 OA Modules in MSP430FG47x Devices

In the MSP430FG47x devices, two operational amplifiers, two DAC modules,and a sigma-delta converter are combined into a measurement front end. TheDAC12 modules and the SD16_A module are described in separate chapters.

The block diagram of the operational amplifier is shown in Figure 22−10.

Page 663: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-17OA

Figure 22--10. MSP430FG47x Operational Amplifiers 0/1 (OA0/1) Block Diagram

+

-

OAPMx

OAxI0

DAC12_xSee Note 1

Vss

SWCTLxOAPx

32

OAxI1

OAxI2

OAxI3

int. DAC12_x

OAFCx = 110

OAFCx = 001

OAFCx = 110 & SWCTL9 (OA0)OAFCx = 110 & SWCTL13 (OA1)

OAxFB

OAxRFB

SWCTL3 (OA0)SWCTL7 (OA1)

1 0

SWCTLxOANx

32OAxO/Ax+

OACALx

to Ax-

DAC12OPSx

OA0I0

OAx

00

01

10

11

Control logic

00

01

10

11

00

01

10

00

01

10

0

1

1

0

1

0

Control logic

1

0

1

0

+

-

Note 1: DAC12_0 is routed to OA1. DAC12_1 is routed to OA0 only if DAC12OPS1 = 0.

Page 664: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-18 OA

22.4.1 OA Amplifier

Each OA is a configurable low-current operational amplifier that can beconfigured as an inverting amplifier or a non-inverting amplifier.

22.4.2 OA Inputs

The OA has configurable input selection. The signals for the + and − inputs areindividually selected with the OANx and OAPx bits and can be selected asexternal signals or internal signals from the DAC12 module. One of thenon-inverting inputs (OA0I0) is tied together internally for both OA modules.

The SWCTL0, SWCTL1, SWCTL4, SWCTL5, SWCTL8, and SWCTL12 bitsoverwrite settings given by the OANx and OAPx bits. See section SwitchControl for more details. Also the untiy gain buffer mode sets the input for the−input of the OAx module to the OAx output.

22.4.3 OA Outputs

The OA outputs are routed to the respective output pin OAxOUT and thepositive SD16_A inputs A0+ (OA0), or A1+ (OA1).

22.4.4 OA Configurations

The OA can be configured for different amplifier functions with the OAFCx bitsas listed in Table 22−8. The SWCTL0, SWCTL1, SWCTL4, SWCTL5,SWCTL8, and SWCTL12 bits force settings of the OAFCx bits. See sectionSwitch Control for more details.

Table 22−8.MSP430FG47x OAx Mode Select

OAFCx OAx Mode

000 General-purpose op amp

001 Unity-gain buffer

010 Reserved

011 Reserved

100 Reserved

101 Reserved

110 Inverting amplifier

111 Reserved

General-Purpose Opamp Mode

In this mode the OAx inputs are selected with the OAPx and OANx bits. TheOAx output is connected to the output pin and to the SD16_A inputs. Anyfeedback needs to be done externally from the output pins OAxOUT to one ofthe input pins OAxI0 to OAxI3.

Page 665: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-19OA

Unity Gain Mode

In this mode the output of the OAx is connected directly to the inverting inputof the OAx providing a unity gain buffer. The non-inverting input is selected bythe OAPx bits. The external connection for the inverting input is disabled andthe OANx bits are don’t care.

Inverting Amplifier Mode

In this mode an additional feedback connection is provided as shown inFigure 22−11. The OANx bits select the inverting input signal, which is alsoconnected to the feedback input and to the negative SD16_A input. Thecircuitry shown in Figure 22−11 mimics a low resistive multiplexer between theinputs OAxI1 and OAxI2. Because the current into the negative terminal ofoperational amplifier is very low, the voltage drop over the negative inputmultiplexer can be neglected. The multiplexer connecting the input OAxI1 orOAxI2 to the feedback path is included in the feedback loop, thuscompensating for the voltage drop across this multiplexer. This mode isespecially useful for transimpedance amplifiers as shown in Figure 22−12.

The non-inverting input is selected by the OAPx bits. The OAx output isconnected to the output pin and to the positive SD16_A input.

Page 666: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-20 OA

Figure 22--11.Inverting Amplifier Configuration

OAx+

-

OAPMx

00

01

10

11

OAxI1

OAxI2

OAxI3

int. DAC12_x

00

01

10

00

01

10

1

0

SWCTL9 (OA0)SWCTL13 (OA1)

OAxFB

OAxRFB

SWCTLx

Control logic

OANx

32OAxO/Ax+

Page 667: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-21OA

Figure 22--12. Transimpedance Amplifier With Three Current Inputs

O A x+

-

O A P M x

0 0

0 1

1 0

1 1

D A C 1 2 _ xS ee N o te 1

V ss

S W C T L x

C o n tro l lo g ic

O A P x

32

0 0

0 1

1 0

1 1

O A x I1

O A x I2

O A x I3

S W C T L x

C o n tro l lo g ic

O A N x

32

O A xO /A x+

to S D 1 6 _

1

0

D A C 1 2 O P S x

O A xF B /A x -

N o te 1 : D A C 1 2 _ 0 is ro u te d to O A 1 . D A C 1 2 _ 1 is ro u te d to O A 0 o n ly if D A C 1 2 O P S 1 = 0 .

Page 668: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-22 OA

22.4.5 Switch Control of the FG47x devices

The switch control register OASWCTL0 simplifies the operation of theoperational amplifier.

SWCTL3 shorts the external feedback resistor for OA0 and SWCTL7 shortsthe external feedback resistor for OA1. SWCTL0 and SWCTL1 select thenegative analog input to the transimpedance amplifier OA0, SWCTL4 andSWCTL5 select them for OA1 as shown in Table 22−9.

Table 22−9.Input Control of Transimpedance Amplifier

OASWCTL0 Forced Settings Description

SWCTLx BIT OAFCx OANx

p

0 8 110 00 Selects channel 0 at the − terminal of OA0.

1 9 110 01 Selects channel 1 at the − terminal of OA0.

2 10 − − Reserved.

3 11 − − OA0OUT and OA0FB are shorted.

4 12 110 00 Selects channel 0 at the − terminal of OA1.

5 13 110 01 Selects channel 1 at the − terminal of OA1.

6 14 − − Reserved.

7 15 − − OA1OUT and OA1FB are shorted.

8 0 110 10 Selects channel 2 at the − terminal of OA0.

9 1 − − Range switch control of OA0 (OA0RFB).

10 2 − − Reserved.

11 3 − − Reserved

12 4 110 10 Selects channel 2 at the − terminal of OA1.

13 5 − − Range switch control of OA1 (OA1RFB).

14 6 − − Reserved.

15 7 − − Reserved

Page 669: MSP430 - general.pdf

OA Modules in MSP430FG47x Devices

22-23OA

22.4.6 Offset Calibration

Figure 22−9 shows the configuration for the offset measurement. To measurethe offset of the operational amplifier OAx the OAxCAL bit must be set. Thevoltage that can be measured between the negative and the positive SD16_Ainput represents the offset voltage of the operational amplifier. Themeasurement result can be incorporated into the later measurement resultsto compensate for the offset of the amplifier. For both OA modules theDAC12OPS bit of DAC12_0 module selects if the internal or the externalDAC12_x is used.

Figure 22−13. Offset Calibration

OAx

+

A0+ (OA0)A1+ (OA1)

A0− (OA0)A1− (OA1)

1

OACALx

0

to SD16_AVOffset

OAPx

DAC 12_x

00

01

10

11

Page 670: MSP430 - general.pdf

OA Registers

22-24 OA

22.5 OA Registers

The OA registers are listed in Table 22−10.

Table 22−10. OA Registers

Register Short Form Register Type Address Initial State

OA0 control register 0 OA0CTL0 Read/write 0C0h Reset with PUC

OA0 control register 1 OA0CTL1 Read/write 0C1h Reset with PUC

OA1 control register 0 OA1CTL0 Read/write 0C2h Reset with PUC

OA1 control register 1 OA1CTL1 Read/write 0C3h Reset with PUC

OA2 control register 0 OA2CTL0 Read/write 0C4h Reset with PUC

OA2 control register 1 OA2CTL1 Read/write 0C5h Reset with PUC

Page 671: MSP430 - general.pdf

OA Registers

22-25OA

OAxCTL0, Opamp Control Register 0

7 6 5 4 3 2 1 0

OANx OAPx OAPMx OAADC1 OAADC0

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

OANx Bits7-6

Inverting input select. These bits select the input signal for the OA invertinginput.00 OAxI001 OAxI110 DAC0 internal11 DAC1 internal

OAPx Bits5-4

Non-inverting input select. These bits select the input signal for the OAnon-inverting input.00 OAxI001 OA0I110 DAC0 internal11 DAC1 internal

OAPMx Bits3-2

Slew rate select These bits select the slew rate vs. current consumption forthe OA.00 Off, output high Z01 Slow10 Medium11 Fast

OAADC1 Bit 1 OA output select. This bit connects the OAx output to ADC12 input Ax andoutput pin OAxO when OAFCx > 0.0 OAx output not connected to internal/external A1 (OA0), A3 (OA1), or

A5 (OA2) signals1 OAx output connected to internal/external A1 (OA0), A3 (OA1), or A5

(OA2) signals

OAADC0 Bit 0 OA output select. This bit connects the OAx output to ADC12 input Axwhen OAPMx > 0.0 OAx output not connected to internal A12 (OA0), A13 (OA1), or A14

(OA2) signals1 OAx output connected to internal A12 (OA0), A13 (OA1), or A14

(OA2) signals

Page 672: MSP430 - general.pdf

OA Registers

22-26 OA

OAxCTL1, Opamp Control Register 1

7 6 5 4 3 2 1 0

OAFBRx OAFCx Reserved OARRIP

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

OAFBRx Bits7-5

OAx feedback resistor select000 Tap 0001 Tap 1010 Tap 2011 Tap 3100 Tap 4101 Tap 5110 Tap 6111 Tap 7

OAFCx Bits4-2

OAx function control. This bit selects the function of OAx000 General purpose001 Unity gain buffer010 Reserved011 Comparing amplifier100 Non-inverting PGA101 Reserved110 Inverting PGA111 Differential amplifier

Reserved Bit 1 Reserved

OARRIP Bit 0 OA rail-to-rail input off.0 OAx input signal range is rail-to-rail1 OAx input signal range is limited. See the device-specific data sheet

for parameters.

Page 673: MSP430 - general.pdf

OA Registers in MSP430FG42x0 Devices

22-27OA

22.6 OA Registers in MSP430FG42x0 Devices

The OA registers are listed in Table 22−10.

Table 22−11. OA Registers

Register Short Form Register Type Address Initial State

OA0 control register 0 OA0CTL0 Read/write 0C0h Reset with PUC

OA0 control register 1 OA0CTL1 Read/write 0C1h Reset with PUC

OA1 control register 0 OA1CTL0 Read/write 0C2h Reset with PUC

OA1 control register 1 OA1CTL1 Read/write 0C3h Reset with PUC

Switch control register SWCTL Read/write 0CFh Reset with PUC

Page 674: MSP430 - general.pdf

OA Registers in MSP430FG42x0 Devices

22-28 OA

OAxCTL0, Opamp Control Register 0

7 6 5 4 3 2 1 0

OANx OAPx OAPMx Reserved Reserved

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

OANx Bits7−6

Inverting input selectThese bits select the input signal for the OAx inverting input.00 OAxI101 OAxI210 DAC internal11 VSS

OAPx Bits5−4

Non-inverting input selectThese bits select the input signal for the OAx non-inverting input.00 OAxI001 OA0I010 DAC internal11 VSS

OAPMx Bits3−2

Slew rate selectThese bits select the slew rate vs. current consumption of the OAx.00 Off, output high Z01 Slow10 Medium11 Fast

Reserved Bits1−0

Reserved

Page 675: MSP430 - general.pdf

OA Registers in MSP430FG42x0 Devices

22-29OA

OAxCTL1, Opamp Control Register 1

7 6 5 4 3 2 1 0

Reserved OAFCx OACAL Reserved

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Reserved Bits7−5

Reserved

OAFCx Bit 4−2 OAx function controlThese bits select the function of OAx000 General purpose001 Unity gain buffer010 Reserved011 Reserved100 Reserved101 Reserved110 Inverting amplifier111 Reserved

OACAL Bit 1 Offset calibrationThis bit enables the offset calibration.0 Offset calibration disabled1 Offset calibration enabled

Reserved Bit 0 Reserved

Page 676: MSP430 - general.pdf

OA Registers in MSP430FG42x0 Devices

22-30 OA

SWCTL, Switch Control Register

7 6 5 4 3 2 1 0

SWCTL7 SWCTL6 SWCTL5 SWCTL4 SWCTL3 SWCTL2 SWCTL1 SWCTL0

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SWCTL7 Bit 7 Shunt switch for OA10 Switch open1 OA1OUT and OA1FB shorted together

SWCTL6 Bit 6 SW1C control0 Switch open1 SW1C shorted to VSS

SWCTL5,SWCTL4

Bits5−4

OANx and OAFCx forced settings for OA100 No forced settings01 OANx forced to 00; OAFCx forced to 110.10 OANx forced to 01; OAFCx forced to 110.11 No forced settings

SWCTL3 Bit 3 Shunt switch for OA00 Switch open1 OA0OUT and OA0FB shorted together

SWCTL2 Bit 2 SW0C control0 Switch open1 SW0C shorted to VSS

SWCTL1,SWCTL0

Bits1−0

OANx and OAFCx forced settings for OA000 No forced settings01 OANx forced to 00; OAFCx forced to 110.10 OANx forced to 01; OAFCx forced to 110.11 No forced settings

Page 677: MSP430 - general.pdf

OA Registers in MSP430FG47x Devices

22-31OA

22.7 OA Registers in MSP430FG47x Devices

The OA registers are listed in Table 22−12.

Table 22−12. OA Registers

Register Short Form Register Type Address Initial State

OA0 control register 0 OA0CTL0 Read/write 0C0h Reset with PUC

OA0 control register 1 OA0CTL1 Read/write 0C1h Reset with PUC

OA1 control register 0 OA1CTL0 Read/write 0C2h Reset with PUC

OA1 control register 1 OA1CTL1 Read/write 0C3h Reset with PUC

OA Switch control register high byte OASWCTL_H Read/write 0CEh Reset with PUC

OA Switch control register low byte OASWCTL_L Read/write 0CFh Reset with PUC

OA switch control register word OASWCTL0 Read/write 0CEh Reset with PUC

Page 678: MSP430 - general.pdf

OA Registers in MSP430FG47x Devices

22-32 OA

OAxCTL0, Opamp Control Register 0

7 6 5 4 3 2 1 0

OANx OAPx OAPMx Reserved Reserved

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r−0 r−0

OANx Bits7−6

Inverting input selectThese bits select the input signal for the OAx inverting input.00 OAxI101 OAxI210 OAxI311 DAC12_0 (OA0), DAC12_1 (OA1) if the DAC12OPS bits are cleared.

OAPx Bits5−4

Non-inverting input selectThese bits select the input signal for the OAx non-inverting input.00 OAxI001 OA0I0 if DAC12OPS is set. If DAC12OPS is 0 then DAC12_0 (OA0)/

DAC12_1 (OA1) is used.10 DAC12_1 (OA0)/ DAC12_0 (OA1)11 VSS

OAPMx Bits3−2

Slew rate selectThese bits select the slew rate vs. current consumption of the OAx.00 Off, output high Z01 Slow10 Medium11 Fast

Reserved Bits1−0

Reserved

Page 679: MSP430 - general.pdf

OA Registers in MSP430FG47x Devices

22-33OA

OAxCTL1, Opamp Control Register 1

7 6 5 4 3 2 1 0

Reserved OAFCx OACAL Reserved

r−0 r−0 r−0 rw−0 rw−0 rw−0 rw−0 r−0

Reserved Bits7−5

Reserved

OAFCx Bit 4−2 OAx function controlThese bits select the function of OAx000 General purpose001 Unity gain buffer010 Reserved011 Reserved100 Reserved101 Reserved110 Inverting amplifier111 Reserved

OACAL Bit 1 Offset calibrationThis bit enables the offset calibration.0 Offset calibration disabled1 Offset calibration enabled

Reserved Bit 0 Reserved

Page 680: MSP430 - general.pdf

OA Registers in MSP430FG47x Devices

22-34 OA

OASWCTL0, Switch Control Register 0

15 14 13 12 11 10 9 8

SWCTL7 Reserved SWCTL5 SWCTL4 SWCTL3 Reserved SWCTL1 SWCTL0

rw−0 r−0 rw−0 rw−0 rw−0 r−0 rw−0 rw−0

7 6 5 4 3 2 1 0

Reserved Reserved SWCTL13 SWCTL12 Reserved Reserved SWCTL9 SWCTL8

r−0 r−0 rw−0 rw−0 r−0 r−0 rw−0 rw−0

SWCTL7 Bit 15 Shunt switch for OA10 Switch open1 OA1OUT and OA1FB shorted together

Reserved Bit 14 Reserved

SWCTL5 Bit 13 OANx and OAFCx forced settings for OA10 No forced settings1 OA1I2 enabled; OAFCx forced to 110.

SWCTL4 Bit 12 OANx and OAFCx forced settings for OA10 No forced settings1 OA1I1 enabled; OAFCx forced to 110.

SWCTL3 Bit 11 Shunt switch for OA00 Switch open1 OA0OUT and OA0FB shorted together

Reserved Bit 10 Reserved

SWCTL1 Bit 9 OANx and OAFCx forced settings for OA00 No forced settings1 OA0I2 enabled; OAFCx forced to 110.

SWCTL0 Bit 8 OANx and OAFCx forced settings for OA00 No forced settings1 OA0I1 enabled; OAFCx forced to 110.

Reserved Bits7−6

Reserved

SWCTL13 Bit 5 Range switch control for OA10 Switch open1 Switch closed.

SWCTL12 Bit 4 OANx and OAFCx forced settings for OA10 No forced settings1 OA1I3 enabled; OAFCx forced to 110.

Reserved Bits3−2

Reserved

Page 681: MSP430 - general.pdf

OA Registers in MSP430FG47x Devices

22-35OA

SWCTL9 Bit 1 Range feedback switch control for OA00 Switch open1 Switch closed.

SWCTL8 Bit 0 OANx and OAFCx forced settings for OA00 No forced settings1 OA0I3 enabled; OAFCx forced to 110.

Page 682: MSP430 - general.pdf

22-36 OA

Page 683: MSP430 - general.pdf

23-1Comparator_A

Comparator_A

Comparator_A is an analog voltage comparator. This chapter describesComparator_A. Comparator_A is implemented in all MSP430x4xx devices.

Topic Page

23.1 Comparator_A Introduction 23-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23.2 Comparator_A Operation 23-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23.3 Comparator_A Registers 23-9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 23

Page 684: MSP430 - general.pdf

Comparator_A Introduction

23-2 Comparator_A

23.1 Comparator_A Introduction

The comparator_A module supports precision slope analog-to-digitalconversions, supply voltage supervision, and monitoring of external analogsignals.

Features of Comparator_A include:

Inverting and non-inverting terminal input multiplexer

Software selectable RC-filter for the comparator output

Output provided to Timer_A capture input

Software control of the port input buffer

Interrupt capability

Selectable reference voltage generator

Comparator and reference generator can be powered down

The Comparator_A block diagram is shown in Figure 23−1.

Page 685: MSP430 - general.pdf

Comparator_A Introduction

23-3Comparator_A

Figure 23−1. Comparator_A Block Diagram

CAOUT

+

CAEX

0.5x

0.25x

Set_CAIFGCA1

CCI1B+

0V

GDS

P2CA0

P2CA1

CAF

CARSEL

CAON

CAREFx

1 0

00

01

10

11

00

01

10

11

1

0

1

0

1

0

1

0

1

0

0V

1 0

VCAREF

CA0

0

1

0

1

VCC

VCC

VCC

Tau ~ 2.0s

Page 686: MSP430 - general.pdf

Comparator_A Operation

23-4 Comparator_A

23.2 Comparator_A Operation

The comparator_A module is configured with user software. The setup andoperation of comparator_A is discussed in the following sections.

23.2.1 Comparator

The comparator compares the analog voltages at the + and – input terminals.If the + terminal is more positive than the – terminal, the comparator outputCAOUT is high. The comparator can be switched on or off using control bitCAON. The comparator should be switched off when not in use to reducecurrent consumption. When the comparator is switched off, the CAOUT isalways low.

23.2.2 Input Analog Switches

The analog input switches connect or disconnect the two comparator inputterminals to associated port pins using the P2CAx bits. Both comparatorterminal inputs can be controlled individually. The P2CAx bits allow:

Application of an external signal to the + and – terminals of the comparator

Routing of an internal reference voltage to an associated output port pin

Internally, the input switch is constructed as a T-switch to suppress distortionin the signal path.

Note: Comparator Input Connection

When the comparator is on, the input terminals should be connected to asignal, power, or ground. Otherwise, floating levels may cause unexpectedinterrupts and increased current consumption.

The CAEX bit controls the input multiplexer, exchanging which input signalsare connected to the comparator’s + and – terminals. Additionally, when thecomparator terminals are exchanged, the output signal from the comparatoris inverted. This allows the user to determine or compensate for thecomparator input offset voltage.

Page 687: MSP430 - general.pdf

Comparator_A Operation

23-5Comparator_A

23.2.3 Output Filter

The output of the comparator can be used with or without internal filtering.When control bit CAF is set, the output is filtered with an on-chip RC-filter.

Any comparator output oscillates if the voltage difference across the inputterminals is small. Internal and external parasitic effects and cross coupling onand between signal lines, power supply lines, and other parts of the systemare responsible for this behavior as shown in Figure 23−2. The comparatoroutput oscillation reduces accuracy and resolution of the comparison result.Selecting the output filter can reduce errors associated with comparatoroscillation.

Figure 23−2. RC-Filter Response at the Output of the Comparator

+ Terminal

− Terminal Comparator Inputs

Comparator OutputUnfiltered at CAOUT

Comparator OutputFiltered at CAOUT

23.2.4 Voltage Reference Generator

The voltage reference generator is used to generate VCAREF, which can beapplied to either comparator input terminal. The CAREFx bits control theoutput of the voltage generator. The CARSEL bit selects the comparatorterminal to which VCAREF is applied. If external signals are applied to bothcomparator input terminals, the internal reference generator should be turnedoff to reduce current consumption. The voltage reference generator cangenerate a fraction of the device’s VCC or a fixed transistor threshold voltageof ~ 0.55 V.

Page 688: MSP430 - general.pdf

Comparator_A Operation

23-6 Comparator_A

23.2.5 Comparator_A, Port Disable Register CAPD

The comparator input and output functions are multiplexed with the associatedI/O port pins, which are digital CMOS gates. When analog signals are appliedto digital CMOS gates, parasitic current can flow from VCC to GND. Thisparasitic current occurs if the input voltage is near the transition level of thegate. Disabling the port pin buffer eliminates the parasitic current flow andtherefore reduces overall current consumption.

The CAPDx bits, when set, disable the corresponding P1 input buffer as shownin Figure 23−3. When current consumption is critical, any P1 pin connected toanalog signals should be disabled with their associated CAPDx bit.

Figure 23−3. Transfer Characteristic and Power Dissipation in a CMOS Inverter/Buffer

VCC

VSS

ICCVOVI

0 VCC

VIVCC

ICC

CAPD.x = 1

23.2.6 Comparator_A Interrupts

One interrupt flag and one interrupt vector are associated with theComparator_A as shown in Figure 23−4. The interrupt flag CAIFG is set oneither the rising or falling edge of the comparator output, selected by theCAIES bit. If both the CAIE and the GIE bits are set, then the CAIFG flaggenerates an interrupt request. The CAIFG flag is automatically reset whenthe interrupt request is serviced or may be reset with software.

Figure 23−4. Comparator_A Interrupt System

D Q IRQ, Interrupt Service Requested

Reset

VCC

POR

SET_CAIFG

IRACC, Interrupt Request Accepted

CAIE

CAIES

0

1

Page 689: MSP430 - general.pdf

Comparator_A Operation

23-7Comparator_A

23.2.7 Comparator_A Used to Measure Resistive Elements

The Comparator_A can be optimized to precisely measure resistive elementsusing single slope analog-to-digital conversion. For example, temperature canbe converted into digital data using a thermistor, by comparing the thermistor’scapacitor discharge time to that of a reference resistor as shown inFigure 23−5. A reference resister Rref is compared to Rmeas.

Figure 23−5. Temperature Measurement System

+

CA0 CCI1BCaptureInputOf Timer_A

+

Rmeas

RrefPx.x

Px.y

0.25xVCC

The MSP430 resources used to calculate the temperature sensed by Rmeasare:

Two digital I/O pins to charge and discharge the capacitor.

I/O set to output high (VCC) to charge capacitor, reset to discharge.

I/O switched to high-impedance input with CAPDx set when not in use.

One output charges and discharges the capacitor via Rref.

One output discharges capacitor via Rmeas.

The + terminal is connected to the positive terminal of the capacitor.

The – terminal is connected to a reference level, for example 0.25 x VCC.

The output filter should be used to minimize switching noise.

CAOUT used to gate Timer_A CCI1B, capturing capacitor discharge time.

More than one resistive element can be measured. Additional elements areconnected to CA0 with available I/O pins and switched to high impedancewhen not being measured.

Page 690: MSP430 - general.pdf

Comparator_A Operation

23-8 Comparator_A

The thermistor measurement is based on a ratiometric conversion principle.The ratio of two capacitor discharge times is calculated as shown inFigure 23−6.

Figure 23−6. Timing for Temperature Measurement Systems

VCVCC

0.25 × VCC

Phase I:Charge

Phase II:Discharge

Phase III:Charge

tref

Phase IV:Discharge

tmeas

t

RmeasRref

The VCC voltage and the capacitor value should remain constant during theconversion, but are not critical since they cancel in the ratio:

NmeasNref

–Rmeas C lnVrefVCC

–Rref C lnVrefVCC

NmeasNref

Rmeas

Rref

Rmeas Rref Nmeas

Nref

Page 691: MSP430 - general.pdf

Comparator_A Registers

23-9Comparator_A

23.3 Comparator_A Registers

The Comparator_A registers are listed in Table 23−1.

Table 23−1.Comparator_A Registers

Register Short Form Register Type Address Initial State

Comparator_A control register 1 CACTL1 Read/write 059h Reset with POR

Comparator_A control register 2 CACTL2 Read/write 05Ah Reset with POR

Comparator_A port disable CAPD Read/write 05Bh Reset with POR

Page 692: MSP430 - general.pdf

Comparator_A Registers

23-10 Comparator_A

CACTL1, Comparator_A Control Register 1

7 6 5 4 3 2 1 0

CAEX CARSEL CAREFx CAON CAIES CAIE CAIFG

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

CAEX Bit 7 Comparator_A exchange. This bit exchanges the comparator inputs andinverts the comparator output.

CARSEL Bit 6 Comparator_A reference select. This bit selects which terminal the VCAREFis applied to.When CAEX = 0:0 VCAREF is applied to the + terminal1 VCAREF is applied to the – terminalWhen CAEX = 1:0 VCAREF is applied to the – terminal1 VCAREF is applied to the + terminal

CAREF Bits5-4

Comparator_A reference. These bits select the reference voltage VCAREF.00 Internal reference off. An external reference can be applied.01 0.25*VCC10 0.50*VCC11 Diode reference is selected

CAON Bit 3 Comparator_A on. This bit turns on the comparator. When the comparatoris off it consumes no current. The reference circuitry is enabled or disabledindependently.0 Off1 On

CAIES Bit 2 Comparator_A interrupt edge select0 Rising edge1 Falling edge

CAIE Bit 1 Comparator_A interrupt enable0 Disabled1 Enabled

CAIFG Bit 0 The Comparator_A interrupt flag0 No interrupt pending1 Interrupt pending

Page 693: MSP430 - general.pdf

Comparator_A Registers

23-11Comparator_A

CACTL2, Comparator_A Control Register 2

7 6 5 4 3 2 1 0

Unused P2CA1 P2CA0 CAF CAOUT

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r−(0)

Unused Bits7-4

Unused.

P2CA1 Bit 3 Pin to CA1. This bit selects the CA1 pin function.0 The pin is not connected to CA11 The pin is connected to CA1

P2CA0 Bit 2 Pin to CA0. This bit selects the CA0 pin function.0 The pin is not connected to CA01 The pin is connected to CA0

CAF Bit 1 Comparator_A output filter0 Comparator_A output is not filtered1 Comparator_A output is filtered

CAOUT Bit 0 Comparator_A output. This bit reflects the value of the comparator output.Writing this bit has no effect.

CAPD, Comparator_A Port Disable Register

7 6 5 4 3 2 1 0

CAPD7 CAPD6 CAPD5 CAPD4 CAPD3 CAPD2 CAPD1 CAPD0

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

CAPDx Bits7-0

Comparator_A port disable. These bits individually disable the input bufferfor the pins of the port associated with Comparator_A. For example, theCAPDx bits can be used to individually enable or disable each P1.x pinbuffer. CAPD0 disables P1.0, CAPD1 disables P1.1, etc.0 The input buffer is enabled.1 The input buffer is disabled.

Page 694: MSP430 - general.pdf

23-12 Comparator_A

Page 695: MSP430 - general.pdf

24-1Comparator_A+

Comparator_A+

Comparator_A+ is an analog voltage comparator. This chapter describes theoperation of the Comparator_A+ of the 4xx family. It is available on theMSP430F41x2 devices.

Topic Page

24.1 Comparator_A+ Introduction 24-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24.2 Comparator_A+ Operation 24-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24.3 Comparator_A+ Registers 24-10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 24

Page 696: MSP430 - general.pdf

Comparator_A+ Introduction

24-2 Comparator_A+

24.1 Comparator_A+ Introduction

The Comparator_A+ module supports precision slope analog-to-digitalconversions, supply voltage supervision, and monitoring of external analogsignals.

Features of Comparator_A+ include:

Inverting and non-inverting terminal input multiplexer

Software selectable RC-filter for the comparator output

Output provided to Timer_A capture input

Software control of the port input buffer

Interrupt capability

Selectable reference voltage generator

Comparator and reference generator can be powered down

Input Multiplexer

The Comparator_A+ block diagram is shown in Figure 24−1.

Page 697: MSP430 - general.pdf

Comparator_A+ Introduction

24-3Comparator_A+

Figure 24−1. Comparator_A+ Block Diagram

CA1

CA2

CA3

CA4

CA5

CA6

CA7

CAOUT

+

CAEX

0.5xVCC

0.25xVCC

Set_CAIFG

CCI1B+

0V

GDS

P2CA0

CAF

CARSEL

CAON

CAREFx

1 0

00

01

10

11

00

01

10

11

1

0

1

0

1

0

1

0

1

0

0V

1 0

Tau ~ 2.0ns

VCAREF

VCC

P2CA4

P2CA1

000

001

010

011

100

101

110

111

CASHORT

P2CA2P2CA3

CA0

CA1

CA2

00

01

10

11

Page 698: MSP430 - general.pdf

Comparator_A+ Operation

24-4 Comparator_A+

24.2 Comparator_A+ Operation

The Comparator_A+ module is configured with user software. The setup andoperation of Comparator_A+ is discussed in the following sections.

24.2.1 Comparator

The comparator compares the analog voltages at the + and – input terminals.If the + terminal is more positive than the – terminal, the comparator outputCAOUT is high. The comparator can be switched on or off using control bitCAON. The comparator should be switched off when not in use to reducecurrent consumption. When the comparator is switched off, the CAOUT isalways low.

24.2.2 Input Analog Switches

The analog input switches connect or disconnect the two comparator inputterminals to associated port pins using the P2CAx bits. Both comparatorterminal inputs can be controlled individually. The P2CAx bits allow:

Application of an external signal to the + and – terminals of the comparator

Routing of an internal reference voltage to an associated output port pin

Internally, the input switch is constructed as a T-switch to suppress distortionin the signal path.

Note: Comparator Input Connection

When the comparator is on, the input terminals should be connected to asignal, power, or ground. Otherwise, floating levels may cause unexpectedinterrupts and increased current consumption.

The CAEX bit controls the input multiplexer, exchanging which input signalsare connected to the comparator’s + and – terminals. Additionally, when thecomparator terminals are exchanged, the output signal from the comparatoris inverted. This allows the user to determine or compensate for thecomparator input offset voltage.

Page 699: MSP430 - general.pdf

Comparator_A+ Operation

24-5Comparator_A+

24.2.3 Input Short Switch

The CASHORT bit shorts the comparator_A+ inputs. This can be used to builda simple sample-and-hold for the comparator as shown in Figure 24−2.

Figure 24−2. Comparator_A+ Sample−And−Hold

Sampling Capacitor, C s

CASHORT

Analog Inputs

The required sampling time is proportional to the size of the sampling capacitor(CS), the resistance of the input switches in series with the short switch (Ri),and the resistance of the external source (RS). The total internal resistance(RI) is typically in the range of 2 − 10 kΩ. The sampling capacitor CS shouldbe greater than 100pF. The time constant, Tau, to charge the samplingcapacitor CS can be calculated with the following equation:

Tau = (RI + RS) x CS

Depending on the required accuracy 3 to 10 Tau should be used as a samplingtime. With 3 Tau the sampling capacitor is charged to approximately 95% ofthe input signals voltage level, with 5 Tau it is charge to more than 99% andwith 10 Tau the sampled voltage is sufficient for 12−bit accuracy.

Page 700: MSP430 - general.pdf

Comparator_A+ Operation

24-6 Comparator_A+

24.2.4 Output Filter

The output of the comparator can be used with or without internal filtering.When control bit CAF is set, the output is filtered with an on-chip RC-filter.

Any comparator output oscillates if the voltage difference across the inputterminals is small. Internal and external parasitic effects and cross coupling onand between signal lines, power supply lines, and other parts of the systemare responsible for this behavior as shown in Figure 24−3. The comparatoroutput oscillation reduces accuracy and resolution of the comparison result.Selecting the output filter can reduce errors associated with comparatoroscillation.

Figure 24−3. RC-Filter Response at the Output of the Comparator

+ Terminal

− Terminal Comparator Inputs

Comparator OutputUnfiltered at CAOUT

Comparator OutputFiltered at CAOUT

24.2.5 Voltage Reference Generator

The voltage reference generator is used to generate VCAREF, which can beapplied to either comparator input terminal. The CAREFx bits control theoutput of the voltage generator. The CARSEL bit selects the comparatorterminal to which VCAREF is applied. If external signals are applied to bothcomparator input terminals, the internal reference generator should be turnedoff to reduce current consumption. The voltage reference generator cangenerate a fraction of the device’s VCC or a fixed transistor threshold voltageof ~ 0.55 V.

Page 701: MSP430 - general.pdf

Comparator_A+ Operation

24-7Comparator_A+

24.2.6 Comparator_A+, Port Disable Register CAPD

The comparator input and output functions are multiplexed with the associatedI/O port pins, which are digital CMOS gates. When analog signals are appliedto digital CMOS gates, parasitic current can flow from VCC to GND. Thisparasitic current occurs if the input voltage is near the transition level of thegate. Disabling the port pin buffer eliminates the parasitic current flow andtherefore reduces overall current consumption.

The CAPDx bits, when set, disable the corresponding Px input and outputbuffers as shown in Figure 24−4. When current consumption is critical, anyport pin connected to analog signals should be disabled with its CAPDx bit.

Selecting an input pin to the comparator multiplexer with the P2CAx bitsautomatically disables the input and output buffers for that pin, regardless ofthe state of the associated CAPDx bit.

Figure 24−4. Transfer Characteristic and Power Dissipation in a CMOS Inverter/Buffer

VCC

VSS

ICCVOVI

0 VCC

VIVCC

ICC

CAPD.x = 1

24.2.7 Comparator_A+ Interrupts

One interrupt flag and one interrupt vector are associated with theComparator_A+ as shown in Figure 24−5. The interrupt flag CAIFG is set oneither the rising or falling edge of the comparator output, selected by theCAIES bit. If both the CAIE and the GIE bits are set, then the CAIFG flaggenerates an interrupt request. The CAIFG flag is automatically reset whenthe interrupt request is serviced or may be reset with software.

Figure 24−5. Comparator_A+ Interrupt System

D Q IRQ, Interrupt Service Requested

Reset

VCC

POR

SET_CAIFG

IRACC, Interrupt Request Accepted

CAIE

CAIES

0

1

Page 702: MSP430 - general.pdf

Comparator_A+ Operation

24-8 Comparator_A+

24.2.8 Comparator_A+ Used to Measure Resistive Elements

The Comparator_A+ can be optimized to precisely measure resistiveelements using single slope analog-to-digital conversion. For example,temperature can be converted into digital data using a thermistor, bycomparing the thermistor’s capacitor discharge time to that of a referenceresistor as shown in Figure 24−6. A reference resister Rref is compared toRmeas.

Figure 24−6. Temperature Measurement System

+

CA0 CCI1BCaptureInputOf Timer_A

+

Rmeas

RrefPx.x

Px.y

0.25xVCC

The MSP430 resources used to calculate the temperature sensed by Rmeasare:

Two digital I/O pins to charge and discharge the capacitor.

I/O set to output high (VCC) to charge capacitor, reset to discharge.

I/O switched to high-impedance input with CAPDx set when not in use.

One output charges and discharges the capacitor via Rref.

One output discharges capacitor via Rmeas.

The + terminal is connected to the positive terminal of the capacitor.

The – terminal is connected to a reference level, for example 0.25 x VCC.

The output filter should be used to minimize switching noise.

CAOUT used to gate Timer_A CCI1B, capturing capacitor discharge time.

More than one resistive element can be measured. Additional elements areconnected to CA0 with available I/O pins and switched to high impedancewhen not being measured.

Page 703: MSP430 - general.pdf

Comparator_A+ Operation

24-9Comparator_A+

The thermistor measurement is based on a ratiometric conversion principle.The ratio of two capacitor discharge times is calculated as shown inFigure 24−7.

Figure 24−7. Timing for Temperature Measurement Systems

VCVCC

0.25 × VCC

Phase I:Charge

Phase II:Discharge

Phase III:Charge

tref

Phase IV:Discharge

tmeas

t

RmeasRref

The VCC voltage and the capacitor value should remain constant during theconversion, but are not critical since they cancel in the ratio:

NmeasNref

–Rmeas C lnVrefVCC

–Rref C lnVrefVCC

NmeasNref

Rmeas

Rref

Rmeas Rref Nmeas

Nref

Page 704: MSP430 - general.pdf

Comparator_A+ Registers

24-10 Comparator_A+

24.3 Comparator_A+ Registers

The Comparator_A+ registers are listed in Table 24−1:

Table 24−1.Comparator_A+ Registers

Register Short Form Register Type Address Initial State

Comparator_A+ control register 1 CACTL1 Read/write 059h Reset with POR

Comparator_A+ control register 2 CACTL2 Read/write 05Ah Reset with POR

Comparator_A+ port disable CAPD Read/write 05Bh Reset with POR

Page 705: MSP430 - general.pdf

Comparator_A+ Registers

24-11Comparator_A+

CACTL1, Comparator_A+ Control Register 1

7 6 5 4 3 2 1 0

CAEX CARSEL CAREFx CAON CAIES CAIE CAIFG

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

CAEX Bit 7 Comparator_A+ exchange. This bit exchanges the comparator inputs andinverts the comparator output.

CARSEL Bit 6 Comparator_A+ reference select. This bit selects which terminal theVCAREF is applied to.When CAEX = 0:0 VCAREF is applied to the + terminal1 VCAREF is applied to the – terminalWhen CAEX = 1:0 VCAREF is applied to the – terminal1 VCAREF is applied to the + terminal

CAREF Bits5-4

Comparator_A+ reference. These bits select the reference voltage VCAREF.00 Internal reference off. An external reference can be applied.01 0.25*VCC10 0.50*VCC11 Diode reference is selected

CAON Bit 3 Comparator_A+ on. This bit turns on the comparator. When thecomparator is off it consumes no current. The reference circuitry is enabledor disabled independently.0 Off1 On

CAIES Bit 2 Comparator_A+ interrupt edge select0 Rising edge1 Falling edge

CAIE Bit 1 Comparator_A+ interrupt enable0 Disabled1 Enabled

CAIFG Bit 0 The Comparator_A+ interrupt flag0 No interrupt pending1 Interrupt pending

Page 706: MSP430 - general.pdf

Comparator_A+ Registers

24-12 Comparator_A+

CACTL2, Comparator_A+, Control Register

7 6 5 4 3 2 1 0

CASHORT P2CA4 P2CA3 P2CA2 P2CA1 P2CA0 CAF CAOUT

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r−(0)

CASHORT Bit 7 Input short. This bit shorts the + and − input terminals.0 Inputs not shorted.1 Inputs shorted.

P2CA4 Bit 6 Input select. This bit together with P2CA0 selects the + terminal input whenCAEX = 0 and the − terminal input when CAEX = 1.

P2CA3P2CA2P2CA1

Bits5-3

Input select. These bits select the − terminal input when CAEX = 0 and the+ terminal input when CAEX = 1.000 No connection001 CA1010 CA2011 CA3100 CA4101 CA5110 CA6111 CA7

P2CA0 Bit 2 Input select. This bit, together with P2CA4, selects the + terminal inputwhen CAEX = 0 and the − terminal input when CAEX = 1.00 No connection01 CA010 CA111 CA2

CAF Bit 1 Comparator_A+ output filter0 Comparator_A+ output is not filtered1 Comparator_A+ output is filtered

CAOUT Bit 0 Comparator_A+ output. This bit reflects the value of the comparator output.Writing this bit has no effect.

Page 707: MSP430 - general.pdf

Comparator_A+ Registers

24-13Comparator_A+

CAPD, Comparator_A+, Port Disable Register

7 6 5 4 3 2 1 0

CAPD7 CAPD6 CAPD5 CAPD4 CAPD3 CAPD2 CAPD1 CAPD0

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

CAPDx Bits7-0

Comparator_A+ port disable. These bits individually disable the inputbuffer for the pins of the port associated with Comparator_A+. Forexample, if CA0 is on pin P2.3, the CAPDx bits can be used to individuallyenable or disable each port pin buffer. CAPD0 disables the pin associatedwith CA0, CAPD1 disables the pin connected associated with CA1, etc.0 The input buffer is enabled.1 The input buffer is disabled.

Page 708: MSP430 - general.pdf

24-14 Comparator_A+

Page 709: MSP430 - general.pdf

25-1LCD Controller

LCD Controller

The LCD controller drives static, 2-mux, 3-mux, or 4-mux LCDs. This chapterdescribes LCD controller. The LCD controller is implemented on allMSP430x4xx devices, except the MSP430F41x2, MSP430x42x0,MSP430FG461x, MSP430F47x, MSP430FG47x, MSP430F47x3/4, andMSP430F471xx devices.

Topic Page

25.1 LCD Controller Introduction 25-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25.2 LCD Controller Operation 25-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25.3 LCD Controller Registers 25-18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 25

Page 710: MSP430 - general.pdf

LCD Controller Introduction

25-2 LCD Controller

25.1 LCD Controller Introduction

The LCD controller directly drives LCD displays by creating the ac segmentand common voltage signals automatically. The MSP430 LCD controller cansupport static, 2-mux, 3-mux, and 4-mux LCDs.

The LCD controller features are:

Display memory

Automatic signal generation

Configurable frame frequency

Blinking capability

Support for 4 types of LCDs:

Static

2-mux, 1/2 bias

3-mux, 1/3 bias

4-mux, 1/3 bias

The LCD controller block diagram is shown in Figure 25−1.

Note: Max LCD Segment Control

The maximum number of segment lines available differs with device. See thedevice-specific datasheet for details.

Page 711: MSP430 - general.pdf

LCD Controller Introduction

25-3LCD Controller

Figure 25−1. LCD Controller Block Diagram

DisplayMemory

20x8-bits

SegmentOutputControl

Mux

AnalogVoltage

Multiplexer

Timing GeneratorR23

R13

R03

COM0

COM2

COM1

R33

COM3

S0

S1

CommonOutputControl

S39

S38

SEG0

SEG1

SEG38

SEG39

Mux

Mux

Mux

LCDP2

LCDP1

LCDP0

LCDMX1

LCDMX0

LCDSON

LCDON

f LCD

(from Basic Timer)

OSCOFF(from SR)

V1

V2

V3

V4

V5

VDVCVBVA

Static 2Mux 3Mux4Mux

R

R

RxRx Rx

R

R

R

External Resistors

091h

0A4h

Rx = Optional Contrast Control

Page 712: MSP430 - general.pdf

LCD Controller Operation

25-4 LCD Controller

25.2 LCD Controller Operation

The LCD controller is configured with user software. The setup and operationof LCD controller is discussed in the following sections.

25.2.1 LCD Memory

The LCD memory map is shown in Figure 25−2. Each memory bit correspondsto one LCD segment, or is not used, depending on the mode. To turn on anLCD segment, its corresponding memory bit is set.

Figure 25−2. LCD Memory

--

3 2 1 0 3 2 1 0Associated Common Pins

097h

Address

---- ------

------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------

------ ------------ ------------ ------------ ------

------ ------------ ------

098h099h

09Ah

09Bh09Ch

09Dh09Eh09Fh0A0h

0A1h

0A2h0A3h

0A4h

29, 2827, 26

25, 2423, 2221, 2019, 1817, 16

15, 1413, 1211, 10

9, 87, 65, 43, 21, 0

7 0

--

----------------

--------

----

--

----------------

--------

----

Associated Segment Pins

Sn+1 Sn

2826

2422201816

141210

86420

n

------ ------

------ ------------ ------------ ------------ ------

--

--------

--

--------

092h093h094h

095h

096h

31, 3033, 3235, 34

37, 3639, 38

30323436

38

091h

25.2.2 Blinking the LCD

The LCD controller supports blinking. The LCDSON bit is ANDed with eachsegment’s memory bit. When LCDSON = 1, each segment is on or offaccording to its bit value. When LCDSON = 0, each LCD segment is off.

25.2.3 LCD Timing Generation

The LCD controller uses the fLCD signal from the Basic Timer1 to generate thetiming for common and segment lines. The proper frequency fLCD depends onthe LCD’s requirement for framing frequency and LCD multiplex rate. See theBasic Timer1 chapter for more information on configuring the fLCD frequency.

Page 713: MSP430 - general.pdf

LCD Controller Operation

25-5LCD Controller

25.2.4 LCD Voltage Generation

The voltages required for the LCD signals are supplied externally to pins R33,R23, R13, and R03. Using an equally weighted resistor divider ladder betweenthese pins establishes the analog voltages as shown in Table 25−1. Theresistor value R is typically 680 k Values of R from 100k to 1M can beused depending on LCD requirements.

R33 is a switched-VCC output. This allows the power to the resistor ladder tobe turned off eliminating current consumption when the LCD is not used.

Table 25−1.External LCD Module Analog Voltage

OSCOFF LCDMXx LCDON VA VB VC VD R33

x xx 0 0 0 0 0 Off

1 xx x 0 0 0 0 Off

0 00 1 V5/V1 V1/V5 V5/V1 V1/V5 On

0 01 1 V5/V1 V1/V5 V3/V3 V1/V5 On

0 1x 1 V5/V1 V2/V4 V4/V2 V1/V5 On

LCD Contrast Control

LCD contrast can be controlled by the R03 voltage level with external circuitry,typically an additional resistor Rx to GND. Increasing the voltage at R03reduces the total applied segment voltage decreasing the LCD contrast.

25.2.5 LCD Outputs

Some LCD segment, common, and Rxx functions are multiplexed with digitalI/O functions. These pins can function either as digital I/O or as LCD functions.The pin functions for COMx and Rxx, when multiplexed with digital I/O, areselected using the applicable PxSELx bits as described in the Digital I/Ochapter. The LCD segment functions, when multiplexed with digital I/O, areselected using the LCDPx bits.

The LCDPx bits selects the LCD function for groups of pins. When LCDPx = 0,no multiplexed pin is set to LCD function. When LCDPx = 1, segments S0 toS15 are selected as LCD function. When LCDPx > 1, LCD segment functionsare selected in groups of four. For example, when LCDPx = 2, segments S0to S19 are selected as LCD function.

Note: LCDPx Bits Do Not Affect Dedicated LCD Segment Pins

The LCDPx bits only affect pins with multiplexed LCD segment functions anddigital I/O functions. Dedicated LCD segment pins are not affected by theLCDPx bits.

Page 714: MSP430 - general.pdf

LCD Controller Operation

25-6 LCD Controller

25.2.6 Static Mode

In static mode, each MSP430 segment pin drives one LCD segment, and onecommon line, COM0, is used. Figure 25−3 shows some example staticwaveforms.

Figure 25−3. Example Static Waveforms

fframeCOM0

SP1

SP2

Resulting Voltage forSegment a (COM0−SP1)Segment Is On.

COM0

SP1SP6

SP2

SP7SP3

SP8SP4

SP5

V1

V5

V1

V5

V1

V5

V1

0 V

V1

0 V

SP = Segment Pin

Resulting Voltage forSegment b (COM0−SP2)Segment Is Off.

a

b

Page 715: MSP430 - general.pdf

LCD Controller Operation

25-7LCD Controller

Figure 25−4 shows an example static LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 25−4. Static LCD Example

A

BG 0

3

Sn+1 Sn

Parallel-SerialConversion

c2826

-- b a

3 2 1 0 3 2 1 0COM

091h ---- ------

-- d c---- -------- f e---- -------- h g---- -------- b a---- -------- d c---- -------- f e---- -------- h g---- -------- b a---- ------

-- d c---- -------- f e---- -------- h g---- -------- b a---- ------

-- d---- -------- f e---- ------

092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09Fh

2422201816

141210

86420

Digit 4

Digit 3

Digit 2

Digit 1

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29S30S31

COM0COM1COM2COM3

123456789101112131415161718192021222324252627282930313233

1a1b1c1d1e1f1g1h2a2b2c2d2e2f2g2h3a3b3c3d3e3f3g3h4a4b4c4d4e4f4g4h

COM0

PIN COM0

’430 Pins LCD Pinout

NCNCNC

Pinout and Connections

LCD

Display Memory

Connections

A

BG

03

3 2 1 0 03 2 1

-- h g---- ------ n = 30MAB 0A0h

Page 716: MSP430 - general.pdf

LCD Controller Operation

25-8 LCD Controller

Static Mode Software Example

; All eight segments of a digit are often located in four; display memory bytes with the static display method.;a EQU 001hb EQU 010hc EQU 002hd EQU 020he EQU 004hf EQU 040hg EQU 008hh EQU 080h; The register content of Rx should be displayed.: The Table represents the ’on’−segments according to the; content of Rx.

MOV.B Table (Rx),RY ; Load segment information; into temporary memory.; (Ry) = 0000 0000 hfdb geca

MOV.B Ry,&LCDn ; Note:; All bits of an LCD memory’ byte are written

RRA Ry ; (Ry) = 0000 0000 0hfd bgecMOV.B Ry,&LCDn+1 ; Note:

; All bits of an LCD memory; byte are written

RRA Ry ; (Ry) = 0000 0000 00hf dbgeMOV.B Ry,&LCDn+2 ; Note:

; All bits of an LCD memory’ byte are written

RRA Ry ; (Ry) = 0000 0000 000h fdbgMOV.B Ry,&LCDn+3 ; Note:

; All bits of an LCD memory’ byte are written

...........

...........;Table DB a+b+c+d+e+f ; displays ”0”

DB b+c; ; displays ”1”......................DB...........

Page 717: MSP430 - general.pdf

LCD Controller Operation

25-9LCD Controller

25.2.7 2-Mux Mode

In 2-mux mode, each MSP430 segment pin drives two LCD segments, and twocommon lines, COM0 and COM1, are used. Figure 25−5 shows someexample 2-mux waveforms.

Figure 25−5. Example 2-Mux Waveforms

COM1

COM0

COM0

COM1

SP1

SP2

SP1

SP2SP3

SP4

V1V3V5

V1

V5

V1

V5

V1V30 V−V3−V1

V1V30 V−V3−V5

fframe

Resulting Voltage forSegment h (COM0−SP2)Segment Is On.

Resulting Voltage forSegment b (COM1−SP2)Segment Is Off.

SP = Segment Pin

b

h

V1V3V5

Page 718: MSP430 - general.pdf

LCD Controller Operation

25-10 LCD Controller

Figure 25−6 shows an example 2-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application completely depends on the LCDpinout and on the MSP430-to-LCD connections.

Figure 25−6. 2−Mux LCD Example

28df

A

BG 0

3

A

BG

03

3 2 1 0 0

b h f

3 2 1 0 3 2 1 0

Sn+1 Sn

Parallel-SerialConversion

COM

---- a----

g e d---- c----b h f---- a----g e d---- c----b h f---- a----g e d---- c----b h f---- a----g e d---- c----b h f---- a----

g e d---- c----b h f---- a----g e d---- c----b h f---- a----

g e---- c----b h---- a----

26

2422201816

141210

86420

Digit 7

Digit 6

Digit 4

Digit 2

3 2 1

1/2 Digit 8

Digit 5

Digit 3

Digit 1

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29S30S31

COM0COM1COM2COM3

12345678910111213141516171819202122232425262728293031323334

1f1h1d1e2f2h2d2e3f3h3d3e4f4h4d4e5f5h5d5e6f6h6d6e7f7h7d7e8f8h8d8e

COM0

PIN COM0

’430 Pins LCD Pinout

Pinout and Connections

NCNC

DIGIT8 DIGIT1

1a1b1c1g2a2b2c2g3a3b3c3g4a4b4c4g5a5b5c5g6a6b6c6g7a7b7c7g8a8b8c8g

COM1

COM1

LCD

Display MemoryConnections

g e d---- c---- n = 30

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09Fh

MAB 0A0h

Page 719: MSP430 - general.pdf

LCD Controller Operation

25-11LCD Controller

2-Mux Mode Software Example

; All eight segments of a digit are often located in two; display memory bytes with the 2mux display rate;a EQU 002hb EQU 020hc EQU 008hd EQU 004he EQU 040hf EQU 001hg EQU 080hh EQU 010h; The register content of Rx should be displayed.; The Table represents the ’on’−segments according to the; content of Rx.;

...........

...........MOV.B Table(Rx),Ry ; Load segment information into

; temporary memory.MOV.B Ry,&LCDn ; (Ry) = 0000 0000 gebh cdaf

; Note:; All bits of an LCD memory byte; are written

RRA Ry ; (Ry) = 0000 0000 0geb hcdaRRA Ry ; (Ry) = 0000 0000 00ge bhcdMOV.B Ry,&LCDn+1 ; Note:

; All bits of an LCD memory byte; are written

...........

...........

...........Table DB a+b+c+d+e+f ; displays ”0”

...........DB a+b+c+d+e+f+g+ ; displays ”8”......................DB...........

;

Page 720: MSP430 - general.pdf

LCD Controller Operation

25-12 LCD Controller

25.2.8 3-Mux Mode

In 3-mux mode, each MSP430 segment pin drives three LCD segments, andthree common lines, COM0, COM1 and COM2 are used. Figure 25−7 showssome example 3-mux waveforms.

Figure 25−7. Example 3-Mux Waveforms

COM0

COM1

COM2

COM0

COM2

SP1

SP2

SP3

SP3SP2

SP1

fframe

V1V2V4V5

V1

V5

V1

0 V

−V1

V1

0 V

−V1

COM1

Resulting Voltage forSegment e (COM0−SP1)Segment Is Off.

Resulting Voltage forSegment d (COM0−SP2)Segment Is On.

SP = Segment Pin

d

e

V1V2V4V5

V1V2V4V5

V1V2V4V5

V1V2V4V5

Page 721: MSP430 - general.pdf

LCD Controller Operation

25-13LCD Controller

Figure 25−8 shows an example 3-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 25−8. 3-Mux LCD Example

28

e

hd

A

BG 0

3

A

BG

03

3 2 1 0 0

g d e

3 2 1 0 3 2 1 0

Sn+1 Sn

Parallel-SerialConversion

COM

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a-- fy--

f e hy-- cb--c h db-- ga--

g d ea-- fy--

f e hy-- cb--

c h db-- ga--g d ea-- fy--

f e hy-- cb--c h db-- ga--

g d ea-- fy--

f e hy-- cb--

c h db-- ga--g da-- fy--

f ey-- cb--c hb-- ga--

26

242220

1816

14

1210

86

4

2

0

Digit 9

Digit 7

Digit 4

Digit 2

3 2 1

y y

Digit 5

Digit 3

Digit 1

Digit 6

Digit 8

Digit 10

DIGIT10 DIGIT1

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29

COM0COM1COM2COM3

123456789101112131415161718192021222324252627282930313233

1e1d1h2e2d2h3e3d3h4e4d4h5e5d5h6e6d6h7e7d7h8e8d8h9e9d9h10e10d10h

COM0

PIN COM0

’430 Pins LCD Pinout

Pinout and Connections

NC

1f1g1c2f2g2c3f3g3c4f4g4c5f5g5c6f6g6c7f7g7c8f8g8c9f9g9c10f10g10c

COM1

COM1

1y1a1b2y2a2b3y3a3b4y4a4b5y5a5b6y6a6b7y7a7b8y8a8b9y9a9b10y10a10b

COM2

COM2

Display Memory

LCD

Connections

eg da-- fy--

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09FhMAB n = 30

Page 722: MSP430 - general.pdf

LCD Controller Operation

25-14 LCD Controller

3-Mux Mode Software Example

; The 3mux rate can support nine segments for each; digit. The nine segments of a digit are located in; 1 1/2 display memory bytes.;a EQU 0040hb EQU 0400hc EQU 0200hd EQU 0010he EQU 0001hf EQU 0002hg EQU 0020hh EQU 0100hY EQU 0004h; The LSDigit of register Rx should be displayed.; The Table represents the ’on’−segments according to the; LSDigit of register of Rx.; The register Ry is used for temporary memory;ODDDIG RLA Rx ; LCD in 3mux has 9 segments per

; digit; word table required for; displayed characters.

MOV Table(Rx),Ry ; Load segment information to; temporary mem.; (Ry) = 0000 0bch 0agd 0yfe

MOV.B Ry,&LCDn ; write ’a, g, d, y, f, e’ of; Digit n (LowByte)

SWPB Ry ; (Ry) = 0agd 0yfe 0000 0bchBIC.B #07h,&LCDn+1 ; write ’b, c, h’ of Digit n

; (HighByte)BIS.B Ry,&LCDn+1.....

EVNDIG RLA Rx ; LCD in 3mux has 9 segments per; digit; word table required for; displayed characters.

MOV Table(Rx),Ry ; Load segment information to; temporary mem.; (Ry) = 0000 0bch 0agd 0yfe

RLA Ry ; (Ry) = 0000 bch0 agd0 yfe0RLA Ry ; (Ry) = 000b ch0a gd0y fe00RLA Ry ; (Ry) = 00bc h0ag d0yf e000RLA Ry ; (Ry) = 0bch 0agd 0yfe 0000BIC.B #070h,&LCDn+1BIS.B Ry,&LCDn+1 ; write ’y, f, e’ of Digit n+1

; (LowByte)SWPB Ry ; (Ry) = 0yfe 0000 0bch 0agdMOV.B Ry,&LCDn+2 ; write ’b, c, h, a, g, d’ of

; Digit n+1 (HighByte)...........

Table DW a+b+c+d+e+f ; displays ”0”DW b+c ; displays ”1”......................DW a+e+f+g ; displays ”F”

Page 723: MSP430 - general.pdf

LCD Controller Operation

25-15LCD Controller

25.2.9 4-Mux Mode

In 4-mux mode, each MSP430 segment pin drives four LCD segments, andall four common lines, COM0, COM1, COM2, and COM3 are used.Figure 25−9 shows some example 4-mux waveforms.

Figure 25−9. Example 4-Mux Waveforms

fframe

V1V2V4V5

V1

0 V

−V1

V1

0 V

−V1

COM0

COM1

COM2

COM3

SP1

SP2

COM3

COM2

COM1

COM0

SP2SP1

Resulting Voltage forSegment e (COM1−SP1)Segment Is Off.

Resulting Voltage forSegment c (COM1−SP2)Segment Is On.

SP = Segment Pin

ce

V1V2V4V5

V1V2V4V5

V1V2V4V5

V1V2V4V5

V1V2V4V5

Page 724: MSP430 - general.pdf

LCD Controller Operation

25-16 LCD Controller

Figure 25−10 shows an example 4-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 25−10. 4-Mux LCD Example

e d

26

28

A

BG 0

3

A

BG

03

3 2 1 0 0

3 2 1 0 3 2 1 0

Sn+1 Sn

COM

c hba gf

24

22

20

18

16

14

12

10

8

6

4

2

0

Digit 9

Digit 7

Digit 4

Digit 2

3 2 1

Digit 5

Digit 3

Digit 1

Digit 6

Digit 8

Digit 10

c h dba egf

c h dba egf

c h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egf

Digit 14

Digit 12

Digit 11

Digit 13

Digit 15

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

DIGIT15 DIGIT1

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29

COM0COM1COM2COM3

12345678910111213141516171819202122232425262728293031323334

1d1h2d2h3d3h4d4h5d5h6d6h7d7h8d8h9d9h10d10h11d11h12d12h13d13h14d14h15d15h

COM0

PIN COM0

’430 Pins LCD PinoutConnections

1e1c2e2c3e3c4e4c5e5c6e6c7e7c8e8c9e9c

10e10c11e11c12e12c13e13c14e14c15e15c

COM1

COM1

1g1b2g2b3g3b4g4b5g5b6g6b7g7b8g8b9g9b10g10b11g11b12g12b13g13b14g14b15g15b

COM2

COM2

1f1a2f2a3f3a4f4a5f5a6f6a7f7a8f8a9f9a10f10a11f11a12f12a13f13a14f14a15f15a

COM3

COM3

Display Memory

LCD

Parallel-SerialConversion

Pinout and Connections

e dc hba gf n = 30 Digit 16

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09FhMAB

Page 725: MSP430 - general.pdf

LCD Controller Operation

25-17LCD Controller

4-Mux Mode Software Example

; The 4mux rate supports eight segments for each digit.; All eight segments of a digit can often be located in; one display memory bytea EQU 080hb EQU 040hc EQU 020hd EQU 001he EQU 002hf EQU 008hg EQU 004hh EQU 010h;; The LSDigit of register Rx should be displayed.; The Table represents the ’on’−segments according to the; content of Rx.;

MOV.B Table(Rx),&LCDn ; n = 1 ..... 15; all eight segments are; written to the display; memory

...........

...........

Table DB a+b+c+d+e+f ; displays ”0”DB b+c ; displays ”1”......................DB b+c+d+e+g ; displays ”d”DB a+d+e+f+g ; displays ”E”DB a+e+f+g ; displays ”F”

Page 726: MSP430 - general.pdf

LCD Controller Operation

25-18 LCD Controller

25.3 LCD Controller Registers

The LCD controller registers are listed in Table 25−2.

Table 25−2.LCD Controller Registers

Register Short Form Register Type Address Initial State

LCD control register LCDCTL Read/write 090h Reset with PUC

LCD memory 1 LCDM1 Read/write 091h Unchanged

LCD memory 2 LCDM2 Read/write 092h Unchanged

LCD memory 3 LCDM3 Read/write 093h Unchanged

LCD memory 4 LCDM4 Read/write 094h Unchanged

LCD memory 5 LCDM5 Read/write 095h Unchanged

LCD memory 6 LCDM6 Read/write 096h Unchanged

LCD memory 7 LCDM7 Read/write 097h Unchanged

LCD memory 8 LCDM8 Read/write 098h Unchanged

LCD memory 9 LCDM9 Read/write 099h Unchanged

LCD memory 10 LCDM10 Read/write 09Ah Unchanged

LCD memory 11 LCDM11 Read/write 09Bh Unchanged

LCD memory 12 LCDM12 Read/write 09Ch Unchanged

LCD memory 13 LCDM13 Read/write 09Dh Unchanged

LCD memory 14 LCDM14 Read/write 09Eh Unchanged

LCD memory 15 LCDM15 Read/write 09Fh Unchanged

LCD memory 16 LCDM16 Read/write 0A0h Unchanged

LCD memory 17 LCDM17 Read/write 0A1h Unchanged

LCD memory 18 LCDM18 Read/write 0A2h Unchanged

LCD memory 19 LCDM19 Read/write 0A3h Unchanged

LCD memory 20 LCDM20 Read/write 0A4h Unchanged

Page 727: MSP430 - general.pdf

LCD Controller Operation

25-19LCD Controller

LCDCTL, LCD Control Register

7 6 5 4 3 2 1 0

LCDPx LCDMXx LCDSON Unused LCDON

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

LCDPx Bits7-5

LCD port select. These bits select the pin function to be port I/O or LCDfunction for groups of segments pins. These bits ONLY affect pins withmultiplexed functions. Dedicated LCD pins are always LCD function.000 No multiplexed pins are LCD function001 S0-S15 are LCD function010 S0-S19 are LCD function011 S0-S23 are LCD function100 S0-S27 are LCD function101 S0-S31 are LCD function110 S0-S35 are LCD function111 S0-S39 are LCD function

LCDMXx Bits4-3

LCD mux rate. These bits select the LCD mode.00 Static01 2-mux10 3-mux11 4-mux

LCDSON Bit 2 LCD segments on. This bit supports flashing LCD applications by turningoff all segment lines, while leaving the LCD timing generator and R33enabled.0 All LCD segments are off1 All LCD segments are enabled and on or off according to their

corresponding memory location.

Unused Bit 1 Unused

LCDON Bit 0 LCD On. This bit turns on the LCD timing generator and R33.0 LCD timing generator and Ron are off1 LCD timing generator and Ron are on

Page 728: MSP430 - general.pdf

25-20 LCD Controller

Page 729: MSP430 - general.pdf

26-1LCD_A Controller

LCD_A Controller

The LCD_A controller drives static, 2-mux, 3-mux, or 4-mux LCDs. Thischapter describes the LCD_A controller. LCD_A controller is implemented onMSP430F41x2, MSP430x42x0, MSP430FG461x, MSP430F47x,MSP430FG47x, MSP430F47x3/4, and MSP430F471xx devices.

Topic Page

26.1 LCD_A Controller Introduction 26-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26.2 LCD_A Controller Operation 26-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26.3 LCD_A Controller Registers 26-21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 26

Page 730: MSP430 - general.pdf

LCD_A Controller Introduction

26-2 LCD_A Controller

26.1 LCD_A Controller Introduction

The LCD_A controller directly drives LCD displays by creating the ac segmentand common voltage signals automatically. The MSP430 LCD controller cansupport static, 2-mux, 3-mux, and 4-mux LCDs.

The LCD controller features are:

Display memory

Automatic signal generation

Configurable frame frequency

Blinking capability

Regulated charge pump

Contrast control by software

Support for 4 types of LCDs:

Static

2-mux, 1/2 bias or 1/3 bias

3-mux, 1/2 bias or 1/3 bias

4-mux, 1/2 bias or 1/3 bias

The LCD controller block diagram is shown in Figure 26−1.

Note: Maximum LCD Segment Control

The maximum number of segment lines available differs with device. See thedevice-specific data sheet for available segment pins.

Page 731: MSP430 - general.pdf

LCD_A Controller Introduction

26-3LCD_A Controller

Figure 26−1. LCD_A Controller Block Diagram

VLCDREFx

DisplayMemory

20x8−bits

SegmentOutputControl

Mux

AnalogVoltage

MultiplexerTimingGenerator

COM0

COM2

COM1

COM3

S0

S1

CommonOutputControl

S39

S38

SEG0

SEG1

SEG38

SEG39

Mux

Mux

Mux

LCDSx

LCDMXx

LCDSON

LCDON

fLCD

OSCOFF(from SR)

V1

V2

V3

V4

VDVCVBVA

091h

0A4h

ACLK32768 Hz

LCDFREQx

Regulated ChargePump/

Contrast Control

VLCDx

VLCD

LCDCAP/R33

LCD Bias Generator

V1

VLCD

LCD2B

LCDMXx

V2

V3

V4

LCDCPEN

V5

V5

Divider/32 .. /512

4

REXT

R23LCDREF/R13R03

R03EXT

10

LCDREF/

Page 732: MSP430 - general.pdf

LCD_A Controller Operation

26-4 LCD_A Controller

26.2 LCD_A Controller Operation

The LCD_A controller is configured with user software. The setup andoperation of the LCD_A controller is discussed in the following sections.

26.2.1 LCD Memory

The LCD memory map is shown in Figure 26−2. Each memory bit correspondsto one LCD segment, or is not used, depending on the mode. To turn on anLCD segment, its corresponding memory bit is set.

Figure 26−2. LCD memory

--

3 2 1 0 3 2 1 0Associated Common Pins

097h

Address

---- ------

------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------

------ ------------ ------------ ------------ ------

------ ------------ ------

098h099h

09Ah

09Bh09Ch

09Dh09Eh09Fh0A0h

0A1h

0A2h0A3h

0A4h

29, 2827, 26

25, 2423, 2221, 2019, 1817, 16

15, 1413, 1211, 10

9, 87, 65, 43, 21, 0

7 0

--

----------------

--------

----

--

----------------

--------

----

Associated Segment Pins

Sn+1 Sn

2826

2422201816

141210

86420

n

------ ------

------ ------------ ------------ ------------ ------

--

--------

--

--------

092h093h094h

095h

096h

31, 3033, 3235, 34

37, 3639, 38

30323436

38

091h

26.2.2 Blinking the LCD

The LCD controller supports blinking. The LCDSON bit is ANDed with eachsegment’s memory bit. When LCDSON = 1, each segment is on or offaccording to its bit value. When LCDSON = 0, each LCD segment is off.

Page 733: MSP430 - general.pdf

LCD_A Controller Operation

26-5LCD_A Controller

26.2.3 LCD_A Voltage And Bias Generation

The LCD_A module allows selectable sources for the peak output waveformvoltage, V1, as well as the fractional LCD biasing voltages V2 − V5. VLCD maybe sourced from AVCC, an internal charge pump, or externally.

All internal voltage generation is disabled if the oscillator sourcing ACLK isturned off (OSCOFF = 1) or the LCD_A module is disabled (LCDON = 0).

LCD Voltage Selection

VLCD is sourced from AVCC when VLCDEXT = 0, VLCDx = 0, and VREFx = 0.VLCD is sourced from the internal charge pump when VLCDEXT = 0,VLCDPEN = 1, and VLCDx > 0. The charge pump is always sourced fromDVCC. The VLCDx bits provide a software selectable LCD voltage from 2.6 Vto 3.44 V (typical) independent of DVCC. See the device-specific data sheetfor specifications.

When the internal charge pump is used, a 4.7 µF or larger capacitor must beconnected between pin LCDCAP and ground. Otherwise, irreversible damagecan occur. When the charge pump is enabled, peak currents of 2 mA typicaloccur on DVCC. However, the charge pump duty cycle is approximately1/1000, resulting in a 2 µA average current. The charge pump may betemporarily disabled by setting LCDCPEN = 0 with VLCDx > 0 to reducesystem noise. In this case, the voltage present at the external capacitor is usedfor the LCD voltages until the charge pump is re-enabled.

Note: Capacitor Required For Internal Charge Pump

A 4.7 µF or larger capacitor must be connected from pin LCDCAP to groundwhen the internal charge pump is enabled. Otherwise, damage can occur.

The internal charge pump may use an external reference voltage whenVLCDREFx = 01. In this case, the charge pump voltage will be 3x the voltageapplied externally to the LCDREF pin and the VLCDx bits are ignored.

When VLCDEXT = 1, VLCD is sourced externally from the LCDCAP pin andthe internal charge pump is disabled. The charge pump and internal biasgeneration require an input clock source of 32768 Hz +/− 10%. If neither isused, the input clock frequency may be different per the application needs.

LCD Bias Generation

The fractional LCD biasing voltages, V2 − V5 can be generated internally orexternally, independent of the source for VLCD. The LCD bias generation blockdiagram is shown in Figure 26−3.

Page 734: MSP430 - general.pdf

LCD_A Controller Operation

26-6 LCD_A Controller

To source the bias voltages V2 − V4 externally, REXT is set. This also disablesthe internal bias generation. Typically an equally weighted resistor divider isused with resistors ranging from 100 k to 1 M When using an externalresistor divider, the VLCD voltage may be sourced from the internal chargepump when VLCDEXT = 0. V5 can also be sourced externally when R03EXTis set.

When using an external resistor divider R33 may serve as a switched-VLCDoutput when VLCDEXT = 0. This allows the power to the resistor ladder to beturned off eliminating current consumption when the LCD is not used. WhenVLCDEXT = 1, R33 serves as a VLCD input.

Figure 26−3. Bias Generation

0

1

VLCDEXT0

0

LCD Off

Internal VLCD

LCDREF/R13

R23

R03

LCDCAP/R33

REXT

1

0

1

0

1

0

1

0V5

V2 int.

V3 int.

V4 int.

VLCD

AVCC

LCD2B

0

VLCDx > 0VLCDREFx > 0

R03EXT

ChargePump

DVCC

R

R

R

R

R

Rx RxRx

Static 1/2 Bias 1/3 Bias

Optional External ResistorsRx = Optional Contrast Control

V1 (VLCD)

V2 (2/3 VLCD)

V3 (1/2 VLCD)

V4 (1/3 VLCD)

Page 735: MSP430 - general.pdf

LCD_A Controller Operation

26-7LCD_A Controller

The internal bias generator supports 1/2 bias LCDs when LCD2B = 1, and1/3 bias LCDs when LCD2B = 0 in 2-mux, 3-mux, and 4-mux modes. In staticmode, the internal divider is disabled.

Some devices share the LCDCAP, R33, and R23 functions. In this case, thecharge pump cannot be used together with an external resistor divider with1/3 biasing. When R03 is not available externally, V5 is always AVSS.

LCD Contrast Control

The peak voltage of the output waveforms together with the selected modeand biasing determine the contrast and the contrast ratio of the LCD. The LCDcontrast can be controlled in software by adjusting the LCD voltage generatedby the integrated charge pump using the VLCDx settings.

The contrast ratio depends on the used LCD display and the selected biasingscheme. Table 26−1 shows the biasing configurations that apply to thedifferent modes together with the RMS voltages for the segments turned on(VRMS,ON) and turned off (VRMS,OFF) as functions of VLCD. It also shows theresulting contrast ratios between the on and off states.

Table 26−1.LCD Voltage and Biasing Characteristics

Mode BiasConfig

LCDMx LCD2B COMLines

VoltageLevels

VRMS,OFF/VLCD

VRMS,ON/VLCD

ContrastRatio

VRMS,ON/VRMS,OFF

Static Static 00 X 1 V1, V5 0 1 1/0

2−mux 1/2 01 1 2 V1, V3, V5 0.354 0.791 2.236

2−mux 1/3 01 0 2 V1, V2, V4, V5 0.333 0.745 2.236

3−mux 1/2 10 1 3 V1, V3, V5 0.408 0.707 1.732

3−mux 1/3 10 0 3 V1, V2, V4, V5 0.333 0.638 1.915

4−mux 1/2 11 1 4 V1, V3, V5 0.433 0.661 1.528

4−mux 1/3 11 0 4 V1, V2, V4, V5 0.333 0.577 1.732

A typical approach to determine the required VLCD is by equating VRMS,OFFwith a defined LCD threshold voltage, typically when the LCD exhibitsapproximately 10% contrast (Vth,10%): VRMS,OFF = Vth,10%. Using the valuesfor VRMS,OFF/VLCD provided in the table results inVLCD = Vth,10%/(VRMS,OFF/VLCD). In the static mode, a suitable choice is VLCDgreater or equal than 3 times Vth,10%.

In 3-mux and 4-mux mode typically a 1/3 biasing is used but a 1/2 biasingscheme is also possible. The 1/2 bias reduces the contrast ratio but theadvantage is a reduction of the required full-scale LCD voltage VLCD.

Page 736: MSP430 - general.pdf

LCD_A Controller Operation

26-8 LCD_A Controller

26.2.4 LCD Timing Generation

The LCD_A controller uses the fLCD signal from the integrated ACLK prescalerto generate the timing for common and segment lines. ACLK is assumed tobe 32768 Hz for generating fLCD. The fLCD frequency is selected with theLCDFREQx bits. The proper fLCD frequency depends on the LCD’srequirement for framing frequency and the LCD multiplex rate and iscalculated by:

fLCD = 2 × mux × fFrame

For example, to calculate fLCD for a 3-mux LCD, with a frame frequency of30 Hz to 100 Hz:

fFrame (from LCD data sheet) = 30 Hz to 100 Hz

fLCD = 2 × 3 × fFrame

fLCD(min) = 180 Hz

fLCD(max) = 600 Hz

select fLCD = 32768/128 = 256 Hz or 2768/96 = 341 Hz or 32768/64 = 512 Hz.

The lowest frequency has the lowest current consumption. The highestfrequency has the least flicker.

26.2.5 LCD Outputs

Some LCD segment, common, and Rxx functions are multiplexed with digitalI/O functions. These pins can function either as digital I/O or as LCD functions.The pin functions for COMx and Rxx, when multiplexed with digital I/O, areselected using the applicable PxSELx bits as described in the Digital I/Ochapter. The LCD segment functions, when multiplexed with digital I/O, areselected using the LCDSx bits in the LCDAPCTLx registers.

Note: Using shared pins as digital I/Os

If pins that share digital I/O and LCD functions are used as digital I/Os theyshould not be toggled at frequencies >10kHz while the LCD is enabled(LCDON=1); otherwise, increased current consumption could be observed.

The LCDSx bits selects the LCD function in groups of four pins. WhenLCDSx = 0, no multiplexed pin is set to LCD function. When LCDSx = 1, thecomplete group of four is selected as LCD function.

Note: LCDSx Bits Do Not Affect Dedicated LCD Segment Pins

The LCDSx bits only affect pins with multiplexed LCD segment functions anddigital I/O functions. Dedicated LCD segment pins are not affected by theLCDSx bits.

Page 737: MSP430 - general.pdf

LCD_A Controller Operation

26-9LCD_A Controller

26.2.6 Static Mode

In static mode, each MSP430 segment pin drives one LCD segment and onecommon line, COM0, is used. Figure 26−4 shows some example staticwaveforms.

Figure 26−4. Example Static Waveforms

fframeCOM0

SP1

SP2

Resulting Voltage forSegment a (COM0−SP1)Segment Is On.

COM0

SP1SP6

SP2

SP7SP3

SP8SP4

SP5

V1

V5

V1

V5

V1

V5

V1

0 V

V1

0 V

SP = Segment Pin

Resulting Voltage forSegment b (COM0−SP2)Segment Is Off.

a

b

Page 738: MSP430 - general.pdf

LCD_A Controller Operation

26-10 LCD_A Controller

Figure 26−5 shows an example static LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 26−5. Static LCD Example

A

BG 0

3

Sn+1 Sn

Parallel-SerialConversion

c2826

-- b a

3 2 1 0 3 2 1 0COM

091h ---- ------

-- d c---- -------- f e---- -------- h g---- -------- b a---- -------- d c---- -------- f e---- -------- h g---- -------- b a---- ------

-- d c---- -------- f e---- -------- h g---- -------- b a---- ------

-- d---- -------- f e---- ------

092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09Fh

2422201816

141210

86420

Digit 4

Digit 3

Digit 2

Digit 1

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29S30S31

COM0COM1COM2COM3

123456789101112131415161718192021222324252627282930313233

1a1b1c1d1e1f1g1h2a2b2c2d2e2f2g2h3a3b3c3d3e3f3g3h4a4b4c4d4e4f4g4h

COM0

PIN COM0

’430 Pins LCD Pinout

NCNCNC

Pinout and Connections

LCD

Display Memory

Connections

A

BG

03

3 2 1 0 03 2 1

-- h g---- ------ n = 30MAB 0A0h

DIGIT4 DIGIT1

Page 739: MSP430 - general.pdf

LCD_A Controller Operation

26-11LCD_A Controller

Static Mode Software Example

; All eight segments of a digit are often located in four; display memory bytes with the static display method.;a EQU 001hb EQU 010hc EQU 002hd EQU 020he EQU 004hf EQU 040hg EQU 008hh EQU 080h; The register content of Rx should be displayed.: The Table represents the ’on’−segments according to the; content of Rx.

MOV.B Table (Rx),RY ; Load segment information; into temporary memory.; (Ry) = 0000 0000 hfdb geca

MOV.B Ry,&LCDn ; Note:; All bits of an LCD memory’ byte are written

RRA Ry ; (Ry) = 0000 0000 0hfd bgecMOV.B Ry,&LCDn+1 ; Note:

; All bits of an LCD memory; byte are written

RRA Ry ; (Ry) = 0000 0000 00hf dbgeMOV.B Ry,&LCDn+2 ; Note:

; All bits of an LCD memory’ byte are written

RRA Ry ; (Ry) = 0000 0000 000h fdbgMOV.B Ry,&LCDn+3 ; Note:

; All bits of an LCD memory’ byte are written

...........

...........;Table DB a+b+c+d+e+f ; displays ”0”

DB b+c; ; displays ”1”......................DB...........

Page 740: MSP430 - general.pdf

LCD_A Controller Operation

26-12 LCD_A Controller

26.2.7 2-Mux Mode

In 2-mux mode, each MSP430 segment pin drives two LCD segments and twocommon lines, COM0 and COM1, are used. Figure 26−6 shows someexample 2-mux, 1/2 bias waveforms.

Figure 26−6. Example 2-Mux Waveforms

COM1

COM0

COM0

COM1

SP1

SP2

SP1

SP2SP3

SP4

V1V3V5

V1

V5

V1

V5

V1V30 V−V3−V1

V1V30 V−V3−V5

fframe

Resulting Voltage forSegment h (COM0−SP2)Segment Is On.

Resulting Voltage forSegment b (COM1−SP2)Segment Is Off.

SP = Segment Pin

b

h

V1V3V5

Page 741: MSP430 - general.pdf

LCD_A Controller Operation

26-13LCD_A Controller

Figure 26−7 shows an example 2-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application completely depends on the LCDpinout and on the MSP430-to-LCD connections.

Figure 26−7. 2−Mux LCD Example

28df

A

BG 0

3

A

BG

03

3 2 1 0 0

b h f

3 2 1 0 3 2 1 0

Sn+1 Sn

Parallel-SerialConversion

COM

---- a----

g e d---- c----b h f---- a----g e d---- c----b h f---- a----g e d---- c----b h f---- a----g e d---- c----b h f---- a----

g e d---- c----b h f---- a----g e d---- c----b h f---- a----

g e---- c----b h---- a----

26

2422201816

141210

86420

Digit 7

Digit 6

Digit 4

Digit 2

3 2 1

1/2 Digit 8

Digit 5

Digit 3

Digit 1

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29S30S31

COM0COM1COM2COM3

12345678910111213141516171819202122232425262728293031323334

1f1h1d1e2f2h2d2e3f3h3d3e4f4h4d4e5f5h5d5e6f6h6d6e7f7h7d7e8f8h8d8e

COM0

PIN COM0

’430 Pins LCD Pinout

Pinout and Connections

NCNC

DIGIT8 DIGIT1

1a1b1c1g2a2b2c2g3a3b3c3g4a4b4c4g5a5b5c5g6a6b6c6g7a7b7c7g8a8b8c8g

COM1

COM1

LCD

Display MemoryConnections

g e d---- c---- n = 30

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09Fh

MAB 0A0h

Page 742: MSP430 - general.pdf

LCD_A Controller Operation

26-14 LCD_A Controller

2-Mux Mode Software Example

; All eight segments of a digit are often located in two; display memory bytes with the 2mux display rate;a EQU 002hb EQU 020hc EQU 008hd EQU 004he EQU 040hf EQU 001hg EQU 080hh EQU 010h; The register content of Rx should be displayed.; The Table represents the ’on’−segments according to the; content of Rx.;

...........

...........MOV.B Table(Rx),Ry ; Load segment information into

; temporary memory.MOV.B Ry,&LCDn ; (Ry) = 0000 0000 gebh cdaf

; Note:; All bits of an LCD memory byte; are written

RRA Ry ; (Ry) = 0000 0000 0geb hcdaRRA Ry ; (Ry) = 0000 0000 00ge bhcdMOV.B Ry,&LCDn+1 ; Note:

; All bits of an LCD memory byte; are written

...........

...........

...........Table DB a+b+c+d+e+f ; displays ”0”

...........DB a+b+c+d+e+f+g ; displays ”8”......................DB...........

;

Page 743: MSP430 - general.pdf

LCD_A Controller Operation

26-15LCD_A Controller

26.2.8 3-Mux Mode

In 3-mux mode, each MSP430 segment pin drives three LCD segments andthree common lines (COM0, COM1, and COM2) are used. Figure 26−8 showssome example 3-mux, 1/3 bias waveforms.

Figure 26−8. Example 3-Mux Waveforms

COM0

COM1

COM2

COM0

COM2

SP1

SP2

SP3

SP3SP2

SP1

fframe

V1V2V4V5

V1

V5

V1

V5

V1

0 V

−V1

V1

0 V

−V1

COM1

Resulting Voltage forSegment e (COM0−SP1)Segment Is Off.

Resulting Voltage forSegment d (COM0−SP2)Segment Is On.

SP = Segment Pin

d

e

V1V2V4V5

V1V2V4V5

V1V2V4V5

Page 744: MSP430 - general.pdf

LCD_A Controller Operation

26-16 LCD_A Controller

Figure 26−9 shows an example 3-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 26−9. 3-Mux LCD Example

28

e

hd

A

BG 0

3

A

BG

03

3 2 1 0 0

g d e

3 2 1 0 3 2 1 0

Sn+1 Sn

Parallel-SerialConversion

COM

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

a-- fy--

f e hy-- cb--c h db-- ga--

g d ea-- fy--

f e hy-- cb--

c h db-- ga--g d ea-- fy--

f e hy-- cb--c h db-- ga--

g d ea-- fy--

f e hy-- cb--

c h db-- ga--g da-- fy--

f ey-- cb--c hb-- ga--

26

242220

1816

14

1210

86

4

2

0

Digit 9

Digit 7

Digit 4

Digit 2

3 2 1

y y

Digit 5

Digit 3

Digit 1

Digit 6

Digit 8

Digit 10

DIGIT10 DIGIT1

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29

COM0COM1COM2COM3

123456789101112131415161718192021222324252627282930313233

1e1d1h2e2d2h3e3d3h4e4d4h5e5d5h6e6d6h7e7d7h8e8d8h9e9d9h10e10d10h

COM0

PIN COM0

’430 Pins LCD Pinout

Pinout and Connections

NC

1f1g1c2f2g2c3f3g3c4f4g4c5f5g5c6f6g6c7f7g7c8f8g8c9f9g9c10f10g10c

COM1

COM1

1y1a1b2y2a2b3y3a3b4y4a4b5y5a5b6y6a6b7y7a7b8y8a8b9y9a9b10y10a10b

COM2

COM2

Display Memory

LCD

Connections

eg da-- fy--

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09FhMAB n = 30

Page 745: MSP430 - general.pdf

LCD_A Controller Operation

26-17LCD_A Controller

3-Mux Mode Software Example

; The 3mux rate can support nine segments for each; digit. The nine segments of a digit are located in; 1 1/2 display memory bytes.;a EQU 0040hb EQU 0400hc EQU 0200hd EQU 0010he EQU 0001hf EQU 0002hg EQU 0020hh EQU 0100hY EQU 0004h; The LSDigit of register Rx should be displayed.; The Table represents the ’on’−segments according to the; LSDigit of register of Rx.; The register Ry is used for temporary memory;ODDDIG RLA Rx ; LCD in 3mux has 9 segments per

; digit; word table required for; displayed characters.

MOV Table(Rx),Ry ; Load segment information to; temporary mem.; (Ry) = 0000 0bch 0agd 0yfe

MOV.B Ry,&LCDn ; write ’a, g, d, y, f, e’ of; Digit n (LowByte)

SWPB Ry ; (Ry) = 0agd 0yfe 0000 0bchBIC.B #07h,&LCDn+1 ; write ’b, c, h’ of Digit n

; (HighByte)BIS.B Ry,&LCDn+1.....

EVNDIG RLA Rx ; LCD in 3mux has 9 segments per; digit; word table required for; displayed characters.

MOV Table(Rx),Ry ; Load segment information to; temporary mem.; (Ry) = 0000 0bch 0agd 0yfe

RLA Ry ; (Ry) = 0000 bch0 agd0 yfe0RLA Ry ; (Ry) = 000b ch0a gd0y fe00RLA Ry ; (Ry) = 00bc h0ag d0yf e000RLA Ry ; (Ry) = 0bch 0agd 0yfe 0000BIC.B #070h,&LCDn+1BIS.B Ry,&LCDn+1 ; write ’y, f, e’ of Digit n+1

; (LowByte)SWPB Ry ; (Ry) = 0yfe 0000 0bch 0agdMOV.B Ry,&LCDn+2 ; write ’b, c, h, a, g, d’ of

; Digit n+1 (HighByte)...........

Table DW a+b+c+d+e+f ; displays ”0”DW b+c ; displays ”1”......................DW a+e+f+g ; displays ”F”

Page 746: MSP430 - general.pdf

LCD_A Controller Operation

26-18 LCD_A Controller

26.2.9 4-Mux Mode

In 4-mux mode, each MSP430 segment pin drives four LCD segments and allfour common lines (COM0, COM1, COM2, and COM3) are used.Figure 26−10 shows some example 4-mux, 1/3 bias waveforms.

Figure 26−10. Example 4-Mux Waveforms

fframe

V1V2V4V5

V1

0 V

−V1

V1

0 V

−V1

COM0

COM1

COM2

COM3

SP1

SP2

COM3

COM2

COM1

COM0

SP2SP1

Resulting Voltage forSegment e (COM1−SP1)Segment Is Off.

Resulting Voltage forSegment c (COM1−SP2)Segment Is On.

SP = Segment Pin

ce

V1V2V4V5

V1V2V4V5

V1V2V4V5

V1V2V4V5

V1V2V4V5

Page 747: MSP430 - general.pdf

LCD_A Controller Operation

26-19LCD_A Controller

Figure 26−11 shows an example 4-mux LCD, pinout, LCD-to-MSP430connections, and the resulting segment mapping. This is only an example.Segment mapping in a user’s application depends on the LCD pinout and onthe MSP430-to-LCD connections.

Figure 26−11.4-Mux LCD Example

e d

26

28

A

BG 0

3

A

BG

03

3 2 1 0 0

3 2 1 0 3 2 1 0

Sn+1 Sn

COM

c hba gf

24

22

20

18

16

14

12

10

8

6

4

2

0

Digit 9

Digit 7

Digit 4

Digit 2

3 2 1

Digit 5

Digit 3

Digit 1

Digit 6

Digit 8

Digit 10

c h dba egf

c h dba egf

c h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egfc h dba egf

c h dba egf

Digit 14

Digit 12

Digit 11

Digit 13

Digit 15

a

b

c

d

e

f g

h

a

b

c

d

e

f g

h

DIGIT15 DIGIT1

S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23S24S25S26S27S28S29

COM0COM1COM2COM3

12345678910111213141516171819202122232425262728293031323334

1d1h2d2h3d3h4d4h5d5h6d6h7d7h8d8h9d9h10d10h11d11h12d12h13d13h14d14h15d15h

COM0

PIN COM0

’430 Pins LCD PinoutConnections

1e1c2e2c3e3c4e4c5e5c6e6c7e7c8e8c9e9c

10e10c11e11c12e12c13e13c14e14c15e15c

COM1

COM1

1g1b2g2b3g3b4g4b5g5b6g6b7g7b8g8b9g9b10g10b11g11b12g12b13g13b14g14b15g15b

COM2

COM2

1f1a2f2a3f3a4f4a5f5a6f6a7f7a8f8a9f9a10f10a11f11a12f12a13f13a14f14a15f15a

COM3

COM3

Display Memory

LCD

Parallel-SerialConversion

Pinout and Connections

e dc hba gf n = 30 Digit 16

091h092h093h

094h

095h096h097h098h099h09Ah

09Bh

09Ch09Dh

09Eh09FhMAB

Page 748: MSP430 - general.pdf

LCD_A Controller Operation

26-20 LCD_A Controller

4-Mux Mode Software Example

; The 4mux rate supports eight segments for each digit.; All eight segments of a digit can often be located in; one display memory bytea EQU 080hb EQU 040hc EQU 020hd EQU 001he EQU 002hf EQU 008hg EQU 004hh EQU 010h;; The LSDigit of register Rx should be displayed.; The Table represents the ’on’−segments according to the; content of Rx.;

MOV.B Table(Rx),&LCDn ; n = 1 ..... 15; all eight segments are; written to the display; memory

...........

...........

Table DB a+b+c+d+e+f ; displays ”0”DB b+c ; displays ”1”......................DB b+c+d+e+g ; displays ”d”DB a+d+e+f+g ; displays ”E”DB a+e+f+g ; displays ”F”

Page 749: MSP430 - general.pdf

LCD_A Controller Operation

26-21LCD_A Controller

26.3 LCD Controller Registers

The LCD Controller registers are listed in Table 26−2.

Table 26−2.LCD Controller Registers

Register Short Form Register Type Address Initial State

LCD_A control register LCDACTL Read/write 090h Reset with PUC

LCD memory 1 LCDM1 Read/write 091h Unchanged

LCD memory 2 LCDM2 Read/write 092h Unchanged

LCD memory 3 LCDM3 Read/write 093h Unchanged

LCD memory 4 LCDM4 Read/write 094h Unchanged

LCD memory 5 LCDM5 Read/write 095h Unchanged

LCD memory 6 LCDM6 Read/write 096h Unchanged

LCD memory 7 LCDM7 Read/write 097h Unchanged

LCD memory 8 LCDM8 Read/write 098h Unchanged

LCD memory 9 LCDM9 Read/write 099h Unchanged

LCD memory 10 LCDM10 Read/write 09Ah Unchanged

LCD memory 11 LCDM11 Read/write 09Bh Unchanged

LCD memory 12 LCDM12 Read/write 09Ch Unchanged

LCD memory 13 LCDM13 Read/write 09Dh Unchanged

LCD memory 14 LCDM14 Read/write 09Eh Unchanged

LCD memory 15 LCDM15 Read/write 09Fh Unchanged

LCD memory 16 LCDM16 Read/write 0A0h Unchanged

LCD memory 17 LCDM17 Read/write 0A1h Unchanged

LCD memory 18 LCDM18 Read/write 0A2h Unchanged

LCD memory 19 LCDM19 Read/write 0A3h Unchanged

LCD memory 20 LCDM20 Read/write 0A4h Unchanged

LCD_A port control 0 LCDAPCTL0 Read/write 0ACh Reset with PUC

LCD_A port control 1 LCDAPCTL1 Read/write 0ADh Reset with PUC

LCD_A voltage control 0 LCDAVCTL0 Read/write 0AEh Reset with PUC

LCD_A voltage control 1 LCDAVCTL1 Read/write 0AFh Reset with PUC

Page 750: MSP430 - general.pdf

LCD_A Controller Operation

26-22 LCD_A Controller

LCDACTL, LCD_A Control Register

7 6 5 4 3 2 1 0

LCDFREQx LCDMXx LCDSON Unused LCDON

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

LCDFREQx Bits7-5

LCD frequency select. These bits select the ACLK divider for the LCDfrequency.000 Divide by 32001 Divide by 64010 Divide by 96011 Divide by 128100 Divide by 192101 Divide by 256110 Divide by 384111 Divide by 512

LCDMXx Bits4-3

LCD mux rate. These bits select the LCD mode.00 Static01 2-mux10 3-mux11 4-mux

LCDSON Bit 2 LCD segments on. This bit supports flashing LCD applications by turningoff all segment lines, while leaving the LCD timing generator and R33enabled.0 All LCD segments are off1 All LCD segments are enabled and on or off according to their

corresponding memory location.

Unused Bit 1 Unused

LCDON Bit 0 LCD On. This bit turns on the LCD_A module.0 LCD_A module off.1 LCD_A module on.

Page 751: MSP430 - general.pdf

LCD_A Controller Operation

26-23LCD_A Controller

LCDAPCTL0, LCD_A Port Control Register 0

7 6 5 4 3 2 1 0

LCDS28 LCDS24 LCDS20 LCDS16 LCDS12 LCDS8 LCDS4 LCDS0†

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

† Segments S0−S3 on the MSP430FG461x devices are disabled from LCD functionality when charge pump is enabled.

LCDS28 Bit 7 LCD segment 28 to 31 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS24 Bit 6 LCD segment 24 to 27 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS20 Bit 5 LCD segment 20 to 23 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS16 Bit 4 LCD segment 16 to 19 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS12 Bit 3 LCD segment 12 to 15 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS8 Bit 2 LCD segment 8 to 11 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS4 Bit 1 LCD segment 4 to 7 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS0 Bit 0 LCD segment 0 to 3 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

Page 752: MSP430 - general.pdf

LCD_A Controller Operation

26-24 LCD_A Controller

LCDAPCTL1, LCD_A Port Control Register 1

7 6 5 4 3 2 1 0

Unused LCDS36 LCDS32

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bits7−2

Unused

LCDS36 Bit 1 LCD segment 36 to 39 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

LCDS32 Bit 0 LCD segment 32 to 35 enableThis bit only affects pins with multiplexed functions. Dedicated LCD pinsare always LCD function.0 Multiplexed pins are port functions.1 Pins are LCD functions

Page 753: MSP430 - general.pdf

LCD_A Controller Operation

26-25LCD_A Controller

LCDAVCTL0, LCD_A Voltage Control Register 0

7 6 5 4 3 2 1 0

Unused R03EXT REXT VLCDEXT LCDCPEN VLCDREFx LCD2B

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bit 7 Unused

R03EXT Bit 6 V5 voltage select. This bit selects the external connection for the lowestLCD voltage. R03EXT is ignored if there is no R03 pin available.0 V5 is AVSS1 V5 is sourced from the R03 pin

REXT Bit 5 V2 − V4 voltage select. This bit selects the external connections forvoltages V2 − V4.0 V2 − V4 are generated internally1 V2 − V4 are sourced externally and the internal bias generator is

switched off

VLCDEXT Bit 4 VLCD source select0 VLCD is generated internally1 VLCD is sourced externally

LCDCPEN Bit 3 Charge pump enable.0 Charge pump disabled.1 Charge pump enabled when VLCD is generated internally

(VLCDEXT = 0) and VLCDx > 0 or VLCDREFx > 0.

VLCDREFx Bits2−1

Charge pump reference select00 Internal01 External10 Reserved11 Reserved

LCD2B Bit 0 Bias select. LCD2B is ignored when LCDMx = 00.0 1/3 bias1 1/2 bias

Page 754: MSP430 - general.pdf

LCD_A Controller Operation

26-26 LCD_A Controller

LCDAVCTL1, LCD_A Voltage Control Register 1

7 6 5 4 3 2 1 0

Unused VLCDx Unused

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

Unused Bits7−5

Unused

VLCDx Bits4−1

Charge pump voltage select. LCDCPEN must be 1 for the charge pump tobe enabled. AVCC is used for VLCD when VLCDx = 0000 and VREFx = 00and VLCDEXT = 0.0000 Charge pump disabled0001 VLCD = 2.60 V0010 VLCD = 2.66 V0011 VLCD = 2.72 V0100 VLCD = 2.78 V0101 VLCD = 2.84 V0110 VLCD = 2.90 V0111 VLCD = 2.96 V1000 VLCD = 3.02 V1001 VLCD = 3.08 V1010 VLCD = 3.14 V1011 VLCD = 3.20 V1100 VLCD = 3.26 V1101 VLCD = 3.32 V1110 VLCD = 3.38 V1111 VLCD = 3.44 V

Unused Bit 0 Unused

Page 755: MSP430 - general.pdf

27-1ADC10

ADC10

The ADC10 module is a high-performance 10-bit analog-to-digital converter.This chapter describes the operation of the ADC10 module of the 4xx family.The ADC10 is implemented on the MSP4340F41x2 devices.

Topic Page

16.1 ADC10 Introduction 16-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.2 ADC10 Operation 16-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16.3 ADC10 Registers 16-24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 27

Page 756: MSP430 - general.pdf

ADC10 Introduction

27-2 ADC10

27.1 ADC10 Introduction

The ADC10 module supports fast, 10-bit analog-to-digital conversions. Themodule implements a 10-bit SAR core, sample select control, referencegenerator, and data transfer controller (DTC).

The DTC allows ADC10 samples to be converted and stored anywhere inmemory without CPU intervention. The module can be configured with usersoftware to support a variety of applications.

ADC10 features include:

Greater than 200 ksps maximum conversion rate

Monotonic10-bit converter with no missing codes

Sample-and-hold with programmable sample periods

Conversion initiation by software or Timer_A

Software selectable on-chip reference voltage generation (1.5 V or 2.5 V)

Software selectable internal or external reference

Up to twelve external input channels

Conversion channels for internal temperature sensor, VCC, and externalreferences

Selectable conversion clock source

Single-channel, repeated single-channel, sequence, and repeatedsequence conversion modes

ADC core and reference voltage can be powered down separately

Data transfer controller for automatic storage of conversion results

The block diagram of ADC10 is shown in Figure 27−1.

Page 757: MSP430 - general.pdf

ADC10 Introduction

27-3ADC10

Figure 27−1. ADC10 Block Diagram

SampleandHold 10−bit SAR

Divider/1 .. /8

AVCC

ACLK

MCLK

SMCLK

ADC10SC

TA0_1

TA1_0

Data TransferController RAM, Flash, Peripherials

VR− VR+

VeREF+

VREF+

ADC10ON

INCHx

REFBURST

ADC10SSELx

ADC10DIVx

SHSx

ADC10SHTx MSC

ENCBUSY

ADC10DF

ADC10CLK

SREF2

ADC10TB ADC10B1ADC10CT

ISSH

ADC10SR

ADC10OSC

Ref_x

S/H Convert

SAMPCON

1

0

SyncSample Timer

/4/8/16/64

SHI

ADC10SA

n

4

A0A1A2A3A4A5A6A7

REFONINCHx=0Ah

2_5V

1.5V or 2.5VReference

on

Ref_x

SREF1

00

01

10

11

00

01

10

11

00

01

10

11

00

01

10

11

000111

01

SREF010

CONSEQx

AVSS

1

0

INCHx=0Bh

Auto

ADC10MEM

R

R

0

1

REFOUTSREF1

10011000

00100001

00110100010101100111

0000

10111010

0001

1111111011011100A12†

A13†

A14†

A15†

†Not all devices support all channels. See the devices specific datasheet for details.

VREF−/VeREF−AVCC

AVSS

AVCC

TA1_1

Page 758: MSP430 - general.pdf

ADC10 Operation

27-4 ADC10

27.2 ADC10 Operation

The ADC10 module is configured with user software. The setup and operationof the ADC10 is discussed in the following sections.

27.2.1 10-Bit ADC Core

The ADC core converts an analog input to its 10-bit digital representation andstores the result in the ADC10MEM register. The core uses twoprogrammable/selectable voltage levels (VR+ and VR−) to define the upper andlower limits of the conversion. The digital output (NADC) is full scale (03FFh)when the input signal is equal to or higher than VR+, and zero when the inputsignal is equal to or lower than VR−. The input channel and the referencevoltage levels (VR+ and VR−) are defined in the conversion-control memory.Conversion results may be in straight binary format or 2s-complement format.The conversion formula for the ADC result when using straight binary formatis:

NADC 1023 Vin – VR–VR– VR–

The ADC10 core is configured by two control registers, ADC10CTL0 andADC10CTL1. The core is enabled with the ADC10ON bit. With few exceptionsthe ADC10 control bits can only be modified when ENC = 0. ENC must be setto 1 before any conversion can take place.

Conversion Clock Selection

The ADC10CLK is used both as the conversion clock and to generate thesampling period. The ADC10 source clock is selected using the ADC10SSELxbits and can be divided from 1-8 using the ADC10DIVx bits. PossibleADC10CLK sources are SMCLK, MCLK, ACLK and an internal oscillatorADC10OSC .

The ADC10OSC, generated internally, is in the 5-MHz range, but varies withindividual devices, supply voltage, and temperature. See the device-specificdatasheet for the ADC10OSC specification.

The user must ensure that the clock chosen for ADC10CLK remains activeuntil the end of a conversion. If the clock is removed during a conversion, theoperation will not complete, and any result will be invalid.

Page 759: MSP430 - general.pdf

ADC10 Operation

27-5ADC10

27.2.2 ADC10 Inputs and Multiplexer

The eight external and four internal analog signals are selected as the channelfor conversion by the analog input multiplexer. The input multiplexer is abreak-before-make type to reduce input-to-input noise injection resulting fromchannel switching as shown in Figure 27−2. The input multiplexer is also aT-switch to minimize the coupling between channels. Channels that are notselected are isolated from the A/D and the intermediate node is connected toanalog ground (VSS) so that the stray capacitance is grounded to helpeliminate crosstalk.

The ADC10 uses the charge redistribution method. When the inputs areinternally switched, the switching action may cause transients on the inputsignal. These transients decay and settle before causing errant conversion.

Figure 27−2. Analog Multiplexer

R ~ 100Ohm

ESD Protection

INCHx

InputAx

Analog Port Selection

The ADC10 external inputs Ax, VeREF+, and VREF− share terminals withgeneral purpose I/O ports, which are digital CMOS gates (see device-specificdatasheet). When analog signals are applied to digital CMOS gates, parasiticcurrent can flow from VCC to GND. This parasitic current occurs if the inputvoltage is near the transition level of the gate. Disabling the port pin buffereliminates the parasitic current flow and therefore reduces overall currentconsumption. The ADC10AEx bits provide the ability to disable the port pininput and output buffers.

; P7.5 on MSP430x41x2 device configured for analog input

BIS.B #01h,&ADC10AE0 ; P7.5 ADC10 function and enable

Page 760: MSP430 - general.pdf

ADC10 Operation

27-6 ADC10

27.2.3 Voltage Reference Generator

The ADC10 module contains a built-in voltage reference with two selectablevoltage levels. Setting REFON = 1 enables the internal reference. WhenREF2_5V = 1, the internal reference is 2.5 V. When REF2_5V = 0, thereference is 1.5 V. The internal reference voltage may be used internally and,when REFOUT = 0, externally on pin VREF+.

External references may be supplied for VR+ and VR− through pins A4 and A3respectively. When external references are used, or when VCC is used as thereference, the internal reference may be turned off to save power.

An external positive reference VeREF+ can be buffered by setting SREF0 = 1and SREF1 = 1. This allows using an external reference with a large internalresistance at the cost of the buffer current. When REFBURST = 1 theincreased current consumption is limited to the sample and conversion period.

External storage capacitance is not required for the ADC10 reference sourceas on the ADC12.

Internal Reference Low-Power Features

The ADC10 internal reference generator is designed for low powerapplications. The reference generator includes a band-gap voltage sourceand a separate buffer. The current consumption of each is specified separatelyin the device-specific datasheet. When REFON = 1, both are enabled andwhen REFON = 0 both are disabled. The total settling time when REFONbecomes set is 30 µs.

When REFON = 1, but no conversion is active, the buffer is automaticallydisabled and automatically re-enabled when needed. When the buffer isdisabled, it consumes no current. In this case, the band-gap voltage sourceremains enabled.

When REFOUT = 1, the REFBURST bit controls the operation of the internalreference buffer. When REFBURST = 0, the buffer will be on continuously,allowing the reference voltage to be present outside the device continuously.When REFBURST = 1, the buffer is automatically disabled when the ADC10is not actively converting, and automatically re-enabled when needed.

The internal reference buffer also has selectable speed vs. power settings.When the maximum conversion rate is below 50 ksps, setting ADC10SR = 1reduces the current consumption of the buffer approximately 50%.

27.2.4 Auto Power-Down

The ADC10 is designed for low power applications. When the ADC10 is notactively converting, the core is automatically disabled and automaticallyre-enabled when needed. The ADC10OSC is also automatically enabledwhen needed and disabled when not needed. When the core or oscillator isdisabled, it consumes no current.

Page 761: MSP430 - general.pdf

ADC10 Operation

27-7ADC10

27.2.5 Sample and Conversion Timing

An analog-to-digital conversion is initiated with a rising edge of sample inputsignal SHI. The source for SHI is selected with the SHSx bits and includes thefollowing for MSP430F41x2:

The ADC10SC bit The Timer_A0 Output Unit 1 The Timer_A1 Output Unit 0 The Timer_A1 Output Unit 1

The polarity of the SHI signal source can be inverted with the ISSH bit. TheSHTx bits select the sample period tsample to be 4, 8, 16, or 64 ADC10CLKcycles. The sampling timer sets SAMPCON high for the selected sampleperiod after synchronization with ADC10CLK. Total sampling time is tsampleplus tsync.The high-to-low SAMPCON transition starts the analog-to-digitalconversion, which requires 11 ADC10CLK cycles as shown in Figure 27−3.

Figure 27−3. Sample Timing

StartSampling

StopSampling

ConversionComplete

SAMPCON

SHI

tsample tconvert

tsync

13 x ADC10CLKs

StartConversion

ADC10CLK

Sample Timing Considerations

When SAMPCON = 0 all Ax inputs are high impedance. When SAMPCON =1, the selected Ax input can be modeled as an RC low-pass filter during thesampling time tsample, as shown below in Figure 27−4. An internal MUX-oninput resistance RI (max. 2 kΩ) in series with capacitor CI (max. 27 pF) is seenby the source. The capacitor CI voltage VC must be charged to within ½ LSBof the source voltage VS for an accurate 10-bit conversion.

Page 762: MSP430 - general.pdf

ADC10 Operation

27-8 ADC10

Figure 27−4. Analog Input Equivalent Circuit

RS RIVS VC

MSP430

CI

VI

VI = Input voltage at pin AxVS = External source voltageRS = External source resistance RI = Internal MUX-on input resistanceCI = Input capacitanceVC = Capacitance-charging voltage

The resistance of the source RS and RI affect tsample.The following equationscan be used to calculate the minimum sampling time for a 10-bit conversion.

tsample (RS RI) ln(211) CI

Substituting the values for RI and CI given above, the equation becomes:

tsample (RS 2k) 7.625 27pF

For example, if RS is 10 kΩ, tsample must be greater than 2.47 µs.

When the reference buffer is used in burst mode, the sampling time must begreater than the sampling time calculated and the settling time of the buffer,tREFBURST:

tsample (RS RI) ln(211) CItREFBURST

For example, if VRef is 1.5 V and RS is 10 kΩ, tsample must be greater than 2.47µs when ADC10SR = 0, or 2.5 µs when ADC10SR = 1. See the device-specificdatasheet for parameters.

To calculate the buffer settling time when using an external reference, theformula is:

tREFBURST SR VRef 0.5s

Where:

SR: Buffer slew rate(~1 µs/V when ADC10SR = 0 and ~2 µs/V when ADC10SR = 1)

Vref: External reference voltage

Page 763: MSP430 - general.pdf

ADC10 Operation

27-9ADC10

27.2.6 Conversion Modes

The ADC10 has four operating modes selected by the CONSEQx bits asdiscussed in Table 27−1.

Table 27−1.Conversion Mode Summary

CONSEQx Mode Operation

00 Single channelsingle-conversion

A single channel is converted once.

01 Sequence-of-channels

A sequence of channels is converted once.

10 Repeat singlechannel

A single channel is converted repeatedly.

11 Repeat sequence-of-channels

A sequence of channels is convertedrepeatedly.

Page 764: MSP430 - general.pdf

ADC10 Operation

27-10 ADC10

Single-Channel Single-Conversion Mode

A single channel selected by INCHx is sampled and converted once. The ADCresult is written to ADC10MEM. Figure 27−5 shows the flow of thesingle-channel, single-conversion mode. When ADC10SC triggers aconversion, successive conversions can be triggered by the ADC10SC bit.When any other trigger source is used, ENC must be toggled between eachconversion.

Figure 27−5. Single-Channel Single-Conversion Mode

ADC10Off

x = INCHxWait for Enable

ENC =

Wait for Trigger

Sample, InputChannel

ENC =

ENC =SHS = 0

andENC = 1 or

andADC10SC =

SAMPCON =

Convert

ENC = 0

ENC = 0†

12 x ADC10CLK

ConversionCompleted,

Result toADC10MEM,

ADC10IFG is Set

1 x ADC10CLK

† Conversion result is unpredictable

ENC = 0†

ADC10ON = 1

CONSEQx = 00

(4/8/16/64) x ADC10CLK

x = input channel Ax

Page 765: MSP430 - general.pdf

ADC10 Operation

27-11ADC10

Sequence-of-Channels Mode

A sequence of channels is sampled and converted once. The sequencebegins with the channel selected by INCHx and decrements to channel A0.Each ADC result is written to ADC10MEM. The sequence stops afterconversion of channel A0. Figure 27−6 shows the sequence-of-channelsmode. When ADC10SC triggers a sequence, successive sequences can betriggered by the ADC10SC bit . When any other trigger source is used, ENCmust be toggled between each sequence.

Figure 27−6. Sequence-of-Channels Mode

ADC10Off

x = INCHxWait for Enable

ENC =

Wait for Trigger

Sample,Input Channel Ax

ENC =

ENC =SHS = 0

andENC = 1 or

andADC10SC =

SAMPCON =

Convert

12 x ADC10CLK

ConversionCompleted,

Result to ADC10MEM,ADC10IFG is Set

1 x ADC10CLK

ADC10ON = 1

CONSEQx = 01

MSC = 1andx ≠ 0

x = 0

If x > 0 then x = x −1

MSC = 0andx ≠ 0

(4/8/16/64) x ADC10CLK

If x > 0 then x = x −1

x = input channel Ax

Page 766: MSP430 - general.pdf

ADC10 Operation

27-12 ADC10

Repeat-Single-Channel Mode

A single channel selected by INCHx is sampled and converted continuously.Each ADC result is written to ADC10MEM. Figure 27−7 shows therepeat-single-channel mode.

Figure 27−7. Repeat-Single-Channel Mode

ADC10Off

x = INCHxWait for Enable

ENC =

Wait for Trigger

ENC =

ENC =SHS = 0

andENC = 1 or

andADC10SC =

SAMPCON =

(4/8/16/64) × ADC10CLK

Convert

12 x ADC10CLK

ConversionCompleted,

Result to ADC10MEM,ADC10IFG is Set

1 x ADC10CLK

ADC10ON = 1

CONSEQx = 10

MSC = 1and

ENC = 1

ENC = 0

MSC = 0and

ENC = 1

Sample,Input Channel Ax

x = input channel Ax

Page 767: MSP430 - general.pdf

ADC10 Operation

27-13ADC10

Repeat-Sequence-of-Channels Mode

A sequence of channels is sampled and converted repeatedly. The sequencebegins with the channel selected by INCHx and decrements to channel A0.Each ADC result is written to ADC10MEM. The sequence ends afterconversion of channel A0, and the next trigger signal re-starts the sequence.Figure 27−8 shows the repeat-sequence-of-channels mode.

Figure 27−8. Repeat-Sequence-of-Channels Mode

ADC10Off

x = INCHxWait for Enable

ENC =

Wait for Trigger

SampleInput Channel Ax

ENC =

ENC =SHS = 0

andENC = 1 or

andADC10SC =

Convert

12 x ADC10CLK

ConversionCompleted,

Result to ADC10MEM,ADC10IFG is Set

1 x ADC10CLK

ADC10ON = 1

CONSEQx = 11

MSC = 1and

(ENC = 1or

x ≠ 0)

ENC = 0andx = 0MSC = 0

and(ENC = 1

orx ≠ 0)

If x = 0 then x = INCHelse x = x −1

(4/8/16/64) x ADC10CLK

If x = 0 then x = INCHelse x = x −1

x = input channel Ax

SAMPCON =

Page 768: MSP430 - general.pdf

ADC10 Operation

27-14 ADC10

Using the MSC Bit

To configure the converter to perform successive conversions automaticallyand as quickly as possible, a multiple sample and convert function is available.When MSC = 1 and CONSEQx > 0 the first rising edge of the SHI signaltriggers the first conversion. Successive conversions are triggeredautomatically as soon as the prior conversion is completed. Additional risingedges on SHI are ignored until the sequence is completed in thesingle-sequence mode or until the ENC bit is toggled in repeat-single-channel,or repeated-sequence modes. The function of the ENC bit is unchanged whenusing the MSC bit.

Stopping Conversions

Stopping ADC10 activity depends on the mode of operation. Therecommended ways to stop an active conversion or conversion sequence are:

Resetting ENC in single-channel single-conversion mode stops aconversion immediately and the results are unpredictable. For correctresults, poll the ADC10BUSY bit until reset before clearing ENC.

Resetting ENC during repeat-single-channel operation stops theconverter at the end of the current conversion.

Resetting ENC during a sequence or repeat sequence mode stops theconverter at the end of the sequence.

Any conversion mode may be stopped immediately by setting theCONSEQx=0 and resetting the ENC bit. Conversion data is unreliable.

Page 769: MSP430 - general.pdf

ADC10 Operation

27-15ADC10

27.2.7 ADC10 Data Transfer Controller

The ADC10 includes a data transfer controller (DTC) to automatically transferconversion results from ADC10MEM to other on-chip memory locations. TheDTC is enabled by setting the ADC10DTC1 register to a nonzero value.

When the DTC is enabled, each time the ADC10 completes a conversion andloads the result to ADC10MEM, a data transfer is triggered. No softwareintervention is required to manage the ADC10 until the predefined amount ofconversion data has been transferred. Each DTC transfer requires one CPUMCLK. To avoid any bus contention during the DTC transfer, the CPU is halted,if active, for the one MCLK required for the transfer.

A DTC transfer must not be initiated while the ADC10 is busy. Software mustensure that no active conversion or sequence is in progress when the DTC isconfigured:

; ADC10 activity test

BIC.W #ENC,&ADC10CTL0 ;

busy_test BIT.W #BUSY,&ADC10CTL1;

JNZ busy_test ;

MOV.W #xxx,&ADC10SA ; Safe

MOV.B #xx,&ADC10DTC1 ;

; continue setup

Page 770: MSP430 - general.pdf

ADC10 Operation

27-16 ADC10

One-Block Transfer Mode

The one-block mode is selected if the ADC10TB is reset. The value n inADC10DTC1 defines the total number of transfers for a block. The block startaddress is defined anywhere in the MSP430 address range using the 16-bitregister ADC10SA. The block ends at ADC10SA+2n–2. The one-blocktransfer mode is shown in Figure 27−9.

Figure 27−9. One-Block Transfer

ADC10SA

ADC10SA+2

ADC10SA+2n−2

ADC10SA+2n−4

1st transfer

’n’th transfer

2nd transfer

TB=0

DTC

The internal address pointer is initially equal to ADC10SA and the internaltransfer counter is initially equal to ‘n’. The internal pointer and counter are notvisible to software. The DTC transfers the word-value of ADC10MEM to theaddress pointer ADC10SA. After each DTC transfer, the internal addresspointer is incremented by two and the internal transfer counter is decrementedby one.

The DTC transfers continue with each loading of ADC10MEM, until theinternal transfer counter becomes equal to zero. No additional DTC transferswill occur until a write to ADC10SA. When using the DTC in the one-blockmode, the ADC10IFG flag is set only after a complete block has beentransferred. Figure 27−10 shows a state diagram of the one-block mode.

Page 771: MSP430 - general.pdf

ADC10 Operation

27-17ADC10

Figure 27−10. State Diagram for Data Transfer Control in One-Block Transfer Mode

DTC idle

DTC reset

n=0 (ADC10DTC1)

InitializeStart Address in ADC10SA

Wait until ADC10MEMis written

Waitfor

CPU ready

Write to ADC10MEMcompleted

Transfer data toAddress AD

AD = AD + 2x = x − 1

Synchronizewith MCLK

1 x MCLK cycle

n is latchedin counter ’x’

x > 0

DTC init

Wait for write toADC10SA

Write toADC10SA

Write to ADC10SA

x = 0

PrepareDTC

DTCoperation

Write to ADC10SAor

n = 0

Write to ADC10SA

x = n

AD = SA

n = 0

ADC10IFG=1

ADC10TB = 0and

ADC10CT = 0

ADC10TB = 0and

ADC10CT = 1

n ≠ 0

Page 772: MSP430 - general.pdf

ADC10 Operation

27-18 ADC10

Two-Block Transfer Mode

The two-block mode is selected if the ADC10TB bit is set. The value n inADC10DTC1 defines the number of transfers for one block. The addressrange of the first block is defined anywhere in the MSP430 address range withthe 16-bit register ADC10SA. The first block ends at ADC10SA+2n–2. Theaddress range for the second block is defined as SA+2n to SA+4n–2. Thetwo-block transfer mode is shown in Figure 27−11.

Figure 27−11.Two-Block Transfer

ADC10SA

ADC10SA+2

ADC10SA+2n−2

ADC10SA+2n−4

1st transfer

’n’th transfer

2nd transfer

ADC10SA+4n−2

ADC10SA+4n−4

2 x ’n’th transfer

TB=1

DTC

The internal address pointer is initially equal to ADC10SA and the internaltransfer counter is initially equal to ‘n’. The internal pointer and counter are notvisible to software. The DTC transfers the word-value of ADC10MEM to theaddress pointer ADC10SA. After each DTC transfer the internal addresspointer is incremented by two and the internal transfer counter is decrementedby one.

The DTC transfers continue, with each loading of ADC10MEM, until theinternal transfer counter becomes equal to zero. At this point, block one is fulland both the ADC10IFG flag the ADC10B1 bit are set. The user can test theADC10B1 bit to determine that block one is full.

The DTC continues with block two. The internal transfer counter isautomatically reloaded with ’n’. At the next load of the ADC10MEM, the DTCbegins transferring conversion results to block two. After n transfers havecompleted, block two is full. The ADC10IFG flag is set and the ADC10B1 bitis cleared. User software can test the cleared ADC10B1 bit to determine thatblock two is full. Figure 27−12 shows a state diagram of the two-block mode.

Page 773: MSP430 - general.pdf

ADC10 Operation

27-19ADC10

Figure 27−12. State Diagram for Data Transfer Control in Two-Block Transfer Mode

DTC idle

DTC reset

ADC10B1 = 0ADC10TB = 1

n=0 (ADC10DTC1)

InitializeStart Address in ADC10SA

Wait until ADC10MEMis written

Waitfor

CPU ready

Write to ADC10MEMcompleted

Transfer data toAddress AD

AD = AD + 2x = x − 1

Synchronizewith MCLK

1 x MCLK cycle

n is latchedin counter ’x’

x > 0

DTC init

Wait for write toADC10SA

Write toADC10SA

Write to ADC10SA

x = 0

PrepareDTC

DTCoperation

Write to ADC10SAor

n = 0

ADC10IFG=1

ToggleADC10B1

Write to ADC10SA

x = n

If ADC10B1 = 0then AD = SA

ADC10B1 = 1or

ADC10CT=1

ADC10CT = 0and

ADC10B1 = 0

n = 0n ≠ 0

Page 774: MSP430 - general.pdf

ADC10 Operation

27-20 ADC10

Continuous Transfer

A continuous transfer is selected if ADC10CT bit is set. The DTC will not stopafter block one in (one-block mode) or block two (two-block mode) has beentransferred. The internal address pointer and transfer counter are set equal toADC10SA and n respectively. Transfers continue starting in block one. If theADC10CT bit is reset, DTC transfers cease after the current completion oftransfers into block one (in the one-block mode) or block two (in the two-blockmode) have been transfer.

DTC Transfer Cycle Time

For each ADC10MEM transfer, the DTC requires one or two MCLK clockcycles to synchronize, one for the actual transfer (while the CPU is halted), andone cycle of wait time. Because the DTC uses MCLK, the DTC cycle time isdependent on the MSP430 operating mode and clock system setup.

If the MCLK source is active, but the CPU is off, the DTC uses the MCLKsource for each transfer, without re-enabling the CPU. If the MCLK source isoff, the DTC temporarily restarts MCLK, sourced with DCOCLK, only duringa transfer. The CPU remains off and after the DTC transfer, MCLK is againturned off. The maximum DTC cycle time for all operating modes is show inTable 27−2.

Table 27−2.Maximum DTC Cycle Time

CPU Operating Mode Clock Source Maximum DTC Cycle Time

Active mode MCLK=DCOCLK 3 MCLK cycles

Active mode MCLK=LFXT1CLK 3 MCLK cycles

Low-power mode LPM0/1 MCLK=DCOCLK 4 MCLK cycles

Low-power mode LPM3/4 MCLK=DCOCLK 4 MCLK cycles + 2 µs†

Low-power mode LPM0/1 MCLK=LFXT1CLK 4 MCLK cycles

Low-power mode LPM3 MCLK=LFXT1CLK 4 MCLK cycles

Low-power mode LPM4 MCLK=LFXT1CLK 4 MCLK cycles + 2 µs†

† The additional 2 µs are needed to start the DCOCLK. See device-datasheet for parameters.

Page 775: MSP430 - general.pdf

ADC10 Operation

27-21ADC10

27.2.8 Using the Integrated Temperature Sensor

To use the on-chip temperature sensor, the user selects the analog inputchannel INCHx = 1010. Any other configuration is done as if an externalchannel was selected, including reference selection, conversion-memoryselection, etc.

The typical temperature sensor transfer function is shown in Figure 27−13.When using the temperature sensor, the sample period must be greater than30 µs. The temperature sensor offset error is large. Deriving absolutetemperature values in the application requires calibration. See thedevice-specific datasheet for the parameters.

Selecting the temperature sensor automatically turns on the on-chip referencegenerator as a voltage source for the temperature sensor. However, it does notenable the VREF+ output or affect the reference selections for the conversion.The reference choices for converting the temperature sensor are the same aswith any other channel.

Figure 27−13. Typical Temperature Sensor Transfer Function

Celsius

Volts

0 50 100

1.000

0.800

0.900

1.100

1.200

1.300

−50

0.700

VTEMP=0.00355(TEMPC)+0.986

Page 776: MSP430 - general.pdf

ADC10 Operation

27-22 ADC10

27.2.9 ADC10 Grounding and Noise Considerations

As with any high-resolution ADC, appropriate printed-circuit-board layout and

grounding techniques should be followed to eliminate ground loops, unwanted

parasitic effects, and noise.

Ground loops are formedwhen returncurrent from theA/D flows throughpaths

that are common with other analog or digital circuitry. If care is not taken, this

current can generate small, unwanted offset voltages that can add to or

subtract from the reference or input voltages of the A/D converter. The

connections shown in Figure 27--14 help avoid this.

In addition to grounding, ripple and noise spikes on the power supply lines due

to digital switching or switching power supplies can corrupt the conversion

result. A noise-free design is important to achieve high accuracy.

Figure 27--14. ADC10 Grounding and Noise Considerations (internal Vref).

DigitalPower SupplyDecoupling

100nF10uF

AnalogPower SupplyDecoupling(if available)

100nF10uF

DVCC

DVSS

AVCC

AVSS

Figure 27--15. ADC10 Grounding and Noise Considerations (external Vref).

DigitalPower SupplyDecoupling

100nF10uF

100nF10uF

Using an ExternalPositive Reference

Using an ExternalNegative Reference

DVCC

DVSS

AVCC

AVSS

VREF-/VeREF-

VREF+/VeREF+

AnalogPower SupplyDecoupling(if available)

Page 777: MSP430 - general.pdf

ADC10 Operation

27-23ADC10

27.2.10 ADC10 Interrupts

One interrupt and one interrupt vector are associated with the ADC10 asshown in Figure 27−16. When the DTC is not used (ADC10DTC1 = 0)ADC10IFG is set when conversion results are loaded into ADC10MEM. WhenDTC is used (ADC10DTC1 > 0) ADC10IFG is set when a block transfercompletes and the internal transfer counter ’n’ = 0. If both the ADC10IE andthe GIE bits are set, then the ADC10IFG flag generates an interrupt request.The ADC10IFG flag is automatically reset when the interrupt request isserviced or may be reset by software.

Figure 27−16. ADC10 Interrupt System

D Q IRQ, Interrupt Service Requested

ResetADC10CLK

POR

’n’ = 0Set ADC10IFG

IRACC, Interrupt Request Accepted

ADC10IE

Page 778: MSP430 - general.pdf

ADC10 Registers

27-24 ADC10

27.3 ADC10 Registers

The ADC10 registers are listed in Table 27−3.

Table 27−3.ADC10 Registers

Register Short Form Register Type Address Initial State

ADC10 Input enable register 0 ADC10AE0 Read/write 04Ah Reset with POR

ADC10 Input enable register 1 ADC10AE1 Read/write 04Bh Reset with POR

ADC10 control register 0 ADC10CTL0 Read/write 01B0h Reset with POR

ADC10 control register 1 ADC10CTL1 Read/write 01B2h Reset with POR

ADC10 memory ADC10MEM Read 01B4h Unchanged

ADC10 data transfer control register 0 ADC10DTC0 Read/write 048h Reset with POR

ADC10 data transfer control register 1 ADC10DTC1 Read/write 049h Reset with POR

ADC10 data transfer start address ADC10SA Read/write 01BCh 0200h with POR

Page 779: MSP430 - general.pdf

ADC10 Registers

27-25ADC10

ADC10CTL0, ADC10 Control Register 0

15 14 13 12 11 10 9 8

SREFx ADC10SHTx ADC10SR REFOUT REFBURST

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

MSC REF2_5V REFON ADC10ON ADC10IE ADC10IFG ENC ADC10SC

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Modifiable only when ENC = 0

SREFx Bits15-13

Select reference000 VR+ = VCC and VR− = VSS001 VR+ = VREF+ and VR− = VSS010 VR+ = VeREF+ and VR− = VSS011 VR+ = Buffered VeREF+ and VR− = VSS100 VR+ = VCC and VR− = VREF−/ VeREF−101 VR+ = VREF+ and VR− = VREF−/ VeREF−110 VR+ = VeREF+ and VR− = VREF−/ VeREF−111 VR+ = Buffered VeREF+ and VR− = VREF−/ VeREF−

ADC10SHTx

Bits12-11

ADC10 sample-and-hold time00 4 x ADC10CLKs01 8 x ADC10CLKs10 16 x ADC10CLKs11 64 x ADC10CLKs

ADC10SR Bit 10 ADC10 sampling rate. This bit selects the reference buffer drive capability forthe maximum sampling rate. Setting ADC10SR reduces the currentconsumption of the reference buffer.0 Reference buffer supports up to ~200 ksps1 Reference buffer supports up to ~50 ksps

REFOUT Bit 9 Reference output0 Reference output off1 Reference output on

REFBURST Bit 8 Reference burst.0 Reference buffer on continuously1 Reference buffer on only during sample-and-conversion

Page 780: MSP430 - general.pdf

ADC10 Registers

27-26 ADC10

MSC Bit 7 Multiple sample and conversion. Valid only for sequence or repeated modes.0 The sampling requires a rising edge of the SHI signal to trigger each

sample-and-conversion.1 The first rising edge of the SHI signal triggers the sampling timer, but

further sample-and-conversions are performed automatically as soonas the prior conversion is completed

REF2_5V Bit 6 Reference-generator voltage. REFON must also be set.0 1.5 V1 2.5 V

REFON Bit 5 Reference generator on0 Reference off1 Reference on

ADC10ON Bit 4 ADC10 on0 ADC10 off1 ADC10 on

ADC10IE Bit 3 ADC10 interrupt enable0 Interrupt disabled1 interrupt enabled

ADC10IFG Bit 2 ADC10 interrupt flag. This bit is set if ADC10MEM is loaded with a conversionresult. It is automatically reset when the interrupt request is accepted, or it maybe reset by software. When using the DTC this flag is set when a block oftransfers is completed.0 No interrupt pending1 Interrupt pending

ENC Bit 1 Enable conversion0 ADC10 disabled1 ADC10 enabled

ADC10SC Bit 0 Start conversion. Software-controlled sample-and-conversion start.ADC10SC and ENC may be set together with one instruction. ADC10SC isreset automatically.0 No sample-and-conversion start1 Start sample-and-conversion

Page 781: MSP430 - general.pdf

ADC10 Registers

27-27ADC10

ADC10CTL1, ADC10 Control Register 1

15 14 13 12 11 10 9 8

INCHx SHSx ADC10DF ISSH

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

ADC10DIVx ADC10SSELx CONSEQx ADC10BUSY

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r−0

Modifiable only when ENC = 0

INCHx Bits15-12

Input channel select. These bits select the channel for a single-conversion orthe highest channel for a sequence of conversions.0000 A00001 A10010 A20011 A30100 A40101 A50110 A60111 A71000 VeREF+1001 VREF−/VeREF−1010 Temperature sensor1011 (VCC – VSS) / 21100 (VCC – VSS) / 2, A12 on MSP430x22xx devices1101 (VCC – VSS) / 2, A13 on MSP430x22xx devices1110 (VCC – VSS) / 2, A14 on MSP430x22xx devices1111 (VCC – VSS) / 2, A15 on MSP430x22xx devices

SHSx Bits11-10

Sample-and-hold source select.For The MSP430F41x2 devices:00 ADC10SC bit01 Timer_A0.OUT110 Timer_A1.OUT011 Timer_A1.OUT1

ADC10DF Bit 9 ADC10 data format0 Straight binary1 2’s complement

ISSH Bit 8 Invert signal sample-and-hold0 The sample-input signal is not inverted.1 The sample-input signal is inverted.

Page 782: MSP430 - general.pdf

ADC10 Registers

27-28 ADC10

ADC10DIVx Bits7-5

ADC10 clock divider000 /1001 /2010 /3011 /4100 /5101 /6110 /7111 /8

ADC10SSELx

Bits4-3

ADC10 clock source select00 ADC10OSC01 ACLK10 MCLK11 SMCLK

CONSEQx Bits2-1

Conversion sequence mode select00 Single-channel-single-conversion01 Sequence-of-channels10 Repeat-single-channel11 Repeat-sequence-of-channels

ADC10BUSY

Bit 0 ADC10 busy. This bit indicates an active sample or conversion operation0 No operation is active.1 A sequence, sample, or conversion is active.

Page 783: MSP430 - general.pdf

ADC10 Registers

27-29ADC10

ADC10AE0, Analog (Input) Enable Control Register 0

7 6 5 4 3 2 1 0

ADC10AE0x

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

ADC10AE0x Bits7-0

ADC10 analog enable. These bits enable the corresponding pin for analoginput. BIT0 corresponds to A0, BIT1 corresponds to A1, etc.0 Analog input disabled1 Analog input enabled

ADC10AE1, Analog (Input) Enable Control Register 1

7 6 5 4 3 2 1 0

ADC10AE1x Reserved Reserved Reserved Reserved

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

ADC10AE1x Bits7-4

ADC10 analog enable. These bits enable the corresponding pin for analoginput. BIT4 corresponds to A12, BIT5 corresponds to A13, BIT6 correspondsto A14, and BIT7 corresponds to A15.0 Analog input disabled1 Analog input enabled

Page 784: MSP430 - general.pdf

ADC10 Registers

27-30 ADC10

ADC10MEM, Conversion-Memory Register, Binary Format

15 14 13 12 11 10 9 8

0 0 0 0 0 0 Conversion Results

r0 r0 r0 r0 r0 r0 r r

7 6 5 4 3 2 1 0

Conversion Results

r r r r r r r r

ConversionResults

Bits15-0

The 10-bit conversion results are right justified, straight-binary format. Bit 9is the MSB. Bits 15-10 are always 0.

ADC10MEM, Conversion-Memory Register, 2’s Complement Format

15 14 13 12 11 10 9 8

Conversion Results

r r r r r r r r

7 6 5 4 3 2 1 0

Conversion Results 0 0 0 0 0 0

r r r0 r0 r0 r0 r0 r0

ConversionResults

Bits15-0

The 10-bit conversion results are left-justified, 2’s complement format. Bit 15is the MSB. Bits 5-0 are always 0.

Page 785: MSP430 - general.pdf

ADC10 Registers

27-31ADC10

ADC10DTC0, Data Transfer Control Register 0

7 6 5 4 3 2 1 0

Reserved ADC10TB ADC10CT ADC10B1 ADC10FETCH

r0 r0 r0 r0 rw−(0) rw−(0) r−(0) rw−(0)

Reserved Bits7-4

Reserved. Always read as 0.

ADC10TB Bit 3 ADC10 two-block mode.0 One-block transfer mode1 Two-block transfer mode

ADC10CT Bit 2 ADC10 continuous transfer.0 Data transfer stops when one block (one-block mode) or two blocks

(two-block mode) have completed.1 Data is transferred continuously. DTC operation is stopped only if

ADC10CT cleared, or ADC10SA is written to.

ADC10B1 Bit 1 ADC10 block one. This bit indicates for two-block mode which block is filledwith ADC10 conversion results. ADC10B1 is valid only after ADC10IFG hasbeen set the first time during DTC operation. ADC10TB must also be set.0 Block 2 is filled1 Block 1 is filled

ADC10FETCH

Bit 0 This bit should normally be reset.

Page 786: MSP430 - general.pdf

ADC10 Registers

27-32 ADC10

ADC10DTC1, Data Transfer Control Register 1

7 6 5 4 3 2 1 0

DTC Transfers

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

DTCTransfers

Bits7-0

DTC transfers. These bits define the number of transfers in each block.0 DTC is disabled01h-0FFh Number of transfers per block

ADC10SA, Start Address Register for Data Transfer

15 14 13 12 11 10 9 8

ADC10SAx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(1) rw−(0)

7 6 5 4 3 2 1 0

ADC10SAx 0

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r0

ADC10SAx Bits15-1

ADC10 start address. These bits are the start address for the DTC. A writeto register ADC10SA is required to initiate DTC transfers.

Unused Bit 0 Unused, Read only. Always read as 0.

Page 787: MSP430 - general.pdf

28-1ADC12

ADC12

The ADC12 module is a high-performance 12-bit analog-to-digital converter(ADC). This chapter describes the ADC12. The ADC12 is implemented in theMSP430x43x MSP430x44x, and MSP430FG461x devices.

Topic Page

28.1 ADC12 Introduction 28-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28.2 ADC12 Operation 28-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28.3 ADC12 Registers 28-20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 28

Page 788: MSP430 - general.pdf

ADC12 Introduction

28-2 ADC12

28.1 ADC12 Introduction

The ADC12 module supports fast, 12-bit analog-to-digital conversions. Themodule implements a 12-bit SAR core, sample select control, referencegenerator and a 16 word conversion-and-control buffer. Theconversion-and-control buffer allows up to 16 independent ADC samples to beconverted and stored without any CPU intervention.

ADC12 features include:

Greater than 200-ksps maximum conversion rate

Monotonic 12-bit converter with no missing codes

Sample-and-hold with programmable sampling periods controlled bysoftware or timers.

Conversion initiation by software, Timer_A, or Timer_B

Software selectable on-chip reference voltage generation (1.5 V or 2.5 V)

Software selectable internal or external reference

Eight individually configurable external input channels (twelve onMSP430FG43x and MSP430FG461x devices)

Conversion channels for internal temperature sensor, AVCC, and externalreferences

Independent channel-selectable reference sources for both positive andnegative references

Selectable conversion clock source

Single-channel, repeat-single-channel, sequence, and repeat-sequenceconversion modes

ADC core and reference voltage can be powered down separately

Interrupt vector register for fast decoding of 18 ADC interrupts

16 conversion-result storage registers

The block diagram of ADC12 is shown in Figure 28−1.

Page 789: MSP430 - general.pdf

ADC12 Introduction

28-3ADC12

Figure 28−1. ADC12 Block Diagram

SampleandHold

VeREF+

12−bit SAR

VR−

−16 x 12MemoryBuffer

−16 x 8

MemoryControl

VR+

VREF+

VeREF−VREF− /

ADC12SC

TA1

TB1

TB0

Divider/1 .. /8

ADC12DIVx

ADC12CLK

ENC

MSC

SHP SHT0x

SAMPCON

SHI

S/H Convert

SyncSample Timer

/4 .. /1024

INCHx

4

A0A1A2A3A4A5A6A7

ADC12MEM0

ADC12MEM15

ADC12MCTL0

ADC12MCTL15

CSTARTADDx

4

4

SHT1x

CONSEQx

ACLK

MCLK

SMCLK

ADC12SSELx

ADC12OSC

00

01

10

11

00

01

10

11

SHSx

00

01

10

11

00

01

10

11

ISSH

1

0

0

1

SREF2 01

SREF10001 SREF010

ADC12ON

BUSY

REFONINCHx=0Ah

1.5 V or 2.5 VReference

on

Ref_x

Ref_x

INCHx=0Bh

11

R

R

0000

10011000

00100001

00110100010101100111

10111010

0001

1111111011011100

REF2_5V

AVCC

AVCC

AVCC

AVSS

AVSS

A12†

A13†

A14†

A15†

† MSP430FG43x and MSP430FG461x devices only

Page 790: MSP430 - general.pdf

ADC12 Operation

28-4 ADC12

28.2 ADC12 Operation

The ADC12 module is configured with user software. The setup and operationof the ADC12 is discussed in the following sections.

28.2.1 12-Bit ADC Core

The ADC core converts an analog input to its 12-bit digital representation andstores the result in conversion memory. The core uses twoprogrammable/selectable voltage levels (VR+ and VR−) to define the upper andlower limits of the conversion. The digital output (NADC) is full scale (0FFFh)when the input signal is equal to or higher than VR+, and zero when the inputsignal is equal to or lower than VR−. The input channel and the referencevoltage levels (VR+ and VR−) are defined in the conversion-control memory.The conversion formula for the ADC result NADC is:

NADC 4095 Vin VRVR VR

The ADC12 core is configured by two control registers, ADC12CTL0 andADC12CTL1. The core is enabled with the ADC12ON bit. The ADC12 can beturned off when not in use to save power. With few exceptions the ADC12control bits can only be modified when ENC = 0. ENC must be set to 1 beforeany conversion can take place.

Conversion Clock Selection

The ADC12CLK is used both as the conversion clock and to generate thesampling period when the pulse sampling mode is selected. The ADC12source clock is selected using the ADC12SSELx bits and can be divided by1 to 8 using the ADC12DIVx bits. Possible ADC12CLK sources are SMCLK,MCLK, ACLK, and an internal oscillator, ADC12OSC.

The ADC12OSC, generated internally, is in the 5-MHz range but varies withindividual devices, supply voltage, and temperature. See the device-specificdata sheet for the ADC12OSC specification.

The user must ensure that the clock chosen for ADC12CLK remains activeuntil the end of a conversion. If the clock is removed during a conversion, theoperation will not complete and any result will be invalid.

Page 791: MSP430 - general.pdf

ADC12 Operation

28-5ADC12

28.2.2 ADC12 Inputs and Multiplexer

The eight external and four internal analog signals are selected as the channelfor conversion by the analog input multiplexer. The input multiplexer is abreak-before-make type to reduce input-to-input noise injection resulting fromchannel switching as shown in Figure 28−2. The input multiplexer is also aT-switch to minimize the coupling between channels. Channels that are notselected are isolated from the A/D and the intermediate node is connected toanalog ground (AVSS) so that the stray capacitance is grounded to helpeliminate crosstalk.

The ADC12 uses the charge redistribution method. When the inputs areinternally switched, the switching action may cause transients on the inputsignal. These transients decay and settle before causing errant conversion.

Figure 28−2. Analog Multiplexer

R ~ 100 Ohm

ESD Protection

ADC12MCTLx.0−3

InputAx

Analog Port Selection

The ADC12 inputs are multiplexed with the port P6 pins, which are digitalCMOS gates. When analog signals are applied to digital CMOS gates,parasitic current can flow from VCC to GND. This parasitic current occurs if theinput voltage is near the transition level of the gate. Disabling the port pin buffereliminates the parasitic current flow and therefore reduces overall currentconsumption. The P6SELx bits provide the ability to disable the port pin inputand output buffers.

; P6.0 and P6.1 configured for analog input

BIS.B #3h,&P6SEL ; P6.1 and P6.0 ADC12 function

Page 792: MSP430 - general.pdf

ADC12 Operation

28-6 ADC12

28.2.3 Voltage Reference Generator

The ADC12 module contains a built-in voltage reference with two selectablevoltage levels, 1.5 V and 2.5 V. Either of these reference voltages may be usedinternally and externally on pin VREF+.

Setting REFON=1 enables the internal reference. When REF2_5V = 1, theinternal reference is 2.5 V, the reference is 1.5 V when REF2_5V = 0. Thereference can be turned off to save power when not in use.

For proper operation the internal voltage reference generator must besupplied with storage capacitance across VREF+ and AVSS. The recommendedstorage capacitance is a parallel combination of 10-µF and 0.1-µF capacitors.From turn-on, a maximum of 17 ms must be allowed for the voltage referencegenerator to bias the recommended storage capacitors. If the internalreference generator is not used for the conversion, the storage capacitors arenot required.

Note: Reference Decoupling

Approximately 200 µA is required from any reference used by the ADC12while the two LSBs are being resolved during a conversion. A parallelcombination of 10-µF and 0.1-µF capacitors is recommended for anyreference used as shown in Figure 28−11.

External references may be supplied for VR+ and VR− through pins VeREF+ andVREF−/VeREF− respectively.

28.2.4 Auto Power-Down

The ADC12 is designed for low power applications. When the ADC12 is notactively converting, the core is automatically disabled and automaticallyre-enabled when needed. The ADC12OSC is also automatically enabledwhen needed and disabled when not needed. The reference is notautomatically disabled, but can be disabled by setting REFON = 0. When thecore, oscillator, or reference are disabled, they consume no current.

Page 793: MSP430 - general.pdf

ADC12 Operation

28-7ADC12

28.2.5 Sample and Conversion Timing

An analog-to-digital conversion is initiated with a rising edge of the sampleinput signal SHI. The source for SHI is selected with the SHSx bits andincludes the following:

The ADC12SC bit The Timer_A Output Unit 1 The Timer_B Output Unit 0 The Timer_B Output Unit 1

The polarity of the SHI signal source can be inverted with the ISSH bit. TheSAMPCON signal controls the sample period and start of conversion. WhenSAMPCON is high, sampling is active. The high-to-low SAMPCON transitionstarts the analog-to-digital conversion, which requires 13 ADC12CLK cycles.Two different sample-timing methods are defined by control bit SHP, extendedsample mode and pulse mode.

Extended Sample Mode

The extended sample mode is selected when SHP = 0. The SHI signal directlycontrols SAMPCON and defines the length of the sample period tsample. WhenSAMPCON is high, sampling is active. The high-to-low SAMPCON transitionstarts the conversion after synchronization with ADC12CLK. See Figure 28−3.

Figure 28−3. Extended Sample Mode

StartSampling

StopSampling

ConversionComplete

SAMPCON

SHI

tsample tconvert

t sync

13 x ADC12CLK

StartConversion

ADC12CLK

Page 794: MSP430 - general.pdf

ADC12 Operation

28-8 ADC12

Pulse Sample Mode

The pulse sample mode is selected when SHP = 1. The SHI signal is used totrigger the sampling timer. The SHT0x and SHT1x bits in ADC12CTL0 controlthe interval of the sampling timer that defines the SAMPCON sample periodtsample. The sampling timer keeps SAMPCON high after synchronization withAD12CLK for a programmed interval tsample. The total sampling time is tsampleplus tsync. See Figure 28−4.

The SHTx bits select the sampling time in 4x multiples of ADC12CLK. SHT0xselects the sampling time for ADC12MCTL0 to 7 and SHT1x selects thesampling time for ADC12MCTL8 to 15.

Figure 28−4. Pulse Sample Mode

StartSampling

StopSampling

ConversionComplete

SAMPCON

SHI

tsample tconvert

tsync

13 x ADC12CLK

StartConversion

ADC12CLK

Page 795: MSP430 - general.pdf

ADC12 Operation

28-9ADC12

Sample Timing Considerations

When SAMPCON = 0 all Ax inputs are high impedance. When SAMPCON = 1,the selected Ax input can be modeled as an RC low-pass filter during thesampling time tsample, as shown below in Figure 28−5. An internal MUX-oninput resistance RI (maximum 2 kΩ) in series with capacitor CI (maximum40 pF) is seen by the source. The capacitor CI voltage VC must be charged towithin 1/2 LSB of the source voltage VS for an accurate 12-bit conversion.

Figure 28−5. Analog Input Equivalent Circuit

RS RIVS VC

MSP430

CI

VI

VI = Input voltage at pin AxVS = External source voltageRS = External source resistance RI = Internal MUX-on input resistanceCI = Input capacitanceVC = Capacitance-charging voltage

The resistance of the source RS and RI affect tsample. The following equationcan be used to calculate the minimum sampling time tsample for a 12-bitconversion:

tsample (RS RI) ln(213) CI 800ns

Substituting the values for RI and CI given above, the equation becomes:

tsample (RS 2k) 9.011 40pF 800ns

For example, if RS is 10 kΩ, tsample must be greater than 5.13 µs.

Page 796: MSP430 - general.pdf

ADC12 Operation

28-10 ADC12

28.2.6 Conversion Memory

There are 16 ADC12MEMx conversion memory registers to store conversionresults. Each ADC12MEMx is configured with an associated ADC12MCTLxcontrol register. The SREFx bits define the voltage reference and the INCHxbits select the input channel. The EOS bit defines the end of sequence whena sequential conversion mode is used. A sequence rolls over fromADC12MEM15 to ADC12MEM0 when the EOS bit in ADC12MCTL15 is notset.

The CSTARTADDx bits define the first ADC12MCTLx used for anyconversion. If the conversion mode is single-channel or repeat-single-channelthe CSTARTADDx points to the single ADC12MCTLx to be used.

If the conversion mode selected is either sequence-of-channels orrepeat-sequence-of-channels, CSTARTADDx points to the firstADC12MCTLx location to be used in a sequence. A pointer, not visible tosoftware, is incremented automatically to the next ADC12MCTLx in asequence when each conversion completes. The sequence continues until anEOS bit in ADC12MCTLx is processed - this is the last control byte processed.

When conversion results are written to a selected ADC12MEMx, thecorresponding flag in the ADC12IFGx register is set.

28.2.7 ADC12 Conversion Modes

The ADC12 has four operating modes selected by the CONSEQx bits asdiscussed in Table 28−1.

Table 28−1.Conversion Mode Summary

CONSEQx Mode Operation

00 Single channelsingle-conversion

A single channel is converted once.

01 Sequence-of-channels

A sequence of channels is converted once.

10 Repeat-single-channel

A single channel is converted repeatedly.

11 Repeat-sequence-of-channels

A sequence of channels is convertedrepeatedly.

Page 797: MSP430 - general.pdf

ADC12 Operation

28-11ADC12

Single-Channel Single-Conversion Mode

A single channel is sampled and converted once. The ADC result is written tothe ADC12MEMx defined by the CSTARTADDx bits. Figure 28−6 shows theflow of the Single-Channel, Single-Conversion mode. When ADC12SCtriggers a conversion, successive conversions can be triggered by theADC12SC bit. When any other trigger source is used, ENC must be toggledbetween each conversion.

Figure 28−6. Single-Channel, Single-Conversion Mode

ADC12off

x = CSTARTADDxWait for Enable

ENC =

Wait for Trigger

Sample, InputChannel Defined in

ADC12MCTLx

ENC =

ENC =SHSx = 0

andENC = 1 or

and ADC12SC =

SAMPCON =

SAMPCON = 1

Convert

SAMPCON =

ENC = 0

ENC = 0†

12 x ADC12CLK

ConversionCompleted,

Result Stored IntoADC12MEMx,

ADC12IFG.x is Set

1 x ADC12CLK

†Conversion result is unpredictable

ENC = 0†

ADC12ON = 1CONSEQx = 00

x = pointer to ADC12MCTLx

Page 798: MSP430 - general.pdf

ADC12 Operation

28-12 ADC12

Sequence-of-Channels Mode

A sequence of channels is sampled and converted once. The ADC results arewritten to the conversion memories starting with the ADCMEMx defined by theCSTARTADDx bits. The sequence stops after the measurement of thechannel with a set EOS bit. Figure 28−7 shows the sequence-of-channelsmode. When ADC12SC triggers a sequence, successive sequences can betriggered by the ADC12SC bit. When any other trigger source is used, ENCmust be toggled between each sequence.

Figure 28−7. Sequence-of-Channels Mode

ADC12off

x = CSTARTADDxWait for Enable

ENC =

Wait for Trigger

Sample, InputChannel Defined in

ADC12MCTLx

ENC =

ENC =SHSx = 0

andENC = 1 or

andADC12SC =

SAMPCON =

SAMPCON = 1

Convert

SAMPCON =

12 x ADC12CLK

ConversionCompleted,

Result Stored IntoADC12MEMx,

ADC12IFG.x is Set

1 x ADC12CLK

ADC12ON = 1

CONSEQx = 01

MSC = 1and

SHP = 1and

EOS.x = 0

EOS.x = 1

If x < 15 then x = x + 1else x = 0

If x < 15 then x = x + 1else x = 0

(MSC = 0or

SHP = 0)and

EOS.x = 0

x = pointer to ADC12MCTLx

Page 799: MSP430 - general.pdf

ADC12 Operation

28-13ADC12

Repeat-Single-Channel Mode

A single channel is sampled and converted continuously. The ADC results arewritten to the ADC12MEMx defined by the CSTARTADDx bits. It is necessaryto read the result after the completed conversion because only oneADC12MEMx memory is used and is overwritten by the next conversion.Figure 28−8 shows repeat-single-channel mode

Figure 28−8. Repeat-Single-Channel Mode

ADC12off

x = CSTARTADDxWait for Enable

ENC =

Wait for Trigger

Sample, InputChannel Defined in

ADC12MCTLx

ENC =

ENC =SHSx = 0

andENC = 1 or

and ADC12SC =

SAMPCON =

SAMPCON = 1

Convert

SAMPCON =

12 x ADC12CLK

ConversionCompleted,

Result Stored IntoADC12MEMx,

ADC12IFG.x is Set

1 x ADC12CLK

ADC12ON = 1

CONSEQx = 10

MSC = 1and

SHP = 1and

ENC = 1

ENC = 0

(MSC = 0or

SHP = 0)and

ENC = 1

x = pointer to ADC12MCTLx

Page 800: MSP430 - general.pdf

ADC12 Operation

28-14 ADC12

Repeat-Sequence-of-Channels Mode

A sequence of channels is sampled and converted repeatedly. The ADCresults are written to the conversion memories starting with the ADC12MEMxdefined by the CSTARTADDx bits. The sequence ends after the measurementof the channel with a set EOS bit and the next trigger signal re-starts thesequence. Figure 28−9 shows the repeat-sequence-of-channels mode.

Figure 28−9. Repeat-Sequence-of-Channels Mode

ADC12off

x = CSTARTADDxWait for Enable

ENC =

Wait for Trigger

Sample, InputChannel Defined in

ADC12MCTLx

ENC =

ENC =SHSx = 0

andENC = 1 or

and ADC12SC =

SAMPCON =

SAMPCON = 1

SAMPCON =

12 x ADC12CLK

ConversionCompleted,

Result Stored IntoADC12MEMx,

ADC12IFG.x is Set

1 x ADC12CLK

ADC12ON = 1

CONSEQx = 11

MSC = 1and

SHP = 1and

(ENC = 1or

EOS.x = 0)

ENC = 0and

EOS.x = 1

(MSC = 0or

SHP = 0)and

(ENC = 1or

EOS.x = 0)

If EOS.x = 1 then x = CSTARTADDx

else if x < 15 then x = x + 1 elsex = 0

If EOS.x = 1 then x = CSTARTADDx

else if x < 15 then x = x + 1 elsex = 0

x = pointer to ADC12MCTLx

Convert

Page 801: MSP430 - general.pdf

ADC12 Operation

28-15ADC12

Using the Multiple Sample and Convert (MSC) Bit

To configure the converter to perform successive conversions automaticallyand as quickly as possible, a multiple sample and convert function is available.When MSC = 1, CONSEQx > 0, and the sample timer is used, the first risingedge of the SHI signal triggers the first conversion. Successive conversionsare triggered automatically as soon as the prior conversion is completed.Additional rising edges on SHI are ignored until the sequence is completed inthe single-sequence mode or until the ENC bit is toggled inrepeat-single-channel, or repeated-sequence modes. The function of the ENCbit is unchanged when using the MSC bit.

Stopping Conversions

Stopping ADC12 activity depends on the mode of operation. Therecommended ways to stop an active conversion or conversion sequence are:

Resetting ENC in single-channel single-conversion mode stops aconversion immediately and the results are unpredictable. For correctresults, poll the busy bit until reset before clearing ENC.

Resetting ENC during repeat-single-channel operation stops theconverter at the end of the current conversion.

Resetting ENC during a sequence or repeat-sequence mode stops theconverter at the end of the sequence.

Any conversion mode may be stopped immediately by setting theCONSEQx = 0 and resetting ENC bit. Conversion data are unreliable.

Note: No EOS Bit Set For Sequence

If no EOS bit is set and a sequence mode is selected, resetting the ENC bitdoes not stop the sequence. To stop the sequence, first select asingle-channel mode and then reset ENC.

Page 802: MSP430 - general.pdf

ADC12 Operation

28-16 ADC12

28.2.8 Using the Integrated Temperature Sensor

To use the on-chip temperature sensor, the user selects the analog inputchannel INCHx = 1010. Any other configuration is done as if an externalchannel was selected, including reference selection, conversion-memoryselection, etc.

The typical temperature sensor transfer function is shown in Figure 28−10.When using the temperature sensor, the sample period must be greater than30 µs. The temperature sensor offset error can be large, and may need to becalibrated for most applications. See device-specific data sheet forparameters.

Selecting the temperature sensor automatically turns on the on-chip referencegenerator as a voltage source for the temperature sensor. However, it does notenable the VREF+ output or affect the reference selections for the conversion.The reference choices for converting the temperature sensor are the same aswith any other channel.

Figure 28−10. Typical Temperature Sensor Transfer Function

Celsius

Volts

0 50 100

1.000

0.800

0.900

1.100

1.200

1.300

−50

0.700

VTEMP=0.00355(TEMPC)+0.986

Page 803: MSP430 - general.pdf

ADC12 Operation

28-17ADC12

28.2.9 ADC12 Grounding and Noise Considerations

As with any high-resolution ADC, appropriate printed-circuit-board layout andgrounding techniques should be followed to eliminate ground loops, unwantedparasitic effects, and noise.

Ground loops are formed when return current from the A/D flows through pathsthat are common with other analog or digital circuitry. If care is not taken, thiscurrent can generate small, unwanted offset voltages that can add to orsubtract from the reference or input voltages of the A/D converter. Theconnections shown in Figure 28−11 help avoid this.

In addition to grounding, ripple and noise spikes on the power supply lines dueto digital switching or switching power supplies can corrupt the conversionresult. A noise-free design using separate analog and digital ground planeswith a single-point connection is recommend to achieve high accuracy.

Figure 28−11.ADC12 Grounding and Noise Considerations

DVCC

DVSS

AVCC

AVSS

VeREF+

DigitalPower SupplyDecoupling

10 uF 100 nF

+Using an ExternalPositiveReference

VREF+

VREF− / VeREF−

Using the InternalReferenceGenerator

10 uF 100 nF

100 nF

+

+

10 uF 100 nF

+

Using an ExternalNegativeReference

10 uF

+AnalogPower SupplyDecoupling

10 uF 100 nF

Page 804: MSP430 - general.pdf

ADC12 Operation

28-18 ADC12

28.2.10 ADC12 Interrupts

The ADC12 has 18 interrupt sources:

ADC12IFG0-ADC12IFG15

ADC12OV, ADC12MEMx overflow

ADC12TOV, ADC12 conversion time overflow

The ADC12IFGx bits are set when their corresponding ADC12MEMx memoryregister is loaded with a conversion result. An interrupt request is generatedif the corresponding ADC12IEx bit and the GIE bit are set. The ADC12OVcondition occurs when a conversion result is written to any ADC12MEMxbefore its previous conversion result was read. The ADC12TOV condition isgenerated when another sample-and-conversion is requested before thecurrent conversion is completed. The DMA is triggered after the conversion insingle channel modes or after the completion of a sequence−of−channelmodes.

ADC12IV, Interrupt Vector Generator

All ADC12 interrupt sources are prioritized and combined to source a singleinterrupt vector. The interrupt vector register ADC12IV is used to determinewhich enabled ADC12 interrupt source requested an interrupt.

The highest priority enabled ADC12 interrupt generates a number in theADC12IV register (see register description). This number can be evaluated oradded to the program counter to automatically enter the appropriate softwareroutine. Disabled ADC12 interrupts do not affect the ADC12IV value.

Any access, read or write, of the ADC12IV register automatically resets theADC12OV condition or the ADC12TOV condition if either was the highestpending interrupt. Neither interrupt condition has an accessible interrupt flag.The ADC12IFGx flags are not reset by an ADC12IV access. ADC12IFGx bitsare reset automatically by accessing their associated ADC12MEMx registeror may be reset with software.

If another interrupt is pending after servicing of an interrupt, another interruptis generated. For example, if the ADC12OV and ADC12IFG3 interrupts arepending when the interrupt service routine accesses the ADC12IV register, theADC12OV interrupt condition is reset automatically. After the RETI instructionof the interrupt service routine is executed, the ADC12IFG3 generates anotherinterrupt.

Page 805: MSP430 - general.pdf

ADC12 Operation

28-19ADC12

ADC12 Interrupt Handling Software Example

The following software example shows the recommended use of ADC12IVand the handling overhead. The ADC12IV value is added to the PC toautomatically jump to the appropriate routine.

The numbers at the right margin show the necessary CPU cycles for eachinstruction. The software overhead for different interrupt sources includesinterrupt latency and return-from-interrupt cycles, but not the task handlingitself. The latencies are:

ADC12IFG0 - ADC12IFG14, ADC12TOV and ADC12OV 16 cycles

ADC12IFG15 14 cycles

The interrupt handler for ADC12IFG15 shows a way to check immediately ifa higher prioritized interrupt occurred during the processing of ADC12IFG15.This saves nine cycles if another ADC12 interrupt is pending.

; Interrupt handler for ADC12.

INT_ADC12 ; Enter Interrupt Service Routine 6

ADD &ADC12IV,PC; Add offset to PC 3

RETI ; Vector 0: No interrupt 5

JMP ADOV ; Vector 2: ADC overflow 2

JMP ADTOV ; Vector 4: ADC timing overflow 2

JMP ADM0 ; Vector 6: ADC12IFG0 2

... ; Vectors 8-32 2

JMP ADM14 ; Vector 34: ADC12IFG14 2

;

; Handler for ADC12IFG15 starts here. No JMP required.

;

ADM15 MOV &ADC12MEM15,xxx; Move result, flag is reset

... ; Other instruction needed?

JMP INT_ADC12 ; Check other int pending

;

; ADC12IFG14-ADC12IFG1 handlers go here

;

ADM0 MOV &ADC12MEM0,xxx ; Move result, flag is reset

... ; Other instruction needed?

RETI ; Return 5

;

ADTOV ... ; Handle Conv. time overflow

RETI ; Return 5

;

ADOV ... ; Handle ADCMEMx overflow

RETI ; Return 5

Page 806: MSP430 - general.pdf

ADC12 Registers

28-20 ADC12

28.3 ADC12 Registers

The ADC12 registers are listed in Table 28−2 .

Table 28−2.ADC12 Registers

Register Short Form Register Type Address Initial State

ADC12 control register 0 ADC12CTL0 Read/write 01A0h Reset with POR

ADC12 control register 1 ADC12CTL1 Read/write 01A2h Reset with POR

ADC12 interrupt flag register ADC12IFG Read/write 01A4h Reset with POR

ADC12 interrupt enable register ADC12IE Read/write 01A6h Reset with POR

ADC12 interrupt vector word ADC12IV Read 01A8h Reset with POR

ADC12 memory 0 ADC12MEM0 Read/write 0140h Unchanged

ADC12 memory 1 ADC12MEM1 Read/write 0142h Unchanged

ADC12 memory 2 ADC12MEM2 Read/write 0144h Unchanged

ADC12 memory 3 ADC12MEM3 Read/write 0146h Unchanged

ADC12 memory 4 ADC12MEM4 Read/write 0148h Unchanged

ADC12 memory 5 ADC12MEM5 Read/write 014Ah Unchanged

ADC12 memory 6 ADC12MEM6 Read/write 014Ch Unchanged

ADC12 memory 7 ADC12MEM7 Read/write 014Eh Unchanged

ADC12 memory 8 ADC12MEM8 Read/write 0150h Unchanged

ADC12 memory 9 ADC12MEM9 Read/write 0152h Unchanged

ADC12 memory 10 ADC12MEM10 Read/write 0154h Unchanged

ADC12 memory 11 ADC12MEM11 Read/write 0156h Unchanged

ADC12 memory 12 ADC12MEM12 Read/write 0158h Unchanged

ADC12 memory 13 ADC12MEM13 Read/write 015Ah Unchanged

ADC12 memory 14 ADC12MEM14 Read/write 015Ch Unchanged

ADC12 memory 15 ADC12MEM15 Read/write 015Eh Unchanged

ADC12 memory control 0 ADC12MCTL0 Read/write 080h Reset with POR

ADC12 memory control 1 ADC12MCTL1 Read/write 081h Reset with POR

ADC12 memory control 2 ADC12MCTL2 Read/write 082h Reset with POR

ADC12 memory control 3 ADC12MCTL3 Read/write 083h Reset with POR

ADC12 memory control 4 ADC12MCTL4 Read/write 084h Reset with POR

ADC12 memory control 5 ADC12MCTL5 Read/write 085h Reset with POR

ADC12 memory control 6 ADC12MCTL6 Read/write 086h Reset with POR

ADC12 memory control 7 ADC12MCTL7 Read/write 087h Reset with POR

ADC12 memory control 8 ADC12MCTL8 Read/write 088h Reset with POR

ADC12 memory control 9 ADC12MCTL9 Read/write 089h Reset with POR

ADC12 memory control 10 ADC12MCTL10 Read/write 08Ah Reset with POR

ADC12 memory control 11 ADC12MCTL11 Read/write 08Bh Reset with POR

ADC12 memory control 12 ADC12MCTL12 Read/write 08Ch Reset with POR

ADC12 memory control 13 ADC12MCTL13 Read/write 08Dh Reset with POR

ADC12 memory control 14 ADC12MCTL14 Read/write 08Eh Reset with POR

ADC12 memory control 15 ADC12MCTL15 Read/write 08Fh Reset with POR

Page 807: MSP430 - general.pdf

ADC12 Registers

28-21ADC12

ADC12CTL0, ADC12 Control Register 0

15 14 13 12 11 10 9 8

SHT1x SHT0x

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

MSC REF2_5V REFON ADC12ON ADC12OVIE ADC12TOVIE ENC ADC12SC

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Modifiable only when ENC = 0

SHT1x Bits15-12

Sample-and-hold time. These bits define the number of ADC12CLK cycles inthe sampling period for registers ADC12MEM8 to ADC12MEM15.

SHT0x Bits11-8

Sample-and-hold time. These bits define the number of ADC12CLK cycles inthe sampling period for registers ADC12MEM0 to ADC12MEM7.

SHTx Bits ADC12CLK cycles

0000 4

0001 8

0010 16

0011 32

0100 64

0101 96

0110 128

0111 192

1000 256

1001 384

1010 512

1011 768

1100 1024

1101 1024

1110 1024

1111 1024

Page 808: MSP430 - general.pdf

ADC12 Registers

28-22 ADC12

MSC Bit 7 Multiple sample and conversion. Valid only for sequence or repeated modes.0 The sampling timer requires a rising edge of the SHI signal to trigger

each sample-and-conversion.1 The first rising edge of the SHI signal triggers the sampling timer, but

further sample-and-conversions are performed automatically as soonas the prior conversion is completed.

REF2_5V Bit 6 Reference generator voltage. REFON must also be set.0 1.5 V1 2.5 V

REFON Bit 5 Reference generator on0 Reference off1 Reference on

ADC12ON Bit 4 ADC12 on0 ADC12 off1 ADC12 on

ADC12OVIE Bit 3 ADC12MEMx overflow-interrupt enable. The GIE bit must also be set toenable the interrupt.0 Overflow interrupt disabled1 Overflow interrupt enabled

ADC12TOVIE

Bit 2 ADC12 conversion-time-overflow interrupt enable. The GIE bit must also beset to enable the interrupt.0 Conversion time overflow interrupt disabled1 Conversion time overflow interrupt enabled

ENC Bit 1 Enable conversion0 ADC12 disabled1 ADC12 enabled

ADC12SC Bit 0 Start conversion. Software-controlled sample-and-conversion start.ADC12SC and ENC may be set together with one instruction. ADC12SC isreset automatically.0 No sample-and-conversion-start1 Start sample-and-conversion

Page 809: MSP430 - general.pdf

ADC12 Registers

28-23ADC12

ADC12CTL1, ADC12 Control Register 1

15 14 13 12 11 10 9 8

CSTARTADDx SHSx SHP ISSH

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

ADC12DIVx ADC12SSELx CONSEQx ADC12BUSY

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) r−(0)

Modifiable only when ENC = 0

CSTARTADDx

Bits15-12

Conversion start address. These bits select which ADC12conversion-memory register is used for a single conversion or for the firstconversion in a sequence. The value of CSTARTADDx is 0 to 0Fh,corresponding to ADC12MEM0 to ADC12MEM15.

SHSx Bits11-10

Sample-and-hold source select00 ADC12SC bit01 Timer_A.OUT110 Timer_B.OUT011 Timer_B.OUT1

SHP Bit 9 Sample-and-hold pulse-mode select. This bit selects the source of thesampling signal (SAMPCON) to be either the output of the sampling timer orthe sample-input signal directly.0 SAMPCON signal is sourced from the sample-input signal.1 SAMPCON signal is sourced from the sampling timer.

ISSH Bit 8 Invert signal sample-and-hold0 The sample-input signal is not inverted.1 The sample-input signal is inverted.

ADC12DIVx Bits7-5

ADC12 clock divider000 /1001 /2010 /3011 /4100 /5101 /6110 /7111 /8

Page 810: MSP430 - general.pdf

ADC12 Registers

28-24 ADC12

ADC12SSELx

Bits4-3

ADC12 clock source select00 ADC12OSC01 ACLK10 MCLK11 SMCLK

CONSEQx Bits2-1

Conversion sequence mode select00 Single-channel, single-conversion01 Sequence-of-channels10 Repeat-single-channel11 Repeat-sequence-of-channels

ADC12BUSY

Bit 0 ADC12 busy. This bit indicates an active sample or conversion operation.0 No operation is active.1 A sequence, sample, or conversion is active.

ADC12MEMx, ADC12 Conversion Memory Registers

15 14 13 12 11 10 9 8

0 0 0 0 Conversion Results

r0 r0 r0 r0 rw rw rw rw

7 6 5 4 3 2 1 0

Conversion Results

rw rw rw rw rw rw rw rw

ConversionResults

Bits15-0

The 12-bit conversion results are right-justified. Bit 11 is the MSB. Bits 15-12are always 0. Writing to the conversion memory registers will corrupt theresults.

Page 811: MSP430 - general.pdf

ADC12 Registers

28-25ADC12

ADC12MCTLx, ADC12 Conversion Memory Control Registers

7 6 5 4 3 2 1 0

EOS SREFx INCHx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Modifiable only when ENC = 0

EOS Bit 7 End of sequence. Indicates the last conversion in a sequence.0 Not end of sequence1 End of sequence

SREFx Bits6-4

Select reference000 VR+ = AVCC and VR− = AVSS001 VR+ = VREF+ and VR− = AVSS010 VR+ = VeREF+ and VR− = AVSS011 VR+ = VeREF+ and VR− = AVSS100 VR+ = AVCC and VR− = VREF−/ VeREF−101 VR+ = VREF+ and VR− = VREF−/ VeREF−110 VR+ = VeREF+ and VR− = VREF−/ VeREF−111 VR+ = VeREF+ and VR− = VREF−/ VeREF−

INCHx Bits3-0

Input channel select0000 A00001 A10010 A20011 A30100 A40101 A50110 A60111 A71000 VeREF+1001 VREF−/VeREF−1010 Temperature sensor1011 (AVCC – AVSS) / 21100 (AVCC – AVSS) / 2, A12 on ’FG43x and ’FG461x devices1101 (AVCC – AVSS) / 2, A13 on ’FG43x and ’FG461x devices1110 (AVCC – AVSS) / 2, A14 on ’FG43x and ’FG461x devices1111 (AVCC – AVSS) / 2, A15 on ’FG43x and ’FG461x devices

Page 812: MSP430 - general.pdf

ADC12 Registers

28-26 ADC12

ADC12IE, ADC12 Interrupt Enable Register

15 14 13 12 11 10 9 8

ADC12IE15 ADC12IE14 ADC12IE13 ADC12IE12 ADC12IE11 ADC12IE10 ADC12IE9 ADC12IE8

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

ADC12IE7 ADC12IE6 ADC12IE5 ADC12IE4 ADC12IE3 ADC12IE2 ADC12IE1 ADC12IE0

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

ADC12IEx Bits15-0

Interrupt enable. These bits enable or disable the interrupt request for theADC12IFGx bits.0 Interrupt disabled1 Interrupt enabled

ADC12IFG, ADC12 Interrupt Flag Register

15 14 13 12 11 10 9 8

ADC12IFG15

ADC12IFG14

ADC12IFG13

ADC12IFG12

ADC12IFG11

ADC12IFG10

ADC12IFG9

ADC12IFG8

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

ADC12IFG7

ADC12IFG6

ADC12IFG5

ADC12IFG4

ADC12IFG3

ADC12IFG2

ADC12IFG1

ADC12IFG0

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

ADC12IFGx Bits15-0

ADC12MEMx Interrupt flag. These bits are set when correspondingADC12MEMx is loaded with a conversion result. The ADC12IFGx bits arereset if the corresponding ADC12MEMx is accessed, or may be reset withsoftware.0 No interrupt pending1 Interrupt pending

Page 813: MSP430 - general.pdf

ADC12 Registers

28-27ADC12

ADC12IV, ADC12 Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 ADC12IVx 0

r0 r0 r−(0) r−(0) r−(0) r−(0) r−(0) r0

ADC12IVx Bits15-0

ADC12 interrupt vector value

ADC12IVContents Interrupt Source Interrupt Flag

InterruptPriority

000h No interrupt pending −

002h ADC12MEMx overflow − Highest

004h Conversion time overflow −

006h ADC12MEM0 interrupt flag ADC12IFG0

008h ADC12MEM1 interrupt flag ADC12IFG1

00Ah ADC12MEM2 interrupt flag ADC12IFG2

00Ch ADC12MEM3 interrupt flag ADC12IFG3

00Eh ADC12MEM4 interrupt flag ADC12IFG4

010h ADC12MEM5 interrupt flag ADC12IFG5

012h ADC12MEM6 interrupt flag ADC12IFG6

014h ADC12MEM7 interrupt flag ADC12IFG7

016h ADC12MEM8 interrupt flag ADC12IFG8

018h ADC12MEM9 interrupt flag ADC12IFG9

01Ah ADC12MEM10 interrupt flag ADC12IFG10

01Ch ADC12MEM11 interrupt flag ADC12IFG11

01Eh ADC12MEM12 interrupt flag ADC12IFG12

020h ADC12MEM13 interrupt flag ADC12IFG13

022h ADC12MEM14 interrupt flag ADC12IFG14

024h ADC12MEM15 interrupt flag ADC12IFG15 Lowest

Page 814: MSP430 - general.pdf

28-28 ADC12

Page 815: MSP430 - general.pdf

29-1SD16

SD16

The SD16 module is a multichannel 16-bit sigma-delta analog-to-digitalconverter. This chapter describes the SD16 of the MSP430x4xx family. TheSD16 module is implemented in the MSP430F42x, MSP430F42xA,MSP430FE42x, MSP430FE42xA, and MSP430FE42x2 devices.

Topic Page

29.1 SD16 Introduction 29-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29.2 SD16 Operation 29-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29.3 SD16 Registers 29-19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 29

Page 816: MSP430 - general.pdf

SD16 Introduction

29-2 SD16

29.1 SD16 Introduction

The SD16 module consists of up to three independent sigma-deltaanalog-to-digital converters and an internal voltage reference. Each channelhas up to 8 fully differential multiplexed analog input pairs including a built-intemperature sensor. The converters are based on second-order oversamplingsigma-delta modulators and digital decimation filters. The decimation filtersare comb type filters with selectable oversampling ratios of up to 256.Additional filtering can be done in software.

Features of the SD16 include:

16-bit sigma-delta architecture

Up to three independent, simultaneously sampling ADC channels(The number of channels is device dependent, see the device-specificdata sheet.)

Up to eight multiplexed differential analog inputs per channel(The number of inputs is device dependent, see the device-specificdata sheet.)

Software selectable on-chip reference voltage generation (1.2 V)

Software selectable internal or external reference

Built-in temperature sensor accessible by all channels

Up to 1.048576-MHz modulator input frequency

Selectable low-power conversion mode

The block diagram of the SD16 module is shown in Figure 29−1.

Page 817: MSP430 - general.pdf

SD16 Introduction

29-3SD16

Figure 29−1. SD16 Block Diagram

Channel 0

Channel 1

15 0

SD16 Control Block

SD16DIVx

fM

ACLK

TACLK

SD16SSELx

00

01

10

11

00

01

10

11

MCLK

SMCLK

AVCCVREF

Divider1/2/4/8

000

SD16INCHx

+−

001+−

010+−

011+−

100+−

101+−

110+−

111+−

PGA1..32

2nd OrderΣ∆ Modulator

SD16GAINx

SD16DFSD16LP SD16PRE1

7 0

SD16SC

Conversion Control(to prior channel)

SD16OSRx

SD16SNGL

SD16MEM1

Reference

Reference

Conversion Control(from next channel)

Channel 2

SD16VMIDON

SD16REFON

Temperature sensor

Temperature sensor fM

Reference1.2V

SD16GRPGroup/StartConversion Logic

AVSS

A1.1

A1.0

A1.2

A1.3

A1.4

A1.5

A1.6

A1.7

Reference

Page 818: MSP430 - general.pdf

SD16 Operation

29-4 SD16

29.2 SD16 Operation

The SD16 module is configured with user software. The setup and operationof the SD16 is discussed in the following sections.

29.2.1 ADC Core

The analog-to-digital conversion is performed by a 1-bit, second-ordersigma-delta modulator. A single-bit comparator within the modulator quantizesthe input signal with the modulator frequency fM. The resulting 1-bit datastream is averaged by the digital filter for the conversion result.

29.2.2 Analog Input Range and PGA

The full-scale input voltage range for each analog input pair is dependent onthe gain setting of the programmable gain amplifier of each channel. Themaximum full-scale range is ±VFSR where VFSR is defined by:

VFSR VREF2

GAINPGA

For a 1.2V reference, the maximum full-scale input range for a gain of 1 is:

VFSR 1.2V2

1 0.6V

Refer to the device-specific data sheet for full-scale input specifications.

29.2.3 Voltage Reference Generator

The SD16 module has a built-in 1.2V reference that can be used for each SD16channel and is enabled by the SD16REFON bit. When using the internalreference an external 100nF capacitor connected from VREF to AVSS isrecommended to reduce noise. The internal reference voltage can be usedoff-chip when SD16VMIDON = 1. The buffered output can provide up to 1mAof drive. When using the internal reference off-chip, a 470nF capacitorconnected from VREF to AVSS is required. See device-specific data sheet forparameters.

An external voltage reference can be applied to the VREF input whenSD16REFON and SD16VMIDON are both reset.

29.2.4 Auto Power-Down

The SD16 is designed for low power applications. When the SD16 is notactively converting, it is automatically disabled and automatically re-enabledwhen a conversion is started. The reference is not automatically disabled, butcan be disabled by setting SD16REFON = 0. When the SD16 or reference aredisabled, they consume no current.

Page 819: MSP430 - general.pdf

SD16 Operation

29-5SD16

29.2.5 Analog Input Pair Selection

Each SD16 channel can convert up to 8 differential input pairs multiplexed intothe PGA. Up to six input pairs (A0-A5) are available externally on the device.See the device-specific data sheet for analog input pin information. An internaltemperature sensor is available to each channel using the A6 multiplexerinput. Input A7 is a shorted connection between the + and − input pair and canbe used to calibrate the offset of each SD16 input stage.

Analog Input Setup

The analog input of each channel is configured using the SD16INCTLxregister. These settings can be independently configured for each SD16channel.

The SD16INCHx bits select one of eight differential input pairs of the analogmultiplexer. The gain for each PGA is selected by the SD16GAINx bits. A totalof six gain settings are available.

During conversion any modification to the SD16INCHx and SD16GAINx bitswill become effective with the next decimation step of the digital filter. Afterthese bits are modified, the next three conversions may be invalid due to thesettling time of the digital filter. This can be handled automatically with theSD16INTDLYx bits. When SD16INTDLY = 00h, conversion interrupt requestswill not begin until the 4th conversion after a start condition.

An external RC anti-aliasing filter is recommended for the SD16 to preventaliasing of the input signal. The cutoff frequency should be < 10 kHz for a1-MHz modulator clock and OSR = 256. The cutoff frequency may set to alower frequency for applications that have lower bandwidth requirements.

Page 820: MSP430 - general.pdf

SD16 Operation

29-6 SD16

29.2.6 Analog Input Characteristics

The SD16 uses a switched-capacitor input stage that appears as animpedance to external circuitry as shown in Figure 29−2.

Figure 29−2. Analog Input Equivalent Circuit

RS 1 kVS+

MSP430

CS

VS+ = Positive external source voltageVS− = Negative external source voltageRS = External source resistance CS = Sampling capacitance

RS 1 kVS−

CS

AVCC / 2

The maximum modulator frequency fM may be calculated from the minimumsettling time tSettling of the sampling circuit given by:

tSettling (RS 1k) CS lnGAIN 217 VAx

VREF

where

fM 12 tSettling

and VAx maxAVCC

2 VS

, AVCC

2 VS

,with VS+ and VS− referenced to AVSS.

CS varies with the gain setting as shown in Table 29−1.

Table 29−1.Sampling Capacitance

PGA Gain Sampling Capacitance CS

1 1.25 pF

2, 4 2.5 pF

8 5 pF

16, 32 10 pF

Page 821: MSP430 - general.pdf

SD16 Operation

29-7SD16

29.2.7 Digital Filter

The digital filter processes the 1-bit data stream from the modulator using aSINC3 comb filter. The transfer function is described in the z-Domain by:

H(z) 1OSR

1 zOSR

1 z13

and in the frequency domain by:

Hf

sincOSR

f

fM

sinc f

fM

3

1

OSR

sinOSR f

fM

sin f

fM

3

where the oversampling rate, OSR, is the ratio of the modulator frequency fMto the sample frequency fS. Figure 29−3 shows the filter’s frequency responsefor an OSR of 32. The first filter notch is at fS = fM/OSR. The notch frequencycan be adjusted by changing the modulator frequency, fM, using SD16SSELxand SD16DIVx and the oversampling rate using SD16OSRx.

The digital filter for each enabled ADC channel completes the decimation ofthe digital bit-stream and outputs new conversion results to the correspondingSD16MEMx register at the sample frequency fS.

Figure 29−3. Comb Filter’s Frequency Response with OSR = 32

−140

−120

−100

−80

−60

−40

−20

0

Frequency

GA

IN [

dB

]

fS fM

Page 822: MSP430 - general.pdf

SD16 Operation

29-8 SD16

Figure 29−4 shows the digital filter step response and conversion points. Forstep changes at the input after start of conversion a settling time must beallowed before a valid conversion result is available. The SD16INTDLYx bitscan provide sufficient filter settling time for a full-scale change at the ADCinput. If the step occurs synchronously to the decimation of the digital filter thevalid data will be available on the third conversion. An asynchronous step willrequire one additional conversion before valid data is available.

Figure 29−4. Digital Filter Step Response and Conversion Points

1

2

3

41

0

0.2

0.4

0.6

0.8

1

0

0.2

0.4

0.6

0.8

1

2

3

Asynchronous Step Synchronous Step

% V

FSR

Conversion Conversion

Page 823: MSP430 - general.pdf

SD16 Operation

29-9SD16

Digital Filter Output

The number of bits output by each digital filter is dependent on theoversampling ratio and ranges from 16 to 24 bits. Figure 29−5 shows thedigital filter output bits and their relation to SD16MEMx for each OSR. Forexample, for OSR = 256 and LSBACC = 0, the SD16MEMx register containsbits 23 − 8 of the digital filter output. When OSR = 32, the SD16MEMx LSB isalways zero.

The SD16LSBACC and SD16LSBTOG bits give access to the least significantbits of the digital filter output. When SD16LSBACC = 1 the 16 least significantbits of the digital filter’s output are read from SD16MEMx using wordinstructions. The SD16MEMx register can also be accessed with byteinstructions returning only the 8 least significant bits of the digital filter output.

When SD16LSBTOG = 1 the SD16LSBACC bit is automatically toggled eachtime the corresponding channel’s SD16MEMx register is read. This allows thecomplete digital filter output result to be read with two read accesses ofSD16MEMx. Setting or clearing SD16LSBTOG does not changeSD16LSBACC until the next SD16MEMx access.

Figure 29−5. Used Bits of Digital Filter Output.

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=32, LSBACC=x

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=64, LSBACC=1

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=64, LSBACC=0

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=128, LSBACC=1

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=128, LSBACC=0

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=256, LSBACC=1

048121620 15 3 269 723 22 21 19 18 17 15 14 13 11 10

OSR=256, LSBACC=0

Page 824: MSP430 - general.pdf

SD16 Operation

29-10 SD16

29.2.8 Conversion Memory Registers: SD16MEMx

One SD16MEMx register is associated with each SD16 channel. Conversionresults for each channel are moved to the corresponding SD16MEMx registerwith each decimation step of the digital filter. The SD16IFG bit for a givenchannel is set when new data is written to SD16MEMx. SD16IFG isautomatically cleared when SD16MEMx is read by the CPU or may be clearedwith software.

Output Data Format

The output data format is configurable in two’s complement or offset binary asshown in Table 29−2.The data format is selected by the SD16DF bit.

Table 29−2.Data Format

SD16DF Format Analog Input SD16MEMx† Digital Filter Output(OSR = 256)

+FSR FFFF FFFFFF

0OffsetBinary

ZERO 8000 8000000Binary

−FSR 0000 000000

+FSR 7FFF 7FFFFF

1Two’s

complementZERO 0000 0000001

complement−FSR 8000 800000

† Independent of SD16OSRx setting; SD16LSBACC = 0.

Figure 29−6 shows the relationship between the full-scale input voltage rangefrom −VFSR to +VFSR and the conversion result. The digital values for both dataformats are illustrated.

Figure 29−6. Input Voltage vs Digital Output

InputVoltage

SD16MEMx

−VFSR

+V FSR

7FFFh

8000h

2’s complement

InputVoltage

SD16MEMx

−VFSR +V FSR

FFFFh

8000h

Offset Binary

0000h

0000h

Page 825: MSP430 - general.pdf

SD16 Operation

29-11SD16

29.2.9 Conversion Modes

The SD16 module can be configured for four modes of operation, listed inTable 29−3. The SD16SNGL and SD16GRP bits for each channel selects theconversion mode.

Table 29−3.Conversion Mode Summary

SD16SNGL SD16GRP Mode Operation

1 0 Single channel,Single conversion

A single channel isconverted once.

0 0 Single channel,Continuous conversion

A single channel isconverted continuously.

1 1 Group of channels,Single conversion

A group of channels isconverted once.

0 1 Group of channels,Continuous conversion

A group of channels isconverted continuously.

† A channel is grouped and is the master channel of the group when SD16GRP = 0 if SD16GRPfor the prior channel(s) is set.

Single Channel, Single Conversion

Setting the SD16SC bit of a channel initiates one conversion on that channelwhen SD16SNGL = 1 and it is not grouped with any other channels. TheSD16SC bit is automatically cleared after conversion completion.

Clearing SD16SC before the conversion is completed immediately stopsconversion of the selected channel, the channel is powered down, and thecorresponding digital filter is turned off. The value in SD16MEMx can changewhen SD16SC is cleared. It is recommended that the conversion data inSD16MEMx be read prior to clearing SD16SC to avoid reading an invalidresult.

Single Channel, Continuous Conversion

When SD16SNGL = 0, continuous conversion mode is selected. Conversionof the selected channel begins when SD16SC is set and continues until theSD16SC bit is cleared by software when the channel is not grouped with anyother channel.

Clearing SD16SC immediately stops conversion of the selected channel, thechannel is powered downs and the corresponding digital filter is turned off. Thevalue in SD16MEMx can change when SD16SC is cleared. It is recommendedthat the conversion data in SD16MEMx be read prior to clearing SD16SC toavoid reading an invalid result.

Figure 29−7 shows single channel operation for single conversion mode andcontinuous conversion mode.

Page 826: MSP430 - general.pdf

SD16 Operation

29-12 SD16

Figure 29−7. Single Channel Operation − Example

Channel 0SD16SNGL = 1SD16GRP = 0

Time

Conversion

SD16SC

Channel 1SD16SNGL = 1SD16GRP = 0

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Conversion

Set by SW Auto−clear

Set by SW Auto−clear Set by SW Auto−clear

Set by SW

Conv

Cleared by SW

= Result written to SD16MEMx

Group of Channels, Single Conversion

Consecutive SD16 channels can be grouped together with the SD16GRP bitto synchronize conversions. Setting SD16GRP for a channel groups thatchannel with the next channel in the module. For example, setting SD16GRPfor channel 0 groups that channel with channel 1. In this case, channel 1 is themaster channel, enabling and disabling conversion of all channels in the groupwith its SD16SC bit. The SD16GRP bit of the master channel is always 0. TheSD16GRP bit of last channel in SD16 has no function and is always 0.

When SD16SNGL = 1 for a channel in a group, single conversion mode isselected. A single conversion of that channel will occur synchronously whenthe master channel SD16SC bit is set. The SD16SC bit of all channels in thegroup will automatically be set and cleared by SD16SC of the master channel.SD16SC for each channel can also be cleared in software independently.

Clearing SD16SC of the master channel before the conversions arecompleted immediately stops conversions of all channels in the group, thechannels are powered down and the corresponding digital filters are turned off.Values in SD16MEMx can change when SD16SC is cleared. It isrecommended that the conversion data in SD16MEMx be read prior toclearing SD16SC to avoid reading an invalid result.

Page 827: MSP430 - general.pdf

SD16 Operation

29-13SD16

Group of Channels, Continuous Conversion

When SD16SNGL = 0 for a channel in a group, continuous conversion modeis selected. Continuous conversion of that channel occurs synchronouslywhen the master channel SD16SC bit is set. SD16SC bits for all groupedchannels are automatically set and cleared with the master channel’s SD16SCbit. SD16SC for each channel in the group can also be cleared in softwareindependently.

When SD16SC of a grouped channel is set by software independently of themaster, conversion of that channel automatically synchronizes to conversionsof the master channel. This ensures that conversions for grouped channelsare always synchronous to the master.

Clearing SD16SC of the master channel immediately stops conversions of allchannels in the group the channels are powered down and the correspondingdigital filters are turned off. Values in SD16MEMx can change when SD16SCis cleared. It is recommended that the conversion data in SD16MEMx be readprior to clearing SD16SC to avoid reading an invalid result.

Figure 29−8 shows grouped channel operation for three SD16 channels.Channel 0 is configured for single conversion mode, SD16SNGL = 1, andchannels 1 and 2 are in continuous conversion mode, SD16SNGL = 0.Channel two, the last channel in the group, is the master channel. Conversionsof all channels in the group occur synchronously to the master channelregardless of when each SD16SC bit is set using software.

Figure 29−8. Grouped Channel Operation − Example

Channel 0SD16SNGL = 1SD16GRP = 1

Time

Conversion

SD16SC

Channel 1SD16SNGL = 0SD16GRP =1

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Set by Ch2 Auto−clear

Set by Ch2

Conv

Set by SW Cleared by SW

Conversion Conv

Cleared by Ch2

Set by SW Auto−clear

Conversion

(syncronized to master)

Cleared by SW

Conv

Set by SW

(syncronized to master)

= Result written to SD16MEMx

Page 828: MSP430 - general.pdf

SD16 Operation

29-14 SD16

29.2.10 Conversion Operation Using Preload

When multiple channels are grouped the SD16PREx registers can be used todelay the conversion time frame for each channel. Using SD16PREx, thedecimation time of the digital filter is increased by the specified number of fMclock cycles and can range from 0 to 255. Figure 29−9 shows an exampleusing SD16PREx.

Figure 29−9. Conversion Delay using Preload − Example

Conversion

32

SD16OSRx = 32

Load SD16PREx:SD16PREx = 8

Preloadapplied Time

Delayed Conversion

40

Delayed ConversionResult

Conversion

32fM cycles:

The SD16PREx delay is applied to the beginning of the next conversion cycleafter being written. The delay is used on the first conversion after SD16SC isset and on the conversion cycle following each write to SD16PREx. Followingconversions are not delayed. After modifying SD16PREx, the next write toSD16PREx should not occur until the next conversion cycle is completed,otherwise the conversion results may be incorrect.

The accuracy of the result for the delayed conversion cycle using SD16PRExis dependent on the length of the delay and the frequency of the analog signalbeing sampled. For example, when measuring a DC signal, SD16PREx delayhas no effect on the conversion result regardless of the duration. The usermust determine when the delayed conversion result is useful in theirapplication.

Figure 29−10 shows the operation of grouped channels 0 and 1. The preloadregister of channel 1 is loaded with zero resulting in immediate conversionwhereas the conversion cycle of channel 0 is delayed by settingSD16PRE0 = 8. The first channel 0 conversion uses SD16PREx = 8, shiftingall subsequent conversions by 8 fM clock cycles.

Page 829: MSP430 - general.pdf

SD16 Operation

29-15SD16

Figure 29−10. Start of Conversion using Preload − Example

Delayed Conversion

40

SD16OSRx = 32

Start ofConversion

Time

Conversion

32

Conversion

32fM cycles:

1st Sample Ch1

SD16PRE0 = 8

SD16PRE1 = 0 Conversion

32

Conversion

32

Conversion

32

Conversion

1st Sample Ch0

When channels are grouped, care must be taken when a channel or channelsoperate in single conversion mode or are disabled in software while the masterchannel remains active. Each time channels in the group are re-enabled andresynchronized with the master channel, the preload delay for that channel willbe reintroduced. Figure 29−11 shows the re-synchronization and preloaddelays for channels in a group. It is recommended that SD16PREx = 0 for themaster channel to maintain a consistent delay between the master andremaining channels in the group when they are re-enabled.

Figure 29−11.Preload and Channel Synchronization

Channel 0SD16SNGL = 0SD16GRP = 1

Time

Conversion

SD16SC

Channel 1SD16SNGL = 1SD16GRP =1

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Set by Ch2 Auto−clear

Set by Ch2

Conv

Set by SW

Conversion

Set by SW Auto−clear

(syncronized to master)

Cleared by SW

Conv

Set by SW

(syncronized to master)

= Result written to SD16MEMx

PRE1 PRE1

PRE0

Conversion

PRE0 Conv

Page 830: MSP430 - general.pdf

SD16 Operation

29-16 SD16

29.2.11 Using the Integrated Temperature Sensor

To use the on-chip temperature sensor, the user selects the analog input pairSD16INCHx = 110 and sets SD16REFON = 1. Any other configuration is doneas if an external analog input pair was selected, including SD16INTDLYx andSD16GAINx settings. Because the internal reference must be on to use thetemperature sensor, it is not possible to use an external reference for theconversion of the temperature sensor voltage. Also, the internal reference willbe in contention with any used external reference. In this case, theSD16VMIDON bit may be set to minimize the affects of the contention on theconversion.

The typical temperature sensor transfer function is shown in Figure 29−12.When switching inputs of an SD16 channel to the temperature sensor,adequate delay must be provided using SD16INTDLYx to allow the digital filterto settle and assure that conversion results are valid. The temperature sensoroffset error can be large, and may need to be calibrated for most applications.See device-specific data sheet for temperature sensor parameters.

Figure 29−12. Typical Temperature Sensor Transfer Function

Celsius

Volts

0 50 100

0.350

0.250

0.300

0.400

0.450

0.500

−50

0.200

VSensor,typ = TCSensor(273 + T[oC]) + VOffset, sensor [mV]

Page 831: MSP430 - general.pdf

SD16 Operation

29-17SD16

29.2.12 Interrupt Handling

The SD16 has 2 interrupt sources for each ADC channel:

SD16IFG

SD16OVIFG

The SD16IFG bits are set when their corresponding SD16MEMx memoryregister is written with a conversion result. An interrupt request is generatedif the corresponding SD16IE bit and the GIE bit are set. The SD16 overflowcondition occurs when a conversion result is written to any SD16MEMxlocation before the previous conversion result was read.

SD16IV, Interrupt Vector Generator

All SD16 interrupt sources are prioritized and combined to source a singleinterrupt vector. SD16IV is used to determine which enabled SD16 interruptsource requested an interrupt. The highest priority SD16 interrupt request thatis enabled generates a number in the SD16IV register (see registerdescription). This number can be evaluated or added to the program counterto automatically enter the appropriate software routine. Disabled SD16interrupts do not affect the SD16IV value.

Any access, read or write, of the SD16IV register has no effect on theSD16OVIFG or SD16IFG flags. The SD16IFG flags are reset by reading theassociated SD16MEMx register or by clearing the flags in software.SD16OVIFG bits can only be reset with software.

If another interrupt is pending after servicing of an interrupt, another interruptis generated. For example, if the SD16OVIFG and one or more SD16IFGinterrupts are pending when the interrupt service routine accesses the SD16IVregister, the SD16OVIFG interrupt condition is serviced first and thecorresponding flag(s) must be cleared in software. After the RETI instructionof the interrupt service routine is executed, the highest priority SD16IFGpending generates another interrupt request.

Interrupt Delay Operation

The SD16INTDLYx bits control the timing for the first interrupt service requestfor the corresponding channel. This feature delays the interrupt request for acompleted conversion by up to four conversion cycles allowing the digital filterto settle prior to generating an interrupt request. The delay is applied each timethe SD16SC bit is set or when the SD16GAINx or SD16INCHx bits for thechannel are modified. SD16INTDLYx disables overflow interrupt generationfor the channel for the selected number of delay cycles. Interrupt requests forthe delayed conversions are not generated during the delay.

Page 832: MSP430 - general.pdf

SD16 Operation

29-18 SD16

SD16 Interrupt Handling Software Example

The following software example shows the recommended use of SD16IV andthe handling overhead. The SD16IV value is added to the PC to automaticallyjump to the appropriate routine.

The numbers at the right margin show the necessary CPU cycles for eachinstruction. The software overhead for different interrupt sources includesinterrupt latency and return-from-interrupt cycles, but not the task handlingitself. The latencies are:

SD16OVIFG, CH0 SD16IFG, CH1 SD16IFG 16 cycles

CH2 SD16IFG 14 cycles

The interrupt handler for channel 2 SD16IFG shows a way to checkimmediately if a higher prioritized interrupt occurred during the processing ofthe ISR. This saves nine cycles if another SD16 interrupt is pending.

; Interrupt handler for SD16.

INT_SD16 ; Enter Interrupt Service Routine 6

ADD &SD16IV,PC; Add offset to PC 3

RETI ; Vector 0: No interrupt 5

JMP ADOV ; Vector 2: ADC overflow 2

JMP ADM0 ; Vector 4: CH_0 SD16IFG 2

JMP ADM1 ; Vector 6: CH_1 SD16IFG 2

;

; Handler for CH_2 SD16IFG starts here. No JMP required.

;

ADM2 MOV &SD16MEM2,xxx ; Move result, flag is reset

... ; Other instruction needed?

JMP INT_SD16 ; Check other int pending 2

;

; Remaining Handlers

;

ADM1 MOV &SD16MEM1,xxx ; Move result, flag is reset

... ; Other instruction needed?

RETI ; Return 5

;

ADM0 MOV &SD16MEM0,xxx ; Move result, flag is reset

RETI ; Return 5

;

ADOV ... ; Handle SD16MEMx overflow

RETI ; Return 5

Page 833: MSP430 - general.pdf

SD16 Registers

29-19SD16

29.3 SD16 Registers

The SD16 registers are listed in Table 29−4:

Table 29−4.SD16 Registers

Register Short Form Register Type Address Initial State

SD16 Control SD16CTL Read/write 0100h Reset with PUC

SD16 Interrupt Vector SD16IV Read/write 0110h Reset with PUC

SD16 Channel 0 Control SD16CCTL0 Read/write 0102h Reset with PUC

SD16 Channel 0 Conversion Memory SD16MEM0 Read/write 0112h Reset with PUC

SD16 Channel 0 Input Control SD16INCTL0 Read/write 0B0h Reset with PUC

SD16 Channel 0 Preload SD16PRE0 Read/write 0B8h Reset with PUC

SD16 Channel 1 Control SD16CCTL1 Read/write 0104h Reset with PUC

SD16 Channel 1 Conversion Memory SD16MEM1 Read/write 0114h Reset with PUC

SD16 Channel 1 Input Control SD16INCTL1 Read/write 0B1h Reset with PUC

SD16 Channel 1 Preload SD16PRE1 Read/write 0B9h Reset with PUC

SD16 Channel 2 Control SD16CCTL2 Read/write 0106h Reset with PUC

SD16 Channel 2 Conversion Memory SD16MEM2 Read/write 0116h Reset with PUC

SD16 Channel 2 Input Control SD16INCTL2 Read/write 0B2h Reset with PUC

SD16 Channel 2 Preload SD16PRE2 Read/write 0BAh Reset with PUC

Page 834: MSP430 - general.pdf

SD16 Registers

29-20 SD16

SD16CTL, SD16 Control Register

15 14 13 12 11 10 9 8

Reserved SD16LP

r0 r0 r0 r0 r0 r0 r0 rw−0

7 6 5 4 3 2 1 0

SD16DIVx SD16SSELx SD16VMIDON

SD16REFON SD16OVIE Reserved

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r0

Reserved Bits15-9

Reserved

SD16LP Bit 8 Low-power mode. This bit selects a reduced-speed reduced-power modefor the SD16.0 Low-power mode is disabled1 Low-power mode is enabled. The maximum clock frequency for the

SD16 is reduced.

SD16DIVx Bits7-6

SD16 clock divider00 /101 /210 /411 /8

SD16SSELx Bits5-4

SD16 clock source select00 MCLK01 SMCLK10 ACLK11 External TACLK

SD16VMIDON

Bit 3 VMID buffer on0 Off1 On

SD16REFON

Bit 2 Reference generator on0 Reference off1 Reference on

SD16OVIE Bit 1 SD16 overflow interrupt enable. The GIE bit must also be set to enable theinterrupt.0 Overflow interrupt disabled1 Overflow interrupt enabled

Reserved Bit 0 Reserved

Page 835: MSP430 - general.pdf

SD16 Registers

29-21SD16

SD16CCTLx, SD16 Channel x Control Register

15 14 13 12 11 10 9 8

Reserved SD16SNGL SD16OSRx

r0 r0 r0 r0 r0 rw−0 rw−0 rw−0

7 6 5 4 3 2 1 0

SD16LSBTOG

SD16LSBACC

SD16OVIFG SD16DF SD16IE SD16IFG SD16SC SD16GRP

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r(w)−0

Reserved Bits15-11

Reserved

SD16SNGL Bit 10 Single conversion mode select0 Continuous conversion mode1 Single conversion mode

SD16OSRx Bits9-8

Oversampling ratio00 25601 12810 6411 32

SD16LSBTOG

Bit 7 LSB toggle. This bit, when set, causes SD16LSBACC to toggle each timethe SD16MEMx register is read.0 SD16LSBACC does not toggle with each SD16MEMx read1 SD16LSBACC toggles with each SD16MEMx read

SD16LSBACC

Bit 6 LSB access. This bit allows access to the upper or lower 16-bits of theSD16 conversion result.0 SD16MEMx contains the most significant 16-bits of the conversion.1 SD16MEMx contains the least significant 16-bits of the conversion.

SD16OVIFG Bit 5 SD16 overflow interrupt flag0 No overflow interrupt pending1 Overflow interrupt pending

SD16DF Bit 4 SD16 data format0 Offset binary1 2’s complement

SD16IE Bit 3 SD16 interrupt enable0 Disabled1 Enabled

Page 836: MSP430 - general.pdf

SD16 Registers

29-22 SD16

SD16IFG Bit 2 SD16 interrupt flag. SD16IFG is set when new conversion results areavailable. SD16IFG is automatically reset when the correspondingSD16MEMx register is read, or may be cleared with software.0 No interrupt pending1 Interrupt pending

SD16SC Bit 1 SD16 start conversion0 No conversion start1 Start conversion

SD16GRP Bit 0 SD16 group. Groups SD16 channel with next higher channel. Not used forthe last channel.0 Not grouped1 Grouped

SD16INCTLx, SD16 Channel x Input Control Register

7 6 5 4 3 2 1 0

SD16INTDLYx SD16GAINx SD16INCHx

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SD16INTDLYx

Bits7-6

Interrupt delay generation after conversion start. These bits select thedelay for the first interrupt after conversion start.00 Fourth sample causes interrupt01 Third sample causes interrupt10 Second sample causes interrupt11 First sample causes interrupt

SD16GAINx Bits5-3

SD16 preamplifier gain000 x1001 x2010 x4011 x8100 x16101 x32110 Reserved111 Reserved

SD16INCHx Bits2-0

SD16 channel differential pair input000 Ax.0001 Ax.1010 Ax.2011 Ax.3100 Ax.4101 Ax.5110 Ax.6- Temperature Sensor111 Ax.7- Short for PGA offset measurement

Page 837: MSP430 - general.pdf

SD16 Registers

29-23SD16

SD16MEMx, SD16 Channel x Conversion Memory Register

15 14 13 12 11 10 9 8

Conversion Results

r r r r r r r r

7 6 5 4 3 2 1 0

Conversion Results

r r r r r r r r

ConversionResult

Bits15-0

Conversion Results. The SD16MEMx register holds the upper or lower16-bits of the digital filter output, depending on the SD16LSBACC bit.

SD16PREx, SD16 Channel x Preload Register

7 6 5 4 3 2 1 0

Preload Value

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SD16PreloadValue

Bits7-0

SD16 digital filter preload value.

Page 838: MSP430 - general.pdf

SD16 Registers

29-24 SD16

SD16IV, SD16 Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 SD16IVx 0

r0 r0 r0 r−0 r−0 r−0 r−0 r0

SD16IVx Bits15-0

SD16 interrupt vector value

SD16IV Contents Interrupt Source Interrupt Flag

InterruptPriority

000h No interrupt pending −

002h SD16MEMx overflow SD16CCTLxSD16OVIFG†

Highest

004h SD16_0 Interrupt SD16CCTL0SD16IFG

006h SD16_1 Interrupt SD16CCTL1SD16IFG

008h SD16_2 Interrupt SD16CCTL1SD16IFG

00Ah Reserved −

00Ch Reserved −

00Eh Reserved −

010h Reserved − Lowest† When an SD16 overflow occurs, the user must check all SD16CCTLx SD16OVIFG flags to

determine which channel overflowed.

Page 839: MSP430 - general.pdf

30-1SD16_A

SD16_A

The SD16_A module is a multichannel 16-bit sigma-delta analog-to-digitalconverter (ADC). This chapter describes the SD16_A of the MSP430x4xxfamily. The SD16_A module is implemented in the MSP430F42x0,MSP430FG42x0, MSP430F47x , MSP430FG47x, MSP430F47x3/4, andMSP430F471xx devices.

Topic Page

30.1 SD16_A Introduction 30-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30.2 SD16_A Operation 30-5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30.3 SD16_A Registers 30-22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 30

Page 840: MSP430 - general.pdf

SD16_A Introduction

30-2 SD16_A

30.1 SD16_A Introduction

The SD16_A module consists of up to seven independent sigma-deltaanalog-to-digital converters, referred to as channels, and an internal voltagereference. Each channel has up to eight fully differential multiplexed analoginput pairs including a built-in temperature sensor and a divided supplyvoltage. The converters are based on second-order oversampling sigma-deltamodulators and digital decimation filters. The decimation filters are comb typefilters with selectable oversampling ratios of up to 1024. Additional filtering canbe done in software.

Features of the SD16_A include:

16-bit sigma-delta architecture

Up to seven independent, simultaneously-sampling ADC channels.(The number of channels is device dependent, see the device-specificdata sheet.)

Up to eight multiplexed differential analog inputs per channel(The number of inputs is device dependent, see the device-specific datasheet.)

Software selectable on-chip reference voltage generation (1.2 V)

Software selectable internal or external reference

Built-in temperature sensor accessible by all channels

Up to 1.1-MHz modulator input frequency

High impedance input buffer(not implemented on all devices, see the device-specific data sheet)

Selectable low-power conversion mode

The block diagram of the SD16_A module is shown in Figure 30−1 for theMSP430F47x3/4 and MSP430F471xx. The block diagram of the SD16_Amodule is shown in Figure 30−2 for the MSP430F42x0, MSP430F47x,MSP430FG47x, and MSP430FG42x0.

Page 841: MSP430 - general.pdf

SD16_A Introduction

30-3SD16_A

Figure 30−1. Block Diagram of the MSP430F47x3/4 and MSP430F471xx SD16_A

15 0

SD16DIVx

ACLK

TACLK

SD16SSELx

00

01

10

11

00

01

10

11

MCLK

SMCLK

AVCCVREF

Divider1/2/4/8

A1.0 000

SD16INCHx

+−

001+−

010+−

011+−

100+−

101+−

110+−

111+−

A1.1

A1.2

A1.3

A1.4

A1.5

A1.6

2nd OrderΣ∆ Modulator

SD16GAINx

SD16DF

SD16LP

SD16OSRx

SD16MEM1

Reference

A1.7

SD16VMIDON

SD16REFON

fM

Reference1.2V

AVSS

SD16XDIVx

Divider1/3/16/48

SD16XOSR

1

0

SD16UNI

1

AVCC

SD16INCHx=101Temp.sensor

PGA1..32

5R

R

5R

Reference

SD16_A Control Block

SD16SC

Conversion Control(to prior channel)

SD16SGNL

Conversion Control(from next channel)

SD16GRPGroup/StartConversion Logic

SD16PRE1

Channel 1

Temperature. and Vcc Sense

ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

Channel 0

ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

Channel 2

ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ

Channel 3 ( up to Channel 6)

Note: Ax.1 to Ax.4 not available on all devices. See device-specific data sheet.

Page 842: MSP430 - general.pdf

SD16_A Introduction

30-4 SD16_A

Figure 30−2. Block Diagram of the MSP430F42x0, MSP430FG42x0, MSP430FG47x, andMSP430F47x SD16_A

15 0

SD16DIVx

ACLK

TACLK

SD16SSELx

00

01

10

11

00

01

10

11

MCLK

SMCLK

AVCCVREF

Divider1/2/4/8

A0 000

SD16INCHx

+−

001+−

010+−

011+−

100+−

101+−

110+−

111+−

A1

A2

A3

A4

A5

A6

2nd OrderΣ∆ Modulator

SD16GAINx

SD16DF

SD16LP

SD16SC

SD16OSRx

SD16SNGL

SD16MEM0

Reference

A7

SD16VMIDON

SD16REFON

fM

Reference1.2V

Start ConversionLogic

AVSS

SD16XDIVx

Divider1/3/16/48

SD16XOSR

BUF

SD16BUFx

1

0

SD16UNI

1

AVCC

SD16INCHx=101Temp.sensor

PGA1..32

5R

R

5R

Reference

Page 843: MSP430 - general.pdf

SD16_A Operation

30-5SD16_A

30.2 SD16_A Operation

The SD16_A module is configured with user software. The setup andoperation of the SD16_A is discussed in the following sections.

30.2.1 ADC Core

The analog-to-digital conversion is performed by a 1-bit, second-ordersigma-delta modulator. A single-bit comparator within the modulator quantizesthe input signal with the modulator frequency fM. The resulting 1-bit datastream is averaged by the digital filter for the conversion result.

30.2.2 Analog Input Range and PGA

The full-scale input voltage range for each analog input pair is dependent onthe gain setting of the programmable gain amplifier of each channel. Themaximum full-scale range is ±VFSR where VFSR is defined by:

VFSR VREF2

GAINPGA

For a 1.2V reference, the maximum full-scale input range for a gain of 1 is:

VFSR 1.2V2

1 0.6V

See the device-specific data sheet for full-scale input specifications.

30.2.3 Voltage Reference Generator

The SD16_A module has a built-in 1.2V reference. It can be used for eachSD16_A channel and is enabled by the SD16REFON bit. When using theinternal reference an external 100nF capacitor connected from VREF to AVSSis recommended to reduce noise. The internal reference voltage can be usedoff-chip when SD16VMIDON = 1. The buffered output can provide up to 1mAof drive. When using the internal reference off-chip, a 470nF capacitorconnected from VREF to AVSS is required. See device-specific data sheet forparameters.

An external voltage reference can be applied to the VREF input whenSD16REFON and SD16VMIDON are both reset.

30.2.4 Auto Power-Down

The SD16_A is designed for low power applications. When the SD16_A is notactively converting, it is automatically disabled and automatically re-enabledwhen a conversion is started. The reference is not automatically disabled, butcan be disabled by setting SD16REFON = 0. When the SD16_A or referenceare disabled, they consume no current.

Page 844: MSP430 - general.pdf

SD16_A Operation

30-6 SD16_A

30.2.5 Analog Input Pair Selection

The SD16_A can convert up to 8 differential input pairs multiplexed into thePGA. Up to five analog input pairs (A0-A4) are available externally on thedevice. A resistive divider to measure the supply voltage is available using theA5 multiplexer input. An internal temperature sensor is available using the A6multiplexer input. Input A7 is a shorted connection between the + and − inputpair and can be used to calibrate the offset of the SD16_A input stage.

Analog Input Setup

The analog input of each channel is configured using the SD16INCTLxregister. These settings can be independently configured for each SD16_Achannel.

The SD16INCHx bits select one of eight differential input pairs of the analogmultiplexer. The gain for each PGA is selected by the SD16GAINx bits. A totalof six gain settings are available.

On some devices SD16AEx bits are available to enable or disable the analoginput pin. Setting any SD16AEx bit disables the multiplexed digital circuitry forthe associated pin. See the device-specific data sheet for pin diagrams.

During conversion any modification to the SD16INCHx and SD16GAINx bitswill become effective with the next decimation step of the digital filter. Afterthese bits are modified, the next three conversions may be invalid due to thesettling time of the digital filter. This can be handled automatically with theSD16INTDLYx bits. When SD16INTDLY = 00h, conversion interrupt requestswill not begin until the 4th conversion after a start condition.

On devices implementing the high impedance input buffer it can be enabledusing the SD16BUFx bits. The speed settings are selected based on theSD16_A modulator frequency as shown in Table 30−1.

Table 30−1.High Input Impedance Buffer

SD16BUFx Buffer SD16 Modulator Frequency fM

00 Buffer disabled

01 Low speed/current fM < 200 kHz

10 Medium speed/current 200 kHz < fM < 700 kHz

11 High speed/current 700 kHz < fM < 1.1 MHz

An external RC anti-aliasing filter is recommended for the SD16_A to preventaliasing of the input signal. The cutoff frequency should be < 10 kHz for a1-Mhz modulator clock and OSR = 256. The cutoff frequency may set to alower frequency for applications that have lower bandwidth requirements.

Page 845: MSP430 - general.pdf

SD16_A Operation

30-7SD16_A

30.2.6 Analog Input Characteristics

The SD16_A uses a switched-capacitor input stage that appears as animpedance to external circuitry as shown in Figure 30−3.

Figure 30−3. Analog Input Equivalent Circuit

RS 1 kVS+

MSP430

CS

VS+ = Positive external source voltageVS− = Negative external source voltageRS = External source resistance CS = Sampling capacitance

RS 1 kVS−

CS

AVCC / 2

† Not implemented on all devices − see the device-specific data sheet

When the buffers are used, RS does not affect the sampling frequency fS.However, when the buffers are not used or are not present on the device, themaximum modulator frequency fM may be calculated from the minimumsettling time tSettling of the sampling circuit given by:

tSettling (RS 1k) CS lnGAIN 217 VAx

VREF

where

fM 12 tSettling

and VAx maxAVCC

2 VS

, AVCC

2 VS

,with VS+ and VS− referenced to AVSS.

CS varies with the gain setting as shown in Table 30−2.

Table 30−2.Sampling Capacitance

PGA Gain Sampling Capacitance CS

1 1.25 pF

2, 4 2.5 pF

8 5 pF

16, 32 10 pF

Page 846: MSP430 - general.pdf

SD16_A Operation

30-8 SD16_A

30.2.7 Digital Filter

The digital filter processes the 1-bit data stream from the modulator using aSINC3 comb filter. The transfer function is described in the z-Domain by:

H(z) 1OSR

1 zOSR

1 z13

and in the frequency domain by:

Hf

sincOSR

f

fM

sinc f

fM

3

1

OSR

sinOSR f

fM

sin f

fM

3

where the oversampling rate, OSR, is the ratio of the modulator frequency fMto the sample frequency fS. Figure 30−4 shows the filter’s frequency responsefor an OSR of 32. The first filter notch is at fS = fM/OSR. The notch’s frequencycan be adjusted by changing the modulator’s frequency, fM, usingSD16SSELx and SD16DIVx and the oversampling rate using the SD16OSRxand SD16XOSR bits.

The digital filter for each enabled ADC channel completes the decimation ofthe digital bit-stream and outputs new conversion results to the correspondingSD16MEMx register at the sample frequency fS.

Figure 30−4. Comb Filter’s Frequency Response with OSR = 32

−140

−120

−100

−80

−60

−40

−20

0

Frequency

GA

IN [

dB

]

fS fM

Page 847: MSP430 - general.pdf

SD16_A Operation

30-9SD16_A

Figure 30−5 shows the digital filter step response and conversion points. Forstep changes at the input after start of conversion a settling time must beallowed before a valid conversion result is available. The SD16INTDLYx bitscan provide sufficient filter settling time for a full-scale change at the ADCinput. If the step occurs synchronously to the decimation of the digital filter thevalid data will be available on the third conversion. An asynchronous step willrequire one additional conversion before valid data is available.

Figure 30−5. Digital Filter Step Response and Conversion Points

1

2

3

41

0

0.2

0.4

0.6

0.8

1

0

0.2

0.4

0.6

0.8

1

2

3

Asynchronous Step Synchronous Step

% V

FSR

Conversion Conversion

Page 848: MSP430 - general.pdf

SD16_A Operation

30-10 SD16_A

Digital Filter Output

The number of bits output by the digital filter is dependent on the oversamplingratio and ranges from 15 to 30 bits. Figure 30−6 shows the digital filter outputand their relation to SD16MEMx for each OSR, LSBACC, and SD16UNIsetting. For example, for OSR = 1024, LSBACC = 0, and SD16UNI = 1, theSD16MEMx register contains bits 28 − 13 of the digital filter output. WhenOSR = 32, the one (SD16UNI = 0) or two (SD16UNI = 1) LSBs are alwayszero.

The SD16LSBACC and SD16LSBTOG bits give access to the least significantbits of the digital filter output. When SD16LSBACC = 1 the 16 least significantbits of the digital filter’s output are read from SD16MEMx using wordinstructions. The SD16MEMx register can also be accessed with byteinstructions returning only the 8 least significant bits of the digital filter output.

When SD16LSBTOG = 1 the SD16LSBACC bit is automatically toggled eachtime SD16MEMx is read. This allows the complete digital filter output result tobe read with two reads of SD16MEMx. Setting or clearing SD16LSBTOG doesnot change SD16LSBACC until the next SD16MEMx access.

Figure 30−6. Used Bits of Digital Filter Output

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=512, LSBACC=0, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=512, LSBACC=1, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=512, LSBACC=0, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=512, LSBACC=1, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=1024, LSBACC=0, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=1024, LSBACC=1, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=1024, LSBACC=0, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=1024, LSBACC=1, SD16UNI=1

Page 849: MSP430 - general.pdf

SD16_A Operation

30-11SD16_A

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=32, LSBACC=x, SD16UNI=1

OSR=32, LSBACC=x, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=64, LSBACC=0, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=64, LSBACC=1, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=64, LSBACC=0, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=64, LSBACC=1, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=128, LSBACC=0, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=128, LSBACC=1, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=128, LSBACC=0, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=128, LSBACC=1, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=256, LSBACC=0, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=256, LSBACC=1, SD16UNI=0

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=256, LSBACC=0, SD16UNI=1

04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529

OSR=256, LSBACC=1, SD16UNI=1

Page 850: MSP430 - general.pdf

SD16_A Operation

30-12 SD16_A

30.2.8 Conversion Memory Register: SD16MEMx

One SD16MEMx register is associated with each SD16_A channel.Conversion results are moved to the corresponding SD16MEMx register witheach decimation step of the digital filter. The SD16IFG bit is set when new datais written to SD16MEMx. SD16IFG is automatically cleared when SD16MEMxis read by the CPU or may be cleared with software.

Output Data Format

The output data format is configurable in two’s complement, offset binary orunipolar mode as shown in Table 30−3.The data format is selected by theSD16DF and SD16UNI bits.

Table 30−3.Data Format

SD16UNI SD16DF Format Analog Input SD16MEMx† Digital Filter Output(OSR = 256)

Bipolar+FSR FFFF FFFFFF

0 0BipolarOffset ZERO 8000 8000000 0 OffsetBinary −FSR 0000 000000

Bipolar+FSR 7FFF 7FFFFF

0 1BipolarTwo’s ZERO 0000 0000000 1 Two s

Compliment −FSR 8000 800000

+FSR FFFF FFFFFF

1 0 Unipolar ZERO 0000 8000001 0 Unipolar

−FSR 0000 000000† Independent of SD16OSRx and SD16XOSR settings; SD16LSBACC = 0.

Note: Offset Measurements and Data Format

Any offset measurement done either externally or using the internaldifferential pair A7 would be appropriate only when the channel is operatingunder bipolar mode with SD16UNI = 0.

If the measured value is to be used in the unipolar mode for offset correctionit needs to be multiplied by two.

Page 851: MSP430 - general.pdf

SD16_A Operation

30-13SD16_A

Figure 30−7 shows the relationship between the full-scale input voltage rangefrom −VFSR to +VFSR and the conversion result. The data formats areillustrated.

Figure 30−7. Input Voltage vs. Digital Output

InputVoltage

SD16MEMx

−VFSR

+V FSR

7FFFh

8000h

Bipolar Output: 2’s complement

InputVoltage

SD16MEMx

−VFSR +V FSR

FFFFh

8000h

Bipolar Output: Offset Binary

0000h

0000h

SD16MEMx

−VFSR

FFFFh

Unipolar Output

InputVoltage

+V FSR

0000h

Page 852: MSP430 - general.pdf

SD16_A Operation

30-14 SD16_A

30.2.9 Conversion Modes

The SD16_A module can be configured for four modes of operation, listed inTable 30−4. The SD16SNGL and SD16GRP bits for each channel selects theconversion mode.

Table 30−4.Conversion Mode Summary

SD16SNGL SD16GRP† Mode Operation

1 0 Single channel,Single conversion

A single channel isconverted once.

0 0 Single channel,Continuous conversion

A single channel isconverted continuously.

1 1 Group of channels,Single conversion

A group of channels isconverted once.

0 1 Group of channels,Continuous conversion

A group of channels isconverted continuously.

† A channel is grouped and is the master channel of the group when SD16GRP = 0 if SD16GRPfor the prior channel(s) is set. The grouping feature is not present on MSP430F42x0 andMSP430FG42x0 devices.

Single Channel, Single Conversion

Setting the SD16SC bit of a channel initiates one conversion on that channelwhen SD16SNGL = 1 and it is not grouped with any other channels. TheSD16SC bit will automatically be cleared after conversion completion.

Clearing SD16SC before the conversion is completed immediately stopsconversion of the selected channel, the channel is powered down and thecorresponding digital filter is turned off. The value in SD16MEMx can changewhen SD16SC is cleared. It is recommended that the conversion data inSD16MEMx be read prior to clearing SD16SC to avoid reading an invalidresult.

Single Channel, Continuous Conversion

When SD16SNGL = 0 continuous conversion mode is selected. Conversionof the selected channel will begin when SD16SC is set and continue until theSD16SC bit is cleared by software when the channel is not grouped with anyother channel.

Clearing SD16SC immediately stops conversion of the selected channel, thechannel is powered down and the corresponding digital filter is turned off. Thevalue in SD16MEMx can change when SD16SC is cleared. It is recommendedthat the conversion data in SD16MEMx be read prior to clearing SD16SC toavoid reading an invalid result.

Figure 30−8 shows single channel operation for single conversion mode andcontinuous conversion mode.

Page 853: MSP430 - general.pdf

SD16_A Operation

30-15SD16_A

Figure 30−8. Single Channel Operation − Example

Channel 0SD16SNGL = 1SD16GRP = 0

Time

Conversion

SD16SC

Channel 1SD16SNGL = 1SD16GRP = 0

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Conversion

Set by SW Auto−clear

Set by SW Auto−clear Set by SW Auto−clear

Set by SW

Conv

Cleared by SW

= Result written to SD16MEMx

Group of Channels, Single Conversion

Consecutive SD16_A channels can be grouped together with the SD16GRPbit to synchronize conversions. Setting SD16GRP for a channel groups thatchannel with the next channel in the module. For example, setting SD16GRPfor channel 0 groups that channel with channel 1. In this case, channel 1 is themaster channel, enabling and disabling conversion of all channels in the groupwith its SD16SC bit. The SD16GRP bit of the master channel is always 0. TheSD16GRP bit of last channel in SD16_A has no function and is always 0.

When SD16SNGL = 1 for a channel in a group, single conversion mode isselected. A single conversion of that channel will occur synchronously whenthe master channel SD16SC bit is set. The SD16SC bit of all channels in thegroup will automatically be set and cleared by SD16SC of the master channel.SD16SC for each channel can also be cleared in software independently.

Clearing SD16SC of the master channel before the conversions arecompleted immediately stops conversions of all channels in the group, thechannels are powered down and the corresponding digital filters are turned off.Values in SD16MEMx can change when SD16SC is cleared. It isrecommended that the conversion data in SD16MEMx be read prior toclearing SD16SC to avoid reading an invalid result.

Page 854: MSP430 - general.pdf

SD16_A Operation

30-16 SD16_A

Group of Channels, Continuous Conversion

When SD16SNGL = 0 for a channel in a group, continuous conversion modeis selected. Continuous conversion of that channel will occur synchronouslywhen the master channel SD16SC bit is set. SD16SC bits for all groupedchannels will be automatically set and cleared with the master channel’sSD16SC bit. SD16SC for each channel in the group can also be cleared insoftware independently.

When SD16SC of a grouped channel is set by software independently of themaster, conversion of that channel will automatically synchronize toconversions of the master channel. This ensures that conversions for groupedchannels are always synchronous to the master.

Clearing SD16SC of the master channel immediately stops conversions of allchannels in the group the channels are powered down and the correspondingdigital filters are turned off. Values in SD16MEMx can change when SD16SCis cleared. It is recommended that the conversion data in SD16MEMx be readprior to clearing SD16SC to avoid reading an invalid result.

Figure 30−9 shows grouped channel operation for three SD16_A channels.Channel 0 is configured for single conversion mode, SD16SNGL = 1, andchannels 1 and 2 are in continuous conversion mode, SD16SNGL = 0.Channel two, the last channel in the group, is the master channel. Conversionsof all channels in the group occur synchronously to the master channelregardless of when each SD16SC bit is set using software.

Figure 30−9. Grouped Channel Operation − Example

Channel 0SD16SNGL = 1SD16GRP = 1

Time

Conversion

SD16SC

Channel 1SD16SNGL = 0SD16GRP =1

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Set by Ch2 Auto−clear

Set by Ch2

Conv

Set by SW Cleared by SW

Conversion Conv

Cleared by Ch2

Set by SW Auto−clear

Conversion

(syncronized to master)

Cleared by SW

Conv

Set by SW

(syncronized to master)

= Result written to SD16MEMx

Page 855: MSP430 - general.pdf

SD16_A Operation

30-17SD16_A

30.2.10 Conversion Operation Using Preload

When multiple channels are grouped the SD16PREx registers can be used todelay the conversion time frame for each channel. Using SD16PREx, thedecimation time of the digital filter is increased by the specified number of fMclock cycles and can range from 0 to 255. Figure 30−10 shows an exampleusing SD16PREx.

Figure 30−10. Conversion Delay using Preload − Example

Conversion

32

SD16OSRx = 32

Load SD16PREx:SD16PREx = 8

Preloadapplied Time

Delayed Conversion

40

Delayed ConversionResult

Conversion

32fM cycles:

The SD16PREx delay is applied to the beginning of the next conversion cycleafter being written. The delay is used on the first conversion after SD16SC isset and on the conversion cycle following each write to SD16PREx. Followingconversions are not delayed. After modifying SD16PREx, the next write toSD16PREx should not occur until the next conversion cycle is completed,otherwise the conversion results may be incorrect.

The accuracy of the result for the delayed conversion cycle using SD16PRExis dependent on the length of the delay and the frequency of the analog signalbeing sampled. For example, when measuring a DC signal, SD16PREx delayhas no effect on the conversion result regardless of the duration. The usermust determine when the delayed conversion result is useful in theirapplication.

Figure 30−11 shows the operation of grouped channels 0 and 1. The preloadregister of channel 1 is loaded with zero resulting in immediate conversionwhereas the conversion cycle of channel 0 is delayed by settingSD16PRE0 = 8. The first channel 0 conversion uses SD16PREx = 8, shiftingall subsequent conversions by 8 fM clock cycles.

Page 856: MSP430 - general.pdf

SD16_A Operation

30-18 SD16_A

Figure 30−11.Start of Conversion using Preload − Example

Delayed Conversion

40

SD16OSRx = 32

Start ofConversion

Time

Conversion

32

Conversion

32fM cycles:

1st Sample Ch1

SD16PRE0 = 8

SD16PRE1 = 0 Conversion

32

Conversion

32

Conversion

32

Conversion

1st Sample Ch0

When channels are grouped, care must be taken when a channel or channelsoperate in single conversion mode or are disabled in software while the masterchannel remains active. Each time channels in the group are re-enabled andre-synchronize with the master channel, the preload delay for that channel willbe reintroduced. Figure 30−12 shows the re-synchronization and preloaddelays for channels in a group. It is recommended that SD16PREx = 0 for themaster channel to maintain a consistent delay between the master andremaining channels in the group when they are re-enabled.

Figure 30−12. Preload and Channel Synchronization

Channel 0SD16SNGL = 0SD16GRP = 1

Time

Conversion

SD16SC

Channel 1SD16SNGL = 1SD16GRP =1

Conversion

Channel 2SD16SNGL = 0SD16GRP = 0

Conversion

SD16SC

SD16SC

Conversion Conversion

Set by Ch2 Auto−clear

Set by Ch2

Conv

Set by SW

Conversion

Set by SW Auto−clear

(syncronized to master)

Cleared by SW

Conv

Set by SW

(syncronized to master)

= Result written to SD16MEMx

PRE1 PRE1

PRE0

Conversion

PRE0 Conv

Page 857: MSP430 - general.pdf

SD16_A Operation

30-19SD16_A

30.2.11 Using the Integrated Temperature Sensor

To use the on-chip temperature sensor, the user selects the analog input pairSD16INCHx = 110 and sets SD16REFON = 1. Any other configuration is doneas if an external analog input pair was selected, including SD16INTDLYx andSD16GAINx settings. Because the internal reference must be on to use thetemperature sensor, it is not possible to use an external reference for theconversion of the temperature sensor voltage. Also, the internal reference willbe in contention with any used external reference. In this case, theSD16VMIDON bit may be set to minimize the affects of the contention on theconversion.

The typical temperature sensor transfer function is shown in Figure 30−13.When switching inputs of an SD16_A channel to the temperature sensor,adequate delay must be provided using SD16INTDLYx to allow the digital filterto settle and assure that conversion results are valid. The temperature sensoroffset error can be large, and may need to be calibrated for most applications.See device-specific data sheet for temperature sensor parameters.

Figure 30−13. Typical Temperature Sensor Transfer Function

Celsius

Volts

0 50 100

0.350

0.250

0.300

0.400

0.450

0.500

−50

0.200

VSensor,typ = TCSensor(273 + T[oC]) + VOffset, sensor [mV]

Page 858: MSP430 - general.pdf

SD16_A Operation

30-20 SD16_A

30.2.12 Interrupt Handling

The SD16_A has 2 interrupt sources for each ADC channel:

SD16IFG

SD16OVIFG

The SD16IFG bits are set when their corresponding SD16MEMx memoryregister is written with a conversion result. An interrupt request is generatedif the corresponding SD16IE bit and the GIE bit are set. The SD16_A overflowcondition occurs when a conversion result is written to any SD16MEMxlocation before the previous conversion result was read.

SD16IV, Interrupt Vector Generator

All SD16_A interrupt sources are prioritized and combined to source a singleinterrupt vector. SD16IV is used to determine which enabled SD16_A interruptsource requested an interrupt. The highest priority SD16_A interrupt requestthat is enabled generates a number in the SD16IV register (see registerdescription). This number can be evaluated or added to the program counterto automatically enter the appropriate software routine. Disabled SD16_Ainterrupts do not affect the SD16IV value.

Any access, read or write, of the SD16IV register has no effect on theSD16OVIFG or SD16IFG flags. The SD16IFG flags are reset by reading theassociated SD16MEMx register or by clearing the flags in software.SD16OVIFG bits can only be reset with software.

If another interrupt is pending after servicing of an interrupt, another interruptis generated. For example, if the SD16OVIFG and one or more SD16IFGinterrupts are pending when the interrupt service routine accesses the SD16IVregister, the SD16OVIFG interrupt condition is serviced first and thecorresponding flag(s) must be cleared in software. After the RETI instructionof the interrupt service routine is executed, the highest priority SD16IFGpending generates another interrupt request.

Interrupt Delay Operation

The SD16INTDLYx bits control the timing for the first interrupt service requestfor the corresponding channel. This feature delays the interrupt request for acompleted conversion by up to four conversion cycles allowing the digital filterto settle prior to generating an interrupt request. The delay is applied each timethe SD16SC bit is set or when the SD16GAINx or SD16INCHx bits for thechannel are modified. SD16INTDLYx disables overflow interrupt generationfor the channel for the selected number of delay cycles. Interrupt requests forthe delayed conversions are not generated during the delay.

Page 859: MSP430 - general.pdf

SD16_A Operation

30-21SD16_A

SD16_A Interrupt Handling Software Example

The following software example shows the recommended use of SD16IV andthe handling overhead. The SD16IV value is added to the PC to automaticallyjump to the appropriate routine.

The numbers at the right margin show the necessary CPU cycles for eachinstruction. The software overhead for different interrupt sources includesinterrupt latency and return-from-interrupt cycles, but not the task handlingitself. The latencies are:

SD16OVIFG, CH0 SD16IFG, CH1 SD16IFG 16 cycles

CH2 SD16IFG 14 cycles

The interrupt handler for channel 2 SD16IFG shows a way to checkimmediately if a higher prioritized interrupt occurred during the processing ofthe ISR. This saves nine cycles if another SD16_A interrupt is pending.

; Interrupt handler for SD16_A.

INT_SD16 ; Enter Interrupt Service Routine 6

ADD &SD16IV,PC; Add offset to PC 3

RETI ; Vector 0: No interrupt 5

JMP ADOV ; Vector 2: ADC overflow 2

JMP ADM0 ; Vector 4: CH_0 SD16IFG 2

JMP ADM1 ; Vector 6: CH_1 SD16IFG 2

;

; Handler for CH_2 SD16IFG starts here. No JMP required.

;

ADM2 MOV &SD16MEM2,xxx ; Move result, flag is reset

... ; Other instruction needed?

JMP INT_SD16 ; Check other int pending 2

;

; Remaining Handlers

;

ADM1 MOV &SD16MEM1,xxx ; Move result, flag is reset

... ; Other instruction needed?

RETI ; Return 5

;

ADM0 MOV &SD16MEM0,xxx ; Move result, flag is reset

RETI ; Return 5

;

ADOV ... ; Handle SD16MEMx overflow

RETI ; Return 5

Page 860: MSP430 - general.pdf

SD16_A Registers

30-22 SD16_A

30.3 SD16_A Registers

The SD16_A registers are listed in Table 30−5 (registers for channels notimplemented are unavailable; see the device-specific data sheet):

Table 30−5.SD16_A Registers

Register Short Form Register Type Address Initial State

SD16_A Control SD16CTL Read/write 0100h Reset with PUC

SD16_A Interrupt Vector SD16IV Read/write 0110h Reset with PUC

SD16_A Analog Enable† SD16AE Read/write 0B7h Reset with PUC

SD16_A Channel 0 Control SD16CCTL0 Read/write 0102h Reset with PUC

SD16_A Channel 0 Conversion Memory SD16MEM0 Read/write 0112h Reset with PUC

SD16_A Channel 0 Input Control SD16INCTL0 Read/write 0B0h Reset with PUC

SD16_A Channel 0 Preload SD16PRE0 Read/write 0B8h Reset with PUC

SD16_A Channel 1 Control SD16CCTL1 Read/write 0104h Reset with PUC

SD16_A Channel 1 Conversion Memory SD16MEM1 Read/write 0114h Reset with PUC

SD16_A Channel 1 Input Control SD16INCTL1 Read/write 0B1h Reset with PUC

SD16_A Channel 1 Preload SD16PRE1 Read/write 0B9h Reset with PUC

SD16_A Channel 2 Control SD16CCTL2 Read/write 0106h Reset with PUC

SD16_A Channel 2 Conversion Memory SD16MEM2 Read/write 0116h Reset with PUC

SD16_A Channel 2 Input Control SD16INCTL2 Read/write 0B2h Reset with PUC

SD16_A Channel 2 Preload SD16PRE2 Read/write 0BAh Reset with PUC

SD16_A Channel 3 Control SD16CCTL3 Read/write 0108h Reset with PUC

SD16_A Channel 3 Conversion Memory SD16MEM3 Read/write 0118h Reset with PUC

SD16_A Channel 3 Input Control SD16INCTL3 Read/write 0B3h Reset with PUC

SD16_A Channel 3 Preload SD16PRE3 Read/write 0BBh Reset with PUC

SD16_A Channel 4 Control SD16CCTL4 Read/write 010Ah Reset with PUC

SD16_A Channel 4 Conversion Memory SD16MEM4 Read/write 011Ah Reset with PUC

SD16_A Channel 4 Input Control SD16INCTL4 Read/write 0B4h Reset with PUC

SD16_A Channel 4 Preload SD16PRE4 Read/write 0BCh Reset with PUC

SD16_A Channel 5 Control SD16CCTL5 Read/write 010Ch Reset with PUC

SD16_A Channel 5 Conversion Memory SD16MEM5 Read/write 011Ch Reset with PUC

SD16_A Channel 5 Input Control SD16INCTL5 Read/write 0B5h Reset with PUC

SD16_A Channel 5 Preload SD16PRE5 Read/write 0BDh Reset with PUC

SD16_A Channel 6 Control SD16CCTL6 Read/write 010Eh Reset with PUC

SD16_A Channel 6 Conversion Memory SD16MEM6 Read/write 011Eh Reset with PUC

SD16_A Channel 6 Input Control SD16INCTL6 Read/write 0B6h Reset with PUC

SD16_A Channel 6 Preload SD16PRE6 Read/write 0BEh Reset with PUC

† Not implemented on all devices − see the device-specific data sheet.

Page 861: MSP430 - general.pdf

SD16_A Registers

30-23SD16_A

SD16CTL, SD16_A Control Register

15 14 13 12 11 10 9 8

Reserved SD16XDIVx SD16LP

r0 r0 r0 r0 rw−0 rw−0 rw−0 rw−0

7 6 5 4 3 2 1 0

SD16DIVx SD16SSELx SD16VMIDON

SD16REFON SD16OVIE Reserved

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r0

Reserved Bits15-12

Reserved

SD16XDIVx Bits11-9

SD16_A clock divider000 /1001 /3010 /16011 /481xx Reserved

SD16LP Bit 8 Low-power mode. This bit selects a reduced-speed reduced-power mode0 Low-power mode is disabled1 Low-power mode is enabled. The maximum clock frequency for the

SD16_A is reduced.

SD16DIVx Bits7-6

SD16_A clock divider00 /101 /210 /411 /8

SD16SSELx Bits5-4

SD16_A clock source select00 MCLK01 SMCLK10 ACLK11 External TACLK

SD16VMIDON

Bit 3 VMID buffer on0 Off1 On

SD16REFON

Bit 2 Reference generator on0 Reference off1 Reference on

SD16OVIE Bit 1 SD16_A overflow interrupt enable. The GIE bit must also be set to enable theinterrupt.0 Overflow interrupt disabled1 Overflow interrupt enabled

Reserved Bit 0 Reserved

Page 862: MSP430 - general.pdf

SD16_A Registers

30-24 SD16_A

SD16CCTLx, SD16_A Channel x Control Register

15 14 13 12 11 10 9 8

Reserved SD16BUFx† SD16UNI SD16XOSR SD16SNGL SD16OSRx

r0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

7 6 5 4 3 2 1 0

SD16LSBTOG

SD16LSBACC

SD16OVIFG SD16DF SD16IE SD16IFG SD16SC SD16GRP‡

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 r(w)−0

† Not implemented on all devices − see the device-specific data sheet.Reserved with r0 access if high impedance buffer not implemented.

‡ Reserved in MSP430F42x0, MSP430FG42x0, MSP430F47x, and MSP430FG47x devices.

Reserved Bit 15 Reserved

SD16BUFx Bits14−13

High impedance input buffer mode00 Buffer disabled01 Slow speed/current10 Medium speed/current11 High speed/current

SD16UNI Bit 12 Unipolar mode select0 Bipolar mode1 Unipolar mode

SD16XOSR Bit 11 Extended oversampling ratio. This bit, along with the SD16OSRx bits,select the oversampling ratio. See SD16OSRx bit description for settings.

SD16SNGL Bit 10 Single conversion mode select0 Continuous conversion mode1 Single conversion mode

SD16OSRx Bits9-8

Oversampling ratioWhen SD16XOSR = 000 25601 12810 6411 32When SD16XOSR = 100 51201 102410 Reserved11 Reserved

SD16LSBTOG

Bit 7 LSB toggle. This bit, when set, causes SD16LSBACC to toggle each timethe SD16MEMx register is read.0 SD16LSBACC does not toggle with each SD16MEMx read1 SD16LSBACC toggles with each SD16MEMx read

Page 863: MSP430 - general.pdf

SD16_A Registers

30-25SD16_A

SD16LSBACC

Bit 6 LSB access. This bit allows access to the upper or lower 16-bits of theSD16_A conversion result.0 SD16MEMx contains the most significant 16-bits of the conversion.1 SD16MEMx contains the least significant 16-bits of the conversion.

SD16OVIFG Bit 5 SD16_A overflow interrupt flag0 No overflow interrupt pending1 Overflow interrupt pending

SD16DF Bit 4 SD16_A data format0 Offset binary1 2’s complement

SD16IE Bit 3 SD16_A interrupt enable0 Disabled1 Enabled

SD16IFG Bit 2 SD16_A interrupt flag. SD16IFG is set when new conversion results areavailable. SD16IFG is automatically reset when the correspondingSD16MEMx register is read, or may be cleared with software.0 No interrupt pending1 Interrupt pending

SD16SC Bit 1 SD16_A start conversion0 No conversion start1 Start conversion

SD16GRP Bit 0 SD16_A group. Groups SD16_A channel with next higher channel. Notused for the last channel.Reserved in MSP430F42x0, MSP430FG42x0, MSP430F47x, andMSP430FG47x devices.0 Not grouped1 Grouped

Page 864: MSP430 - general.pdf

SD16_A Registers

30-26 SD16_A

SD16INCTLx, SD16_A Channel x Input Control Register

7 6 5 4 3 2 1 0

SD16INTDLYx SD16GAINx SD16INCHx

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SD16INTDLYx

Bits7-6

Interrupt delay generation after conversion start. These bits select thedelay for the first interrupt after conversion start.00 Fourth sample causes interrupt01 Third sample causes interrupt10 Second sample causes interrupt11 First sample causes interrupt

SD16GAINx Bits5-3

SD16_A preamplifier gain000 x1001 x2010 x4011 x8100 x16101 x32110 Reserved111 Reserved

SD16INCHx Bits2-0

SD16_A channel differential pair input.The available selections are device dependent. See the device-specificdata sheet.000 Ax.0 or A0‡

001 Ax.1† or A1‡

010 Ax.2† or A2‡

011 Ax.3† or A3‡

100 Ax.4† or A4‡

101 (AVCC − AVSS) / 11110 Temperature sensor111 Short for PGA offset measurement

†Ax.1 to Ax.4 not available on all devices. See device-specific data sheet.‡ Applies to MSP430F42x0, MSP430FG42x0, MSP430FG47x, and MSP430F47x devices

Page 865: MSP430 - general.pdf

SD16_A Registers

30-27SD16_A

SD16MEMx, SD16_A Channel x Conversion Memory Register

15 14 13 12 11 10 9 8

Conversion Results

r r r r r r r r

7 6 5 4 3 2 1 0

Conversion Results

r r r r r r r r

ConversionResult

Bits15-0

Conversion results. The SD16MEMx register holds the upper or lower16-bits of the digital filter output, depending on the SD16LSBACC bit.

SD16PREx, SD16_A Channel x Preload Register(Not present on MSP430F42x0, MSP430FG42x0, MSP430FG47x and MSP430F47x)

7 6 5 4 3 2 1 0

Preload Value

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SD16PreloadValue

Bits7-0

SD16_A digital filter preload value.

Page 866: MSP430 - general.pdf

SD16_A Registers

30-28 SD16_A

SD16AE, SD16_A Analog Input Enable Register(Present on MSP430F42x0, MSP430FG42x0, MSP430FG47x, and MSP430F47x)

7 6 5 4 3 2 1 0

SD16AE7 SD16AE6 SD16AE5 SD16AE4 SD16AE3 SD16AE2 SD16AE1 SD16AE0

rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0 rw−0

SD16AEx Bits7-0

SD16_A analog enable0 External input disabled. Negative inputs are internally connected to

VSS.1 External input enabled.

Page 867: MSP430 - general.pdf

SD16_A Registers

30-29SD16_A

SD16IV, SD16_A Interrupt Vector Register

15 14 13 12 11 10 9 8

0 0 0 0 0 0 0 0

r0 r0 r0 r0 r0 r0 r0 r0

7 6 5 4 3 2 1 0

0 0 0 SD16IVx 0

r0 r0 r0 r−0 r−0 r−0 r−0 r0

SD16IVx Bits15-0

SD16_A interrupt vector value

SD16IV Contents Interrupt Source Interrupt Flag

InterruptPriority

000h No interrupt pending −

002h SD16MEMx overflow SD16CCTLxSD16OVIFG†

Highest

004h SD16_A Channel 0 Interrupt SD16CCTL0SD16IFG

006h SD16_A Channel 1 Interrupt SD16CCTL1SD16IFG

008h SD16_A Channel 2 Interrupt SD16CCTL2SD16IFG

00Ah SD16_A Channel 3 Interrupt SD16CCTL3SD16IFG

00Ch SD16_A Channel 4 Interrupt SD16CCTL4SD16IFG

00Eh SD16_A Channel 5 Interrupt SD16CCTL5SD16IFG

010h SD16_A Channel 6 Interrupt SD16CCTL6SD16IFG

Lowest

† When an SD16_A overflow occurs, the user must check all SD16CCTLx SD16OVIFG flagsto determine which channel overflowed.

Page 868: MSP430 - general.pdf

30-30 SD16_A

Page 869: MSP430 - general.pdf

31-1DAC12

DAC12

The DAC12 module is a 12-bit voltage-output digital-to-analog converter(DAC). This chapter describes the DAC12. Two DAC12 modules areimplemented in the MSP430FG43x, MSP430FG461x, and MSP430FG47xdevices. One DAC12 module is implemented in the MSP430x42x0 andMSP430F47x devices.

Topic Page

31.1 DAC12 Introduction 31-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31.2 DAC12 Operation 31-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31.3 DAC12 Registers 31-13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 31

Page 870: MSP430 - general.pdf

DAC12 Introduction

31-2 DAC12

31.1 DAC12 Introduction

The DAC12 module is a 12-bit voltage-output DAC. The DAC12 can beconfigured in 8-bit or 12-bit mode and may be used in conjunction with theDMA controller. When multiple DAC12 modules are present, they may begrouped together for synchronous update operation.

Features of the DAC12 include:

12-bit monotonic output

8-bit or 12-bit voltage output resolution

Programmable settling time vs power consumption

Internal or external reference selection

Straight binary or 2s compliment data format

Self-calibration option for offset correction

Synchronized update capability for multiple DAC12s

Note: Multiple DAC12 Modules

Some devices may integrate more than one DAC12 module. When morethan one DAC12 is present on a device, the multiple DAC12 modulesoperate identically.

Throughout this chapter, nomenclature appears such as DAC12_xDAT orDAC12_xCTL to describe register names. When this occurs, the x is usedto indicate which DAC12 module is being discussed. In cases whereoperation is identical, the register is simply referred to as DAC12_xCTL.

The block diagram of the two DAC12 modules in the MSP430FG43x,MSP430FG47x, and MSP430FG461x devices is shown in Figure 31−1. Theblock diagram for the DAC12 module in the MSP430x42x0 and MSP430F47xdevices is shown in Figure 31−2.

Page 871: MSP430 - general.pdf

DAC12 Introduction

31-3DAC12

Figure 31−1. DAC12 Block Diagram

DAC12_0DAC12_0OUT

2.5V or 1.5V reference from ADC12

DAC12SREFx

VR− VR+

DAC12_0DAT

DAC12_0Latch

DAC12_1

DAC12LSELxVR− VR+

DAC12_1DAT

DAC12_1LatchTB2

TA1

DAC12DFDAC12RES

AVSS

00

01

10

11

00

01

10

11

00

01

10

11

VeREF+

VREF+

DAC12DFDAC12RES

Latch Bypass

DAC12LSELx

TB2

TA1

00

01

10

11

00

01

10

11

Latch Bypass

DAC12IR

To ADC12 module

DAC12_1DAT Updated

DAC12_0DAT Updated

1

0

0

1

DAC12ENC

0

1

DAC12ENC

DAC12GRP

1

0

DAC12GRP

DAC12SREFx

AVSS

00

01

10

11

x3

/3

DAC12_1OUT

DAC12AMPx

3

x3

DAC12IR

/3

GroupLoadLogic

DAC12AMPx

3

Page 872: MSP430 - general.pdf

DAC12 Introduction

31-4 DAC12

Figure 31−2. DAC12 Block Diagram For MSP430Fx42x0 and MSP430F47x Devices

DAC12_0DAC12_0OUT

1.2V reference from SD16

DAC12SREFx

VR− VR+

DAC12_0DAT

DAC12_0Latch

AVSS

00

01

10

11

VREF

DAC12DFDAC12RES

DAC12LSELx

TB2

TA1

00

01

10

11

00

01

10

11

Latch Bypass

DAC12IR

DAC12_0DAT Updated

0

1

ENC

1

0

DAC12GRP

x3

/3

DAC12AMPx

3DAC12IR

AVCC

Page 873: MSP430 - general.pdf

DAC12 Introduction

31-5DAC12

Figure 31--3. DAC12 Block Diagram For MSP430FG47x Devices

DAC12_1DAT

DAC12_1LATCH

DAC12ENC

0

1

DAC12GRP

0

1

00

01

10

11

DAC12LSELx

Latch Bypass

TB2

TA1

/3

DAC12SREFx

DAC12IR00

01

10

11

GroupLoadLogic

DAC12_1DAT Updated

DAC12RESDAC12DF

DAC12_0DAT

DAC12_0LATCH

DAC12ENC

0

1

DAC12GRP

0

1

00

01

10

11

DAC12LSELx

Latch Bypass

TB2

TA1

DAC12_0DAC12_0OUT

VR- VR+

AVSS

/3

DAC12SREFx DAC12AMPx

DAC12IR00

01

10

11

DAC12_0DAT Updated

DAC12RESDAC12DF

AVCC

AVCC

VREF

1.2V reference from SD16

x3

DAC12_1DAC12_1OUT

VR- VR+

AVSS

DAC12AMPx

x3

Page 874: MSP430 - general.pdf

DAC12 Operation

31-6 DAC12

31.2 DAC12 Operation

The DAC12 module is configured with user software. The setup and operationof the DAC12 is discussed in the following sections.

31.2.1 DAC12 Core

The DAC12 can be configured to operate in 8-bit or 12-bit mode using theDAC12RES bit. The full-scale output is programmable to be 1x or 3x theselected reference voltage via the DAC12IR bit. This feature allows the userto control the dynamic range of the DAC12. The DAC12DF bit allows the userto select between straight binary data and 2s compliment data for the DAC.When using straight binary data format, the formula for the output voltage isgiven in Table 31−1.

Table 31−1.DAC12 Full-Scale Range (Vref = VeREF+ or VREF+)

Resolution DAC12RES DAC12IR Output Voltage Formula

12 bit 0 0 Vout Vref 3 DAC12_xDAT4096

12 bit 0 1 Vout Vref DAC12_xDAT4096

8 bit 1 0 Vout Vref 3 DAC12_xDAT256

8 bit 1 1 Vout Vref DAC12_xDAT256

In 8-bit mode the maximum useable value for DAC12_xDAT is 0FFh, and in12-bit mode the maximum useable value for DAC12_xDAT is 0FFFh. Valuesgreater than these may be written to the register, but all leading bits areignored.

Note: Using the DAC12IR = 0

The maximum DAC12 output voltage (full scale) is limited to AVcc. Using theequation of Table 31−1 (DAC12IR = 0), this leads to Vref AVcc/3.

Page 875: MSP430 - general.pdf

DAC12 Operation

31-7DAC12

DAC12 Port Selection

On MSP430FG43x and MSP430FG461x devices, the DAC12 outputs aremultiplexed with the port P6 pins and ADC12 analog inputs, and also theVeREF+ and P5.1/S0/A12 pins. When DAC12AMPx > 0, the DAC12 functionis automatically selected for the pin, regardless of the state of the associatedPxSELx and PxDIRx bits. The DAC12OPS bit selects between the P6 pins andthe VeREF+ and P5.1 pins for the DAC outputs. For example, whenDAC12OPS = 0, DAC12_0 outputs on P6.6 and DAC12_1 outputs on P6.7.When DAC12OPS = 1, DAC12_0 outputs on VeREF+ and DAC12_1 outputson P5.1. See the port pin schematic in the device-specific data sheet for moredetails.

On MSP430x42x0 devices, the DAC12 output is multiplexed with the portP1.4/A3− pin. In this case, the DAC12OPS bit selects the DAC function for thepin. See the port pin schematic in the device-specific data sheet for moredetails.

On MSP430FG47x devices, the DAC12 output is multiplexed with the port pinsP1.6/OA0I0/A2−/DAC0 (DAC12_0) and P1.4/TBCLK/SMCLK/A3−/OA1I0/DAC1 (DAC12_1). The DAC12OPS bit selects the DAC12 function forthe pin. See the port pin schematic in the device-specific data sheet for moredetails.

31.2.2 DAC12 Reference

On MSP430FG43x and MSP430FG461x devices, the reference for theDAC12 is configured to use either an external reference voltage or the internal1.5-V/2.5-V reference from the ADC12 module with the DAC12SREFx bits.When DAC12SREFx = 0,1 the VREF+ signal is used as the reference, andwhen DAC12SREFx = 2,3 the VeREF+ signal is used as the reference.

On MSP430Fx42x0 and MSP430FG47x devices, the reference for the DAC12is configured to use AVCC, an external reference voltage, or the 1.2-Vreference from the SD16 module with the DAC12SREFx bits. WhenDAC12SREFx = 0,1 AVCC is used as the reference, and whenDAC12SREFx = 2,3 the VREF signal is used as the reference.

To use an ADC internal reference, it must be enabled and configured via theapplicable ADC control bits.

Note: Using the SD16 Reference Voltage in the MSP430Fx42x0 andMSP430FG47x Devices

If the DAC12 module uses the SD16 voltage reference, the reference voltagebuffer of the SD16 module must be enabled (SD16VMIDON = 1).

Page 876: MSP430 - general.pdf

DAC12 Operation

31-8 DAC12

DAC12 Reference Input and Voltage Output Buffers

The reference input and voltage output buffers of the DAC12 can beconfigured for optimized settling time vs power consumption. Eightcombinations are selected using the DAC12AMPx bits. In the low/low setting,the settling time is the slowest, and the current consumption of both buffers isthe lowest. The medium and high settings have faster settling times, but thecurrent consumption increases. See the device-specific data sheet forparameters.

31.2.3 Updating the DAC12 Voltage Output

The DAC12_xDAT register can be connected directly to the DAC12 core ordouble buffered. The trigger for updating the DAC12 voltage output is selectedwith the DAC12LSELx bits.

When DAC12LSELx = 0 the data latch is transparent and the DAC12_xDATregister is applied directly to the DAC12 core. the DAC12 output updatesimmediately when new DAC12 data is written to the DAC12_xDAT register,regardless of the state of the DAC12ENC bit.

When DAC12LSELx = 1, DAC12 data is latched and applied to the DAC12core after new data is written to DAC12_xDAT. When DAC12LSELx = 2 or 3,data is latched on the rising edge from the Timer_A CCR1 output or Timer_BCCR2 output respectively. DAC12ENC must be set to latch the new data whenDAC12LSELx > 0.

Page 877: MSP430 - general.pdf

DAC12 Operation

31-9DAC12

31.2.4 DAC12_xDAT Data Format

The DAC12 supports both straight binary and 2s compliment data formats.When using straight binary data format, the full-scale output value is 0FFFhin 12-bit mode (0FFh in 8-bit mode) (see Figure 31−4).

Figure 31−4. Output Voltage vs DAC12 Data, 12-Bit, Straight Binary Mode

Full-Scale Output

0 0FFFh

0

Output Voltage

DAC Data

When using 2s compliment data format, the range is shifted such that aDAC12_xDAT value of 0800h (0080h in 8-bit mode) results in a zero outputvoltage, 0000h is the mid-scale output voltage, and 07FFh (007Fh for 8-bitmode) is the full-scale voltage output (see Figure 31−5).

Figure 31−5. Output Voltage vs DAC12 Data, 12-Bit, 2s Compliment Mode

Full-Scale Output

0800h (−2048) 07FFh (+2047)0

0

Output Voltage

DAC Data

Mid-Scale Output

Page 878: MSP430 - general.pdf

DAC12 Operation

31-10 DAC12

31.2.5 DAC12 Output Amplifier Offset Calibration

The offset voltage of the DAC12 output amplifier can be positive or negative.When the offset is negative, the output amplifier attempts to drive the voltagenegative but cannot do so. The output voltage remains at zero until the DAC12digital input produces a sufficient positive output voltage to overcome thenegative offset voltage, resulting in the transfer function shown in Figure 31−6.

Figure 31−6. Negative Offset

Output Voltage

0

DAC DataNegative Offset

When the output amplifier has a positive offset, a digital input of zero does notresult in a zero output voltage. The DAC12 output voltage reaches themaximum output level before the DAC12 data reaches the maximum code(see Figure 31−7).

Figure 31−7. Positive Offset

Vcc

Output Voltage

0

DAC Data Full-Scale Code

The DAC12 has the capability to calibrate the offset voltage of the outputamplifier. Setting the DAC12CALON bit initiates the offset calibration. Thecalibration should complete before using the DAC12. When the calibration iscomplete, the DAC12CALON bit is automatically reset. The DAC12AMPx bitsshould be configured before calibration. For best calibration results, port andCPU activity should be minimized during calibration.

Page 879: MSP430 - general.pdf

DAC12 Operation

31-11DAC12

31.2.6 Grouping Multiple DAC12 Modules

Multiple DAC12s can be grouped together with the DAC12GRP bit tosynchronize the update of each DAC12 output. Hardware ensures that allDAC12 modules in a group update simultaneously independent of anyinterrupt or NMI event.

On the MSP430FG43x, MSP430FG47x and MSP430FG461x devices,DAC12_0 and DAC12_1 are grouped by setting the DAC12GRP bit ofDAC12_0. The DAC12GRP bit of DAC12_1 is don’t care. When DAC12_0 andDAC12_1 are grouped:

The DAC12_0 DAC12LSELx bits select the update trigger for both DACs

The DAC12LSELx bits for both DACs must be > 0

The DAC12ENC bits of both DACs must be set to 1

When DAC12_0 and DAC12_1 are grouped, both DAC12_xDAT registersmust be written to before the outputs update − even if data for one or both ofthe DACs is not changed. Figure 31−8 shows a latch-update timing examplefor grouped DAC12_0 and DAC12_1.

When DAC12_0 DAC12GRP = 1 and both DAC12_x DAC12LSELx > 0 andeither DAC12ENC = 0, neither DAC12 will update.

Figure 31−8. DAC12 Group Update Example, Timer_A3 Trigger

DAC12_0DAC12GRP

DAC12_0DAC12ENC

TimerA_OUT1

DAC12_0Latch Trigger

DAC12_0 Updated

DAC12_0 DAC12LSELx = 2 DAC12_0 DAC12LSELx > 0 ANDDAC12_1 DAC12LSELx = 2

DAC12_0DATNew Data

DAC12_1DATNew Data

DAC12_0 and DAC12_1Updated Simultaneously

Note: DAC12 Settling Time

The DMA controller is capable of transferring data to the DAC12 faster thanthe DAC12 output can settle. The user must assure the DAC12 settling timeis not violated when using the DMA controller. See the device-specific datasheet for parameters.

Page 880: MSP430 - general.pdf

DAC12 Operation

31-12 DAC12

31.2.7 DAC12 Interrupts

The DAC12 interrupt vector is shared with the DMA controller on some devices(see device-specific data sheet for interrupt assignment). In this case,software must check the DAC12IFG and DMAIFG flags to determine thesource of the interrupt.

The DAC12IFG bit is set when DAC12LSELx > 0 and DAC12 data is latchedfrom the DAC12_xDAT register into the data latch. When DAC12LSELx = 0,the DAC12IFG flag is not set.

A set DAC12IFG bit indicates that the DAC12 is ready for new data. If both theDAC12IE and GIE bits are set, the DAC12IFG generates an interrupt request.The DAC12IFG flag is not reset automatically. It must be reset by software.

Page 881: MSP430 - general.pdf

DAC12 Registers

31-13DAC12

31.3 DAC12 Registers

The DAC12 registers are listed in Table 31−2.

Table 31−2.DAC12 Registers

Register Short Form Register Type Address Initial State

DAC12_0 control DAC12_0CTL Read/write 01C0h Reset with POR

DAC12_0 data DAC12_0DAT Read/write 01C8h Reset with POR

DAC12_1 control DAC12_1CTL Read/write 01C2h Reset with POR

DAC12_1 data DAC12_1DAT Read/write 01CAh Reset with POR

Page 882: MSP430 - general.pdf

DAC12 Registers

31-14 DAC12

DAC12_xCTL, DAC12 Control Register

15 14 13 12 11 10 9 8

DAC12OPS DAC12SREFx DAC12RES DAC12LSELx DAC12CALON DAC12IR

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

DAC12AMPx DAC12DF DAC12IE DAC12IFG DAC12ENC DAC12GRP

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Modifiable only when DAC12ENC = 0

DAC12OPS Bit 15 DAC12 output selectMSP430FG43x and MSP430FG461x Devices:0 DAC12_0 output on P6.6, DAC12_1 output on P6.71 DAC12_0 output on VeREF+, DAC12_1 output on P5.1MSP430Fx42x0 Devices:0 DAC12_0 output not available external to the device1 DAC12_0 output available internally and externally.MSP430FG47x Devices:0 DAC12_x output not available external to the device1 DAC12_x output available internally and externally.

DAC12SREFx

Bits14-13

DAC12 select reference voltageMSP430FG43x and MSP430FG461x Devices:00 VREF+01 VREF+10 VeREF+11 VeREF+MSP430Fx42x0 and MSP430FG47x Devices:00 AVCC01 AVCC10 VREF (internal from SD16_A or external)11 VREF (internal from SD16_A or external)

DAC12RES Bit 12 DAC12 resolution select0 12-bit resolution1 8-bit resolution

Page 883: MSP430 - general.pdf

DAC12 Registers

31-15DAC12

DAC12LSELx

Bits11-10

DAC12 load select. Selects the load trigger for the DAC12 latch. DAC12ENCmust be set for the DAC to update, except when DAC12LSELx = 0.00 DAC12 latch loads when DAC12_xDAT written (DAC12ENC is ignored)01 DAC12 latch loads when DAC12_xDAT written, or, when grouped,

when all DAC12_xDAT registers in the group have been written.10 Rising edge of Timer_A.OUT1 (TA1)11 Rising edge of Timer_B.OUT2 (TB2)

DAC12CALON

Bit 9 DAC12 calibration on. This bit initiates the DAC12 offset calibration sequenceand is automatically reset when the calibration completes.0 Calibration is not active1 Initiate calibration/calibration in progress

DAC12IR Bit 8 DAC12 input range. This bit sets the reference input and voltage output range.0 DAC12 full-scale output = 3x reference voltage1 DAC12 full-scale output = 1x reference voltage

DAC12AMPx

Bits7-5

DAC12 amplifier setting. These bits select settling time vs. currentconsumption for the DAC12 input and output amplifiers.

DAC12AMPx Input Buffer Output Buffer

000 Off DAC12 off, output high Z

001 Off DAC12 off, output 0 V

010 Low speed/current Low speed/current

011 Low speed/current Medium speed/current

100 Low speed/current High speed/current

101 Medium speed/current Medium speed/current

110 Medium speed/current High speed/current

111 High speed/current High speed/current

DAC12DF Bit 4 DAC12 data format0 Straight binary1 2s complement

DAC12IE Bit 3 DAC12 interrupt enable0 Disabled1 Enabled

DAC12IFG Bit 2 DAC12 Interrupt flag0 No interrupt pending1 Interrupt pending

Page 884: MSP430 - general.pdf

DAC12 Registers

31-16 DAC12

DAC12ENC Bit 1 DAC12 enable conversion. This bit enables the DAC12 module whenDAC12LSELx > 0. When DAC12LSELx = 0, DAC12ENC is ignored.0 DAC12 disabled1 DAC12 enabled

DAC12GRP Bit 0 DAC12 group. Groups DAC12_x with the next higher DAC12_x. Not used forDAC12_1 on MSP430FG43x, MSP430FG47x, MSP430x42x0, orMSP430FG461x devices.0 Not grouped1 Grouped

Page 885: MSP430 - general.pdf

DAC12 Registers

31-17DAC12

DAC12_xDAT, DAC12 Data Register

15 14 13 12 11 10 9 8

0 0 0 0 DAC12 Data

r(0) r(0) r(0) r(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

DAC12 Data

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

Unused Bits15-12

Unused. These bits are always 0 and do not affect the DAC12 core.

DAC12 Data Bits11-0

DAC12 data

DAC12 Data Format DAC12 Data

12-bit binary The DAC12 data are right-justified. Bit 11 is the MSB.

12-bit 2s complement The DAC12 data are right-justified. Bit 11 is the MSB(sign).

8-bit binary The DAC12 data are right-justified. Bit 7 is the MSB.Bits 11 to 8 are don’t care and do not affect the DAC12core.

8-bit 2s complement The DAC12 data are right-justified. Bit 7 is the MSB(sign). Bits 11 to 8 are don’t care and do not affect theDAC12 core.

Page 886: MSP430 - general.pdf

31-18 DAC12

Page 887: MSP430 - general.pdf

32-1Scan IF

Scan IF

The Scan IF peripheral automatically scans sensors and measures linear orrotational motion. This chapter describes the Scan interface. The Scan IF isimplemented in the MSP430FW42x devices.

Topic Page

32.1 Scan IF Introduction 32-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32.2 Scan IF Operation 32-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32.3 Scan IF Registers 32-35. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 32

Page 888: MSP430 - general.pdf

Scan IF Introduction

32-2 Scan IF

32.1 Scan IF Introduction

The Scan IF module is used to automatically measure linear or rotationalmotion with the lowest possible power consumption. The Scan IF consists ofthree blocks: the analog front end (AFE), the processing state machine (PSM),and the timing state machine (TSM). The analog front end stimulates thesensors, senses the signal levels and converts them into their digitalrepresentation. The digital signals are passed into the processing statemachine. The processing state machine is used to analyze and count rotationor motion. The timing state machine controls the analog front end and theprocessing state machine.

The Scan IF features include:

Support for different types of LC sensors

Measurement of sensor signal envelope

Measurement of sensor signal oscillation amplitude

Support for resistive sensors such as Hall-effect or giantmagneto-resistive (GMR) sensors

Direct analog input for A/D conversion

Direct digital input for digital sensors such as optical decoders

Support for quadrature decoding

The Scan IF module block diagram is shown in Figure 32−1.

Page 889: MSP430 - general.pdf

Scan IF Introduction

32-3Scan IF

Figure 32−1. Scan IF Block Diagram

Timing StateMachine (TSM)

w/ oscillator

Processing StateMachine (PSM)

Analog Input M

ultiplexer

InterruptRequest

RotationData

ACLK

SMCLK

Analog Front−End(AFE)

SIFCH1

SIFCH0

SIFCH2

SIFCH3

SIFCI0

SIFCOM

SIFVSS

SIFCI

SIFCI1

SIFCI2

SIFCI3

Scan I/F

To Timer_A

+

DAC 10 Bitw/ RAM1/2

ExcitS/H

AVCC

Page 890: MSP430 - general.pdf

Scan IF Operation

32-4 Scan IF

32.2 Scan IF Operation

The Scan IF is configured with user software. The setup and operation of theScan IF is discussed in the following sections.

32.2.1 Scan IF Analog Front End

The Scan IF analog front end provides sensor excitation and measurement.The analog front end is automatically controlled by the timing state machineaccording to the information in the timing state machine table. The analog frontend block diagram is shown in Figure 32−2.

Note: Timing State Machine Signals

Throughout this chapter, signals from the TSM are noted in the signal namewith (tsm). For example, The signal SIFEX(tsm) comes from the TSM.

Page 891: MSP430 - general.pdf

Scan IF Operation

32-5Scan IF

Figure 32−2. Scan IF Analog Front End Block Diagram

SIFTESTD

SIFTESTS1(tsm)

+

1

0SIFCH0

SIFCH1

SIFCH2

00

01

10

11

SIFCH31

0

SIFCI

SIFCISEL

SIFCAON

SIFCAX

SIFCACI3

10

11

01

00

SIFTCH0x

2SIFTCH1x

SIF2OUT

SIF3OUT

SIFTCH0OUT

SIF1OUT

SIF0OUT

SIFTCH1OUT

SIFCAINV

SIFRSON(tsm)

2

Output Stage

SIFCHx(tsm)2

Sync.

00

01

10

11

00

01

10

11

S/H

S/H

S/H

SIFVSS

SIFCOM

Sample/Hold

2

DAC 10 Bit

SIFDACR0

SIFDACR1

SIFDACR2

SIFDACR3

SIFDACR4

SIFDACR5

SIFDACR6

SIFDACR7

SIFSH

SIFCA(tsm)

SIFDAC(tsm)

SIFDACON

SIFCI0

SIFCI1

SIFCI2

SIFCI3

S/H

VMID

SIFVCC2

00

01

10

11

Excit

Excit

Excit

Excit

SIFTEN

Excitation

SIFLCEN(tsm)

SIFEX(tsm)

TESTDX

Page 892: MSP430 - general.pdf

Scan IF Operation

32-6 Scan IF

Excitation

The excitation circuitry is used to excite the LC sensors or to power the resistordividers. The excitation circuitry is shown in Figure 32−3 for one LC sensorconnected. When the SIFTEN bit is set and the SIFSH bit is cleared theexcitation circuitry is enabled and the sample-and-hold circuitry is disabled.

When the SIFEX(tsm) signal from the timing state machine is high the SIFCHxinput of the selected channel is connected to SIFVSS and the SIFCOM inputis connected to the mid-voltage generator to excite the sensor. TheSIFLCEN(tsm) signal must be high for excitation. While one channel is excitedand measured all other channels are automatically disabled. Only the selectedchannel is excited and measured.

The excitation period should be long enough to overload the LC sensor slightly.After excitation the SIFCHx input is released from ground when SIFEX(tsm)= 0 and the LC sensor can oscillate freely. The oscillations will swing abovethe positive supply but will be clipped by the protection diode to the positivesupply voltage plus one diode drop. This gives consistent maximum oscillationamplitude.

At the end of the measurement the sensor should be damped by settingSIFLCEN(tsm) = 0 to remove any residual energy before the nextmeasurement.

Mid-Voltage Generator

The mid-voltage generator is on when SIFVCC2 = 1 and allows the LC sensorsto oscillate freely. The mid-voltage generator requires a maximum of 6 ms tosettle and requires ACLK to be active and operating at 32768 Hz.

Page 893: MSP430 - general.pdf

Scan IF Operation

32-7Scan IF

Figure 32−3. Excitation and Sample-And-Hold Circuitry

SIFEX(tsm)

SIFVSS

1

1

1 0

SIFCH0

SIFCOM

Sample-and-Hold

SIFLCEN(tsm)

SIFTEN

1

0Damping

Excitation

VSS

1

0

Excitation

=00

VMID Gen

SIFVCC21/2

AVCC

1

000

01

10

11

00

01

10

11

to

Comparator

From

Channel

Select Logic

SIFSH

Page 894: MSP430 - general.pdf

Scan IF Operation

32-8 Scan IF

Sample-And-Hold

The sample-and-hold is used to sample the sensor voltage to be measured.The sample-and-hold circuitry is shown in Figure 32−3. When SIFSH = 1 andSIFTEN = 0 the sample-and-hold circuitry is enabled and the excitationcircuitry and mid-voltage generator are disabled. The sample-and-hold is usedfor resistive dividers or for other analog signals that should be sampled.

Up to four resistor dividers can be connected to SIFCHx and SIFCOM. AVCCand SIFCOM are the common positive and negative potentials for allconnected resistor dividers. When SIFEX(tsm) = 1, SIFCOM is connected toSIFVSS allowing current to flow through the dividers. This charges thecapacitors of each sample-and-hold circuit to the divider voltages. All resistordivider channels are sampled simultaneously. When SIFEX(tsm) = 0 thesample-and-hold capacitor is disconnected from the resistor divider andSIFCOM is disconnected from SIFVSS. After sampling, each channel can bemeasured sequentially using the channel select logic, the comparator, and theDAC.

The selected SIFCHx input can be modeled as an RC low-pass filter duringthe sampling time tsample, as shown below in Figure 32−4. An internal MUX-oninput resistance Ri(SIFCHx) (max. 3 kΩ) in series with capacitor CSCH(SIFCHx)(max. 7 pF) is seen by the resistor-divider. The capacitor voltage VC must becharged to within ½ LSB of the resistor divider voltage for an accurate 10-bitconversion. See the device-specific data sheet for parameters.

Figure 32−4. Analog Input Equivalent Circuit

Ri(SIFCHx)

VC

MSP430

CSHC(SIFCHx)

VI

VI = Input voltage at pin SIFCHxVS = External source voltageRS = External source resistance Ri(SIFCHx) = Internal MUX-on input resistanceCISHC(SIFCHx) = Input capacitanceVC = Capacitance-charging voltage

RSVS

The resistance of the source RS and Ri(SIFCHx) affect tsample.The followingequation can be used to calculate the minimum sampling time tsample for a10-bit conversion:

tsample (RS RiSIFCHx) ln(211) CSHC(SIFCHx)(1)

Substituting the values for RI and CI given above, the equation becomes:

tsample (RS 3k) 7.625 7pF (2)

For example, if RS is 10 kΩ, tsample must be greater than 684 ns.

Page 895: MSP430 - general.pdf

Scan IF Operation

32-9Scan IF

Direct Analog And Digital Inputs

By setting the SIFCAX bit, external analog or digital signals can be connecteddirectly to the comparator through the SIFCIx inputs. This allowsmeasurement capabilities for optical encoders and other sensors.

Comparator Input Selection And Output Bit Selection

The SIFCAX and SIFSH bits select between the SIFCIx channels and theSIFCHx channels for the comparator input as described in Table 32−1.

Table 32−1.SIFCAX and SIFSH Input Selection

SIFCAX SIFSH Operation

0 0 SIFCHx and excitation circuitry is selected

0 1 SIFCHx and sample-and-hold circuitry is selected

1 X SIFCIx inputs are selected

The TESTDX signal and SIFTESTS1(tsm) signal select between theSIFxOUT output bits and the SIFTCHxOUT output bits for the comparatoroutput as described in Table 32−2. TESTDX is controlled by the SIFTESTD bit.

Table 32−2.Selected Output Bits

TESTDX SIFCH(tsm) SIFTESTS1(tsm) Selected Output Bit

0 00 X SIF0OUT

0 01 X SIF1OUT

0 10 X SIF2OUT

0 11 X SIF3OUT

1 X 0 SIFTCH0OUT

1 X 1 SIFTCH1OUT

When TESTDX = 0, the SIFCHx(tsm) signals select which SIFCIx or SIFCHxchannel is excited and connected to the comparator. The SIFCHx(tsm) signalsalso select the corresponding output bit for the comparator result.

When TESTDX = 1, channel selection depends on the SIFTESTS1(tsm)signal. When TESTDX = 1 and SIFTESTS1(tsm) = 0, input channel selectionis controlled with the SIFTCH0x bits and the output bit is SIFTCH0OUT. WhenTESTDX = 1 and SIFTESTS1(tsm) = 1, input channel selection is controlledwith the SIFTCH1x bits and the output bit is SIFTCH1OUT.

Page 896: MSP430 - general.pdf

Scan IF Operation

32-10 Scan IF

When SIFCAX = 1, the SIFCSEL and SIFCI3 bits select between the SIFCIxchannels and the SIFCI input allowing storage of the comparator output forone input signal into the four output bits SIF0OUT - SIF3OUT. This can be usedto observe the envelope function of sensors.

The output logic is enabled by the SIFRSON(tsm) signal. When thecomparator output is high while SIFRSON = 1, an internal latch is set.Otherwise the latch is reset. The latch output is written into the selected outputbit with the rising edge of the SIFSTOP(tsm) signal as shown in Figure 32−5.

Figure 32−5. Analog Front-End Output Timing

SIFRSON(tsm)

Comparator Output

Internal Latch

SIFSTOP(tsm)

SIFxOUT/SIFTCHxOUT

Time

Page 897: MSP430 - general.pdf

Scan IF Operation

32-11Scan IF

Comparator and DAC

The analog input signals are converted into digital signals by the comparatorand the programmable 10-bit DAC. The comparator compares the selectedanalog signal to a reference voltage generated by the DAC. If the voltage isabove the reference the comparator output will be high. Otherwise it will be low.The comparator output can be inverted by setting SIFCAINV. The comparatoroutput is stored in the selected output bit and processed by the processingstate machine to detect motion and direction.

The comparator and the DAC are turned on and off by SIFCA(tsm) signal andthe SIFDAC(tsm) signal when needed by the timing state machine. They canalso be permanently enabled by setting the SIFCAON and SIFDACON bits.During sensitive measurements enabling the comparator and DAC with theSIFCAON and SIFDACON bits may improve resolution.

Page 898: MSP430 - general.pdf

Scan IF Operation

32-12 Scan IF

For each input there are two DAC registers to set the reference level as listedin Table 32−3. Together with the last stored output of the comparator,SIFxOUT, the two levels can be used as an analog hysteresis as shown inFigure 32−6. The individual settings for the four inputs can be used tocompensate for mismatches between the sensors.

Table 32−3.Selected DAC Registers

Selected Output Bit,SIFxOUT

Last Value ofSIFxOUT

DAC Register Used

SIF0OUT 0 SIFDACR0

1 SIFDACR1

SIF1OUT 0 SIFDACR2

1 SIFDACR3

SIF2OUT 0 SIFDACR4

1 SIFDACR5

SIF3OUT 0 SIFDACR6

1 SIFDACR7

Figure 32−6. Analog Hysteresis With DAC Registers

DAC Output Voltage

Input Voltage

SIF1OUT

Time

SIFDACR2

SIFDACR3

When TESTDX = 1, the SIFDACR6 and SIFDACR7 registers are used as thecomparator reference as described in Table 32−4.

Table 32−4.DAC Register Select When TESTDX = 1

SIFTESTS1(tsm) DAC Register Used

0 SIFDACR6

1 SIFDACR7

Page 899: MSP430 - general.pdf

Scan IF Operation

32-13Scan IF

Internal Signal Connections to Timer1_A5

The outputs of the analog front end are connected to 3 differentcapture/compare registers of Timer1_A5. The output stage of the analog frontend, shown in Figure 32−7. provides two different modes that are selected bythe SIFCS bit and provides the SIFOx signals to Timer1_A5. See thedevice-specific data sheet for connection of these signals.

Figure 32−7. TimerA Output Stage of the Analog Front End

TimerA Output Stage

SIF0OUT

SIF1OUT

SIF2OUT

SIF3OUT

SIFS1x

SIFO0

SIFO1

SIFO2

SIFTESTS1(tsm)

SIFEX(tsm)

SIFCS

11

10

01

00

SIFS2x

11

10

01

00

1

0

1

0

0

10

Comparator Output

When SIFCS = 1, the SIFEX(tsm) signal and the comparator output can beselected as inputs to different Timer1_A5 capture/compare registers. This canbe used to measure the time between excitation of a sensor and the lastoscillation that passes through the comparator or to perform a slope A/Dconversion.

When SIFCS =0, the output bits SIFxOUT can be selected as inputs toTimer1_A5 with the SIFS1x and SIFS2x bits. This can be used to measure theduty cycle of SIFxOUT.

Page 900: MSP430 - general.pdf

Scan IF Operation

32-14 Scan IF

32.2.2 Scan IF Timing State Machine

The TSM is a sequential state machine that cycles through the SIFTSMxregisters and controls the analog front end and sensor excitation automaticallywith no CPU intervention. The states are defined within a 24 x 16-bit memory,SIFTSM0 to SIFTSM23. The SIFEN bit enables the TSM. When SIFEN = 0,the ACLK input divider, the TSM start flip-flop, and the TSM outputs are resetand the internal oscillator is stopped. The TSM block diagram is shown inFigure 32−8.

The TSM begins at SIFTSM0 and ends when the TSM encounters a SIFTSMxstate with a set SIFTSTOP bit. When a state with a set SIFSTOP bit is reached,the state counter is reset to zero and state processing stops. State processingre-starts at SIFTSM0 with the next start condition when SIFTSMRP = 0, orimmediately when SIFTSMRP = 1

After generation of the SIFSTOP(tsm) pulse, the timing state machine will loadand maintain the conditions defined in SIFTSM0. In this state SIFLCEN(tsm)should be reset to ensure that all LC oscillators are shorted.

Page 901: MSP430 - general.pdf

Scan IF Operation

32-15Scan IF

Figure 32−8. Timing State Machine Block Diagram

SIFDIV3Bx

State Pointerand

Control

Start

Stop

SIFTSM0

SIFTSM23

Set_SIFIFG2

SIFTSMx

SIFCH0

SIFCH1

SIFLCOFF

SIFEX

SIFCA

SIFCLKON

SIFRSON

SIFTESTS1

SIFDAC

SIFSTOP

SIFACLK

SIFREPEAT0

SIFREPEAT1

SIFREPEAT2

SIFREPEAT3

SIFREPEAT4

SIFCHx(tsm)

SIFLCOFF(tsm)

SIFEX(tsm)

SIFCA(tsm)

SIFCLKON(tsm

SIFRSON(tsm)

SIFTESTS1(tsm

SIFDAC(tsm)

SIFSTOP(tsm)

Set_SIFIFG1

ACLK

SIFREPEATx

SIFACLK

SIFFLLON(tsm)

SIFTSM1

SIFTSM22

SIFEN SIFTSMRP

SIFCLKEN

SMCLK

SIFOSC

SIFCNT3

Out

Enable

ACLK

SIFCLK

SIFCLKGON

SIFCLKEN

SIFDIV2x

SIFDIV1x

0

1

Divider/1/2/4/8

Divider/1/2/4/8

SIFDIV3Ax

Divider/2 .. /450

3

SIFFNOM

3

4

SIFCLKFQx

Page 902: MSP430 - general.pdf

Scan IF Operation

32-16 Scan IF

TSM Operation

The TSM automatically starts and re-starts periodically based on a dividedACLK start signal selected with the SIFDIV2x bits, the SIFDIV3Ax andSIFDIV3Bx bits when SIFTSMRP = 0. For example, if SIFDIV3A andSIFDIV3B are configured to 270 ACLK cycles, then the TSM automaticallystarts every 270 ACLK cycles. When SIFTSMRP = 1 the TSM re−startsimmediately with the SIFTSM0 state at the end of the previous sequence i.e.with the next ACLK cycle after encountering a state with SIFSTOP = 1. TheSIFIFG2 interrupt flag is set when the TSM starts.

The SIFDIV3Ax and SIFDIV3Bx bits may be updated anytime duringoperation. When updated, the current TSM sequence will continue with the oldsettings until the last state of the sequence completes. The new settings willtake affect at the start of the next sequence.

TSM Control of the AFE

The TSM controls the AFE with the SIFCHx, SIFLCEN, SIFEX, SIFCA,SIFRSON, SIFTESTS1, SIFDAC, and SIFSTOP bits. When any of these bitsare set, their corresponding signal(s), SIFCHx(tsm), SIFLCEN(tsm),SIFEX(tsm), SIFCA(tsm), SIFRSON(tsm), SIFTESTS1(tsm), SIFDAC(tsm),and SIFSTOP(tsm) are high for the duration of the state. Otherwise, thecorresponding signal(s) are low.

TSM State Duration

The duration of each state is individually configurable with the SIFREPEATxbits. The duration of each state is SIFREPEATx + 1 times the selected clocksource. For example, if a state were defined with SIFREPEATx = 3 andSIFACLK = 1, the duration of that state would be 4 x ACLK cycles. Becauseof clock synchronization, the duration of each state is affected by the clocksource for the previous state, as shown in Table 32−5.

Table 32−5.TSM State Duration

SIFACLK

ForPrevious

State

ForCurrent

State State Duration, T

0 0 T = (SIFREPEATx + 1) x 1/fSIFCLK

0 1 (SIFREPEATx) x 1/fACLK T (SIFREPEATx + 1) x1/fACLK

1 0 (SIFREPEATx + 1) x 1/fSIFCLK T (SIFREPEATx + 2) x1/fSIFCLK

1 1 T = (SIFREPEATx + 1) x 1/fACLK

Page 903: MSP430 - general.pdf

Scan IF Operation

32-17Scan IF

TSM State Clock Source Select

The TSM clock source is individually configurable for each state. The TSM canbe clocked from ACLK or a high frequency clock selected with the SIFACLKbit. When SIFACLK = 1, ACLK is used for the state, and when SIFACLK = 0,the high frequency clock is used. The high frequency clock can be sourcedfrom SMCLK or the TSM internal oscillator, selected by the SIFCLKEN bit. Thehigh-frequency clock can be divided by 1, 2, 4, or 8 with SIFDIV1x bits.

A set SIFCLKON bit is used to turn on the selected high frequency clock sourcefor the duration of the state, when it is not used for the state. If the DCO isselected as the high frequency clock source, it is automatically turned on,regardless of the low-power mode settings of the MSP430.

The TSM internal oscillator generates a nominal frequency of 1MHz or 4MHzselected by the SIFFNOM bit and can be tuned in nominal 5% steps from −40%to +35% with the SIFCLKFQx. The frequency and the steps differ from deviceto device. See the device-specific data sheet for parameters.

The TSM internal oscillator frequency can be measured with ACLK. WhenSIFCLKEN = 1 and SIFCLKGON = 1 SIFCNT3 is reset, and beginning with thenext rising edge of ACLK, SIFCNT3 counts the clock cycles of the internaloscillator. SIFCNT3 counts the internal oscillator cycles for one ACLK periodwhen SIFNOM = 0 and four ACLK periods when SIFNOM = 1. ReadingSIFCNT3 while it is counting will result in reading 01h.

TSM Stop Condition

The last state the TSM is marked with SIFSTOP = 1. The duration of this laststate is always one SIFCLK cycle regardless of the SIFACLK or SIFREPEATxsettings. The SIFIFG1 interrupt flag is set at when the TSM encounters a statewith a set SIFSTOP bit.

Page 904: MSP430 - general.pdf

Scan IF Operation

32-18 Scan IF

TSM Test Cycles

For calibration purposes, to detect sensor drift, or to measure signals otherthan the sensor signals, a test cycle may be inserted between TSM cycles bysetting the SIFTESTD bit. The time between the TSM cycles is not altered bythe test cycle insertion as shown in Figure 32−9. At the end of the test cyclethe SIFTESTD bit is automatically cleared. The TESTDX signal is active duringthe test cycle to control input and output channel selection. TESTDX isgenerated after the SIFTESTD bit is set and the next TSM sequencecompletes.

Figure 32−9. Test Cycle Insertion

TSM Start Signal(Divided ACLK)

Normal CycleNormalCycle

TestCycle

Normal CycleNormalCycle

TestCycle

SIFTESTD

SIFTESTD set by Software

TSM Active

TESTDX

SIFTESTD automatically cleared

Page 905: MSP430 - general.pdf

Scan IF Operation

32-19Scan IF

TSM Example

Figure 32−10 shows an example for a TSM sequence. The TSMx registervalues for the example are shown in Table 32−6. ACLK and SIFCLK are notdrawn to scale. The TSM sequence starts with SIFTSM0 and ends with a setSIFSTOP bit in SIFTSM9. Only the SIFTSM5 to SIFTSM9 states are shown.

Table 32−6.TSM Example Register Values

TSMx Register TSMx Register Contents

SIFTSM5 0100Ah

SIFTSM6 00402h

SIFTSM7 01812h

SIFTSM8 00952h

SIFTSM9 00200h

The example also shows the affects of the clock synchronization whenswitching between SIFCLK and ACLK. In state SIFTSM6, SIFACLK is set,whereas in the previous state and the successive state, SIFACLK is cleared.The waveform shows the duration of SIFTSM6 is less than one ACLK cycleand the duration of state SIFTSM7 is up to one SIFCLK period longer thanconfigured by the SIFREPEATx bits.

Figure 32−10. Timing State Machine Example

SIFCLK

SIFEX(tsm)

SIFCA(tsm)

SIFRSON(tsm)

SIFDAC(tsm)

SIFSTOP(tsm)

ACLK

SIFCHx(tsm)

SIFTSM5 SIFTSM6 SIFTSM7 SIFTSM8SIF

TSM9SIF

TSM4

10 10 10 00

Page 906: MSP430 - general.pdf

Scan IF Operation

32-20 Scan IF

32.2.3 Scan IF Processing State Machine

The PSM is a programmable state machine used to determine rotation anddirection with its state table stored within MSP430 memory (flash, ROM, orRAM). The processing state machine measures rotation and controls interruptgeneration based on the inputs from the timing state machine and the analogfront-end. The PSM vector SIFPSMV must to be initialized to point to the PSMstate table. Multiple state tables are possible by reconfiguring the SIFPSMVto different tables as needed. The PSM block diagram is shown inFigure 32−11.

Page 907: MSP430 - general.pdf

Scan IF Operation

32-21Scan IF

Figure 32−11.Scan IF Processing State Machine Block Diagram

Q0

Q3

Q4

Q5

Q6

Q7

S2

S1

SIFQ6EN

SIFQ7EN

Q7 . . . Q0

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

MSP430MemoryRange

State Table

SIFCNT1

+1

−1

SIFCNT1ENM

SIFENSIFCNT1ENP SIFIS1x

SIFCNT2

−1

SIFCNT2EN

SIFIS2x

Q6

Q7

∆1

∆4

∆64

∆256

SIFPSMV

SIF1OUT

SIF0OUT

SIF2OUT

SIF3OUT

SIFS1x

SIFS2x

Q7

StateLatch

OutputLatch

11

10

01

00

11

10

01

00

Set_SIFIFG4

11

10

01

00

11

10

01

00

Set_SIFIFG5

Set_SIFIFG7

Set_SIFIFG3

∆1

∆4

∆64

∆256

SIFSTOP(tsm)

SIFCNTRST

PSM Operation

At the falling edge of the SIFSTOP(tsm) signal the PSM moves thecurrent-state byte from the PSM state table to the PSM output latch. The PSMhas one dedicated channel of direct memory access (DMA), so all accessesto the PSM state table(s) are done automatically with no CPU intervention.

The current-state and next-state logic are reset while the Scan IF is disabled.One of the bytes stored at addresses SIFPSMV to SIFPSMV + 3 will be loadedfirst depending on the S1 and S2 signals when the Scan IF is enabled.

Page 908: MSP430 - general.pdf

Scan IF Operation

32-22 Scan IF

Signals S1 and S2 form a 2-bit offset added to the SIFPSMV contents todetermine the first byte loaded to the PSM output latch. For example, whenS2 = 1, and S1 = 0, the first byte loaded by the PSM will be at the addressSIFPSMV + 2. The next byte and further subsequent bytes are determined bythe next state calculations and are calculated by the PSM based on the statetable contents and the values of signals S1 and S2.

Note: SIFSTOP(tsm) Signal Frequency

The SIFSTOP(tsm) signal frequency must be at least a factor of 32 lowerthan the MCLK. Otherwise, unpredictable operation could occur.

Next State Calculation

Bits 0, and 3 - 5 (Q0, Q3, Q4, Q5), and, if enabled by SIFQ6EN and SIFQ7EN,bits 6 and 7 (Q6, Q7) are used together with the signals S1 and S2 to calculatethe next state. When SIFQ6EN = 1, Q6 is used in the next-state calculation.When SIFQ6EN = 1 and SIFQ7EN = 1, Q7 is used in the next-state calculation.The next state is:

Q7 Q6 Q5 Q4 Q3 Q0 S2 S1

When Q7 = 0, the PSM state is updated by the falling edge of theSIFSTOP(tsm) at the end of a TSM sequence. After updating the current statethe PSM moves the corresponding state table entry to the output latch. WhenQ7 = 1, the next state is calculated immediately without waiting for the nextfalling edge of SIFSTOP(tsm), regardless of the state of SIFQ6EN orSIFQ7EN. The state is then updated with the next instruction fetch. Theworst-case time between state transitions in this case is 6 MCLK cycles.

Page 909: MSP430 - general.pdf

Scan IF Operation

32-23Scan IF

PSM Counters

The PSM has two 8-bit counters SIFCNT1 and SIFCNT2. SIFCNT1 is updatedwith Q1 and Q2 and SIFCNT2 is updated with Q2. The counters can be readvia the SIFCNT register. If the SIFCNTRST bit is set, each read access willreset the counters, otherwise the counters remain unchanged when read. Ifa count event occurs during a read access the count is postponed until the endof the read access but multiple count events during a read access willincrement the counters only once. When SIFEN = 0, both counters are heldin reset.

SIFCNT1 can increment or decrement based on Q1 and Q2. WhenSIFCNT1ENM = 1, SIFCNT1 decrements on a transition to a state where bitQ2 is set. When SIFCNT1ENP = 1, SIFCNT1 increments on a transition to astate where bit Q1 is set. When both bits SIFCNT1ENM and SIFCNT1ENM areset, and both bits Q1 and Q2 are set on a state transition, SIFCNT1 does notincrement or decrement.

SIFCNT2 decrements based on Q2. When SIFCNT2EN = 1, SIFCNT2decrements on a transition to a state where bit Q2 is set. On the first count aftera reset SIFCNT2 will roll over from zero to 255 (0FFh).

When the next state is calculated to be the same state as the current state, thecounters SIFCNT1 and SIFCNT2 are incremented or decremented accordingto Q1 and Q2 at the state transition. For example, if the current state is 05h andQ2 is set, and if the next state is calculated to be 05h, the transition from state05h to 05h will decrement SIFCNT2 if SIFCNT2EN = 1.

Page 910: MSP430 - general.pdf

Scan IF Operation

32-24 Scan IF

Simplest State Machine

Figure 32−12 shows the simplest state machine that can be realized with thePSM. The following code shows the corresponding state table and the PSMinitialization.

Figure 32−12. Simplest PSM State Diagram

S1=1 & S2=0

S1=0 & S2=0

S1=1 & S2=1

S1=0 & S2=0

S1=0 & S2=1

S1=1 & S2=1

S1=1 & S2=0

S1=1 & S2=1

S1=0 & S2=1

S1=0 & S2=0

State 0000000000

State 1000000000

State 1100000010

State 0100000000

S1=0 & S2=0

S1=0 & S2=1

S1=1 & S2=0

S1=1 & S2=1

S1=1 & S2=0

S1=0 & S2=1

; Simplest State Machine Example

SIMPLEST_PSM db 000h ; State 00 (State Table Index 0)

db 000h ; State 01 (State Table Index 1)

db 000h ; State 10 (State Table Index 2)

db 002h ; State 11 (State Table Index 3)

PSM_INIT

MOV #SIMPLEST_PSM,&SIFPSMV ; Init PSM vector

MOV #SIFS20,&SIFCTL3 ; S1/S2 source

MOV #SIFCNT1ENP+SIFCNT1ENM,&SIFCTL4

; Q7 and Q6 disabled for next state calc.

; Increment and decrement of SIFCNT1 enabled

Page 911: MSP430 - general.pdf

Scan IF Operation

32-25Scan IF

If the PSM is in state 01 of the simplest state machine and the PSM has loadedthe corresponding byte at index 01h of the state table:

Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

0 0 0 0 0 0 0 0

For this example, S1 and S2 are set at the end of the next TSM sequence. Tocalculate the next state the bits Q5 - Q3 and Q0 of the state 01 table entry,together with the S1 and S2 signals are combined to form the next state:

Q7 Q6 Q5 Q4 Q3 Q0 S2 S1

0 0 0 0 0 0 1 1

The state table entry for state 11 is loaded at the next state transition:

Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

0 0 0 0 0 0 1 0

Q1 is set in state 11, so SIFCNT1 will be incremented.

More complex state machines can be built by combining simple statemachines to meet the requirements of specific applications.

Page 912: MSP430 - general.pdf

Scan IF Operation

32-26 Scan IF

32.2.4 Scan IF Debug Register

The Scan IF peripheral has a SIFDEBUG register for debugging anddevelopment. Only the lower two bits should be written when writing to theSIFDEBUG register and only MOV instructions should be used write toSIFDEBUG. After writing the lower two bits, reading the SIFDEBUG contentsgives the user different information. After writing 00h to SIFDEBUG, readingSIFDEBUG shows the last address read by the PSM. After writing 01h toSIFDEBUG, reading SIFDEBUG shows the index of the TSM and the PSM bitsQ7 to Q0. After writing 02h to SIFDEBUG, reading SIFDEBUG shows the TSMoutput. After writing 03h to SIFDEBUG, reading SIFDEBUG shows which DACregister is selected and its contents.

Page 913: MSP430 - general.pdf

Scan IF Operation

32-27Scan IF

32.2.5 Scan IF Interrupts

The Scan IF has one interrupt vector for seven interrupt flags listed inTable 32−7. Each interrupt flag has its own interrupt enable bit. When aninterrupt is enabled, and the GIE bit is set, the interrupt flag will generate aninterrupt. The interrupt flags are not automatically cleared. They must becleared with software.

Table 32−7.Scan IF Interrupts

InterruptFlag

Interrupt Condition

SIFIFG0 SIFIFG0 is set by one of the AFE SIFxOUT outputs selected with theSIFIFGSETx bits.

SIFIFG1 SIFIFG1 is set by the rising edge of the SIFSTOP(tsm) signal.

SIFIFG2 SIFIFG2 is set at the start of a TSM sequence.

SIFIFG3 SIFIFG3 is set at different count intervals of the SIFCNT1 counter,selected with the SIFIS1x bits.

SIFIFG4 SIFIFG4 is set at different count intervals of the SIFCNT2 counter,selected with the SIFIS2x bits.

SIFIFG5 SIFIFG5 is set when the PSM transitions to a state with Q6 set.

SIFIFG6 SIFIFG6 is set when the PSM transitions to a state with Q7 set.

Interrupt flags SIFIFG3 and SIFIFG4 have hysteresis so that the interrupt flagis set only once if the counter oscillates around the interrupt level as shown inFigure 32−13.

Figure 32−13. Interrupt Hysteresis Shown For Modulo 4 Interrupt Generation

12345678

0255

9SIFCNT1 Interrupt Flag Not Set

Interrupt Flag Is Set

Page 914: MSP430 - general.pdf

Scan IF Operation

32-28 Scan IF

32.2.6 Using the Scan IF with LC Sensors

Systems with LC sensors use a disk that is partially covered with a dampingmaterial to measure rotation. Rotation is measured with LC sensors byexciting the sensors and observing the resulting oscillation. The oscillation iseither damped or un-damped by the rotating disk. The oscillation is alwaysdecaying because of energy losses but it decays faster when the dampingmaterial on the disk is within the field of the LC sensor, as shown inFigure 32−14. The LC oscillations can be measured with the oscillation test orthe envelope test.

Figure 32−14. LC Sensor Oscillations

Damped

Undamped

Envelope

Time

AVCC/2

Page 915: MSP430 - general.pdf

Scan IF Operation

32-29Scan IF

32.2.6.1 LC-Sensor Oscillation Test

The oscillation test tests if the amplitude of the oscillation after sensorexcitation is above a reference level. The DAC is used to set the referencelevel for the comparator, and the comparator detects if the LC sensoroscillations are above or below the reference level. If the oscillations are abovethe reference level, the comparator will output a pulse train corresponding tothe oscillations and the selected AFE output bit will 1. The measurement timingand reference level depend on the sensors and the system and should bechosen such that the difference between the damped and the undampedamplitude is maximized. Figure 32−15 shows the connections for theoscillation test.

Figure 32−15. LC Sensor Connections For The Oscillation Test

PowerSupplyTerminals

SIFCI0

SIFCI

SIFCI1

SIFCI2

SIFCI3

470nF

AVCC

DVCC

DVSS

AVSS

SIFVSS470 nF

SIFCOM

SIFCH1

SIFCH0

SIFCH2

SIFCH3

Page 916: MSP430 - general.pdf

Scan IF Operation

32-30 Scan IF

32.2.6.2 LC-Sensor Envelope Test

The envelop test measures the decay time of the oscillations after sensorexcitation. The oscillation envelope is created by the diodes and RC filters. TheDAC is used to set the reference level for the comparator, and the comparatordetects if the oscillation envelop is above or below the reference level. Thecomparator and AFE outputs are connected to Timer1_A5 and thecapture/compare registers for Timer1_A5 are used to time the decay of theoscillation envelope. The PSM is not used for the envelope test.

When the sensors are connected to the individual SIFCIx inputs as shown inFigure 32−16, the comparator reference level can be adjusted for each sensorindividually. When all sensors are connected to the SIFCI input as shown inFigure 32−17, only one comparator reference level is set for all sensors.

Figure 32−16. LC Sensor Connections For The Envelope Test

PowerSupplyTerminals

SIFCI0

SIFCI

SIFCI1

SIFCI2

SIFCI3

470 nF

AVCC

DVCC

DVSS

AVSS

SIFVSS470 nF

SIFCOM

SIFCH1

SIFCH0

SIFCH2

SIFCH3

Page 917: MSP430 - general.pdf

Scan IF Operation

32-31Scan IF

Figure 32−17. LC Sensor Connections For The Envelope Test

PowerSupplyTerminals

SIFCI0

SIFCI

SIFCI1

SIFCI2

SIFCI3

470 nF

AVCC

DVCC

DVSS

AVSS

SIFVSS470 nF

SIFCOM

SIFCH1

SIFCH0

SIFCH2

SIFCH3

Page 918: MSP430 - general.pdf

Scan IF Operation

32-32 Scan IF

32.2.7 Using the Scan IF With Resistive Sensors

Systems with GMRs use magnets on an impeller to measure rotation. Thedamping material and magnets modify the electrical behavior of the sensor sothat rotation and direction can be detected.

Rotation is measured with resistive sensors by connecting the resistor dividersto ground for a short time allowing current flow through the dividers. Theresistors are affected by the rotating disc creating different divider voltages.The divider voltages are sampled with the sample-and-hold circuits. After thesignals have settled the dividers may be switched off to prevent current flowand reduce power consumption. The DAC is used to set the reference levelfor the comparator, and the comparator detects if the sampled voltage is aboveor below the reference level. If the sampled voltage is above the referencelevel the comparator output is high. Figure 32−18 shows the connection forresistive sensors.

Figure 32−18. Resistive Sensor Connections

PowerSupplyTerminals

SIFCI0

SIFCI

SIFCI1

SIFCI2

SIFCI3

470 nF

AVCC

DVCC

DVSS

AVSS

SIFVSS

SIFCOM

SIFCH1

SIFCH0

SIFCH2

SIFCH3

Page 919: MSP430 - general.pdf

Scan IF Operation

32-33Scan IF

32.2.8 Quadrature Decoding

The Scan IF can be used to decode quadrature-encoded signals. Signals thatare 90° out of phase with each other are said to be in quadrature. To Createthe signals, two sensors are positioned depending on the slotting, or coatingof the encoder disk. Figure 32−19 shows two examples for the sensorpositions and a quadrature-encoded signal waveform.

Figure 32−19. Sensor Position and Quadrature Signals

Sensor B(Signal S2)

Sensor A(Signal S1)

A

B

A A A A

B B B B

A

B

Sensor A(Signal S1)

Sensor B(Signal S2)

Sensor B(Signal S2)

Sensor A(Signal S1)

90

45

01 11 10 00 01 11 10

Damping or “dark” area.

Quadrature decoding requires knowing the previous quadrature pair S1 andS2, as well as the current pair. Comparing these two pairs will tell the directionof the rotation. For example, if the current pair is 00 it can change to 01 or 10,depending on direction. Any other change in the signal pair would representan error as shown in Figure 32−20.

Page 920: MSP430 - general.pdf

Scan IF Operation

32-34 Scan IF

Figure 32−20. Quadrature Decoding State Diagram

00

10

11

01

00

10

11

01

Correct State Transitions Erroneous State Transitions

+1−1

To transfer the state encoding into counts it is necessary to decide whatfraction of the rotation should be counted and on what state transitions. In thisexample only full rotations will be counted on the transition from state 00 to 01or 10 using a 180° disk with the sensors 90° apart. All the possible statetransitions can be put into a table and this table can be translated into thecorresponding state table entries for the processing state machine as shownin Table 32−8.

Table 32−8.Quadrature Decoding PSM Table

Previous Current Movement State Table EntryQuadrature

PairQuadrature

PairQ6 Q2 Q1 Q3 Q0

Pair PairError −1 +1 Current

QuadraturePair

ByteCode

00 00 No Rotation 0 0 0 0 0 000h

00 01 Turns right, +1 0 0 1 0 1 003h

00 10 Turns left, −1 0 1 0 1 0 00Ch

00 11 Error 1 0 0 1 1 049h

01 00 Turns left 0 0 0 0 0 000h

01 01 No rotation 0 0 0 0 1 001h

01 10 Error 1 0 0 1 0 048h

01 11 Turns right 0 0 0 1 1 009h

10 00 Turns right 0 0 0 0 0 000h

10 01 Error 1 0 0 0 1 041h

10 10 No rotation 0 0 0 1 0 008h

10 11 Turns left 0 0 0 1 1 009h

11 00 Error 1 0 0 0 0 040h

11 01 Turns left 0 0 0 0 1 001h

11 10 Turns right 0 0 0 1 0 008h

11 11 No rotation 0 0 0 1 1 009h

Page 921: MSP430 - general.pdf

Scan IF Registers

32-35Scan IF

32.3 Scan IF RegistersThe Scan IF registers are listed in Table 32−9.

Table 32−9.Scan IF Registers

Register Short Form Register Type Address Initial State

Scan IF debug register SIFDEBUG Read/write 01B0h Unchanged

Scan IF counter 1 and 2 SIFCNT Read/write 01B2h Reset with POR

Scan IF PSM vector SIFPSMV Read/write 01B4h Unchanged

Scan IF control 1 SIFCTL1 Read/write 01B6h Reset with POR

Scan IF control 2 SIFCTL2 Read/write 01B8h Reset with POR

Scan IF control 3 SIFCTL3 Read/write 01BAh Reset with POR

Scan IF control 4 SIFCTL4 Read/write 01BCh Reset with POR

Scan IF control 5 SIFCTL5 Read/write 01BEh Reset with POR

Scan IF DAC 0 SIFDACR0 Read/write 01C0h Unchanged

Scan IF DAC 1 SIFDACR1 Read/write 01C2h Unchanged

Scan IF DAC 2 SIFDACR2 Read/write 01C4h Unchanged

Scan IF DAC 3 SIFDACR3 Read/write 01C6h Unchanged

Scan IF DAC 4 SIFDACR4 Read/write 01C8h Unchanged

Scan IF DAC 5 SIFDACR5 Read/write 01CAh Unchanged

Scan IF DAC 6 SIFDACR6 Read/write 01CCh Unchanged

Scan IF DAC 7 SIFDACR7 Read/write 01CEh Unchanged

Scan IF TSM 0 SIFTSM0 Read/write 01D0h Unchanged

Scan IF TSM 1 SIFTSM1 Read/write 01D2h Unchanged

Scan IF TSM 2 SIFTSM2 Read/write 01D4h Unchanged

Scan IF TSM 3 SIFTSM3 Read/write 01D6h Unchanged

Scan IF TSM 4 SIFTSM4 Read/write 01D8h Unchanged

Scan IF TSM 5 SIFTSM5 Read/write 01DAh Unchanged

Scan IF TSM 6 SIFTSM6 Read/write 01DCh Unchanged

Scan IF TSM 7 SIFTSM7 Read/write 01DEh Unchanged

Scan IF TSM 8 SIFTSM8 Read/write 01E0h Unchanged

Scan IF TSM 9 SIFTSM9 Read/write 01E2h Unchanged

Scan IF TSM 10 SIFTSM10 Read/write 01E4h Unchanged

Scan IF TSM 11 SIFTSM11 Read/write 01E6h Unchanged

Scan IF TSM 12 SIFTSM12 Read/write 01E8h Unchanged

Scan IF TSM 13 SIFTSM13 Read/write 01EAh Unchanged

Scan IF TSM 14 SIFTSM14 Read/write 01ECh Unchanged

Scan IF TSM 15 SIFTSM15 Read/write 01EEh Unchanged

Scan IF TSM 16 SIFTSM16 Read/write 01F0h Unchanged

Scan IF TSM 17 SIFTSM17 Read/write 01F2h Unchanged

Scan IF TSM 18 SIFTSM18 Read/write 01F4h Unchanged

Scan IF TSM 19 SIFTSM19 Read/write 01F6h Unchanged

Scan IF TSM 20 SIFTSM20 Read/write 01F8h Unchanged

Scan IF TSM 21 SIFTSM21 Read/write 01FAh Unchanged

Scan IF TSM 22 SIFTSM22 Read/write 01FCh Unchanged

Scan IF TSM 23 SIFTSM23 Read/write 01FEh Unchanged

Page 922: MSP430 - general.pdf

Scan IF Registers

32-36 Scan IF

SIFDEBUG, Scan IF Debug Register, Write Mode

15 14 13 12 11 10 9 8

Reserved

w w w w w w w w

7 6 5 4 3 2 1 0

Reserved SIFDEBUGx

w w w w w w w w

Reserved Bits15-2

Reserved. Must be written as zero.

SIFDEBUGx Bits1-0

SIFDEBUG register mode. Writing these bits selects the read-mode of theSIFDEBUG register. SIFDEBUG must be written with MOV instructions only.00 When read, SIFDEBUG shows the last address read by the PSM01 When read, SIFDEBUG shows the value of the TSM state pointer and

the PSM bits Q7 - Q010 When read, SIFDEBUG shows the contents of the current SIFTSMx

register.11 When read, SIFDEBUG shows the currently selected DAC register and

its contents.

SIFDEBUG, Scan IF Debug Register, Read Mode After 00h Is Written

15 14 13 12 11 10 9 8

Last Address Read by PSM

r r r r r r r r

7 6 5 4 3 2 1 0

Last Address Read By PSM

r r r r r r r r

Last PSM Bits15-0

When SIFDEBUG is read, after 00h has been written to it, SIFDEBUG showsthe last address read by the PSM.

Page 923: MSP430 - general.pdf

Scan IF Registers

32-37Scan IF

SIFDEBUG, Scan IF Debug Register, Read Mode After 01h Is Written

15 14 13 12 11 10 9 8

0 0 0 Index Of TSM Register

r r r r r r r r

7 6 5 4 3 2 1 0

PSM Bits Q7 − Q0

r r r r r r r r

Unused Bits15-13

Unused. After 01h is written to SIFDEBUG, these bits are always read as zero.

TSM Index Bits12-8

When SIFDEBUG is read, after 01h is written to it, these bits show the TSMregister pointer index.

PSM Bits Bits7-0

When SIFDEBUG is read, after 01h is written to it, these bits show the PSMbits Q7 to Q0.

SIFDEBUG, Scan IF Debug Register, Read Mode After 02h Is Written

15 14 13 12 11 10 9 8

Current SIFTSMx Register Contents

r r r r r r r r

7 6 5 4 3 2 1 0

Current SIFTSMx Register Contents

r r r r r r r r

Bits15-0

When SIFDEBUG is read, after 02h is written to it, these bits show the TSMoutput.

Page 924: MSP430 - general.pdf

Scan IF Registers

32-38 Scan IF

SIFDEBUG, Scan IF Debug Register, Read Mode After 03h Is Written

15 14 13 12 11 10 9 8

0 Active DAC Register 0 0 DAC Data

r r r r r r r r

7 6 5 4 3 2 1 0

DAC Data

r r r r r r r r

Unused Bit 15 Unused. After 03h is written to SIFDEBUG, this bit is always read as zero.

DACRegister

Bits14-12

When SIFDEBUG is read, after 03h is written to it, these bits show which DACregister is currently selected to control the DAC.

Unused Bits11-10

Unused. After 03h is written to SIFDEBUG, these bits are always read as zero.

DAC Data Bits9-0

When SIFDEBUG is read, after 03h is written to it, these bits show value ofthe currently-selected DAC register.

Page 925: MSP430 - general.pdf

Scan IF Registers

32-39Scan IF

SIFCNT, Scan IF Counter Register

15 14 13 12 11 10 9 8

SIFCNT2x

r−(0) r−(0) r−(0) r−(0) r−(0) r−(0) r−(0) r−(0)

7 6 5 4 3 2 1 0

SIFCNT1x

r−(0) r−(0) r−(0) r−(0) r−(0) r−(0) r−(0) r−(0)

SIFCNT2x Bits15-8

SIFCNT2. These bits are the SIFCNT2 counter. SIFCNT2 is reset whenSIFEN = 0 or if read when SIFCNTRST = 1.

SIFCNT1x Bits7-0

SIFCNT1. These bits are the SIFCNT1 counter. SIFCNT1 is reset whenSIFEN = 0 or if read when SIFCNTRST = 1.

SIFPSMV, Scan IF Processing State Machine Vector Register

15 14 13 12 11 10 9 8

SIFPSMVx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFPSMVx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFPSMVx Bits15-0

SIF PSM vector. These bits are the address for the first state in the PSM statetable.

Page 926: MSP430 - general.pdf

Scan IF Registers

32-40 Scan IF

SIFCTL1, Scan IF Control Register 1

15 14 13 12 11 10 9 8

SIFIE6 SIFIE5 SIFIE4 SIFIE3 SIFIE2 SIFIE1 SIFIE0 SIFIFG6

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFIFG5 SIFIFG4 SIFIFG3 SIFIFG2 SIFIFG1 SIFIFG0 SIFTESTD SIFEN

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFIEx Bits15-9

Interrupt enable. These bits enable or disable the interrupt request for theSIFIFGx bits.0 Interrupt disabled1 Interrupt enabled

SIFIFG6 Bit 8 SIF interrupt flag 6. This bit is set when the PSM transitions to a state with aset Q7 bit. SIFIFG6 must be reset with software.0 No interrupt pending1 Interrupt pending

SIFIFG5 Bit 7 SIF interrupt flag 5. This bit is set when the PSM transitions to a state with aset Q6 bit. SIFIFG5 must be reset with software.0 No interrupt pending1 Interrupt pending

SIFIFG4 Bit 6 SIF interrupt flag 4. This bit is set by the SIFCNT2 counter conditions selectedwith the SIFIS2x bits. SIFIFG4 must be reset with software.0 No interrupt pending1 Interrupt pending

SIFIFG3 Bit 5 SIF interrupt flag 3. This bit is set by the SIFCNT1 counter conditions selectedwith the SIFIS1x bits SIFIFG3 must be reset with software.0 No interrupt pending1 Interrupt pending

SIFIFG2 Bit 4 SIF interrupt flag 2. This bit is set at the start of a TSM sequence. SIFIFG2must be reset with software.0 No interrupt pending1 Interrupt pending

SIFIFG1 Bit 3 SIF interrupt flag 1. This bit is set by the rising edge of the SIFSTOP(tsm)signal. SIFIFG1 must be reset with software.0 No interrupt pending1 Interrupt pending

Page 927: MSP430 - general.pdf

Scan IF Registers

32-41Scan IF

SIFIFG0 Bit 2 SIF interrupt flag 0. This bit is set by the SIFxOUT conditions selected by theSIFIFGSETx bits. SIFIFG0 must be reset with software.0 No interrupt pending1 Interrupt pending

SIFTESTD Bit 1 Test cycle insertion. Setting this bit inserts a test cycle between TSM cycles.SIFTESTD is automatically reset at the end of the test cycle.0 No test cycle inserted1 Test cycle inserted between TSM cycles.

SIFEN Bit 0 Scan interface enable. Setting this bit enables the Scan IF.0 Scan IF disabled1 Scan IF enabled

Page 928: MSP430 - general.pdf

Scan IF Registers

32-42 Scan IF

SIFCTL2, Scan IF Control Register 2

15 14 13 12 11 10 9 8

SIFDACON SIFCAON SIFCAINV SIFCAX SIFCISEL SIFCACI3 SIFVSS SIFVCC2

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFSH SIFTEN SIFTCH1x SIFTCH0x SIFTCH1OUT

SIFTCH0OUT

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFDACON Bit 15 DAC on. Setting this bit turns the DAC on regardless of the TSM control.0 The DAC is controlled by the TSM.1 The DAC is on.

SIFCAON Bit 14 Comparator on. Setting this bit turns the comparator on regardless of the TSMcontrol.0 The comparator is controlled by the TSM.1 The comparator is on.

SIFCAINV Bit 13 Invert comparator output0 Comparator output is not inverted1 Comparator output is inverted

SIFCAX Bit 12 Comparator input select. This bit selects groups of signals for the comparatorinput.0 Comparator input is one of the SIFCHx channels, selected with the

channel select logic.1 Comparator input is one of the SIFCIx channels, selected with the

channel select logic and the SIFCISEL and SIFCACI3 bits.

SIFCISEL Bit 11 Comparator input select. This bit is used with the SIFCACI3 bit to select thecomparator input when SIFCAX = 1.0 Comparator input is one of the SIFCIx channels, selected with the

channel select logic and SIFCACI3 bit.1 Comparator input is the SIFCI channel

SIFCACI3 Bit 10 Comparator input select. This bit is selects the comparator input whenSIFCISEL = 0 and SIFCAX = 1.0 Comparator input is selected with the channel select logic.1 Comparator input is SIFCI3.

SIFVSS Bit 9 Sample-and-hold SIFVSS select.0 The ground connection of the sample capacitor is connected to SIFVSS,

regardless of the TSM control.1 The ground connection of the sample capacitor is controlled by the TSM

Page 929: MSP430 - general.pdf

Scan IF Registers

32-43Scan IF

SIFVCC2 Bit 8 Mid-voltage generator0 AVCC/2 generator is off1 AVCC/2 generator is on if SIFSH = 0

SIFSH Bit 7 Sample-and-hold enable0 Sample-and-hold is disabled1 Sample-and-hold is enabled

SIFTEN Bit 6 Excitation enable0 Excitation circuitry is disabled1 Excitation circuitry is enabled

SIFTCH1x Bits5-4

These bits select the comparator input for test channel 1.00 Comparator input is SIFCH0 when SIFCAX = 0

Comparator input is SIFCI0 when SIFCAX = 101 Comparator input is SIFCH1 when SIFCAX = 0

Comparator input is SIFCI1 when SIFCAX = 110 Comparator input is SIFCH2 when SIFCAX = 0

Comparator input is SIFCI2 when SIFCAX = 111 Comparator input is SIFCH3 when SIFCAX = 0

Comparator input is SIFCI3 when SIFCAX = 1

SIFTCH0x Bits3-2

These bits select the comparator input for test channel 0.00 Comparator input is SIFCH0 when SIFCAX = 0

Comparator input is SIFCI0 when SIFCAX = 101 Comparator input is SIFCH1 when SIFCAX = 0

Comparator input is SIFCI1 when SIFCAX = 110 Comparator input is SIFCH2 when SIFCAX = 0

Comparator input is SIFCI2 when SIFCAX = 111 Comparator input is SIFCH3 when SIFCAX = 0

Comparator input is SIFCI3 when SIFCAX = 1

SIFTCH1OUT

Bit 1 AFE output for test channel 1

SIFTCH0OUT

Bit 0 AFE output for test channel 0

Page 930: MSP430 - general.pdf

Scan IF Registers

32-44 Scan IF

SIFCTL3, Scan IF Control Register 3

15 14 13 12 11 10 9 8

SIFS2x SIFS1x SIFIS2x SIFIS1x

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFCS SIFIFGSETx SIF3OUT SIF2OUT SIF1OUT SIF0OUT

rw−(0) rw−(0) rw−(0) rw−(0) r−(0) r−(0) r−(0) r−(0)

SIFS2x Bits15-14

S2 source select. These bits select the S2 source for the PSM when SIFCS= 1.00 SIF0OUT is the S2 source.01 SIF1OUT is the S2 source.10 SIF2OUT is the S2 source.11 SIF3OUT is the S2 source.

SIFS1x Bits13-12

S1 source select. These bits select the S1 source fro the PSM when SIFCS= 1.00 SIF0OUT is the S1 source.01 SIF1OUT is the S1 source.10 SIF2OUT is the S1 source.11 SIF3OUT is the S1 source.

SIFIS2x Bits11-10

SIFIFG4 interrupt flag source00 SIFIFG4 is set with each count of SIFCNT2.01 SIFIFG4 is set if (SIFCNT2 modulo 4) = 0.10 SIFIFG4 is set if (SIFCNT2 modulo 64) = 0.11 SIFIFG4 is set when SIFCNT2 decrements from 01h to 00h.

SIFIS1x Bits9-8

SIFIFG3 interrupt flag source00 SIFIFG3 is set with each count, up or down, of SIFCNT1.01 SIFIFG3 is set if (SIFCNT1 modulo 4) = 0.10 SIFIFG3 is set if (SIFCNT1 modulo 64) = 0.11 SIFIFG3 is set when SIFCNT1 rolls over from 0FFh to 00h.

SIFCS Bit 7 Comparator output/Timer_A input selection0 The SIFEX(tsm) signal and the comparator output are connected to the

TACCRx inputs.1 The SIFxOUT outputs are connected to the TACCRx inputs selected

with the SIFS1x and SIFS2x bits.

Page 931: MSP430 - general.pdf

Scan IF Registers

32-45Scan IF

SIFIFGSETx Bits6-4

SIFIFG0 interrupt flag source. These bits select when the SIFIFG0 flag is set.000 SIFIFG0 is set when SIF0OUT is set.001 SIFIFG0 is set when SIF0OUT is reset.010 SIFIFG0 is set when SIF1OUT is set.011 SIFIFG0 is set when SIF1OUT is reset.100 SIFIFG0 is set when SIF2OUT is set.101 SIFIFG0 is set when SIF2OUT is reset.110 SIFIFG0 is set when SIF3OUT is set.111 SIFIFG0 is set when SIF3OUT is reset.

SIF3OUT Bit 3 AFE output bit 3

SIF2OUT Bit 2 AFE output bit 2

SIF1OUT Bit 1 AFE output bit 1

SIF0OUT Bit 0 AFE output bit 0

Page 932: MSP430 - general.pdf

Scan IF Registers

32-46 Scan IF

SIFCTL4, Scan IF Control Register 4

15 14 13 12 11 10 9 8

SIFCNTRST SIFCNT2EN SIFCNT1ENM

SIFCNT1ENP SIFQ7EN SIFQ6EN SIFDIV3Bx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFDIV3Bx SIFDIV3Ax SIFDIV2x SIFDIV1x

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFCNTRST Bit 15 Counter reset. Setting this bit enables the SIFCNT register to be reset whenit is read.0 SIFCNT register is not reset when read1 SIFCNT register is reset when it is read

SIFCNT2EN Bit 14 SIFCNT2 enable0 SIFCNT2 is disabled1 SIFCNT2 is enabled

SIFCNT1ENM

Bit 13 SIFCNT1 decrement enable0 SIFCNT1 decrement is disabled1 SIFCNT1 decrement is enabled

SIFCNT1ENP

Bit 12 SIFCNT1 increment enable0 SIFCNT1 increment is disabled1 SIFCNT1 increment is enabled

SIFQ7EN Bit 11 Q7 enable. This bit enables bit Q7 for the next PSM state calculation whenSIFQ6EN = 1.0 Q7 is not used to determine the next PSM state1 Q7 is used to determine the next PSM state

SIFQ6EN Bit 10 Q6 enable. This bit enables Q6 for the next PSM state calculation.0 Q6 is not used to determine the next PSM state1 Q6 is used to determine the next PSM state

Page 933: MSP430 - general.pdf

Scan IF Registers

32-47Scan IF

SIFDIV3Bx Bits9-7

TSM start trigger ACLK divider. These bits together with the SIFDIV3Ax bitsselect the division rate for the TSM start trigger.

SIFDIV3Ax Bits6-4

TSM start trigger ACLK divider. These bits together with the SIFDIV3Bx bitsselect the division rate for the TSM start trigger. The division rate is:

SIFDIV3Ax

SIFDIV3Bx 000 001 010 011 100 101 110 111

000 2 6 10 14 18 22 26 30

001 6 18 30 42 54 66 78 90

010 10 30 50 70 90 110 130 150

011 14 42 70 98 126 154 182 210

100 18 54 90 126 162 198 234 270

101 22 66 110 154 198 242 286 330

110 26 78 130 182 234 286 338 390

111 30 90 150 210 270 330 390 450

SIFDIV2x Bits3-2

ACLK divider. These bits select the ACLK division.00 /101 /210 /411 /8

SIFDIV1x Bits1-0

TSM SMCLK divider. These bits select the SMCLK division for the TSM.00 /101 /210 /411 /8

Page 934: MSP430 - general.pdf

Scan IF Registers

32-48 Scan IF

SIFCTL5, Scan IF Control Register 5

15 14 13 12 11 10 9 8

SIFCNT3x

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFTSMRP SIFCLKFQx SIFFNOM SIFCLKGON SIFCLKEN

rw−(0) rw−(1) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFCNT3x Bits15-8

Internal oscillator counter. SIFCNT3 counts internal oscillator clock cyclesduring one ACLK period when SIFFNOM = 0 or during four ACLK periodswhen SIFFNOM = 1 after SIFCLKGON and SIFCLKEN are both set

SIFTSMRP Bit 7 TSM repeat mode0 Each TSM sequence is triggered by the ACLK divider controlled with the

SIFDIV3Ax and SIFDIV3Bx bits.1 Each TSM sequence is immediately started at the end of the previous

sequence.

SIFCLKFQx Bits6-3

Internal oscillator frequency adjust. These bits are used to adjust the internaloscillator frequency. Each increase or decrease of the SIFCLKFQx bitsincreases or decreases the internal oscillator frequency by approximately 5%.0000 Minimum frequency:1000 Nominal frequency:1111 Maximum frequency

SIFFNOM Bit 2 Internal oscillator nominal frequency0 4 MHz1 1 MHz

SIFCLKGON

Bit 1 Internal oscillator control. When SIFCLKGON = 1 and SIFCLKEN = 1, theinternal oscillator calibration is started. SIFCLKGON is not used whenSIFCLKEN = 0.0 No internal oscillator calibration is started.1 The internal oscillator calibration is started when SIFCLKEN = 1.

SIFCLKEN Bit 0 Internal oscillator enable. This bit selects the high frequency clock source forthe TSM.0 TSM high frequency clock source is SMCLK.1 TSM high frequency clock source is the Scan IF internal oscillator.

Page 935: MSP430 - general.pdf

Scan IF Registers

32-49Scan IF

SIFDACRx, Digital-To-Analog Converter Registers

15 14 13 12 11 10 9 8

0 0 0 0 0 0 DAC Data

r0 r0 r0 r0 r0 r0 rw rw

7 6 5 4 3 2 1 0

DAC Data

rw rw rw rw rw rw rw rw

Unused Bits15-10

Unused. These bits are always read as zero, and when written, do not affectthe DAC output.

DAC Data Bits9-0

10-bit DAC data

Page 936: MSP430 - general.pdf

Scan IF Registers

32-50 Scan IF

SIFTSMx, Scan IF Timing State Machine Registers

15 14 13 12 11 10 9 8

SIFREPEATx SIFACLK SIFSTOP SIFDAC

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

7 6 5 4 3 2 1 0

SIFTESTS1 SIFRSON SIFCLKON SIFCA SIFEX SIFLCEN SIFCHx

rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0) rw−(0)

SIFREPEATx

Bits15-11

These bits together with the SIFACLK bit configure the duration of this state.SIFREPEATx selects the number of clock cycles for this state. The numberof clock cycles = SIFREPEATx + 1.

SIFACLK Bit 10 This bit selects the clock source for the TSM.0 The TSM clock source is the high frequency source selected by the

SIFCLKEN bit.1 The TSM clock source is ACLK

SIFSTOP Bit 9 This bit indicates the end of the TSM sequence. The duration of this state isalways one high-frequency clock period, regardless of the SIFACLK andSIFREPEATx settings.0 TSM sequence continues with next state1 End of TSM sequence

SIFDAC Bit 8 TSM DAC on. This bit turns the DAC on during this state when SIFDACON= 0.0 DAC off during this state.1 DAC on during this state.

SIFTESTS1 Bit 7 TSM test cycle control. This bit selects for this state which channel-control bitsand which DAC registers are used for a test cycle.0 The SIFTCH0x bits select the channel and SIFDACR6 is used for the

DAC1 The SIFTCH1x bits select the channel and SIFDACR7 is used for the

DAC

SIFRSON Bit 6 Internal output latches enabled. This bit enables the internal latches of theAFE output stage.0 Output latches disabled1 Output latches enabled

Page 937: MSP430 - general.pdf

Scan IF Registers

32-51Scan IF

SIFCLKON Bit 5 High-frequency clock on. Setting this bit turns the high-frequency clock sourceon for this state when SIFACLK = 1, even though the high frequency clock isnot used for the TSM. When the high-frequency clock is sourced from theDCO, the DCO is forced on for this state, regardless of the MSP430 low-powermode.0 High-frequency clock is off for this state when SIFACLK = 11 High-frequency clock is on for this state when SIFACLK = 1

SIFCA Bit 4 TSM comparator on. Setting this bit turns the comparator on for this statewhen SIFCAON = 0.0 Comparator off during this state1 Comparator on during this state

SIFEX Bit 3 Excitation and sample-and-hold. This bit, together with the SIFSH andSIFTEN bits, enables the excitation transistor or samples the input voltageduring this state. SIFLCEN must be set to 1 when SIFEX = 1.0 Excitation transistor disabled when SIFSH = 0 and SIFTEN = 1.

Sampling disabled when SIFSH = 1 and SIFTEN = 0.1 Excitation transistor enabled when SIFSH = 0 and SIFTEN = 1.

Sampling enabled when SIFSH = 1 and SIFTEN = 0.

SIFLCEN Bit 2 LC enable. Setting this bit turns the damping transistor off, enabling the LCoscillations during this state when SIFTEN = 1.0 All SIFCHx channels are internally damped. No LC oscillations.1 The selected SIFCHx channel is not internally damped. The LC

oscillates.

SIFCHx Bits1-0

Input channel select. These bits select the input channel to be measured orexcited during this state.00 SIFCH001 SIFCH110 SIFCH211 SIFCH3

Page 938: MSP430 - general.pdf

Scan IF Registers

32-52 Scan IF

Processing State Machine Table Entry (MSP430 Memory Location)

7 6 5 4 3 2 1 0

Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

Q7 Bit 7 When Q7 = 1, SIFIFG6 will be set. When SIFQ6EN = 1 and SIFQ7EN = 1and Q7 = 1, the PSM proceeds to the next state immediately, regardless ofthe SIFSTOP(tsm) signal and Q7 is used in the next-state calculation.

Q6 Bit 6 When Q6 = 1, SIFIFG5 will be set. When SIFQ6EN = 1, Q6 will be used inthe next-state calculation.

Q5 Bit 5 Bit 5 of the next state

Q4 Bit 4 Bit 4 of the next state

Q3 Bit 3 Bit 3 of the next state

Q2 Bit 2 When Q2 = 1, SIFCNT1 decrements if SIFCNT1ENM = 1 and SIFCNT2decrements if SIFCNT2EN = 1.

Q1 Bit 1 When Q1 = 1, SIFCNT1 increments if SIFCNT1ENP = 1.

Q0 Bit 0 Bit 2 of the next state

Page 939: MSP430 - general.pdf

33-1Embedded Emulation Module (EEM)

Embedded Emulation Module (EEM)

This chapter describes the Embedded Emulation Module (EEM) that isimplemented in all MSP430 flash devices.

Topic Page

33.1 EEM Introduction 33-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33.2 EEM Building Blocks 33-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33.3 EEM Configurations 33-6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Chapter 33

Page 940: MSP430 - general.pdf

EEM Introduction

33-2 Embedded Emulation Module (EEM)

33.1 EEM Introduction

Every MSP430 flash-based microcontroller implements an embeddedemulation module (EEM). It is accessed and controlled through JTAG. Eachimplementation is device dependent and is described in section 33.3 EEMConfigurations and the device data sheet.

In general, the following features are available:

Nonintrusive code execution with real-time breakpoint control

Single step, step into, and step over functionality

Full support of all low-power modes

Support for all system frequencies, for all clock sources

Up to eight (device dependent) hardware triggers/breakpoints on memoryaddress bus (MAB) or memory data bus (MDB)

Up to two (device dependent) hardware triggers/breakpoints on CPUregister write accesses

MAB, MDB ,and CPU register access triggers can be combined to formup to eight (device dependent) complex triggers/breakpoints

Trigger sequencing (device dependent)

Storage of internal bus and control signals using an integrated trace buffer(device dependent)

Clock control for timers, communication peripherals, and other moduleson a global device level or on a per-module basis during an emulation stop

Figure 33−1 shows a simplified block diagram of the largest currently available4xx EEM implementation.

For more details on how the features of the EEM can be used together withthe IAR Embedded Workbench debugger see the application reportAdvanced Debugging Using the Enhanced Emulation Module (SLAA263) atwww.msp430.com. Code Composer Essentials (CCE) and most otherdebuggers supporting MSP430 have the same or a similar feature set. Fordetails, see the user’s guide of the applicable debugger.

Page 941: MSP430 - general.pdf

EEM Introduction

33-3Embedded Emulation Module (EEM)

Figure 33−1. Large Implementation of the Embedded Emulation Module (EEM)

CPU Stop

TriggerBlocks

MB0

MB1

MB2

MB3

MB4

MB5

MB6

MB7

CPU0

CPU1

&

0

Trigger Sequencer

”AND” Matrix − Combination Triggers

&

1

&

2

&

3

&

4

&

5

&

6

&

7

Start/Stop State Storage

OR

OR

Page 942: MSP430 - general.pdf

EEM Introduction

33-4 Embedded Emulation Module (EEM)

33.2 EEM Building Blocks

33.2.1 Triggers

The event control in the EEM of the MSP430 system consists of triggers, whichare internal signals indicating that a certain event has happened. Thesetriggers may be used as simple breakpoints, but it is also possible to combinetwo or more triggers to allow detection of complex events and trigger variousreactions besides stopping the CPU.

In general, the triggers can be used to control the following functional blocksof the EEM:

Breakpoints (CPU stop)

State storage

Sequencer

There are two different types of triggers, the memory trigger and the CPUregister write trigger.

Each memory trigger block can be independently selected to compare eitherthe MAB or the MDB with a given value. Depending on the implemented EEMthe comparison can be =, ≠, ≥, or ≤. The comparison can also be limited tocertain bits with the use of a mask. The mask is either bit-wise or byte-wise,depending upon the device. In addition to selecting the bus and thecomparison, the condition under which the trigger is active can be selected.The conditions include read access, write access, DMA access, andinstruction fetch.

Each CPU register write trigger block can be independently selected tocompare what is written into a selected register with a given value. Theobserved register can be selected for each trigger independently. Thecomparison can be =, ≠, ≥, or ≤. The comparison can also be limited to certainbits with the use of a bit mask.

Both types of triggers can be combined to form more complex triggers. Forexample, a complex trigger can signal when a particular value is written intoa user-specified address.

Page 943: MSP430 - general.pdf

EEM Introduction

33-5Embedded Emulation Module (EEM)

33.2.2 Trigger Sequencer

The trigger sequencer allows the definition of a certain sequence of triggersignals before an event is accepted for a break or state storage event. Withinthe trigger sequencer, it is possible to use the following features:

Four states (State 0 to State 3)

Two transitions per state to any other state

Reset trigger that resets the sequencer to State 0.

The Trigger sequencer always starts at State 0 and must execute to State 3to generate an action. If State 1 or State 2 are not required, they can bebypassed.

33.2.3 State Storage (Internal Trace Buffer)

The state storage function uses a built-in buffer to store MAB, MDB, and CPUcontrol signal information (ie. read, write, or instruction fetch) in a nonintrusivemanner. The built-in buffer can hold up to eight entries. The flexibleconfiguration allows the user to record the information of interest veryefficiently.

33.2.4 Clock Control

The EEM provides device dependent flexible clock control. This is useful inapplications where a running clock is needed for peripherals after the CPU isstopped (e.g. to allow a UART module to complete its transfer of a characteror to allow a timer to continue generating a PWM signal).

The clock control is flexible and supports both modules that need a runningclock and modules that must be stopped when the CPU is stopped due to abreakpoint.

Page 944: MSP430 - general.pdf

EEM Configurations

33-6 Embedded Emulation Module (EEM)

33.3 EEM Configurations

Table 33−1 gives an overview of the EEM configurations in the MSP430 4xxfamily. The implemented configuration is device dependent (see thedevice-specific data sheet.

Table 33−1.4xx EEM Configurations

Feature XS S M L

Memory Bus Triggers 2(=, ≠ only)

3 5 8

Memory Bus Trigger Mask for 1) Low byte

2) High byte

1) Low byte

2) High byte

1) Low byte

2) High byte

All 16 or 20 bits

CPU Register Write Triggers 0 1 1 2

Combination Triggers 2 4 6 8

Sequencer No No Yes Yes

State Storage No No No Yes

In general the following features can be found on any 4xx device:

At least two MAB/MDB triggers supporting

Distinction between CPU, DMA, read, and write accesses

=, ≠, ≥, or ≤ comparison (in XS only =, ≠)

At least two trigger combination registers

Hardware breakpoints using the CPU Stop reaction

Clock control with individual control of module clocks(in some XS configurations, the control of module clocks is hardwired)

Page 945: MSP430 - general.pdf

IMPORTANT NOTICE

Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements,and other changes to its products and services at any time and to discontinue any product or service without notice. Customers shouldobtain the latest relevant information before placing orders and should verify that such information is current and complete. All products aresold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment.

TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI’s standardwarranty. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except wheremandated by government requirements, testing of all parameters of each product is not necessarily performed.

TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products andapplications using TI components. To minimize the risks associated with customer products and applications, customers should provideadequate design and operating safeguards.

TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right,or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Informationpublished by TI regarding third-party products or services does not constitute a license from TI to use such products or services or awarranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectualproperty of the third party, or a license from TI under the patents or other intellectual property of TI.

Reproduction of TI information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompaniedby all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptivebusiness practice. TI is not responsible or liable for such altered documentation. Information of third parties may be subject to additionalrestrictions.

Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids allexpress and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is notresponsible or liable for any such statements.

TI products are not authorized for use in safety-critical applications (such as life support) where a failure of the TI product would reasonablybe expected to cause severe personal injury or death, unless officers of the parties have executed an agreement specifically governingsuch use. Buyers represent that they have all necessary expertise in the safety and regulatory ramifications of their applications, andacknowledge and agree that they are solely responsible for all legal, regulatory and safety-related requirements concerning their productsand any use of TI products in such safety-critical applications, notwithstanding any applications-related information or support that may beprovided by TI. Further, Buyers must fully indemnify TI and its representatives against any damages arising out of the use of TI products insuch safety-critical applications.

TI products are neither designed nor intended for use in military/aerospace applications or environments unless the TI products arespecifically designated by TI as military-grade or "enhanced plastic." Only products designated by TI as military-grade meet militaryspecifications. Buyers acknowledge and agree that any such use of TI products which TI has not designated as military-grade is solely atthe Buyer's risk, and that they are solely responsible for compliance with all legal and regulatory requirements in connection with such use.

TI products are neither designed nor intended for use in automotive applications or environments unless the specific TI products aredesignated by TI as compliant with ISO/TS 16949 requirements. Buyers acknowledge and agree that, if they use any non-designatedproducts in automotive applications, TI will not be responsible for any failure to meet such requirements.

Following are URLs where you can obtain information on other Texas Instruments products and application solutions:

Products Applications

Amplifiers amplifier.ti.com Audio www.ti.com/audio

Data Converters dataconverter.ti.com Automotive www.ti.com/automotive

DLP® Products www.dlp.com Communications and www.ti.com/communicationsTelecom

DSP dsp.ti.com Computers and www.ti.com/computersPeripherals

Clocks and Timers www.ti.com/clocks Consumer Electronics www.ti.com/consumer-apps

Interface interface.ti.com Energy www.ti.com/energy

Logic logic.ti.com Industrial www.ti.com/industrial

Power Mgmt power.ti.com Medical www.ti.com/medical

Microcontrollers microcontroller.ti.com Security www.ti.com/security

RFID www.ti-rfid.com Space, Avionics & www.ti.com/space-avionics-defenseDefense

RF/IF and ZigBee® Solutions www.ti.com/lprf Video and Imaging www.ti.com/video

Wireless www.ti.com/wireless-apps

Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265Copyright © 2010, Texas Instruments Incorporated