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, dsPIC,
K
logo, rfPIC and UNI/O are registered trademarks of
Microchip Technology Incorporated in the U.S.A. and other
countries.
FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,
MXDEV, MXLAB, SEEVAL 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, HI-TIDE, In-Circuit Serial
Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code
Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,
PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance,
TSHARC, UniWinDriver, 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.
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
DS70591C-page 2Preliminary 2010 Microchip Technology Inc.
Page 3
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610
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 1 word/1 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
Direct Memory Access (DMA):
• 4-channel hardware DMA
• 1 Kbyte dual ported DMA buff er area (DMA RAM)
to store data transferred via DMA:
- Allows data transfer between RAM and a
peripheral while CPU is executing code (no
cycle steali ng)
• Most peripherals support DMA
Digital I/O:
• Up to 85 programmable digital I/O pi ns
• Wake-up/Interrupt-on-Change for up to 24 pins
• Output pins can drive voltage from 3.0V to 3.6V
• Up to 5V output with open drain configuration
• 5V tolerant digital input pins
• 16 mA source/sink on all PWM pins
On-Chip Flash and SRAM:
• Flash program memory (up to 64 Kbytes)
• Data SRAM (up to 8 Kbytes)
• Boot and General Security for program Flash
Peripheral Features:
• Timer/Counters, up to five 16-bit timers
- Can pair up to make one 32-bit timer
• 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 four channels):
- Single or Dual 16-bit Compare mode
- 16-bit Glitchless PWM mode
• 4-wire SPI (up to two modules):
- Framing supports I/O interface to simpl e
codecs
- 1-deep FIFO buffer
- Supports 8-bit and 16-bit data
- Supports all serial clock formats and
sampling modes
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610
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.
TABLE 1:dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610 CONTROLLER
2.0Guidelines for Getting Started with 16-bit Digital Signal Controllers ..........................................................................................25
5.0Flash Program Memory............................................................................................................................................................ 109
23.0 High-Speed Analog Comparato r......................... .................................................... ................................................................. 329
24.0 Special Features...................................................................................................................................................................... 333
25.0 Instruction Set Summary .......................................................................................................................................................... 341
26.0 Development Support............................................................................................................................................................... 349
Appendix A: Migrating from dsPIC33FJ06GS101/X02 and dsPIC33FJ16GSX02/X04 to dsPIC33FJ32GS406/606/608/610
and dsPIC33FJ64GS406/606/608/610 Devices ................................................................................................................................ 403
Index ................................................................................................................................................................................................. 409
The Microchip Web Site.............. ....................................................................................................................................................... 415
Customer Change Notification Service .............................................................................................................................................. 415
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
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.
DS70591C-page 18Preliminary 2010 Microchip Technology Inc.
Page 19
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
1.0DEVICE OVERVIEW
Note:This data sheet summarizes the features
of the dsPIC33FJ32GS406/606/608/610
and dsPIC33FJ64GS406/606/608/610
families of devic es . It is not intended to be
a comprehensive reference source. To
complement the information in this data
sheet, refer to the “dsPIC33F/PIC24HFamily Reference Manual”. Please see
the Microchip web site (www.microchip.com) for the latest dsPIC3 3F/PIC 24H
Family Reference Manual sections.
This document cont a ins dev ice -specific information for
the following dsPIC33F Digital Signal Controller (DSC)
devices:
• dsPIC33FJ32GS406
• dsPIC33FJ32GS606
• dsPIC33FJ32GS608
• dsPIC33FJ32GS610
• dsPIC33FJ64GS406
• dsPIC33FJ64GS606
• dsPIC33FJ64GS608
• dsPIC33FJ64GS610
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 families of devices
contain extensiv e Di gital Signal Processo r (DSP) fun ctionality 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 dsPIC33FJ32GS406/
606/608/610 and dsPIC33FJ64GS406/606/608/610
devices. Table 1-1 lists the functio ns of th e various pins
shown in the pinout diagrams.
Note:Not all pins or features are implemented on all device pinout configurations. See pinout diagrams for the specific pins and features
present on each device.
ECAN1
QEI1,2
PORTD
PORTE
PORTF
PORTG
DMA
DMA
RAM
Controller
16
16
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
FIGURE 1-1:BLOCK DIAGRAM
DS70591C-page 20Preliminary 2010 Microchip Technology Inc.
Page 21
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
TABLE 1-1:PINOUT I/O DESCRIPTIONS
Pin Name
AN0-AN23IAnalogAnalog input channels
CLKI
CLKO
OSC1
OSC2
SOSCI
SOSCO
CN0-CN23ISTChange notification inputs. Can be software programmed for internal
C1RX
C1TX
IC1-IC4ISTCapture inputs 1/4
INDX1, INDX2, AINDX1
QEA1, QEA2, AQEA1
QEB1, QEB2, AQEB1
UPDN1
OCFA
OCFB
OC1-OC4
INT0
INT1
INT2
INT3
INT4
RA0-RA15I/OSTPORTA is a bidirectional I/O port
RB0-RB15I/OSTPORTB is a bidirectional I/O port
RC0-RC15I/OSTPORTC is a bidirectional I/O port
RD0-RD15I/OSTPORTD is a bidirectional I/O port
RE0-RE9I/OSTPORTE is a bidirectional I/O port
RF0-RF13I/OSTPORTF is a bidirectional I/O port
RG0-RG15I/OSTPORTG is a bidirectional I/O port
T1CK
T2CK
T3CK
T4CK
T5CK
Legend: CMOS = CMOS compatible input or outputAnalog = Analog inputI = Input
ST = Schmitt Trigger input with CMOS levelsP = PowerO = Output
TTL = Transistor-Transistor Logic
Pin
Type
I/O
O
O
O
Buffer
Type
IOST/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.
I
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.
Quadrature Encoder Index Pulse input.
Quadrature Encoder Phase A input in QEI mode.
Auxiliary Timer External Clock/Gate input in Timer mode.
Quadrature Encoder Phase A input in QEI mode.
Auxiliary Timer External Clock/Gate input in Timer mode.
Position Up/Down Counter Direction State.
Compare Fault A input (for Compare Channels 1 and 2)
Compare Fault B input (for Compare Channels 3 and 4)
DACOUT0—DAC output voltage
EXTREFIAnalogExternal Voltage Reference Input for the Reference DACs
REFCLK0—REFCLK output signal is a postscaled derivative of the system clock
Legend: CMOS = CMOS compatible input or outputAnalog = Analog inputI = Input
ST = Schmitt Trigger input with CMOS levelsP = PowerO = Output
TTL = Transistor-Transistor Logic
I
O
I
O
I
O
I
O
I/O
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
I
I
I
I
I
I
I
I
I
I
I
I
I
ST
—
ST
—
ST
—
ST
—
ST
ST
—
ST
ST
ST
—
ST
ST
ST
ST
ST
TTL
TTL
TTL
—
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
Analog
UART1 clear to send
UART1 ready to send
UART1 receive
UART1 transmit
UART2 clear to send
UART2 ready to send
UART2 receive
UART2 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 SPI2
SPI2 data in
SPI2 data ou t
SPI2 slave synchronization or frame pulse I/O
Synchronous serial clock input/output for I2C1
Synchronous serial data input/output for I2C1
Synchronous serial clock input/output for I2C2
Synchronous serial data input/output for I2C2
JTAG Test mode select pin
JTAG test clock input pi n
JTAG test data input pin
JTAG test data output pin
Comparator 1 Channel A
Comparator 1 Channel B
Comparator 1 Channel C
Comparator 1 Channel D
Comparator 2 Channel A
Comparator 2 Channel B
Comparator 2 Channel C
Comparator 2 Channel D
Comparator 3 Channel A
Comparator 3 Channel B
Comparator 3 Channel C
Comparator 3 Channel D
Comparator 4 Channel A
Comparator 4 Channel B
Comparator 4 Channel C
Comparator 4 Channel D
DS70591C-page 22Preliminary 2010 Microchip Technology Inc.
Page 23
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
DDP—Positive supply for peripheral logic and I/O pins
V
VCAP/VDDCOREP—CPU logic filter capacitor connection
VSSP—Ground reference for logic and I/O pins
Legend: CMOS = CMOS compatible input or outputAnalog = Analog inputI = Input
ST = Schmitt Trigger input with CMOS levelsP = PowerO = Output
TTL = Transistor-Transistor Logic
I
I
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
I/O
I
I/O
I
I/O
I
I/PSTMaster Clear (Reset) input. This pin is an active-low Reset to the
ST
ST
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
ST
ST
ST
ST
ST
ST
Fault Inputs to PWM Module
External synchronization signal to PWM Master Time Base
PWM Master Time Base for external device synchronization
PWM1 Low output
PWM1 High output
PWM2 Low output
PWM2 High output
PWM3 Low output
PWM3 High output
PWM4 Low output
PWM4 High output
PWM5 Low output
PWM5 High output
PWM6 Low output
PWM6 High output
PWM7 Low output
PWM7 High output
PWM8 Low output
PWM8 High output
PWM9 Low output
PWM9 High output
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
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
NOTES:
DS70591C-page 24Preliminary 2010 Microchip Technology Inc.
Page 25
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
2.0GUIDELINES FOR GETTING
STARTED WITH 16-BIT
DIGITAL SIGNAL
CONTROLLERS
Note 1: This data sheet summarizes the features
of the dsPIC33FJ32GS406/606/608/610
and dsPIC33FJ64GS406/606/608/610
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/PIC24HFamily Reference Manual”. Please see
the Microchip web site
(www.microchip.com) for the latest
74dsPIC33F/PIC24H Family Reference
Manual sections.
2: Some registers and associated bits
described in this section may not be available on all devices. Refer to Section 4.0“Memory Organization” in this data
sheet for device-specific register and bit
information.
2.1Basic Connection Requirements
Getting started with the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 family of 16-bit
Digital Signal Controllers (DSC) requires attention to a
minimal set of device pin connections before
proceeding with development. The following is a list of
pin names, which must always be connected:
DD and VSS pins
•All V
(see Section 2.2 “Decoupling Capacitors”)
•All AV
•V
•MCLR pin
• PGECx/PGEDx pins used for In-Circuit Serial
• OSC1 and OSC2 pins when external oscillator
DD and AVSS pins (regardless if ADC module
is not used)
(see Section 2.2 “Decoupling Capacitors”)
CAP/VDDCORE
(see Section 2.3 “Capacitor on Internal Voltage
Regulator (V
(see Section 2.4 “Master Clear (MCLR) Pin”)
Programming™ (ICSP™) and debugging purposes
(see Section 2.5 “ICSP Pins”)
source is used
(see Section 2.6 “External Oscillator Pins”)
CAP/VDDCORE)”)
2.2Decoupling Capacitors
The use of decoupling capacitors on every pair of
power supply pins, such as V
SS is required.
AV
Consider the following criteria when using decoupling
capacitors:
• Value and type of cap a cito r: Reco mm endation
of 0.1 µF (100 nF), 10-20V. This capacitor should
be a low-ESR and have resonance frequency in
the range of 20 MHz and higher. It is
recommended that ceramic c apacitors be used.
• Placement on the printed circuit board: The
decoupling capacitors should be placed as close
to the pins as possible. It is recommended to
place the capacitors on the same side of the
board as the device. If space is constricted, the
capacitor can be placed on another layer on the
PCB using a via; however, ensure that the trace
length from the pin to the capacitor is within
one-quarter inch (6mm) in length.
• Handling high frequency noise: If the board is
experiencing high frequency noise, upward of
tens of MHz, add a second ceramic-type capacitor in parallel to the above described decoupling
capacitor. The value of the second capacitor can
be in the range of 0.01 µF to 0.001 µF. Place this
second capacitor next to the primary decoupling
capacitor. In high-speed circuit designs, consider
implementing a decade pair of capacitances as
close to the power and ground pins as possible.
For example, 0.1 µF in parallel with 0.001 µF.
• Maximizing performance: On the board layout
from the power supply circuit, run the power and
return traces to the decoupling cap acito rs firs t,
and then to the device pins. This ensures that the
decoupling capacitors are first in the power chain.
Equally important is to keep the trace length
between the capacitor and the power pins to a
minimum, thereby reducing PCB track
inductance.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
dsPIC33F
VDD
VSS
VDD
VSS
VSS
VDD
AVDD
AVSS
VDD
VSS
0.1 µF
Ceramic
0.1 µF
Ceramic
0.1 µF
Ceramic
0.1 µF
Ceramic
C
R
V
DD
MCLR
0.1 µF
Ceramic
VCAP/VDDCORE
10
R1
Note 1: R 10 k is recommended. A suggested
starting value is 10 k. Ensure that the
MCLR
pin VIH and VIL specifications are met.
2: R1 470 will limit any current flowing into
MCLR
from the external capacitor C, in the
event of MCLR
pin breakdown, due to
Electrostatic Discharge (ESD) or Electrical
Overstress (EOS). Ensure that the MCLR
pin
V
IH and VIL specifications are met.
C
R1
R
V
DD
MCLR
dsPIC33F
JP
FIGURE 2-1:RECOMMENDED
MINIMUM CONNECTION
2.2.1TANK CAPACITORS
On boards with power traces running longer than six
inches in length, it is suggested to use a tank capacitor
for integrated circuits including DSCs to supply a local
power source. The value of the tank capacitor should
be determined based on the trace resistance that connects the power supply source to the device, and the
maximum current drawn by the device in the application. In other words, select the tank capacitor so that it
meets the ac ceptable volta ge sag at th e device . T ypical
values range from 4.7 µF to 47 µF.
2.4Master Clear (MCLR) Pin
The MCLR pin provides for two specific device
functions:
• Device Reset
• Device programming and debugging.
During device programming and debugging, the
resistance and capacitance that can be added to the
pin must be considered. Device programmers and
debuggers drive the MCLR
specific voltage levels (V
transitions must not be adversely affected. Therefore,
specific values of R and C will need to be adjusted
based on the application and PCB requirements.
For example, as shown in Figure 2-2, it is
recommended that the capacitor C, be isolated from
the MCLR
pin during programming and debugging
operations.
Place the components shown in Figure2-2 within
one-quarter inch (6mm) from the MCLR
FIGURE 2-2:EXAMPLE OF MCLR PIN
CONNECTIONS
pin. Consequently,
IH and VIL) and fast signal
pin.
2.3Capacitor on Internal Voltage
Regulator (V
A low-ESR (< 5 Ohms) capacitor is required on the
CAP/VDDCORE pin, which is used to stabilize the
V
voltage regulator output voltage. The V
pin must not be connected to VDD, and must have a
capacitor bet ween 4.7µF and 10 µF, 16V connected to
ground. The type can be ceramic or tantalum. Refer to
Section 27.0 “Electrical Characteristics” for
additional information.
The placement of this capacitor should be close to the
CAP/VDDCORE. It is recommended that the trace
V
length not exceed one-quarter inch (6 mm). Refer to
Section 24.2 “On-Chip Voltage Regulator” for
details.
DS70591C-page 26Preliminary 2010 Microchip Technology Inc.
CAP/VDDCORE)
CAP/VDDCORE
Page 27
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
13
Main Oscillator
Guard Ring
Guard Trace
Secondary
Oscillator
14
15
16
17
18
19
20
2.5ICSP Pins
The PGECx and PGEDx pins are used for In-Circuit
Serial Programming™ (ICSP™) and debugging purposes. It is recommended to keep the trace length
between the ICSP connec tor an d th e ICSP pi ns on th e
device as short as possible. If the ICSP connector is
expected to experience an ESD event, a serie s resistor
is recommended, with the value in the range of a few
tens of Ohms, not to exceed 100 Ohms.
Pull-up resistors, series diodes, and capacitors on the
PGCx and PGDx pins are not recommended as they
will interfere with the programmer/debugger communications to the device. If such discrete components are
an application requirement, they should be removed
from the circuit during programming and debugging.
Alternatively, refer to the AC/DC characteristics and
timing requirements information in the respective
device Flash programming specification for information
on capacitive loading limits and pin input voltage high
IH) and input low (VIL) requirements.
(V
Ensure that the “Communication Channel Select” (i.e.,
PGECx/PGEDx pins) programmed into the device
matches the physical connections for the ICSP to
MPLAB
ICE™.
For more information on ICD 2, ICD 3, and REAL ICE
connection requirements, refer to the following
documents that are available on the Microchip web
site.
• “MPLAB
• “Using MPLAB
• “MPLAB
• “Using MPLAB® ICD 3” (poster) DS51765
• “MPLAB® ICD 3 Design Advisory” DS51764
• “MPLAB
• “Using MPLAB
®
ICD 2, MPLAB® ICD 3, or MPLAB® REAL
®
ICD 2 In-Circuit Debugger User's
Guide” DS51331
®
®
®
ICD 2” (poster) DS51265
ICD 2 Design Advisory” DS51566
REAL ICE™ In-Circuit Debugger
User's Guide” DS51616
®
REAL ICE™” (poster) DS51749
2.6External Oscillator Pins
Many DSCs have options for at least two oscillators: a
high-frequency primary oscillator and a low-frequency
secondary oscillator (refer to Section 9.0 “OscillatorConfiguration” for details).
The oscillator circuit should be placed on the same
side of the board as the device. Also, place the
oscillator circuit close to the respective oscillator pins,
not exceeding one-half inch (12 mm) distance
between them. The load capacitors should be placed
next to the oscillator itself, on the same side of the
board. Use a grounded copper pour around the
oscillator circuit to isolate them from surrounding
circuits. The grounded copper pour should be routed
directly to the MCU ground. Do not run any signal
traces or power traces inside the ground pour. Also, if
using a two-sided board, avoid any traces on the
other side of the board where the crystal is placed. A
suggested layout is shown in Figure 2-3.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
2.7Oscillator Value Conditions on
Device Start-up
If the PLL of the target device is enabled and
configured for the device start-up oscillator, the
maximum oscil lator source freque ncy must be limit ed
to 4 MHz < F
start-up conditions. This means that if the external
oscillator frequency is outside this range, the
application must start-up in the FRC mode first. The
default PLL settings after a POR with an oscillator
frequency outside this range will violate the device
operating speed.
Once the device powers up, the application firmware
can initialize the PLL SFR s, CLKDIV, and PLLDBF to a
suitable value, and then perform a clock switch to the
Oscillator + PLL clock source. Note that clock switching
must be enabled in the device Configuration Word.
IN < 8 MHz to comply with device PLL
2.8Configuration of Analog and
Digital Pins During ICSP
Operations
If MPLAB ICD 2, ICD 3, or R EAL ICE i s sele cted as a
debugger, it automatical ly ini tia liz es al l of the A/D input
pins (ANx) as “digital” pins, by setting all bits in the
ADPCFG and ADPCFG2 registers.
The bits in the re gister s that co rrespond to the A/D pin s
that are initialized by MPLAB ICD 2, ICD 3, or REAL
ICE, must not be cleared by the user application
firmware; otherwise, communication errors will result
between the debugger and the device.
If your application needs to use certain A/D pins as
analog input pins during the debug session, the user
application must clear the corresponding bits in the
ADPCFG and ADPCFG2 registers during initialization
of the ADC module.
When MPLAB ICD 2, ICD 3, or REAL ICE is used as a
programmer, the user application firmware must
correctly configure the ADPCFG and ADPCFG2
registers. Automatic initialization of these registers is
only done during debugger operation. Failure to
correctly configure the register(s) will result in all A/D
pins being recogn ized as a nalog inpu t pins , res ulting in
the port value being read as a logic '0', which may
affect user application functionality.
2.9Unused I/Os
Unused I/O pins s hould b e config ured as outputs and
driven to a logic-low state.
Alternatively, connect a 1k to 10k resistor to V
unused pins and drive the output to logic low.
SS on
2.10Typical Application Connection
Examples
Examples of typical applicati on connecti ons are shown
in Figure 2-4 through Figure 2-11.
DS70591C-page 28Preliminary 2010 Microchip Technology Inc.
Page 29
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
DS70591C-page 34Preliminary 2010 Microchip Technology Inc.
k
4
ADC
Channel
PWM
UART
RX
PWM
PWM
IZVT
VHV_BUS
VOUT
Isolation
Barrier
ADC
Channel
PWM
PWM
PWM
FET
Driver
FET
Driver
FET
Driver
dsPIC33FJ64GS610
k
6
Analog
Comp.
UART
TX
k
10
k
7
k
9
k
8
k
11
k
5
PWM
PWM
ADC
Channel
Analog Comparator
Analog Comparator
ADC Channel
Analog Comparator
ADC
Channel
PWM
PWM
PWM
PWM
PWM
PWM
3.3V Output
5V Output
I
5V
12V Input
FET
Driver
FET
Driver
FET
Driver
FET
Driver
I
3.3V_3
I
3.3V_2
I
3.3V_1
dsPIC33FJ64GS610
VAC
IPFC
VHV_BUS
|VAC|
k
1
k
2
k
3
FET Driver
ADC
Ch.
ADC
Ch.
PWM
Output
ADC
Ch.
PFC Stage
3.3V Multi-Phase Buck Stage
ZVT with Current Doubler Synchronous Rectifier
5V Buck Stage
Secondary Controller
Primary Controller
FIGURE 2-11:AC-TO-DC POWER SUPPLY WITH PFC AND THREE OUTPUTS (12V, 5V, AND 3.3V)
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
Page 35
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
3.0CPU
Note 1: This data sheet summarizes the features
of the dsPIC33FJ32GS406/606/608/610
and dsPIC33FJ64GS406/606/608/610
families of devi ces. It is not i ntended to be
a comprehensive reference source. To
complement the information in this data
sheet, refer to Section 2. “CPU”
(DS70204) in the “dsPIC33F/PIC24HFamily Reference Manual”, which is available from the Microchip web site
(www.microchip.com).
2: Some registers and associated bits
described in this section may not be available on all devices. Refer to Section 4.0“Memory Organization” in this data
sheet for device-specific register and bit
information.
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 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 from device to
device. A single-cycle instruction prefetch mechanism
is used to help maintain throughput and provides predictable execution. All instructions execute in a single
cycle, with the ex ception of i nstructions that change th e
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 dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 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 sixteenth
working register (W15) operates as a software Stack
Pointer (SP) for interrupts and calls.
There are two classes of instruction in the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 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,
the dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 is capable of executing a data (or program data) memory read, a working 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 3-1,
and the programmer’s model for the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 is shown in
Figure 3-2.
3.1Data 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) register. The
program-to-data space mapping feature lets any
instruction access program space as if it were data
space.
3.2DSP Engine Overview
The DSP engine features a high-speed, 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
instructions operate seamlessly with all other
instructions and have been designed for optimal realtime performance. The MAC i nstruc tion an d other a ssociated instructions can concurrently fetch two data
operands from memory while multiplying two W
registers and accumulating and optionally saturating
the result in the same cycle. This instruction
functionality requires that the RAM data space be split
for these instructions and linear for all others. Data
space partitioning is achieved in a transparent and
flexible manner through dedicating certain working
registers to each address space.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
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
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
3.3Special MCU Features
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 features a 17-bit by
17-bit single-cycl e multiplier that is shared by both the
MCU ALU and DSP engine. Th e multiplier can pe rform
signed, unsigned and mixed sign mult iplicatio n. Using a
17-bit by 17-bit multiplier for 16-bit by 16-bit multiplication
not only allows you to perf orm mixed sig n multip licati on,
it also achieves acc urate results for special operations,
such as (-1.0) x (-1.0 ).
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 supports 16/16 and
32/16 divide operat ions, both fractional and intege r. 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.
FIGURE 3-1:dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610 CPU
CORE BLOCK DIAGRAM
DS70591C-page 36Preliminary 2010 Microchip Technology Inc.
Page 37
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
3.4CPU Control Registers
REGISTER 3-1:SR: CPU STATUS REGISTER
R-0R-0R/C-0R/C-0R-0R/C-0R -0R/W-0
OAOBSA
(1)
bit 15bit 8
SB
(1)
OABSAB
(1,4)
DADC
R/W-0
(2)
IPL<2:0>
R/W-0
(3)
(2)
R/W-0
(3)
R-0R/W-0R/W-0R/W-0R/W-0
RANOVZC
bit 7bit 0
Legend:
C = Clearable bitR = Readable bitU = Unimplemented bit, read as ‘0’
S = Settable bitW = Writable bit-n = Value at POR
‘1’ = Bit is set‘0’ = Bit is clearedx = Bit is unknown
bit 15OA: Accumulator A Overflow Status bit
1 = Accumul ator A overflowed
0 = Accumulator A has not overflowed
bit 14OB: Accumulator B Overflow Status bit
1 = Accumul ator B overflowed
0 = Accumulator B has not overflowed
bit 13SA: Accumulator A Saturation ‘Sticky’ Status bit
(1)
1 = Accumulator A is saturated or has been saturated at some time
0 = Accumulator A is not satura ted
bit 12SB: Accumulator B Saturation ‘Sticky’ Status bit
(1)
1 = Accumulator B is saturated or has been saturated at some time
0 = Accumulator B is not satura ted
bit 11OAB: OA || OB Combined Accumulator Overflow Status bit
1 = Accumulators A or B have overflowed
0 = Neither Accumulators A or B have overflowed
bit 10SAB: SA || SB Combined Accumulator ‘Sticky’ Status bit
(1,4)
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
bit 9DA: DO Loop Active bit
1 = DO loop in progress
0 = DO loop not in progress
bit 8DC: MCU ALU Half Carry/Borrow bit
1 = A carry-out from the 4th low-order bit (for byte-sized dat a) or 8th low-orde r bit (for word-sized dat a)
of the result occurred
0 = No carry-out from the 4th low-order bit (for byte-sized data) or 8th low-order bit (for word-sized
data) of the result occurred
Note 1: This bit can be read or cleared (not set).
2: The IPL<2:0> bits are conca ten ated with the IPL<3 > bi t (CO RCON<3>) to form the CPU Inte rrup t Prio rity
Level (IPL ). Th e val ue i n pare nth ese s ind ica tes t he I PL i f IPL <3> = 1. User interrupts are disabled when
IPL<3> = 1.
3: The IPL<2:0> Sta tus bit s are read -on ly w hen NSTDIS = 1 (INTCON1<15>).
4: Clearing this bit will clear SA and SB.
DS70591C-page 38Preliminary 2010 Microchip Technology Inc.
Page 39
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
REGISTER 3-1:SR: CPU STATUS REGISTER (CONTINUED)
bit 7-5IPL<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 Priority 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 4RA: REPEAT Loop Active bit
1 = REPEAT loop in prog ress
0 = REPEAT loop not in pr ogress
bit 3N: MCU ALU Negative bit
1 = Result was negative
0 = Result was non-negative (zero or positive)
bit 2OV: 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 1Z: 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 0C: 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 conca ten ated with the IPL<3 > bi t (CO RCON<3>) to form the CPU Inte rrup t Prio rity
Level (IPL ). Th e val ue i n pare nth ese s ind ica tes t he I PL i f IPL <3> = 1. User interrupts are disabled when
IPL<3> = 1.
3: The IPL<2:0> Sta tus bit s are read -on ly w hen NSTDIS = 1 (INTCON1<15>).
4: Clearing this bit will clear SA and SB.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
REGISTER 3-2:CORCON: CORE CONTROL REGISTER
U-0U-0U-0R/W-0R/W-0R-0R-0R-0
———USEDT
(1)
DL<2:0>
bit 15bit 8
R/W-0R/W-0R/W-1R/W-0R/C-0R/W-0R/W-0R/W-0
SATASATBSATDWACCSATIPL3
(2)
PSVRNDIF
bit 7bit 0
Legend:C = Clearable bit
R = Readable bitW = Writable bit-n = Value at POR‘1’ = Bit is set
0’ = Bit is cleared‘x = Bit is unknownU = Unimplemented bit, read as ‘0’
bit 15-13Unimplemented: Read as ‘0’
bit 12US: DSP Multiply Unsigned/Signed Control bit
1 = DSP engine multiplies are unsigned
0 = DSP engine multiplies are signed
bit 11EDT: Early DO Loop Termination Control bit
(1)
1 = Terminate executing DO loop at end of current loop iteration
0 = No effect
bit 10-8DL<2:0>: DO Loop Nesting Level Status bits
111 = 7 DO loops active
•
•
•
001 = 1 DO loop active
000 = 0 DO loops active
bit 7SATA: ACCA Saturation Enable bit
1 = Accumulator A saturation enabled
0 = Accumulator A saturation disabled
bit 6SATB: ACCB Saturation Enable bit
1 = Accumulator B saturation enabled
0 = Accumulator B saturation disabled
bit 5SATDW: Data Space Write from DSP Engine Saturation Enable bit
1 = Data space write saturation enabled
0 = Data space write saturation disabled
bit 4ACCSAT: Accumulator Saturation Mode Select bit
bit 0IF: 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.
DS70591C-page 40Preliminary 2010 Microchip Technology Inc.
Page 41
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
3.5Arithmetic Logic Unit (ALU)
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 ALU is 16 bits wide
and is capable of addition, subtraction, bit shifts and logic
operations. Unless otherwise mentioned, arithmetic
operations are 2’s complemen t in nat ure. D epending on
the operation, the ALU can affect the values of the Carry
(C), Zero (Z), Negat ive (N), Overflow (OV) an d Digit Carry
(DC) Status bits in the SR register. The C and DC Status
bits operate as Borrow
for subtra c ti o n op e r a ti o ns .
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 “16-bit MCU and DSC Programmer’s Ref-erence Manual” (DS70157) for information on the SR
bits affected by each instruction.
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 CPU incorporates
hardware support for both multiplication and division. This
includes a dedicated hardware multiplier and support
hardware for 16-bit-divisor division.
3.5.1MULTIPLIER
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
and Digit Borrow bits, respectively,
3.5.2DIVIDER
The divide block support s 32-bit/16-bit and 16-b it/16-bit
signed and unsig ne d in teg er d iv ide ope rati ons with the
following data sizes:
• 32-bit signed/16-bit signed divide
• 32-bit unsigned/16-bit unsigned divide
• 16-bit signed/16-bit signed divide
• 16-bit unsigned/16-bit unsigned divide
The quotient fo r all divid e instru ctions ends up in W0 and
the remainder in W1. 16-bit signed and unsigned DIV
instructions can specify an y W register for bo th the 16-bit
divisor (Wn) and any W register (aligned) pair
(W(m + 1):Wm) for the 32-bit dividend. The divide
algorithm t akes one cycl e per bit of divisor , so bo th 32-bit/
16-bit and 16-bit/16-bit instructions take the same
number of cycles to execute.
3.6DSP 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 dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 is a single-cycle
instruction flow architecture; therefore, concurrent operation of the DSP engine wi th MCU instruction f low is not
possible. However, some MCU ALU and DSP engine
resources can be used concurrently by the same instruction (for example, ED, EDAC).
The DSP engine can also perform inherent
accumulator-to-accu mu lator operations that require no
additional 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 3-3.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
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
TABLE 3-1:DSP INSTRUCTIONS SUMMARY
InstructionAlgebraic OperationACC Write Back
CLRA = 0
EDA = (x – y)2No
EDACA = A + (x – y)2No
MACA = A + (x * y)Yes
MACA = A + x2No
MOVSACNo change in AYes
MPYA = x * yNo
MPYA = x 2No
MPY.NA = – x * yNo
MSCA = A – x * yYes
FIGURE 3-3:DSP ENGINE BLOCK DIAGRAM
Yes
DS70591C-page 42Preliminary 2010 Microchip Technology Inc.
Page 43
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
3.6.1MULTIPLIER
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
Significant bit (MSb) is defined as a sign bit. Th e 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
.
3.6.2DATA 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 preaccumulation 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.
3.6.2.1Adder/Subtracter, Overflow and
Saturation
The adder/subtracter is a 40-bit adder with an optional
zero input into one si de, and either true 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 7.0“Interrupt Controller”). This allows the us er applica tion to take immediate action, for example, to correct
system gain.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
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 thus, indic ate that a ca tastrophic overflow has o cc urred . If th e CO VTE bi t in th e
INTCON1 register is set, SA and SB bits will generate
an arithmetic warning trap when saturation is disabled.
The Overfl ow and Saturation Status bits c an 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 un til
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 negative 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 erfl ow ca n i nitiate a trap excep tio n.
3.6.3ACCUMULATOR ‘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 Direct:
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
accumulator are writte n into the addr ess pointed
to by W13 as a 1.15 fraction. W13 is then
incremented by 2 (for a word write).
3.6.3.1Round 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 roundi ng zero-exten ds bit 15 of t he accumulator and adds it to the A CCxH word (bits 1 6 through
31 of the accumulator).
• If the ACCxL word (bits 0 through 15 of the
accumulator) is between 0x8000 and 0xFFFF
(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
succession of random rounding operations, the 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 3.6.3.2 “Data Space Write Saturation”). For
the MAC class of instructions, the accumulator writeback 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.
DS70591C-page 44Preliminary 2010 Microchip Technology Inc.
Page 45
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
3.6.3.2Data 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 tested for overflow 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 dat a les s tha n 0x FF8000, dat a w ritten 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.
3.6.4BARREL 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 requires 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.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
NOTES:
DS70591C-page 46Preliminary 2010 Microchip Technology Inc.
Page 47
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
Reset Address
0x000000
0x0000FE
0x000002
0x000100
Device Configuration
User Program
Flash Memory
0x005800
0x0057FE
(11008 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 Vector Table
Reserved
Interrupt Vector Table
dsPIC33FJ32GS406/606/608/610
Configuration Memory Space
User Memory Space
Reset Address
0x000000
0x0000FE
0x000002
0x000100
Device Configuration
User Program
Flash Memory
0x00AC00
0x00ABFE
(21760 instructions)
0x800000
0xF80000
Registers
0xF80017
0xF80018
0xF7FFFE
Unimplemented
(Read ‘0’s)
GOTO Instruction
0x000004
Reserved
0x7FFFFE
Reserved
0x000200
0x0001FE
0x000104
Alternate Vector Table
Reserved
Interrupt Vector Table
dsPIC33FJ64GS406/606/608/610
Configuration Memory Space
User Memory Space
Reserved
0xFF0002
DEVID (2)
Reserved
0xFEFFFE
0xFF0000
0xFFFFFE
0xFF0002
4.0MEMORY ORGANIZATION
Note:This data sheet summarizes the features
of the dsPIC33FJ32GS406/606/608/610
and dsPIC33FJ64GS406/606/608/610
families of devices. It is not intended to be
a comprehensive reference source. To
complement the information in this data
sheet, refer to the dsPIC33F/PIC24H
Family Reference Manual, “Section 4.
Program Memory” (DS70202), which is
available from the Microchip web site
(www.microchip.com).
4.1Program Address Space
The program address memory space of the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 devices is 4M
instructions. The space is addressable by a 24-bit
value deriv ed either from t he 23-bit Progr am Counter
(PC) during program execution, or from table operation
or data space remapp ing as des cribed in Section 4.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
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 architecture features
separate program and data memor y spaces a nd buses.
This architecture also allows the direct access to program
memory from the data space during code execution.
permit access to the Configuration bits and Device ID
sections of the configuration memory space.
The memory maps for the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 devices are shown
in Figure 4-1.
FIGURE 4-1:PROGRAM MEMORY MAPS FOR dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
0816
PC Address
0x000000
0x000002
0x000004
0x000006
23
00000000
00000000
00000000
00000000
Program Memor y
‘Phantom’ Byte
(read as ‘0’)
least signi ficant word
most significant word
Instruction Width
0x000001
0x000003
0x000005
0x000007
msw
Address(lsw Address)
4.1.1PROGRAM 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 the upper word being
unimplemented. The lower word always has an even
address, while the upper word has an od d address (see
Figure 4-2).
Program memory addresses are always word-aligned
on the lower word, and addresses are incremented or
decremented by two during the code execution. This
arrangement provides compatibility with data memory
space addressing and makes data in the program
memory space accessible.
4.1.2INTERRUPT AND TRAP VECTORS
All dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 devices reserve the
addresses between 0x00000 and 0x000200 for
hard-coded program execution vectors. A hardware
Reset vector is provided to redire ct code executi on from
the default value of the PC on device Reset to the actual
start of code. A GOTO instruction is programmed by the
user application at 0x000000, with the actual address for
the start of code at 0x000002.
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 devices also have
two interr upt 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 7.1 “Interrupt Vector
Table”.
FIGURE 4-2:PROGRAM MEMORY ORGANIZATION
DS70591C-page 48Preliminary 2010 Microchip Technology Inc.
Page 49
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
4.2Data Address Space
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 CPU ha s a separate
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 4-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 4.6.3 “Reading Data FromProgram Memory Using Program Space Visibility”).
The dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 devices implement
up to 9 Kbytes of data memory. Should an EA point to
a location outside of this area, an all-zero word or byte
will be returned.
4.2.1DATA 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.
4.2.2DATA MEMORY ORGANIZATION
AND ALIGNMENT
To maintain backward compatibility with PIC
devices and improve data space memory usage
efficiency, the dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 instruction set supports both word and byte operations. As a consequence of byte accessibility, all effective address
calculations are internally scaled to step through
word-aligned memory. For example, the core recognizes that Post-Modified Register Indirect Addressing
mode [Ws++] t ha t r e su lts i n a v al u e of Ws + 1 fo r by te
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.
4.2.3SFR SPACE
The first 2 Kbytes of the Near Data S pace, from 0x000 0
to 0x07FF, is primarily occupied by Special Function
Registers (SFRs). These are used by the
dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/606/608/610 core and peripheral
modules 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.
4.2.4NEAR 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 space is ad dressable us ing
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.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
0x0000
0x07FE
0x27FE
0xFFFE
LSB
Address
16 bits
LSbMSb
MSB
Address
0x0001
0x07FF
0xFFFF
Optionally
Mapped
into Program
Memory
0x0801
0x0800
0x2800
2 Kbyte
SFR Space
0x8001
0x8000
SFR Space
X Data
Unimplemented (X)
0x17FE
0x1800
0x17FF
0x1801
0x27FF
0x2801
0x1FFF
0x1FFE
0x2001
0x2000
8 Kbyte
Near Data
Space
X Data RAM (X)
Y Data RAM (Y)
DMA RAM
0x2BFE
0x2C00
0x2BFF
0x2C01
FIGURE 4-5:DATA MEMORY MAP FOR DEVICES WITH 9 KB RAM
DS70591C-page 52Preliminary 2010 Microchip Technology Inc.
Page 53
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
4.2.5X 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 Kbytes, or 32K words, though the
implemented memory locations vary by device.
4.2.6DMA RAM
Some devices contain 1Kbyte of dual ported DMA
RAM, which is located at the end of Y data space.
Memory locations that are part of Y data RAM and are in
the DMA RAM space are accessible simultaneously by
the CPU and the DMA controller module. DMA RAM is
utilized by the DMA controller to store data to be
transferred to various peripherals using DMA, as well as
data transferred from various peripherals using DMA.
The DMA RAM can be accessed by the DMA controller
without having to steal cycles from the CPU.
When the CPU and the DMA controller attempt to
concurrently write to the same DMA RAM location, the
hardware ensures tha t the C PU is giv en prec edenc e in
accessing the DMA RAM lo cation . Therefo re, the DMA
RAM provides a reliable means of transferring DMA
data without ever having to stall the CPU.
I2C1RCV0200————————Receive Register
I2C1TRN0202————————Transmit Register
I2C1BRG0204———————Baud Rate G ene rator Re gist er
I2C1CON0206I2CEN—I2CSIDL SCLREL IPMIENA10MDISSLWSMENGCENSTRENACKDTACKENRCENPENRSENSEN
I2C1STA T0208ACKSTA T TRSTA T———BCLGCST ATADD10IWCOLI2COVD_APSR_WRBFTBF
I2C1ADD020A——————Address Register
I2C1MSK020C——————Address M a sk Re g is ter
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
Page 82
DS70591C-page 82Preliminary 2010 Microchip Technology Inc.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
TABLE 4-27:I2C2 REGISTER MAP
SFR Name
I2C2RCV0210————————Receive Register
I2C2TRN0212————————Transmit Register
I2C2BRG0214———————Baud Rate Gene ra tor R e gister
I2C2CON0216I2CEN—I2CSIDL SCLREL IPMIENA10MDISSL WSMENGCENSTRENACKDTACKENRCENPENRSENSEN
I2C2STA T0218ACKSTAT TRSTAT———BCLGCST A TADD10IWCOLI2COVD_APSR_WRBFTBF
I2C2ADD021A——————Address Register
I2C2MSK021C——————Address Ma sk R e gis ter
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
U1MODE0220UARTEN—USIDLIRENRTSMD—UEN1UEN0WAKELPBACKABAUDURXINVBRGHPDSEL<1:0>STSEL
U1STA0222UTXISEL1 UTXINV UTXISEL0—UTXBRK UTXEN UTXBFTRMTURXISEL<1:0>ADDENRIDLEPERRFERROERRURXDA
U1TXREG0224———————UART Transmit Regis ter
U1RXREG0226———————UART Receive Register
U1BRG0228Baud Ra te G en er a tor Prescaler
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
U2MODE0230UARTEN—USIDLIRENRTSMD—UEN1UEN0WAKELPBACKABAUD URXINVBRGHPDSEL<1:0>STSEL
U2STA0232UTXISEL1 UTXINV UTXISEL0—UTXBRK UTXENUTXBFTRMTURXISEL<1:0>ADDENRIDLEPERRFERROERRURXDA
U2TXREG0234———————UART Tr an smi t Re gister
U2RXREG0236———————UART Receive R egister
U2BRG0238Baud Rate Generator P rescal er
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
Note 1:The RCON register reset values are dependent on type of reset.
SFR
Addr
2:The OSCCON register reset values are dependent on the FOSC configuration bits, and on type of reset.
Bit 15Bit 14Bit 13Bit 12Bit 11Bit 10 Bit 9Bit 8Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Legend:x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
Note 1:Reset value shown is for POR only. Value on other Reset states is dependent on the state of memory write or erase operations at the time of Reset.
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
All
Resets
All
Resets
Page 100
dsPIC33FJ32GS406/606/608/610 and dsPIC33FJ64GS406/606/608/610
<Free Word>
PC<15:0>
000000000
015
W15 (before CALL)
W15 (after CALL)
Stack Grows Toward
Higher Address
0x0000
PC<22:16>
POP : [--W15]
PUSH : [W15++]
4.2.7SOFTWARE STACK
In addition to its use as a working register, the W15
register in the dsPIC33FJ32GS406/606/608/610 and
dsPIC33FJ64GS406/ 606/608/610 de vices is al so used
as a software Stack Poi nter. The Stack Pointer alwa ys
points to the first available free word and grows from
lower to higher addresses. It predecrements for stack
pops and post-increments for stack pushes, as shown
in Figure 4-6. For a PC push during any CALL instruction, the MSb of the PC is zero-extended before the
push, ensuring that the MSb is always clear.
Note:A PC push during exception processing
concatenates the SRL re gis ter to the MSb
of the PC prior to the push.
The Stack Pointer Limit register (SPLIM) associated
with the Stack Pointer set s an upper ad dress bounda ry
for the stack. SPLIM is uninitialized at Reset. As is the
case for the Stack Pointer, SPLIM<0> is forced to ‘0’
because all stack operations must be word-aligned.
Whenever an EA is generated using W15 as a source
or destination pointer, the resulting address is
compared with the value in SPLIM. If the contents of
the Stack Pointer (W15) and the SPLIM register are
equal and a push operation is performed, a stack error
trap will not occur. The stack error trap will occur on a
subsequent push operation. For example, to cause a
stack error trap when the stack grows beyond address
0x1800 in RAM, initialize the SPLIM with the value
0x17FE.
Similarly, a St ac k Point er underflow (sta ck error) tra p is
generated when the Stack Pointer address is found to
be less than 0x0800. This prevents the stack from
interfering with the Special Function Register (SFR)
space.
A write to the SPLIM regis ter should not be immediately
followed by an indirect read operation using W15.
FIGURE 4-6:CALL STACK FRAME
4.3Instruction Addressing Modes
The addressing modes shown in Table 4-65 form the
basis of the addressi ng modes optimized to support the
specific features of individual instructions. The
addressing modes provided in the MAC class of
instructions differ from those in the other instruction
types.
4.3.1FILE REGISTER INSTRUCTIONS
Most file register ins truc tio ns us e a 1 3-bi t ad dres s field
(f) to directly address data present in the first 8192
bytes of data memory (near data space). Most file
register instructions employ a working register, W0,
which is de noted as WREG i n these instr uctions . The
destination is typically either the same file register or
WREG (with the exception of the MUL instruction),
which writes the re sult t o a re gister or regi ster p air. The
MOV instruction allows additional flexibility and can
access the entire data space.
4.3.2MCU INSTRUCTIONS
The three-operand MCU instructions are of the form:
Operand 3 = Operand 1 <function> Operand 2
where Operand 1 is always a working register (that is,
the addressing mode can only be register direct ), which
is referred to as Wb. Operand 2 can be a W register,
fetched from data memory, or a 5-bit literal. The result
location can be either a W register or a data memory
location. The following addressing modes are
supported by MCU instructions:
• Register Direct
• Register Indirect
• Register Indirect Post-Modified
• Register Indirect Pre-Modified
• 5-bit or 10-bit Literal
Note:Not all instructions support all the
addressing modes given above. Individual
instructions can support different subsets
of these addressing modes.
DS70591C-page 100Preliminary 2010 Microchip Technology Inc.
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.