Datasheet dsPIC33FJ12MC201, dsPIC33FJ12MC202 Datasheet

dsPIC33FJ12MC201/202
Data Sheet
High-Performance, 16-bit Digital Signal Controllers
© 2008 Microchip Technology Inc. Preliminary DS70265C
Note the following details of the code protection feature on Microchip devices:
Microchip products meet the specification contained in their particular Microchip Data Sheet.
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions.
There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
Microchip is willing to work with the customer who is concerned about the integrity of their code.
Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device applications and t he lik e is provided only for your convenience and may be su perseded by upda t es . It is y our responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life supp ort and/or safety ap plications is entir ely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless M icrochip from any and all dama ges, claims, suits, or expenses re sulting from such use. No licens es are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.
Trademarks
The Microchip name and logo, the Microchip logo, Accuron, dsPIC, K
EELOQ, KEELOQ logo, MPLAB, PIC, PICmicro,
PICSTART, PRO MA TE, rfPIC and SmartShunt are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.
FilterLab, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL, SmartSensor and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, In-Circuit Serial Programmin g , IC SP, ICEPIC, Mindi, MiW i , MPASM, MPLAB Certified logo, MPLIB, MPLINK, mTouch, PICkit, PICDEM, PICDEM.net, PICtail, PIC
32
logo, PowerCal, PowerInfo, PowerMate, PowerT ool, REAL ICE, rfLAB, Select Mode, Total Endurance, UNI/O, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
All other trademarks mentioned herein are property of their respective companies.
© 2008, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.
Printed on recycled paper.
Microchip received ISO/TS-16949:2002 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified.
®
MCUs and dsPIC® DSCs, KEELOQ
®
code hopping
DS70265C-page ii Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
High-Performance, 16-bit Digital Signal Controllers
Operating Range:
• Up to 40 MIPS operation (at 3.0-3.6V):
- Industrial temperature range (-40°C to +85°C)
- Extended temperature range (-40°C to +125°C)
High-Performance DSC CPU:
• Modified Harvard architecture
• C compiler optimized inst ruction set
• 16-bit wide data path
• 24-bit wide instructions
• Linear program memory addressing up to 4M instruction words
• Linear data memory addressing up to 64 Kbytes
• 83 base instructions: mostly one word/one cycle
• Two 40-bit accumulators with rounding and saturation options
• Flexible and powerful addressing modes:
-Indirect
- Modulo
- Bit-Reversed
• Software stack
• 16 x 16 fractional/integer multiply operations
• 32/16 and 16/16 divide operations
• Single-cycle multiply and accumulate:
- Accumulator write back for DSP operations
- Dual data fetch
• Up to ±16-bit shifts for up to 40-bit data
Timers/Capture/Compare/PWM:
• Timer/Counters, up to three 16-bit timers
- Can pair up to make one 32-bit timer
- One timer runs as Real-Time Clock with
external 32.768 kHz osci llator
- Programmable prescaler
• Input Capture (up to four channels):
- Capture on up, down or both edges
- 16-bit capture input functions
- 4-deep FIFO on each capture
• Output Compare (up to two channels):
- Single or Dual 16-Bit Compare mode
- 16-bit Glitchless PWM mode
Interrupt Controller:
• 5-cycle latency
• 118 interrupt vectors
• Up to 26 available interrupt sources
• Up to three external interrupts
• Seven programmable priority levels
• Four processor exceptions
Digital I/O:
• Peripheral pin Select functionality
• Up to 21 programmable digital I/O pi ns
• Wake-up/Interrupt-on-Change for up to 21 pins
• Output pins can drive from 3.0V to 3.6V
• Up to 5V output with open drain configuration
• All digital input pins are 5V tolerant
• 4 mA sink on all I/O pins
On-Chip Flash and SRAM:
• Flash program memory (12 Kbytes)
• Data SRAM (1024 bytes)
• Boot and General Security for program Flash
System Management:
• Flexible clock options:
- External, crystal, resonator, internal RC
- Fully integrated Phase-Locked Loop (PLL)
- Extremely low jitter P LL
• Power-up Timer
• Oscillator Start-up Timer/Stabilizer
• Watchdog Timer with its own RC oscillator
• Fail-Safe Clock Monito r
• Reset by multiple sources
Power Management:
• On-chip 2.5V voltage regulator
• Switch between clock sources in real time
• Idle, Sleep, and Doze modes with fast wake-up
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 1
dsPIC33FJ12MC201/202
Motor Control Peripherals:
• 6-channel 16-bit Motor Control PWM:
- Three duty cycle generators
- Independent or Complementary mode
- Programmable dead time and output polarity
- Edge-aligned or center-aligned
- Manual output override control
- One Fault input
- Trigger for ADC conversions
- PWM frequency for 16-bit resolution (@ 40 MIPS) = 1220 Hz for Edge-Aligned mode, 610 Hz for Center-Aligned mode
- PWM frequency for 11-bit resolution (@ 40 MIPS) = 39.1 kHz for Edge-Aligned mode, 19.55 kHz for Center-Aligned mode
• 2-channel 16-bit Motor Control PWM:
- One duty cycle generator
- Independent or Complementary mode
- Programmable dead time and output polarity
- Edge-aligned or center-aligned
- Manual output override control
- One Fault input
- Trigger for ADC conversions
- PWM frequency for 16-bit resolution (@ 40 MIPS) = 1220 Hz for Edge-Aligned mode, 610 Hz for Center-Aligned mode
- PWM frequency for 11-bit resolution (@ 40 MIPS) = 39.1 kHz for Edge-Aligned mode, 19.55 kHz for Center-Aligned mode
• Quadrature Encoder Interface mo dul e:
- Phase A, Phase B, and index pulse input
- 16-bit up/down position counter
- Count direction status
- Position Measurement (x2 and x 4) mode
- Programmable digital noise filters on inputs
- Alternate 16-bit Timer/Cou nte r mode
- Interrupt on position counter rollover/underflow
CMOS Flash T echnology:
• Low-power, high-speed Flash technology
• Fully static design
• 3.3V (±10%) operating voltage
• Industrial and Extended temperature
• Low power consumption
Communication Modules:
• 4-wire SPI:
- Framing supports I/O interface to simpl e codecs
- Supports 8-bit and 16-bit data
- Supports all serial clock formats and sampling modes
2
C™:
•I
- Full Multi-Master Slave mode support
- 7-bit and 10-bit addressing
- Bus collision detection and arbitration
- Integrated signal conditioning
- Slave address masking
•UART:
- Interrupt on address bit detect
- Interrupt on UART error
- Wake-up on Start bit from Sleep mode
- 4-character TX and RX FIFO buffers
- LIN bus support
®
-IrDA
- High-Speed Baud mode
- Hardware Flow Control with CTS and RTS
encoding and decoding in hardware
Packaging:
• 20-pin SDIP/SOIC/SSOP
• 28-pin SDIP/SOIC/SSOP/QFN Note: See Table 1 for the exact peripheral
features per device.
Analog-to-Digital Converters (ADCs):
• 10-bit, 1.1 Msps or 12-bit, 500 Ksps conversion:
- Two and four simultaneous samples (10-bit ADC)
- Up to six input channels with auto-scanning
- Conversion start can be man ua l or synchronized with one of four trigger sources
- Conversion possible in Sleep mode
- ±2 LSb max integral nonlinearity
- ±1 LSb max differential nonline ari ty
DS70265C-page 2 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202

dsPIC33FJ12MC201/202 PRODUCT FAMILIES

The device names, pin counts, memory sizes, and peripheral availability of each device are listed in Table 1. The following pages show their pinout diagrams.
T ABLE 1: dsPIC33FJ12MC201/202 CONTROLLER FAMILIES
Remappable Peripherals
(3)
Device Pins
(Kbyte)
RAM (Kbyte)
Program Flash Memory
dsPIC33FJ12MC201 20 12 1
dsPIC33FJ12MC202 28 12 1
Note 1: Only two out of three timers are remappable.
2: Only PWM faul t inp uts are re m ap pable . 3: Only two out of three interrupts are remappable.
10
16
16-bit Timer
Remappable Pins
(1)
3
(1)
3
Input Capture
Standard PWM
Output Compare
424ch
426ch
2ch
2ch
Motor Control PWM
(2) (2)
(2) (2)
UART
Interface
Quadrature Encoder
1131 1ADC,
1131 1ADC.
SPI
10-Bit/12-Bit ADC
External Interrupts
4 ch
6 ch
C™
2
I
I/O Pins
Packages
115SDIP
121SDIP
SOIC
SSOP
SOIC
SSOP
QFN
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 3
dsPIC33FJ12MC201/202
20-PIN SDIP, SOIC, SSOP
INT0/RP7
(1)
/CN23/RB7
MCLR
VSS
PWM1H1/RP14
(1)
/CN12/RB14
V
DDCORE
PWM2H1/SCL1/RP8
(1)
/CN22/RB8
PWM2L1/SDA1/RP9
(1)
/CN21/RB9
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
PGD2/EMUD2/AN0/V
REF+/CN2/RA0
PGC2/EMC2/AN1/V
REF-/CN3/RA1
PGD1/EMUD1/AN2/RP0
(1)
/CN4/RB0
PGC3/EMUC3/SOSCO/T1CK/CN0/RA4
OSCO/CLKO/CN29/RA3
OSCI/CLKI/CN30/RA2
PGD3/EMUD3/SOSCI/RP4
(1)
/CN1/RB4
PGC1/EMUC1/AN3/RP1
(1)
/CN5/RB1
PWM1L2/RP13
(1)
/CN13/RB13
PWM1L1/RP15
(1)
/CN11/RB15
PWM1H2/RP12
(1)
/CN14/RB12
V
SS
dsPIC33FJ12MC201
VDD
28-PIN SDIP, SOIC, SSO P
INT0/RP7
(1)
/CN23/RB7
MCLR
AVSS
PWM1H1/RP14
(1)
/CN12/RB14
V
DDCORE
ASCL1/RP6
(1)
/CN24/RB6
TDO/PWM2L1/SDA1/RP9
(1)
/CN21/RB9
1 2 3 4 5 6 7 8 9 10 11 12 13 14
AN5/RP3
(1)
/CN7/RB3
PGD2/EMUD2/AN0/V
REF+/CN2/RA0
PGC2/EMUC2/AN1/V
REF-/CN3/RA1
PGD1/EMUD1/AN2/RP0
(1)
/CN4/RB0
PGC3/EMUC3/SOSCO/T1CK/CN0/RA4
OSCI/CLKI/CN30/RA2
AN4/RP2
(1)
/CN6/RB2
PGD3/EMUD3/SOSCI/RP4
(1)
/CN1/RB4
PGC1/EMUC1/AN3/RP1
(1)
/CN5/RB1 PWM1L2/RP13
(1)
/CN13/RB13
PWM1L1/RP15
(1)
/CN11/RB15
PWM1H2/RP12
(1)
/CN14/RB12
ASDA1/RP5
(1)
/CN27/RB5
V
SS
OSCO/CLKO/CN29/RA3
V
DD
TMS/PWM1L3/RP11
(1)
/CN15/RB11
TDI/PWM1H3/RP10
(1)
/CN16/RB10
V
SS
TCK/PWM2H1/SCL1/RP8
(1)
/CN22/RB8
28 27 26 25 24 23 22 21 20 19 18 17 16 15
dsPIC33FJ12MC202
AVDD
Note 1: The RPn pins can be used by any remappable peripheral. See Table 1 for the list of available
peripherals.
Pin Diagrams
DS70265C-page 4 Preliminary © 2008 Microchip Technology Inc.
28-Pin QFN
1
2
3
4
5
6
7
21
20
19
18
17
16
15
8 9 10 11 12 13 14
dsPIC33FJ12MC202
PGD1/EMUD1/AN2/RP0
(1)
/CN4/RB0
PGC1/EMUC1/AN3/RP1
(1)
/CN5/RB1
AN4/RP2
(1)
/CN6/RB2
AN5/RP3
(1)
/CN7/RB3
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
V
SS
VDDCORE
TDI/PWM1H3/RP10
(1)
/CN16/RB10
TMS/PWM1L3/RP11
(1)
/CN15/RB11
PWM1H2/RP12
(1)
/CN14/RB12
TDO/PWM2L1/SDA1/RP9
(1)
/CN21/RB9
PWM1L2/RP13
(1)
/CN13/RB13
PGC3/EMUC3/SOSCO/T1CK/CN0/RA4
PGD3/EMUD3/SOSCI/RP4/CN1/RB4
V
DD
ASDA1/RP5
(1)
/CN27/RB5
ASCL1/RP6
(1)
/CN24/RB6
INT0/RP7
(1)
/CN23/RB7
TCK/PWM2H1/SCL1/RP8
(1)
/CN22/RB8
PGC2/EMUC2/AN1/V
REF-/CN3/RA1
PGD2/EMUD2/AN0/V
REF+/CN2/RA0
MCLR
AVDD
AVSS
PWM1L1/RP15
(1)
/CN11/RB15
PWM1H1/ RP14
(1)
/CN12/RB14
28 27 26 25 24 23 22
V
SS
Note 1: The RPn pins can be used by any remappable peripheral. See Table 1 for the list of available
peripherals.
dsPIC33FJ12MC201/202
Pin Diagrams (Continued)
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 5
dsPIC33FJ12MC201/202
Table of Contents
dsPIC33FJ12MC201/202 Product Families.................................................................. .. .... .. .... ......... .. . ................................................. 3
1.0 Device Overview ..........................................................................................................................................................................7
2.0 CPU............................................................................................................................................................................................ 11
3.0 Memory Organization .................................................................................................................................................................23
4.0 Flash Program Memory............................................... ...............................................................................................................49
5.0 Resets ....................................................................................................................................................................................... 55
6.0 Interrupt Controller.............. .................................................... ................................................................................................... 63
7.0 Oscillator Configuration..............................................................................................................................................................95
8.0 Power-Saving Features................. ........................................................................................................................................... 103
9.0 I/O Ports............. ...................................................................................................................................................................... 109
10.0 Timer1...................................................................................................................................................................................... 131
11.0 Timer2/3 feature ......................... ................................................................. ............................................................................ 133
12.0 Input Capture.............................................................................................................. ..............................................................139
13.0 Output Compare...................................................................... .................................................................................................141
14.0 Motor Control PWM Module..................................................................................................................................................... 145
15.0 Quadrature Encoder Interface (QEI) Module ........................................................................................................................... 159
16.0 Serial Peripheral Interface (SPI)...............................................................................................................................................163
17.0 Inter-Integrated Circuit™ (I
18.0 Universal Asynchronous Receiver Transmitter (UART) ........................................................................................................... 177
19.0 10-bit/12-bit Analog-to-Digital Converter (ADC)............................................................ ...........................................................183
20.0 Special Features...................................................................................................................................................................... 197
21.0 Instruction Set Summary ..........................................................................................................................................................205
22.0 Development Support. .............................................................................................................................................................. 213
23.0 Electrical Characteristics.......................................................................................................................................................... 217
24.0 Packaging Information..... .................................................... .....................................................................................................255
Appendix A: Revision History............................................................................................................................................................. 265
Index ............................................................................................................................................... .. ..................................... ........... 273
The Microchip Web Site.................. ................................................................................................................................................... 277
Customer Change Notification Service .............................................................................................................................................. 277
Customer Support..............................................................................................................................................................................277
Reader Response.............................................................................................................................................................................. 278
Product Identification System............................................................................................................................................................. 279
2
C™)............................................................................................. ................................................. 169
TO OUR VALUED CUSTOMERS
It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and enhanced as new volumes and updates are introduced.
If you have any questions or c omm ents r egarding t his publication, p lease c ontact the M arket ing Communications Department via E-mail at docerrors@microchip.com or fax the Reader Response Form in the back of this data sheet to (480) 792-4150. We welcome your feedback.
Most Current Data Sheet
To obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at:
http://www.microchip.com
You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page. The last character of the literature number is the version number, (e.g., DS30000A is version A of document DS30000).
Errata
An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision of silicon and revision of document to which it applies.
To determine if an errata sheet exists for a particular device, please check with one of the following:
• Microchip’s Worldwide Web site; http://www.microchip.com
• Your local Microchip sales office (see last page) When contacting a sales office, please specify which device, revision of silicon and data sheet (include literature number) you are
using.
Customer Notification System
Register on our web site at www.microchip.com to receive the most current information on all of our products.
DS70265C-page 6 Preliminary © 2008 Microchip Technology Inc.

1.0 DEVICE OVERVIEW

Note: This data sheet summarizes the features
of the dsPIC33FJ12MC201/202 devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to the “dsPIC33F Family Reference Manual”. Please see the Microchip web site (www.microchip.com) for the latest dsPIC33F Family Reference Manual chapters.
This document co nta i ns dev ic e spec if i c in for m at ion fo r the dsPIC33FJ12MC201/202 Digital Signal Controller (DSC) Devices. The dsPIC33F devices contain extensive Digital Signal Processor (DSP) functionality with a high-performance, 16-bit microcontroller (MCU) architecture.
Figure 1-1 shows a general block diagram of the core and peripheral modules in the dsPIC33FJ12MC201/ 202 family of devices. Table 1-1 lists the functions of the various pins shown in the pinout diagrams.
dsPIC33FJ12MC201/202
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 7
16
OSC1/CLKI
OSC2/CLKO
V
DD, VSS
Timing
Generation
MCLR
Power-up
Timer
Oscillator
Start-up Timer
Power-on
Reset
Watchdog
Timer
Brown-out
Reset
Precision
Reference
Band Gap
FRC/LPRC
Oscillators
Regulator
Voltage
VDDCORE/VCAP
IC1,2,7,8
I2C1
PORTA
Note: Not all pins or features are implemented on all device pinout configurations. See “Pin Diagrams” for the specific pins
and features present on each device.
Instruction
Decode and
Control
PCH PCL
16
Program Counter
16-bit ALU
23
23
24
23
Instruction Reg
PCU
16 x 16
W Register Array
ROM Latch
16
EA MUX
16
16
8
Interrupt
Controller
PSV & Table Data Access
Control Block
Stack
Control
Logic
Loop
Control
Logic
Data Latch
Address
Latch
Address Latch
Program Memory
Data Latch
Address Bus
Literal Data
16
16
16
16
Data Latch
Address
Latch
16
X RAM
Y RAM
16
Y Data Bus
X Data Bus
DSP Engine
Divide Support
16
Control Signals to Various Blocks
ADC1
Timers
PORTB
Address Generator Units
1-3
CNx
UART1
OC/
PWM1-2
QEI
PWM
2 Ch
PWM
6 Ch
Remappable
Pins
dsPIC33FJ12MC201/202

FIGURE 1-1: dsPIC33FJ12MC201/202 BLOCK DIAGRAM

DS70265C-page 8 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202

TABLE 1-1: PINOUT I/O DESCRIPTIONS

Pin Name
AN0-AN5 CLKI
CLKO
OSC1 OSC2
SOSCI SOSCO
CN0-CN7 CN11-CN16 CN21-CN24 CN27 CN29-CN30
IC1-IC2 IC7-IC8
OCFA OC1-OC2
INT0 INT1 INT2
RA0-RA4 I/O ST PORTA is a bidirectional I/O port. RB0-RB15 I/O ST PORTB is a bidirectional I/O port. T1CK
T2CK T3CK
U1CTS U1RTS
U1RX U1TX
SCK1 SDI1 SDO1
SS1 SCL1
SDA1 ASCL1 ASDA1
TMS TCK TDI TDO
INDX QEA
QEB UPDN
Legend: CMOS = CMOS compatible input or output Analog = Analog input P = Power
ST = Schmitt Trigger input with CMOS levels O = Output I = Input
Pin
Type
I Analog Analog input channels. I
O
I
I/O
I
O
I ST Change notification inputs.
I I
I
O
I I I
I I I
I
O
I
O
I/O
I
O
I/O I/O
I/O I/O I/O
I I I
O
I I
I
O
Buffer
Type
ST/CMOS—External clock source input. Always associated with OSC1 pin function.
Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator
mode. Optionally functions as CLKO in RC and EC modes. Always associated with OSC2 pin function.
ST/CMOS—Oscillator crystal input. ST buffer when configured in RC mode; CMOS
otherwise. Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator mode. Optionally functions as CLKO in RC and EC modes.
ST/CMOS—32.768 kHz low-power os cillator cry s tal input; CMOS otherwise.
32.768 kHz low-power oscillator cry s tal output.
Can be software programmed for internal weak pull-ups on all inputs.
STSTCapture inputs 1/2
Capture inputs 7/8.
ST—Compare Fault A input (for Compare Channels 1 and 2).
Compare outputs 1 through 2.
ST ST ST
ST ST ST
ST ST
ST ST
ST ST
ST ST ST
ST ST ST
ST ST
ST
CMOS
External interrupt 0. External interrupt 1. External interrupt 2.
Timer1 external clock input. Timer2 external clock input. Timer3 external clock input.
UART1 clear to send.
UART1 ready to send. UART1 receive.
UART1 transmit. Synchronous serial clock input/output for SPI1.
SPI1 data in.
SPI1 data ou t. SPI1 slave synchronization or frame pulse I/O.
Synchronous serial clock input/output for I2C1. Synchronous serial data input/output for I2C1. Alternate synchronous serial clock input/output for I2C1. Alternate synchronous serial data input/output for I2C1.
JTAG Test mode sel ect pin. JTAG test clock input pi n. JTAG test data input pin.
JTAG test data output pin. Quadrature Encoder Index Pulse input.
Quadrature Encoder Phase A input in QEI mode. Auxiliary Timer External Clock/Gate input in Ti mer mode. Quadrature Encoder Phase A input in QEI mode. Auxiliary Timer External Clock/Gate input in Ti mer mode. Position Up/Down Counter Direction State.
Description
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 9
dsPIC33FJ12MC201/202
TABLE 1-1: PINOUT I/O DESCRIPTIONS (CONTINUED)
Pin Name
Pin
Type
Buffer
Type
Description
FLTA1 PWM1L1 PWM1H1 PWM1L2 PWM1H2 PWM1L3 PWM1H3
FLTA2 PWM2L1 PWM2H1
PGD1/EMUD1 PGC1/EMUC1 PGD2/EMUD2 PGC2/EMUC2 PGD3/EMUD3 PGC3/EMUC3
MCLR
DD P P Positive supply for analog modules. This pin must be connected at all times.
AV AVSS P P Ground reference for analog modules. VDD P Positive supply for peripheral logic and I/O pins.
DDCORE P CPU logic filter capacitor connection.
V VSS P Ground reference for logic and I/O pins. VREF+ I Analog Analog voltage reference (high) in put.
REF- I Analog Analog voltage referenc e (low) input.
V Legend: CMOS = CMOS compatible input or output Analog = Analog input P = Power
ST = Schmitt Trigger input with CMOS levels O = Output I = Input
I O O O O O O
I O O
I/O
I
I/O
I
I/O
I
I/P ST Master Clear (Reset) input. This pin is an active-low Reset to the device.
ST
— — — — — —
ST
— —
ST ST ST ST ST ST
PWM1 Fault A input. PWM1 Low output 1 PWM1 High output 1 PWM1 Low output 2 PWM1 High output 2 PWM1 Low output 3 PWM1 High output 3 PWM2 Fault A input. PWM2 Low output 1 PWM2 High output 1
Data I/O pin for programming/debugging communication channel 1. Clock input pin for programming/debugging communication channel 1. Data I/O pin for programming/debugging communication channel 2. Clock input pin for programming/debugging communication channel 2. Data I/O pin for programming/debugging communication channel 3. Clock input pin for programming/debugging communication channel 3.
DS70265C-page 10 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202

2.0 CPU

Note: This data sheet summarizes the features
of the dsPIC33FJ12MC201/202 family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to the dsPIC33F Family Refer- ence Manual, “Section 2. CPU” (DS70204), which is available from the Microchip website (www.microchip.com).
The dsPIC33FJ12MC201/202 CPU module has a 16­bit (data) modified Harvard architecture with an enhanced instruction set, including significant support for DSP. The CPU has a 24-bit instruction word with a variable length opcode field. The Program Counter (PC) is 23 bits wide and addresses up to 4M x 24 bits of user program memory space. The actual amount of program memory implemented varies by device. A single-cycle i n str uct i on p r efe t ch m e ch ani sm i s u s ed t o help maintain throughput and provides predictable execution. All instructions execute in a single cycle, with the exception of instructions that change the program flow, the double-word move (MOV.D) instruction and the table instructions. Overhead-free program loop constructs are supported using the DO and REPEAT instructions, both of which are interruptible at any point.
The dsPIC33FJ12MC201/202 devices have sixteen, 16-bit working registers in the programmer’s model. Each of the working registers can serve as a data, address, or address offset register. The 16th working register (W15) operates as a software Stack Pointer (SP) for interrupts and calls.
There are two classes of instruction in the dsPIC33FJ12MC201/202 devices: MCU and DSP. These two instruction classes are seamlessly integrated into a single CPU. The instruction set includes many addressing modes and is designed for optimum C compiler eff iciency. For most instruct ions, dsPIC33FJ12MC201/202 devices are capable of exe­cuting a data (or program data) memory read, a work­ing register (data) read, a data memory write, and a program (instruction) memory read per instruction cycle. As a result, three parameter instructions can be supported, allowing A + B = C operations to be executed in a single cycle.
A block diagram of the CPU is shown in Figure 2-1, and the programmer’s model for the dsPIC33FJ12MC201/ 202 is shown in Figure 2-2.

2.1 Data Addressing Overview

The data space can be addressed as 32K words or 64 Kbytes and is split into two blocks, referred to as X and Y data memory. Each memory block has its own independent Address Generation Unit (AGU). The MCU class of instructions operates solely through the X memory AGU, which accesses the entire memory map as one linear data space. Certain DSP instructions
operate through the X and Y AGUs to support dual operand reads, which splits the data address space into two parts. The X and Y data space boundary is device-specific.
Overhead-free circular buffers (Modulo Addressing mode) are supported in both X and Y address spaces. The Modulo Addressing removes the software boundary checking overhead for DSP algorithms. Furthermore, the X AGU circular addressing can be used with any of the MCU class of instructions. The X AGU also support s Bit-Rev ers ed Add r essin g to greatly simplify input or output data reordering for radix-2 FFT algorithms.
The upper 32 Kbytes of the data space memory map can optionally be mapped into program space at any 16K program word boundary defined by the 8-bit Program S pace Visibility Page (PSVPAG) re gister. The program-to-data-space mapping feature lets any instruction access program space as if it were data space.

2.2 DSP Engine Overview

The DSP engine features a high-spee d 17-bit by 17-bit multiplier, a 40-bit ALU, two 40-bit saturating accumulators, and a 40-bit bidirectional barrel shifter. The barrel shifter is c apable of shif ting a 40-bit value up to 16 bits right or left, in a single cycle. The DSP instruc­tions operate seamles sly with all other in st ruction s and have been desi gned for o ptimal re al-time p erformanc e. The MAC instruction and other associated instructions can concurrently fetc h two data operands from mem­ory , while multiplyi ng two W r egisters and accumula ting and optionally saturating the result in the same cycle. This instruction functionality requi res that the RAM data space be split for these instructions and linear for all others. Data space partitioning is achieved in a trans­parent and flexible manner through dedicating certain working registers to each address space.

2.3 Special MCU Features

The dsPIC33FJ12MC201/202 features a 17-bit by 17­bit single-cycle multiplier that is shared by both the MCU ALU and DSP engine. T he mul tiplie r can pe rform signed, unsigned and mixed-sign multiplication. Using a 17-bit by 17-bit multiplier for 16-bit by 16-bit multiplication not onl y allows you to perfor m mixed-sign multiplication, it also achieves accurate results for special operations, such as (-1.0) x (-1.0).
The dsPIC33FJ12MC201/202 supports 16/16 and 32/ 16 divide operations, both fractional and integer. All divide instructions are iterative operations. They must be executed within a REPEAT loop, resulting in a total execution time of 19 instruction cycles. The divide operation can be interrupted during any of those 19 cycles without loss of data.
A 40-bit barrel shifter is used to perform up to a 16-bit left or right shift in a single cycle. The barrel shifter can be used by both MCU and DSP instructions.
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 11
dsPIC33FJ12MC201/202
Instruction
Decode &
Control
PCH PCL
Program Counter
16-bit ALU
24
23
Instruction Reg
PCU
16 x 16
W Register Array
ROM Latch
EA MUX
Interrupt
Controller
Stack
Control
Logic
Loop
Control
Logic
Data Latch
Address
Latch
Control Signals
to Various Blocks
Address Bus
Literal Data
16
16
16
To Peripheral Modules
Data Latch
Address
Latch
16
X RAM
Y RAM
Address Generator Units
16
Y Data Bus
X Data Bus
DSP Engine
Divide Support
16
16
23
23
16
8
PSV & Table Data Access
Control Block
16
16
16
16
Program Memory
Data Latch
Address Latch

FIGURE 2-1: dsPIC33FJ12MC201/202 CPU CORE BLOCK DIAGRAM

DS70265C-page 12 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
PC22
PC0
7
0
D0D15
Program Counter
Data Table Page Address
STATUS Register
Working Registers
DSP Operand Registers
W1 W2 W3 W4 W5
W6 W7
W8 W9 W10 W11
W12/DSP Offset
W13/DSP Write Back
W14/Frame Pointer
W15/Stack Pointer
DSP Address Registers
AD39 AD0AD31
DSP Accumulators
ACCA ACCB
7
0
Program Space Visibility Page Address
Z
0
OA OB SA SB
RCOUNT
15
0
REPEAT Loop Counter
DCOUNT
15
0
DO Loop Counter
DOSTART
22
0
DO Loop Start Address
IPL2 IPL1
SPLIM
Stack Pointer Limit Register
AD15
SRL
PUSH.S Shadow DO Shadow
OAB SAB
15
0
Core Configuration Register
Legend
CORCON
DA DC
RA N
TBLPAG
PSVPAG
IPL0 OV
W0/WREG
SRH
DO Loop End Address
DOEND
22
C

FIGURE 2-2: dsPIC33FJ12MC201/202 PROGRAMMER’S MODEL

© 2008 Microchip Technology Inc. Preliminary DS70265C-page 13
dsPIC33FJ12MC201/202

2.4 CPU Control Registers

REGISTER 2-1: SR: CPU STATUS REGISTER

R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R -0 R/W-0
OA OB SA
bit 15 bit 8
(1)
SB
(1)
OAB SAB DA DC
(2)
R/W-0
IPL<2:0>
bit 7 bit 0
Legend:
C = Clear only bit R = Readable bit U = Unimplemented bit, read as ‘0’ S = Set only bit W = Writable bit -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
bit 15 OA: Accumulator A Overflow Status bit
1 = Accumul ator A overflowed 0 = Accumulator A has not overflowed
bit 14 OB: Accumulator B Overflow Status bit
1 = Accumul ator B overflowed 0 = Accumulator B has not overflowed
bit 13 SA: Accumulator A Saturation ‘Sticky’ Status bit
1 = Accumulator A is saturated or has been saturated at some time 0 = Accumulator A is not satura ted
bit 12 SB: Accumulator B Saturation ‘Sticky’ Status bit
1 = Accumulator B is saturated or has been saturated at some time 0 = Accumulator B is not satura ted
bit 11 OAB: OA || OB Combined Accumulator Overflow Status bit
1 = Accumulators A or B have overflowed 0 = Neither Accumulators A or B have overflowed
bit 10 SAB: SA || SB Combined Accumulator ‘Sticky’ Status bit
1 = Accumulators A or B are saturated or have been saturated at some time in the past 0 = Neither Accumulator A or B are saturated
This bit may be read or cleared (not set). Clearing this bit will clear SA and SB.
bit 9 DA: DO Loop Active bit
1 = DO loop in progress 0 = DO loop not in progress
bit 8 DC: MCU ALU Half Carry/Borrow
1 = A carry-out from the 4th low-order bit (for byte -sized data) or 8th low-order bit (for wo rd-sized data ) 0 = No carry-out from the 4th low-order bit (for byte-sized data) or 8th low-order bit (for word-sized
(3)
R/W-0
(2)
of the result occurred data) of the result occurred
R/W-0
(3)
R-0 R/W-0 R/W-0 R/W-0 R/W-0
RA N OV Z C
(1)
(1)
bit
Note 1: This bit can be read or cleared (not set).
2: The IPL<2:0> bits are con caten ated with the IPL<3 > bi t (CO RCON<3>) to form the CPU Inte rrup t Prio rity
Level. The value in parentheses indicates the IPL if IPL<3> = 1. User interrupts are disabled when IPL<3> = 1.
3: The IPL<2:0> St atus bits are read-only when NSTDIS = 1 (INTCON1<15>).
DS70265C-page 14 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
REGISTER 2-1: SR: CPU STATUS REGISTER (CONTINUED)
bit 7-5 IPL<2:0>: CPU Interrupt Priority Level Status bits
111 = CPU Interrupt Priority Level is 7 (15), user interrupts disabled 110 = CPU Interrupt Priority Level is 6 (14) 101 = CPU Interrupt Priority Level is 5 (13) 100 = CPU Interrupt Priority Level is 4 (12) 011 = CPU Interrupt Priori ty Level is 3 (11) 010 = CPU Interrupt Priority Level is 2 (10) 001 = CPU Interrupt Priority Level is 1 (9) 000 = CPU Interrupt Priority Level is 0 (8)
bit 4 RA: REPEAT Loop Active bit
1 = REPEAT loop in prog ress 0 = REPEAT loop not in pr ogress
bit 3 N: MCU ALU Negative bit
1 = Result was negative 0 = Result was non-negative (zero or positive)
bit 2 OV: MCU ALU Overflow bit
This bit is used for signed arithmetic (2’s complement). It indicates an overflow of a magnitude that causes the sign bit to change state.
1 = Overflow occurred for signed arithmetic (in this arithmetic operation) 0 = No overflow occurred
bit 1 Z: MCU ALU Zero bit
1 = An operation that affects the Z bit has set it at some time in the past 0 = The most recent operation that affects the Z bit has cleared it (i.e., a non-zero result)
bit 0 C: MCU ALU Carry/Borrow
1 = A carry-out from the Most Significant bit of the result occurred 0 = No carry-out from the Most Significant bit of the result occurred
bit
(2)
Note 1: This bit can be read or cleared (not set).
2: The IPL<2:0> bits are con caten ated with the IPL<3 > bi t (CO RCON<3>) to form the CPU Inte rrup t Prio rity
Level. The value in parentheses indicates the IPL if IPL<3> = 1. User interrupts are disabled when IPL<3> = 1.
3: The IPL<2:0> St atus bits are read-only when NSTDIS = 1 (INTCON1<15>).
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 15
dsPIC33FJ12MC201/202

REGISTER 2-2: CORCON: CORE CONTROL REGISTER

U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0
—USEDT
bit 15 bit 8
R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R/W-0 R/W-0 R/W-0
SATA SATB SATDW ACCSAT IPL3
bit 7 bit 0
Legend: C = Clear only bit R = Readable bit W = Writable bit -n = Value at POR ‘1’ = Bit is set 0’ = Bit is cleared ‘x = Bit is unknown U = Unimplemented bit, read as ‘0’
bit 15-13 Unimplemented: Read as ‘0’ bit 12 US: DSP Multiply Unsigned/Signed Control bit
1 = DSP engine multiplies are unsigned 0 = DSP engine multiplies are signed
bit 11 EDT: Early DO Loop Termination Control bit
1 = Terminate executing DO loop at end of current loop iteration 0 = No effect
bit 10-8 DL<2:0>: DO Loop Nesting Level Status bits
111 = 7 DO loops active
001 = 1 DO loop active 000 = 0 DO loops active
bit 7 SATA: ACCA Saturation Enable bit
1 = Accumulator A saturation enabled 0 = Accumulator A saturation disabled
bit 6 SATB: ACCB Saturation Enable bit
1 = Accumulator B saturation enabled 0 = Accumulator B saturation disabled
bit 5 SATDW: Data Space Write from DSP Engine Saturation Enable bit
1 = Data space write saturation enabled 0 = Data space write saturation disabled
bit 4 ACCSAT: Accumulator Saturation Mode Select bit
1 = 9.31 saturation (super saturation) 0 = 1.31 saturation (normal saturation)
bit 3 IPL3: CPU Interrupt Priority Level Status bit 3
1 = CPU interrupt priority level is greater than 7 0 = CPU interrupt priority level is 7 or less
bit 2 PSV: Program Space Visibility in Data Space Enable bit
1 = Program space visible in data space 0 = Program space not visible in data space
(1)
(2)
(1)
(2)
DL<2:0>
PSV RND IF
Note 1: This bit will always read as ‘0’.
2: The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU interrupt priority level.
DS70265C-page 16 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
REGISTER 2-2: CORCON: CORE CONTROL REGISTER (CONTINUED)
bit 1 RND: Rounding Mode Select bit
1 = Biased (conventional) rounding enabled 0 = Unbiased (convergent) rounding enabled
bit 0 IF: Integer or Fractional Multiplier Mode Select bit
1 = Integer mode enabled for DSP multiply ops 0 = Fractional mode enabled for DSP multiply ops
Note 1: This bit will always read as ‘0’.
2: The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU interrupt priority level.
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 17
dsPIC33FJ12MC201/202

2.5 Arithmetic Logic Unit (ALU)

The dsPIC33FJ12MC201/202 ALU is 16 bits wide and is capable of addition, subtraction, bit shifts, and logic operations. Unless otherwise mentioned, arithmetic operations are 2’s complement in nature. Depending on the operation, the ALU can affect the values of the Carry (C), Zero (Z), Negative (N), Overflow (OV), and Digit Carry (DC) Status bits in the SR register. The C and DC S tatus bits op erate as Borrow bits, respectively, for subtraction operations.
The ALU can perform 8-bit or 16-bit operations, depending on the mode of the instruction that is used. Data for the ALU operation can come from the W register array or data memory, depending on the addressing mode of the instruction. Likewise, output data from the ALU ca n be written to the W re gister array or a data memory location.
Refer to the dsPIC30F/33F Programmer’s Reference Manual (DS70157) for information on the SR bits affected by each instruction.
The dsPIC33FJ12MC201/202 CPU incorporates hard­ware support for both multiplication and division. This includes a dedicated hardware multiplier and support hardware for 16-bit-divisor division.

2.5.1 MULTIPLIER

Using the high-speed 17-bit x 17-bit multiplier of the DSP engine, the ALU supports unsigned, signed or mixed-sign operation in several MCU multiplication modes:
• 16-bit x 16-bit signed
• 16-bit x 16-bit unsigned
• 16-bit signed x 5-bit (literal) unsigned
• 16-bit unsigned x 16-bit unsigned
• 16-bit unsigned x 5-bit (literal) unsigned
• 16-bit unsigned x 16-bit signed
• 8-bit unsigned x 8-bit unsigned

2.5.2 DIVIDER

The divide block suppor ts 32-bit/16-bit and 16-b it/16-bit signed and unsigned integer divide op erat ion s w i th th e following data sizes:
1. 32-bit signed/16-bit signed divide
2. 32-bit unsigned/16-bit unsigned divide
3. 16-bit signed/16-bit signed divide
4. 16-bit unsigned/16-bit unsigned divide The quotient for all divide instructions ends up in W0
and the remainder in W1. 16-bit signed and unsigned DIV instructions can specify any W register for both the 16-bit divisor (Wn) and any W register (aligned) pair (W(m + 1):Wm) for the 32-bit dividend. The divide algorithm takes one cycle per bit of divisor, so both 32-bit/16-bit and 16-bit/16-bit instructions take the same number of cycles to execute.
and Digit Borrow

2.6 DSP Engine

The DSP engine consists of a high-speed 17-bit x 17-bit multiplier, a barrel shifter and a 40-bit adder/ subtracter (with two target accumulators, round and saturation logic).
The dsPIC33FJ12 MC2 01/202 is a single -cy cl e ins truc ­tion flow architecture; therefore, concurrent operation of the DSP engine with MCU ins truction flow is no t pos­sible. However, some MCU ALU and DSP engine resources can be used concurrently by the same instruction (e.g., ED, EDAC).
The DSP engine can also perform inherent accumula­tor-to-accumulator operatio ns that require no add itional data. These instructions are ADD, SUB, and NEG.
The DSP engine has options selected through bits in the CPU Core Control register (CORCON), as listed below:
• Fractional or integer DSP multiply (IF)
• Signed or unsigned DSP multiply (US)
• Conventional or convergent rounding (RND)
• Automatic saturation on/off for ACCA (SATA)
• Automatic saturation on/off for ACCB (SATB)
• Automatic saturation on/off for writes to data memory (SATDW)
• Accumulator Saturation mode selection (ACCSAT)
A block diagram of the DSP engine is shown in Figure 2-3.
TABLE 2-1: DSP INSTRUCTIONS
SUMMARY
Instruction
CLR A = 0 ED A = (x – y) EDAC A = A + (x – y) MAC A = A + (x * y) Yes MAC A = A + x MOVSAC No change in A Yes MPY A = x * y No MPY A = x MPY.N A = – x * y No MSC A = A – x * y Yes
Algebraic
Operation
2
2
2
2
ACC Write
Back
Yes
No No
No
No
DS70265C-page 18 Preliminary © 2008 Microchip Technology Inc.

FIGURE 2-3: DSP ENGINE BLOCK DIAGRAM

Zero Backfill
Sign-Extend
Barrel
Shifter
40-bit Accumulator A 40-bit Accumulator B
Round
Logic
X Data Bus
To/From W Array
Adder
Saturate
Negate
32
32
33
16
16
16
16
40
40
40
40
S a
t
u
r
a
t
e
Y Data Bus
40
Carry/Borrow Out
Carry/Borrow In
16
40
Multiplier/Scaler
17-bit
dsPIC33FJ12MC201/202
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 19
dsPIC33FJ12MC201/202

2.6.1 MULTIPLIER

The 17-bit x 17-bit multiplier is capable of signed or unsigned operati on and can mul tiplex i ts ou tput u sing a scaler to support either 1.31 fractional (Q31) or 32-bit integer results. Unsigned operands are zero-extended into the 17th bit of the multiplier input value. Signed operands are sign-extended into the 17th bit of the multiplier input value. The output of the 17-bit x 17-bit multiplier/ scale r is a 33-bit valu e that i s sign -ext ended to 40 bits. Integer data is inherently represented as a signed 2’s complement value, where the Most Signifi­cant bit (MSb) is defined as a sign bit. The range of an N-bit 2’s complement integer is -2
• For a 16-bit integer, the data range is -32768 (0x8000) to 32767 (0x7FFF) including 0.
• For a 32-bit integer, the data range is
-2,147,483,648 (0x80000000) to 2,147,483,647 (0x7FFF FFFF).
When the multiplier is configured for fractional multiplication, the data is represented as a 2’s complement fraction, where the MSb is defined as a sign bit and the radix po int is impli ed to lie just af ter the sign bit (QX format). The range of an N-bit 2’s complement fract ion with this im plie d radix point i s -1.0 to (1 – 2 is -1.0 (0x8000) to 0.999969482 (0x7FFF) including 0 and has a precision of 3.01518x10-5. In Fractional mode, the 16 x 16 multiply operation generates a 1.31 product that has a precision of 4.65661 x 10
The same multiplier is used to support the MCU multiply instructions, which include integer 16-bit signed, unsigned and mixed sign multiply operations.
The MUL instruction can be directed to use byte or word-sized operands. Byt e operan ds will direct a 16-bit result, and word operands will direct a 32-bit result to the specified register(s) in the W array.
1-N
). For a 16-bit fraction, the Q15 data range
N-1
to 2
N-1
– 1.
-10
.
2.6.2 DATA ACCUMULATORS AND
ADDER/SUBTRACTER
The data accumulator consists of a 40-bit adder/ subtracter with automatic sign extension logic. It can select one of two accumulators (A or B) as its pre­accumulation source and post-accumulation destination. For t he ADD and LAC instructions, the da t a to be accumulated or loaded can be optionally scaled using the barrel shifter prior to accumulation.
2.6.2.1 Adder/Subtracter, Overflow and Saturation
The adder/subtracter is a 40-bit adder with an optional zero input into one si de, and either tru e or comp leme nt data into the other input.
• In the case of addition, the Carry/B
active-high and the other input is true data (not complemented).
• In the case of subtraction, the Carry/Borrow input
is active-low and the ot her inpu t is comple mente d.
The adder/subtracter generates Overflow Status bits, SA/SB and OA/OB, which are latched and reflected in the STATUS register:
• Overflow from bit 39: this is a catastrophic
overflow in which the sign of the accumulator is destroyed.
• Overflow into guard bits 32 through 39: this is a
recoverable overflow. This bit is set whenever all the guard bits are not identical to each other.
The adder has an additional saturation block that controls accumulator data saturation, if selected. It uses the result of the adder, the Overflow Status bits described previously and the SAT<A:B> (CORCON<7:6>) and ACCSAT (CORCON<4>) mode control bits to determine when and to what value to saturate.
Six STATUS register bits support saturation and overflow:
• OA: ACCA overflowed into guard bits
• OB: ACCB overflowed into guard bits
• SA: ACCA saturated (bit 31 overflow and
saturation)
or
ACCA overflowed into guard bits and saturated (bit 39 overflow and saturation)
• SB: ACCB saturated (bit 31 overflow and
saturation)
or
ACCB overflowed into guard bits and saturated (bit 39 overflow and saturation)
• OAB: Logical OR of OA and OB
• SAB: Logical OR of SA and SB
The OA and OB bits are modified each time data passes through the adder/subtracter. When set, they indicate that the most recent operation has overflowed into the accumulator guard bits (bits 32 through 39). The OA and OB bits can also optionally generate an arithmetic warning trap when set and the corresponding Overflow Trap Flag Enable bits (OVATE, OVBTE) in the INTCON1 register are set (refer to Section 6.0 “Interrupt Controller”). This allows the user appl ication to ta ke immediate acti on, for example, to correct system gain.
orrow input is
DS70265C-page 20 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
The SA and SB bits are modified each time data passes through the adder/subtracter, but can only be cleared by the u ser applic ation. When set, they indicate that the accumulator has overflowed its maximum range (bit 31 for 32-bit saturation or bit 39 for 40-bit saturation) and will be saturated (if saturation is enabled). When saturation is not enabled, SA and SB default to bit 39 overflow, and therefore, indicate that a catastrophic o verflow has occurred. If the COVTE bit i n the INTCON1 register is set, the SA and SB bits will generate an arithmetic warning trap when saturation is disabled.
The Overflow and Saturation Status bits can optionally be viewed in the STATUS Register (SR) as the logical OR of OA and OB (in bit OAB) and the logical OR of SA and SB (in bit SAB). Programmers can check one bit in the ST ATUS register to determine if either ac cumula tor has overflowed, or one bit to determine if either accumulator has saturated. This is useful for complex number arithmetic, which typically uses both accumulators.
The device supports three Saturation and Overflow modes:
• Bit 39 Overflow and Saturation: When bit 39 overflow and saturation occurs, the saturation logic loads the maximally positive 9.31 (0x7FFFFFFFFF) or maximally negative 9.31 value (0x8000000000) into the target accumulator. The SA or SB bit is set and remains set until cleared by the user application. This condition is referred to as ‘super saturation’ and provides protection against erroneous data or unexpected algorithm problems (such as gain calculations).
• Bit 31 Overflow and Saturation: When bit 31 overflow and saturation occurs, the saturation logic then loads the maximally positive
1.31 value (0x007FFFFFFF) or maximally nega­tive 1.31 value (0x0080000000) into the target accumulator. The SA or SB bit is set and remains set until cleared by the user application. When this Saturation mode is in effect , the guard bit s are not used, so the OA, OB or OAB bits are never set.
• Bit 39 Catastrophic Overflow: The bit 39 Overflow Status bit from the adder is used to set the SA or SB bit, which remains set until cleared by the user applic ation. No sa turation operation is performed, and the accumulator is allowed to overflow, destroying its sign. If the COVTE bit in the INTCON1 register is set, a catastrophic ov erflo w ca n i nit iate a trap exceptio n.

2.6.3 ACCUMULATOR ‘WRITE BACK’

The MAC class of instructions (with the exception of MPY, MPY.N, ED, and EDAC) can optionally write a rounded ver sion of the hi gh word (bits 31 t hroug h 16) of the accumulator tha t is not targeted by the instructio n
into data spac e memory. The write is performed across the X bus into combined X and Y address space. The following addressing modes are supported:
• W13, Register Direc t: The rounded contents of the non-target accumulator are written into W13 as a
1.15 fraction.
• [W13] + = 2, Register Indirect with Post-Increment: The rounded contents of the non-target accumu­lator are written into the address pointed to by W13 as a 1.15 fraction. W13 is then incremented by 2 (for a word write).
2.6.3.1 Round Logic
The round logic is a combinational block that performs a conventional (biased) or convergent (unbiased) round function durin g an ac cumulat or write (store). Th e Round mode is determined by the state of the RND bit in the CORCON register. It generates a 16-bit, 1.15 data value that is passed to the data space write saturation logic. If rounding is not indicated by the instruction, a truncated 1.15 data value is stored and the least significant word is simply discarded.
Conventional rounding will zero-extend bit 15 of the accumulator and will add it to the ACCxH word (bits 16 through 31 of the accumulator).
• If the ACCxL word (bits 0 through 15 of the accu­mulator) is between 0x8000 and 0xFF FF (0x8000 included), ACCxH is incremented.
• If ACCxL is between 0x0 000 and 0x 7FFF, ACCxH is left unchanged.
A consequence of this algorithm is that over a succes­sion of random rou nding operations, th e value tends to be biased slightly positive.
Convergent (or unbiased) rounding operates in the same manner as conventional rounding, except when ACCxL equals 0x8000. In this case, the Least Significant bit (bit 16 of the accumulator) of ACCxH is examined:
• If it is ‘1’, ACCxH is incremented.
• If it is ‘0’, ACCxH is not modified.
Assuming that bit 16 is effectively random in nature, this scheme removes any rounding bias that may accumulate.
The SAC and SAC.R instructions store either a truncated (SAC), or rounded (SAC.R) version of the contents of the target accumulator to data memory via the X bus, subject to data saturation (see Section 2.6.3.2 “Data Space Write Saturation”). For the MAC class of instructions, the accumulator write­back operation functions in the same manner, addressing combined MCU (X and Y) data space though the X bus. For this class of instruc tions, the data is always subject to rounding.
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 21
dsPIC33FJ12MC201/202
2.6.3.2 Data Space Write Saturation
In addition to adder/subtrac ter saturation, writes to dat a space can also be saturated, but without affecting the contents of the source accumulator. The data space write saturation logic block accepts a 16-bit, 1.15 fractional value from the round logic block as its input, together with overflow status from the original source (accumulator) and the 1 6-bit round adde r . These in puts are combined and used to select the appropriate 1.15 fractional value as output to write to data space memory.
If the SATDW bit in the CORCON register is set, data (after rounding or truncat ion ) is test ed for ove rflo w and adjusted accordingly:
• For input data greater than 0x007FFF, data written to memory is forced to the maximum positive 1.15 value, 0x 7FFF.
• For input data less than 0xFF8000, data written to memory is forced to the maximum negative 1.15 value, 0x8000.
The Most Significan t bit of the source (bit 39) is used to determine the sign of the operand being tested.
If the SA TDW bi t in the CORCON regis ter is not set , the input data is always passed through unmodified under all conditions.

2.6.4 BARREL SHIFTER

The barrel shifter ca n perform up to 1 6-bit arithme tic or logic right shifts, or up to 16-bit left shifts in a single cycle. The source can be either of the two DSP accumulators or the X bus (to su pport multi-bit shif t s of register or memory data).
The shifter req uir es a signed binary value to determine both the magnitude (num ber of bits) and direction of the shift operation. A positive value shif ts the operand right. A negative v alue shi fts the opera nd left. A va lue of ‘ 0’ does not modify the operand.
The barrel shifter is 40 bits wide, thereby obtaining a 40-bit result fo r DSP shif t o peratio ns a nd a 16-bit re sult for MCU shift operations. Data from the X bus is presented to the barrel shifter between bit positions 16 and 31 for right shifts, and between bit positions 0 and 16 for left shifts.
DS70265C-page 22 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
Reset Address
0x000000
0x0000FE
0x000002
0x000100
Device Configuration
User Program Flash Memory
0x002000
0x001FFE
(4K instructions)
0x800000
0xF80000
Registers
0xF80017 0xF80018
DEVID (2)
0xFEFFFE 0xFF0000
0xFFFFFE
0xF7FFFE
Unimplemented
(Read ‘
0
’s)
GOTO
Instruction
0x000004
Reserved
0x7FFFFE
Reserved
0x000200
0x0001FE
0x000104
Alternate Ve ct or Table
Reserved
Interrupt Ve c tor Table
dsPIC33FJ12MC201/202
Configuration Memory Space
User Memory Space

3.0 MEMORY ORGANIZATION

Note: This data sheet summarizes the features
of the dsPIC33FJ12MC201/202 family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to the dsPIC33F Family
Reference Manual, “Section 4. Program Memory” (DS70202), which is available
from the Microchip website (www.microchip.com).
The dsPIC33FJ12MC201/202 architecture features separate program and data memory spaces and buses. This architect ure also all ows the dir ect access of program memory f rom the d ata space dur ing code execution.

3.1 Program Address Space

The program address memory space of the dsPIC33FJ12MC201/202 devices is 4M instructions. The space is addressable by a 24-bit value derived either from the 23-bit Program Counter (PC) during program execution, or from table operation or data space remapping as described in Section 3.6 “Interfacing Program and Data Memory Spaces”.
User application acc ess to the program me mory sp ac e is restricted to the lower half of the address range (0x000000 to 0x7FFFFF). The exception is the use of TBLRD/TBLWT operations, which use TBLPAG<7> to permit access to the Configuration bits and Device ID sections of the configuration memory space.
The memory map for the dsPIC33FJ12MC201/202 family of devices is shown in Figure3-1.

FIGURE 3-1: PROGRAM MEMORY MAP FOR dsPIC33FJ12MC201/202 DEVICES

© 2008 Microchip Technology Inc. Preliminary DS70265C-page 23
dsPIC33FJ12MC201/202
0816
PC Address
0x000000 0x000002 0x000004 0x000006
23
00000000 00000000
00000000
00000000
Program Memor y
‘Phantom’ Byte
(read as ‘0’)
least significant word (lsw)
most significant word (msw)
Instruction Width
0x000001 0x000003 0x000005 0x000007
msw
Address (lsw Address)
3.1.1 PROGRAM MEMORY
ORGANIZATION
The program memory space is organized in word­addressable blocks. Although it is treated as 24 bits wide, it is more appropriate to think of each address of the program memory as a lower and upper word, with the upper byte of t he upper word being unimplemented. The lower word always has an even address, while the upper word has an odd address (Figure 3-2).
Program memory addresses are always word-aligned on the lower word, and addresses are incremented or decremented by two during code execution. This arrangement provides compatibility with data memory space addressing and makes data in the program memory space accessible.

3.1.2 INTERRUPT AND TRAP VECTORS

All dsPIC33FJ12MC201/202 devices reserve the addresses between 0x00000 and 0x000200 for hard­coded program execution vectors. A hardware Reset vector is provided to redirect code execution from the default value of the PC on device Reset to the actual start of code. A GOTO in stru ction is programmed by th e user application at 0x000000, with the actual address for the start of code at 0x000002.
dsPIC33FJ12MC201/202 devices also have two interrupt vector tables, located from 0x000004 to 0x0000FF and 0x000100 to 0x0001FF. These vector tables allow each of the device interrupt sources to be handled by separate Interrupt Service Routines (ISRs). A more detailed discussion of the interrupt vector tables is provided in Section 6.1 “Interrupt Vector
Table”.

FIGURE 3-2: PROGRAM MEMORY ORGANIZATION

DS70265C-page 24 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202

3.2 Data Address Space

The dsPIC33FJ12MC2 01/202 CPU has a sep arat e 16­bit-wide data memory space. The data space is accessed using separate Address Generation Units (AGUs) for read and write operations. The data memory maps is shown in Figure 3-3.
All Effective Addresses (EAs) in the data memory space are 16 bits wide and point to bytes within the data space. This arrangement gives a data space address range of 64 Kbytes or 32K words. The lower half of the data memory space (that is, when EA<15> = 0) is used for implemented memory addresses, while the upper half (EA<15> = 1) is reserved for the Program Space Visibility area (see Section 3.6.3 “Reading D ata From Program Memory Using Program Space Visibility”).
dsPIC33FJ12MC201/202 devices implement up to 30 Kbytes o f data memory. Should an EA poi nt to a location outside of this area, an all-zero word or byte will be returned.

3.2.1 DATA SPACE WIDTH

The data memory space is organized in byte addressable, 16-bit wide blocks. Data is aligned in data memory and registers as 16-bit words, but all data space EAs resolve to bytes. The Least Significant Bytes (LSBs) of each word have even ad dresses, whil e the Most Significant Bytes (MSBs) have odd addresses.

3.2.2 DATA MEMORY ORGANIZATION AND ALIGNMENT

To maintain backward compatibility with PIC devices and improve data space memory usage efficiency, the dsPIC33FJ12MC201/202 instruction set supports both word and byte operations. As a consequence o f b yte a cc es sibility , all effectiv e address calculations are in tern all y sc ale d to step through word­aligned memory. For example, the core recogni zes that Post-Modified Register Indirect Addressing mode [Ws++] will result in a value of Ws + 1 for byte operations and Ws + 2 for word operations.
Data byte reads will read the complete word that contains the byte, using the LSB of any EA to determine which byte to select. The selected byte is placed onto the LSB of the data path. That is, data memory and registers are organized as two parallel byte-wide entities with shared (word) address decode but separate write lin es. Data byt e writes o nly writ e to the corresponding side of the array or register that matches the byte address.
®
MCU
All word accesses m ust be al igned to an even a ddress. Misaligned word data fetches are not supported, so care must be taken when mixing byte and word operations, or translating from 8-bit MCU code. If a misaligned read or w rite is attemp ted, an addres s error trap is generated. If the error occurred on a read, the instruction underway is com pleted. If the error o ccurred on a write, the instruction is executed but the write doe s not occur. In either case, a trap is then executed, allowing the system and/or use r appli cation to ex amine the machine state prior to execution of the address Fault.
All byte loads into any W register are loaded into the Least Significan t B yte . T he Most Significant By te is n ot modified.
A sign-extend instruction (SE) is provided to allow user applications to translate 8-bit signed data to 16-bit signed values. Alternatively, for 16-bit unsigned data, user applications can clear the MSB of any W register by executing a zero-extend (ZE) instruction on the appropriate address.

3.2.3 SFR SPACE

The first 2 Kbytes of the Near Data S pa ce, from 0x000 0 to 0x07FF, is primarily occupied by Special Function Registers (SFRs). These are used by the dsPIC33FJ12MC201/2 02 core and p eripheral m odules for controlling the operation of the device.
SFRs are distributed among the modules that they control, and are generall y grouped together by mod ule. Much of the SFR space contains unused addresses; these are read as ‘0’.
Note: The actual set of peripheral features and
interrupts varies by the device. Refer to the corresponding device tables and pinout diagrams for device-specific information.

3.2.4 NEAR DATA SPACE

The 8-Kbyte area between 0x0000 and 0x1FFF is referred to as t he near data space. Locations in this space are directly addressable via a 13-bit absolute address field within all memory direct instructions. Additionally, the whole data spa ce is addressa ble using MOV instructions, which support Memory Direct Addressing mode with a 16-bit address field, or by using Indirect Addressing mode using a working register as an address pointer.
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 25
dsPIC33FJ12MC201/202
0x0000
0x07FE
0x0BFE
0xFFFE
LSB
Address
16 bits
LSbMSb
MSB
Address
0x0001
0x07FF
0xFFFF
Optionally Mapped into Program Memory
0x0801
0x0800
0x0C00
2 Kbyte SFR Space
1 Kbyte SRAM Space
0x8001
0x8000
SFR Space
X Data RAM (X)
X Data
Unimplemented (X)
Y Data RAM (Y)
0x09FE 0x0A00
0x09FF 0x0A01
0x0BFF 0x0C01
0x1FFF
0x1FFE
0x2001
0x2000
8 Kbyte Near Data Space
FIGURE 3-3: DATA MEMORY MAP FOR dsPIC33FJ12MC201/202 DEVICES WITH 1 KB RAM
DS70265C-page 26 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202

3.2.5 X AND Y DATA SPACES

The core has two data spaces, X and Y. These data spaces can be considered either separate (for some DSP instructions), or as one unified linear address range (for MCU instructions). The data spaces are accessed using two Address Generation Units (AGUs) and separate data paths. This feature allows certain instructions to concu rrently fe tch two w ords from RAM , thereby enabling efficient execution of DSP algorithms such as Finite Impulse Response (FIR) filtering and Fast Fourier Transform (FFT).
The X data space is used by all instructions and supports all addressing modes. X data space has separate read and write data buses. The X read data bus is the read data path for all instructions that view data space as combined X and Y address space. It is also the X dat a prefe tch p ath for the dual operand DSP instructions (MAC class).
The Y data space is used in concert with the X data space by the MAC class of instructions (CLR, ED, EDAC, MAC, MOVSAC, MPY, MPY.N, and MSC) to provide two concurrent data read paths.
Both the X and Y data spaces support Modulo Addressing mode for all instructions, subject to addressing mode restrictions. Bit-Reversed Addressing mode is only supported for writes to X data space.
All data memory writes, including in DSP instructions, view data space as combined X and Y address space. The boundary between the X and Y data spaces is device-dependent and is not user-programmable.
All effective addresses are 16 bits wide and point to bytes within the data space. Therefore, the data space address range is 64 Kbyte s, or 32K words, alth ough the implemented memory locations vary by device.
© 2008 Microchip Technology Inc. Preliminary DS70265C-page 27
DS70265C-page 28 Preliminary © 2008 Microchip Technology Inc.
dsPIC33FJ12MC201/202
TABLE 3-1: CPU CORE REGISTERS MAP
SFR Name
WREG0 0000 Working Register 0 WREG1 0002 Working Register 1 WREG2 0004 Working Register 2 WREG3 0006 Working Register 3 WREG4 0008 Working Register 4 WREG5 000A W orking Register 5 WREG6 000C Working Register 6 WREG7 000E W orking Register 7 WREG8 0010 Working Register 8 WREG9 0012 Working Register 9 WREG10 0014 W or king Re gister 10 WREG11 0016 Working Register 11 WREG12 0018 W or king Re gister 12 WREG13 001A Working Register 13 WREG14 001C Working Re gister 14 WREG15 001E Working Register 15 SPLIM 0020 Stack Pointer Limit Register ACCAL 0022 Accumulator A Lo w Word Register ACCAH 0024 Accumulator A High Word Register ACCAU 0026 Accumulator A Up pe r Word Register ACCBL 0028 Accumulator B Lo w Word Register ACCBH 002A Accumulator B High Word Register ACCBU 002C Accumulator B Upper Word Register PCL 002E Program Co unter Lo w Word Register PCH 0030 Program Counter High Byte Register TBLP A G 0032 Table Page Address Pointer Register PSVPAG 0034 Program Memo ry V isibi lity Pa ge Ad dre ss Poi nter Reg iste r RCOUNT 0036 Repeat Loop C o unter Reg ister DCOUNT 0038 DCOUNT<15:0> xxxx DOSTARTL 003A DOSTARTL<15:1> 0xxxx DOSTARTH 003C DOENDL 003E DOENDL<15:1> 0xxxx DOENDH 0040 SR 00 42 OA OB SA SB OAB SAB DA DC IPL2 IPL1 IPL0 RA N OV Z C CORCON 0044 US EDT DL<2:0> MODCON 0046 XMODEN YMODEN
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
SFR
Addr
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SATA SATB SATDW ACCSAT IPL3 PS V RND IF
BWM<3:0> YWM<3:0> XWM<3:0> 0000
DOSTARTH<5:0> 00xx
DOENDH 00xx
All
Resets
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0800 xxxx 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 xxxx
0000 0020
Loading...
+ 252 hidden pages