Dspic33Fj32Gp202/204 and Dspic33Fj16Gp304 Data Sheet: High-Performance, 16-Bit Digital Signal Controllers
Dspic33Fj32Gp202/204 and Dspic33Fj16Gp304 Data Sheet: High-Performance, 16-Bit Digital Signal Controllers
dsPIC33FJ16GP304
Data Sheet
High-Performance, 16-bit
Digital Signal Controllers
• 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.
10-Bit/12-Bit ADC
External Interrupts(2)
Packages
Input Capture
Remappable
16-bit Timer
(Kbyte)
Std. PWM
I2C™
RAM
Pins
Device
UART
Pins
SPI
dsPIC33FJ32GP202 28 32 2 16 3(1) 4 2 1 3 1 1 ADC, 1 21 SDIP
10 ch SOIC
QFN-S
dsPIC33FJ32GP204 44 32 2 26 3(1) 4 2 1 3 1 1 ADC, 1 35 QFN
13 ch TQFP
dsPIC33FJ16GP304 44 16 2 26 3(1) 4 2 1 3 1 1 ADC, 1 35 QFN
13 ch TQFP
Note 1: Only two out of three timers are remappable.
2: Only two out of three interrupts are remappable.
Pin Diagrams
28-Pin SDIP, SOIC
MCLR 1 28 AVDD
AN0/VREF+/CN2/RA0 2 27 AVSS
AN1/VREF-/CN3/RA1 3 26 AN9/RP15(1)/CN11/RB15
dsPIC33FJ32GP202
PGED1/AN2/C2IN-/RP0(1)/CN4/RB0 4 25 AN10/RP14(1)/CN12/RB14
PGEC1/AN3/C2IN+/RP1(1)/CN5/RB1 5 24 AN11/RP13(1)/CN13/RB13
AN4/RP2(1)/CN6/RB2 6 23 AN12/RP12(1)/CN14/RB12
AN5/RP3(1)/CN7/RB3 7 22 PGEC2/TMS/RP11(1)/CN15/RB11
VSS 8 21 PGED2/TDI/RP10(1)/CN16/RB10
OSCI/CLKI/CN30/RA2 9 20 VCAP/VDDCORE
OSCO/CLKO/CN29/RA3 10 19 VSS
SOSCI/RP4(1)/CN1/RB4 11 18 TDO/SDA1/RP9(1)/CN21/RB9
SOSCO/T1CK/CN0/RA4 12 17 TCK/SCL1/RP8(1)/CN22/RB8
VDD 13 16 INT0/RP7/CN23/RB7
PGED3/ASDA1/RP5(1)/CN27/RB5 14 15 PGEC3/ASCL1/RP6(1)/CN24/RB6
MCLR
AVDD
AVSS
28 27 26 25 24 23 22
PGED1/AN2/C2IN-/RP0(1)/CN4/RB0 1 21 AN11/RP13(1)/CN13/RB13
PGEC1/AN3/C2IN+/RP1(1)/CN5/RB1 2 20 AN12/RP12(1)/CN14/RB12
AN4/RP2(1)/CN6/RB2 3 19 PGEC2/TMS/RP11(1)(1)/CN15/RB11
AN5/RP3(1)/CN7/RB3 4
dsPIC33FJ32GP202 18 PGED2/TDI/RP10/CN16/RB10
VSS 5 17 VCAP/VDDCORE
OSCI/CLKI/CN30/RA2 6 16 Vss
OSCO/CLKO/CN29/RA3 7 15 TDO/SDA1/RP9(1)/CN21/RB9
8 9 10 11 12 13 14
VDD
PGED3/ASDA1/RP5(1)/CN27/RB5
PGEC3/ASCL1/RP6/CN24/RB6
INT0/RP7(1(1))/CN23/RB7
TCK/SCL1/RP8(1)/CN22/RB8
SOSCI/RP4/CN1/RB4
SOSCO/T1CK/CN0/RA4
Note 1: The RPn pins can be used by any remappable peripheral. See Table 1 for the list of available
peripherals.
44-Pin QFN
PGEC1/AN3/C2IN+/RP1(1)/CN5/RB1
PGED1/AN2/C2IN-/RP0(1)/CN4/RB0
AN10/RP14(1)/CN12/RB14
AN9/RP15(1)/CN11/RB15
AN0/VREF+/CN2/RA0
AN1/VREF-/CN3/RA1
TMS/RA10
TCK/RA7
MCLR
AVDD
AVSS
AN4/RP2(1)/CN6/RB2 21 AN11/RP13(1)/CN13/RB13
20
11
22
19
18
17
16
15
14
13
12
23
AN5/RP3(1)/CN7/RB3 24 10 AN12/RP12(1)/CN14/RB12
AN6/RP16(1)/CN8/RC0 25 9 PGEC2/RP11(1)/CN15/RB11
AN7/RP17(1)/CN9/RC1 26 8 PGED2/RP10(1)/CN16/RB10
AN8/RP18(1)/CN10/RC2 27 7 VCAP/VDDCORE
dsPIC33FJ32GP204
VDD 28 dsPIC33FJ16GP304 6 VSS
VSS 29 5 RP25(1)/CN19/RC9
OSCI/CLKI/CN30/RA2 30 4 RP24(1)/CN20/RC8
OSCO/CLKO/CN29/RA3 31 3 RP23(1)/CN17/RC7
TDO/RA8 32 2 RP22(1)/CN18/RC6
SOSCI/RP4(1)/CN1/RB4 33 1 SDA1/RP9(1)/CN21/RB9
41
34
35
36
37
38
39
40
42
43
44
TDI/RA9
SOSCO/T1CK/CN0/RA4
PGED3/ASDA1/RP5 /CN27/RB5
PGEC3/ASCL1/RP6(1)/CN24/RB6
INT0/RP7(1)/CN23/RB7
SCL1/RP8(1)/CN22/RB8
RP19(1)/CN28/RC3
RP20(1)/CN25/RC4
RP21(1)/CN26/RC5
VSS
VDD
(1)
Note 1: The RPn pins can be used by any remappable peripheral. See Table 1 for the list of available
peripherals.
44-Pin TQFP
PGEC1/AN3/C2IN+/RP1(1)/CN5/RB1
PGED1/AN2/C2IN-/RP0(1)/CN4/RB0
AN9/RP15(1)/CN11/RB15
AN10/RP14(1)/CN12/RB14
AN0/VREF+/CN2/RA0
AN1/VREF-/CN3/RA1
TMS/RA10
TCK/RA7
MCLR
AVDD
AVSS
22
21
20
19
18
17
16
15
14
13
12
AN4/RP2(1)/CN6/RB2 23 11 AN11/RP13(1)/CN13/RB13
AN5/RP3(1)/CN7/RB3 24 10 AN12/RP12(1)/CN14/RB12
AN6/RP16(1)/CN8/RC0 25 9 PGEC2/RP11(1)/CN15/RB11
AN7/RP17(1)/CN9/RC1 26 8 PGED2/RP10(1)/CN16/RB10
AN8/RP18(1)/CN10/RC2 27 7 VCAP/VDDCORE
VDD
dsPIC33FJ32GP204 6 VSS
28
VSS 29
dsPIC33FJ16GP304 5 RP25(1)/CN19/RC9
OSCI/CLKI/CN30/RA2 30 4 RP24(1)/CN20/RC8
OSCO/CLKO/CN29/RA3 31 3 RP23(1)/CN17/RC7
TDO/RA8 32 2 RP22/CN18/RC6
SOSCI/RP4(1)/CN1/RB4 33 1 SDA1(1)/RP9(1)/CN21/RB9
34
35
36
37
39
40
41
42
43
44
38
SOSCO/T1CK/CN0/RA4
TDI/RA9
PGED3/ASDA1/RP5(1)/CN27/RB5
PGEC3/ASCL1/RP6(1)/CN24/RB6
INT0/ RP7(1)/CN23/RB7
SCL1/RP8(1)/CN22/RB8
RP19(1)/CN28/RC3
RP20(1)/CN25/RC4
RP21(1)/CN26/RC5
VSS
VDD
Note 1: The RPn pins can be used by any remappable peripheral. See Table 1 for the list of available
peripherals.
Table of Contents
1.0 Device Overview ........................................................................................................................................................................ 11
2.0 CPU............................................................................................................................................................................................ 15
3.0 Memory Organization ................................................................................................................................................................. 27
4.0 Flash Program Memory.............................................................................................................................................................. 53
5.0 Resets ....................................................................................................................................................................................... 59
6.0 Interrupt Controller ..................................................................................................................................................................... 67
7.0 Oscillator Configuration .............................................................................................................................................................. 95
8.0 Power-Saving Features............................................................................................................................................................ 105
9.0 I/O Ports ................................................................................................................................................................................... 109
10.0 Timer1 ...................................................................................................................................................................................... 133
11.0 Timer2/3 Feature...................................................................................................................................................................... 135
12.0 Input Capture............................................................................................................................................................................ 141
13.0 Output Compare....................................................................................................................................................................... 143
14.0 Serial Peripheral Interface (SPI)............................................................................................................................................... 147
15.0 Inter-Integrated Circuit (I2C™) ................................................................................................................................................. 153
16.0 Universal Asynchronous Receiver Transmitter (UART) ........................................................................................................... 161
17.0 10-bit/12-bit Analog-to-Digital Converter (ADC) ....................................................................................................................... 167
18.0 Special Features ...................................................................................................................................................................... 181
19.0 Instruction Set Summary .......................................................................................................................................................... 189
20.0 Development Support............................................................................................................................................................... 197
21.0 Electrical Characteristics .......................................................................................................................................................... 201
22.0 Packaging Information.............................................................................................................................................................. 235
Appendix A: Revision History............................................................................................................................................................. 241
Index .................................................................................................................................................................................................. 245
The Microchip Web Site ..................................................................................................................................................................... 249
Customer Change Notification Service .............................................................................................................................................. 249
Customer Support .............................................................................................................................................................................. 249
Reader Response .............................................................................................................................................................................. 250
Product Identification System ............................................................................................................................................................ 251
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.
NOTES:
16
8 16 16 16
Program Memory
EA MUX
Address Bus
Data Latch ROM Latch
24
16
Literal Data
16
Instruction
Decode and
Control Instruction Reg
16
Control Signals
to Various Blocks DSP Engine
16 x 16
OSC2/CLKO Timing Power-up W Register Array
OSC1/CLKI Generation Timer Divide Support
16
Oscillator
FRC/LPRC Start-up Timer
Oscillators
Power-on
Reset
Precision
16-bit ALU
Band Gap Watchdog
Reference Timer
16
Brown-out
Voltage Reset
Regulator
Timers OC/
UART1 ADC1
1-3 PWM1-2
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.
16 16 16
8 16
Program Memory
EA MUX
Address Bus
Data Latch ROM Latch
24
16 16
Literal Data
Instruction
Decode and
Control Instruction Reg
16
16-bit ALU
16
To Peripheral Modules
PC22 PC0
0 Program Counter
7 0
TBLPAG Data Table Page Address
7 0
PSVPAG Program Space Visibility Page Address
15 0
RCOUNT REPEAT Loop Counter
15 0
DCOUNT DO Loop Counter
22 0
DOSTART DO Loop Start Address
22
DOEND DO Loop End Address
15 0
CORCON Core Configuration Register
SRH SRL
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
S
40 a
40-bit Accumulator A
40 Round t 16
40-bit Accumulator B u
Logic r
Carry/Borrow Out a
Saturate t
e
Carry/Borrow In Adder
Negate
40 40 40
Barrel
16
Shifter
X Data Bus
40
Sign-Extend
Y Data Bus
32 16
Zero Backfill
33 32
17-bit
Multiplier/Scaler
16 16
To/From W Array
The SA and SB bits are modified each time data into data space memory. The write is performed across
passes through the adder/subtracter, but can only be the X bus into combined X and Y address space. The
cleared by the user application. When set, they indicate following addressing modes are supported:
that the accumulator has overflowed its maximum • W13, Register Direct:
range (bit 31 for 32-bit saturation or bit 39 for 40-bit The rounded contents of the non-target
saturation) and will be saturated (if saturation is accumulator are written into W13 as a
enabled). When saturation is not enabled, SA and SB 1.15 fraction.
default to bit 39 overflow and thus indicate that a
• [W13]+ = 2, Register Indirect with Post-Increment:
catastrophic overflow has occurred. If the COVTE bit in
The rounded contents of the non-target
the INTCON1 register is set, SA and SB bits will
accumulator are written into the address pointed
generate an arithmetic warning trap when saturation is
to by W13 as a 1.15 fraction. W13 is then
disabled.
incremented by 2 (for a word write).
The Overflow and Saturation Status bits can optionally
be viewed in the STATUS Register (SR) as the logical 2.6.2.3 Round Logic
OR of OA and OB (in bit OAB) and the logical OR of SA
The round logic is a combinational block that performs
and SB (in bit SAB). Programs can check one bit in the
a conventional (biased) or convergent (unbiased)
STATUS register to determine if either accumulator has
round function during an accumulator write (store). The
overflowed, or one bit to determine if either
Round mode is determined by the state of the RND bit
accumulator has saturated. This is useful for complex
in the CORCON register. It generates a 16-bit, 1.15
number arithmetic, which typically uses both
data value that is passed to the data space write
accumulators.
saturation logic. If rounding is not indicated by the
The device supports three Saturation and Overflow instruction, a truncated 1.15 data value is stored and
modes: the least significant word (lsw) is simply discarded.
• Bit 39 Overflow and Saturation: Conventional rounding zero-extends bit 15 of the
When bit 39 overflow and saturation occurs, the accumulator and adds it to the ACCxH word (bits 16
saturation logic loads the maximally positive 9.31 through 31 of the accumulator).
(0x7FFFFFFFFF) or maximally negative 9.31 value
• If the ACCxL word (bits 0 through 15 of the
(0x8000000000) into the target accumulator. The
accumulator) is between 0x8000 and 0xFFFF
SA or SB bit is set and remains set until cleared by
(0x8000 included), ACCxH is incremented.
the user application. This condition is referred to as
‘super saturation’ and provides protection against • If ACCxL is between 0x0000 and 0x7FFF, ACCxH
erroneous data or unexpected algorithm problems is left unchanged.
(such as gain calculations). A consequence of this algorithm is that over a
• Bit 31 Overflow and Saturation: succession of random rounding operations, the value
When bit 31 overflow and saturation occurs, the tends to be biased slightly positive.
saturation logic then loads the maximally positive Convergent (or unbiased) rounding operates in the
1.31 value (0x007FFFFFFF) or maximally same manner as conventional rounding, except when
negative 1.31 value (0x0080000000) into the ACCxL equals 0x8000. In this case, the Least
target accumulator. The SA or SB bit is set and Significant bit (bit 16 of the accumulator) of ACCxH is
remains set until cleared by the user application. examined.
When this Saturation mode is in effect, the guard
• If it is ‘1’, ACCxH is incremented.
bits are not used, so the OA, OB or OAB bits are
never set. • If it is ‘0’, ACCxH is not modified. Assuming that
bit 16 is effectively random in nature, this scheme
• Bit 39 Catastrophic Overflow:
removes any rounding bias that may accumulate.
The bit 39 Overflow Status bit from the adder is
used to set the SA or SB bit, which remains set The SAC and SAC.R instructions store either a
until cleared by the user application. No saturation truncated (SAC), or rounded (SAC.R) version of the
operation is performed and the accumulator is contents of the target accumulator to data memory via
allowed to overflow, destroying its sign. If the the X bus, subject to data saturation (see
COVTE bit in the INTCON1 register is set, a Section 2.6.2.4 “Data Space Write Saturation”). For
catastrophic overflow can initiate a trap exception. the MAC class of instructions, the accumulator
write-back operation functions in the same manner,
2.6.2.2 Accumulator ‘Write Back’ addressing combined MCU (X and Y) data space
The MAC class of instructions (with the exception of though the X bus. For this class of instructions, the data
MPY, MPY.N, ED and EDAC) can optionally write a is always subject to rounding.
rounded version of the high word (bits 31 through 16)
of the accumulator that is not targeted by the instruction
NOTES:
dsPIC33FJ32GP202/204 dsPIC33FJ16GP304
GOTO Instruction 0x000000 GOTO Instruction 0x000000
0x000002 0x000002
Reset Address 0x000004 Reset Address 0x000004
Interrupt Vector Table 0x0000FE Interrupt Vector Table 0x0000FE
Reserved 0x000100 Reserved 0x000100
0x000104 0x000104
Alternate Vector Table 0x0001FE Alternate Vector Table 0x0001FE
0x000200 0x000200
User Program User Program
Flash Memory Flash Memory
User Memory Space
Unimplemented Unimplemented
(Read ‘0’s) (Read ‘0’s)
0x7FFFFE 0x7FFFFE
0x800000 0x800000
Reserved Reserved
Configuration Memory Space
0xF7FFFE 0xF7FFFE
Device Configuration 0xF80000 Device Configuration 0xF80000
Registers 0xF80017 Registers 0xF80017
0xF80018 0xF80018
Reserved Reserved
0xFEFFFE 0xFEFFFE
0xFF0000 0xFF0000
DEVID (2) 0xFFFFFE
DEVID (2) 0xFFFFFE
3.2 Data Address Space All word accesses must be aligned to an even address.
Misaligned word data fetches are not supported, so
The dsPIC33FJ32GP202/204 and care must be taken when mixing byte and word
dsPIC33FJ16GP304 CPU has a separate 16-bit-wide operations, or translating from 8-bit MCU code. If a
data memory space. The data space is accessed using misaligned read or write is attempted, an address error
separate Address Generation Units (AGUs) for read trap is generated. If the error occurred on a read, the
and write operations. The data memory maps is shown instruction underway is completed. If the instruction
in Figure 3-3. occurred on a write, the instruction is executed but the
All Effective Addresses (EAs) in the data memory space write does not occur. In either case, a trap is then
are 16 bits wide and point to bytes within the data space. executed, allowing the system and/or user application
This arrangement gives a data space address range of to examine the machine state prior to execution of the
64 Kbytes or 32K words. The lower half of the data address Fault.
memory space (that is, when EA<15> = 0) is used for All byte loads into any W register are loaded into the
implemented memory addresses, while the upper half Least Significant Byte. The Most Significant Byte is not
(EA<15> = 1) is reserved for the Program Space modified.
Visibility area (see Section 3.6.3 “Reading Data From
Program Memory Using Program Space Visibility”). A sign-extend instruction (SE) is provided to allow
users to translate 8-bit signed data to 16-bit signed
dsPIC33FJ32GP202/204 and dsPIC33FJ16GP304 values. Alternatively, for 16-bit unsigned data, user
devices implement up to 30 Kbytes of data memory. applications can clear the MSB of any W register by
Should an EA point to a location outside of this area, an executing a zero-extend (ZE) instruction on the
all-zero word or byte will be returned. appropriate address.
3.2.1 DATA SPACE WIDTH 3.2.3 SFR SPACE
The data memory space is organized in byte The first 2 Kbytes of the Near Data Space, from 0x0000
addressable, 16-bit-wide blocks. Data is aligned in data to 0x07FF, is primarily occupied by Special Function
memory and registers as 16-bit words, but all data Registers (SFRs). These are used by the
space EAs resolve to bytes. The Least Significant dsPIC33FJ32GP202/204 and dsPIC33FJ16GP304
Bytes (LSBs) of each word have even addresses, while core and peripheral modules for controlling the
the Most Significant Bytes (MSBs) have odd operation of the device.
addresses.
SFRs are distributed among the modules that they
3.2.2 DATA MEMORY ORGANIZATION control, and are generally grouped together by module.
AND ALIGNMENT Much of the SFR space contains unused addresses;
these are read as ‘0’. A complete listing of implemented
To maintain backward compatibility with PIC® MCU SFRs, including their addresses, is shown in Table 3-1
devices and improve data space memory usage through Table 3-22.
efficiency, the dsPIC33FJ32GP202/204 and
dsPIC33FJ16GP304 instruction set supports both Note: The actual set of peripheral features and
word and byte operations. As a consequence of byte interrupts varies by the device. Refer to
accessibility, all effective address calculations are the corresponding device tables and
internally scaled to step through word-aligned memory. pinout diagrams for device-specific
For example, the core recognizes that Post-Modified information.
Register Indirect Addressing mode [Ws++] will result in
a value of Ws + 1 for byte operations and Ws + 2 for 3.2.4 NEAR DATA SPACE
word operations. The 8 Kbyte area between 0x0000 and 0x1FFF is
Data byte reads will read the complete word that referred to as the Near Data Space. Locations in this
contains the byte, using the LSB of any EA to space are directly addressable via a 13-bit absolute
determine which byte to select. The selected byte is address field within all memory direct instructions.
placed onto the LSB of the data path. That is, data Additionally, the whole data space is addressable using
memory and registers are organized as two parallel MOV instructions, which support Memory Direct
byte-wide entities with shared (word) address decode Addressing mode with a 16-bit address field, or by
but separate write lines. Data byte writes only write to using Indirect Addressing mode using a working
the corresponding side of the array or register that register as an address pointer.
matches the byte address.
MSB LSB
Address 16 bits Address
MSb LSb
0x0001 0x0000
2 Kbyte
SFR Space
SFR Space 0x07FE
0x07FF
0x0801 0x0800
X Data RAM (X)
0x0BFF 0x0BFE
2 Kbyte 0x0001 0x0C00 8 Kbyte
Y Data RAM (Y) Near data space
SRAM Space 0x0FFF 0x0FFE
0x1001 0x1000
0x1FFF 0x1FFE
0x2001 0x2000
0x8001 0x8000
X Data
Optionally Unimplemented (X)
Mapped
into Program
Memory
0xFFFF 0xFFFE
3.2.5 X AND Y DATA SPACES The Y data space is used in concert with the X data
space by the MAC class of instructions (CLR, ED,
The core has two data spaces, X and Y. These data
EDAC, MAC, MOVSAC, MPY, MPY.N and MSC) to provide
spaces can be considered either separate (for some
two concurrent data read paths.
DSP instructions), or as one unified linear address
range (for MCU instructions). The data spaces are Both the X and Y data spaces support Modulo
accessed using two Address Generation Units (AGUs) Addressing mode for all instructions, subject to
and separate data paths. This feature allows certain addressing mode restrictions. Bit-Reversed Addressing
instructions to concurrently fetch two words from RAM, mode is only supported for writes to X data space.
thereby enabling efficient execution of DSP algorithms All data memory writes, including in DSP instructions,
such as Finite Impulse Response (FIR) filtering and view data space as combined X and Y address space.
Fast Fourier Transform (FFT). The boundary between the X and Y data spaces is
The X data space is used by all instructions and device-dependent and is not user-programmable.
supports all addressing modes. X data space has All effective addresses are 16 bits wide and point to
separate read and write data buses. The X read data bytes within the data space. Therefore, the data space
bus is the read data path for all instructions that view address range is 64 Kbytes, or 32K words, though the
data space as combined X and Y address space. It is implemented memory locations vary by device.
also the X data prefetch path for the dual operand DSP
instructions (MAC class).
SFR All
SFR Name 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
Addr Resets
XMODSRT 0048 XS<15:1> 0 xxxx
XMODEND 004A XE<15:1> 1 xxxx
CNEN1 0060 CN15IE CN14IE CN13IE CN12IE CN11IE —- — — CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE 0000
CNEN2 0062 — CN30IE CN29IE — CN27IE — — CN24IE CN23IE CN22IE CN21IE — — — — CN16IE 0000
CNPU1 0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE — — — CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE 0000
CNPU2 006A — CN30PUE CN29PUE — CN27PUE — — CN24PUE CN23PUE CN22PUE CN21PUE — — — — CN16PUE 0000
Preliminary
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
TABLE 3-3: CHANGE NOTIFICATION REGISTER MAP FOR dsPIC33FJ32GP204 AND dsPIC33FJ16GP304
SFR SFR All
Name 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
Addr Resets
CNEN1 0060 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE CN9IE CN8IE CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE 0000
CNEN2 0062 — CN30IE CN29IE CN28IE CN27IE CN26IE CN25IE CN24IE CN23IE CN22IE CN21IE CN20IE CN19IE CN18IE CN17IE CN16IE 0000
CNPU1 0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE CN9PUE CN8PUE CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE 0000
CNPU2 006A — CN30PUE CN29PUE CN28PUE CN27PUE CN26PUE CN25PUE CN24PUE CN23PUE CN22PUE CN21PUE CN20PUE CN19PUE CN18PUE CN17PUE CN16PUE 0000
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
DS70290B-page 33
DS70290B-page 34
INTCON1 0080 NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE SFTACERR DIV0ERR — MATHERR ADDRERR STKERR OSCFAIL — 0000
INTCON2 0082 ALTIVT DISI — — — — — — — — — — — INT2EP INT1EP INT0EP 0000
IFS0 0084 — — AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF T2IF OC2IF IC2IF — T1IF OC1IF IC1IF INT0IF 0000
IFS1 0086 — — INT2IF — — — — — IC8IF IC7IF — INT1IF CNIF — MI2C1IF SI2C1IF 0000
IFS4 008C — — — — — — — — — — — — — — U1EIF — 0000
IEC0 0094 — — AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE T2IE OC2IE IC2IE — T1IE OC1IE IC1IE INT0IE 0000
IEC1 0096 — — INT2IE — — — — — IC8IE IC7IE — INT1IE CNIE — MI2C1IE SI2C1IE 0000
IEC4 009C — — — — — — — — — — — — — — U1EIE — 0000
IPC0 00A4 — T1IP<2:0> — OC1IP<2:0> — IC1IP<2:0> — INT0IP<2:0> 4444
IPC1 00A6 — T2IP<2:0> — OC2IP<2:0> — IC2IP<2:0> — — — — 4440
IPC2 00A8 — U1RXIP<2:0> — SPI1IP<2:0> — SPI1EIP<2:0> — T3IP<2:0> 4444
IPC3 00AA — — — — — — — — — AD1IP<2:0> — U1TXIP<2:0> 0044
IPC4 00AC — CNIP<2:0> — — — — — MI2C1IP<2:0> — SI2C1IP<2:0> 4044
IPC5 00AE — IC8IP<2:0> — IC7IP<2:0> — — — — — INT1IP<2:0> 4404
IPC7 00B2 — — — — — — — — — INT2IP<2:0> — — — — 0040
Preliminary
SFR Name 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
Addr Resets
U1MODE 0220 UARTEN — USIDL IREN RTSMD — UEN1 UEN0 WAKE LPBACK ABAUD URXINV BRGH PDSEL<1:0> STSEL 0000
U1STA 0222 UTXISEL1 UTXINV UTXISEL0 — UTXBRK UTXEN UTXBF TRMT URXISEL<1:0> ADDEN RIDLE PERR FERR OERR URXDA 0110
Preliminary
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
TABLE 3-11: PERIPHERAL PIN SELECT INPUT REGISTER MAP
© 2008 Microchip Technology Inc.
File All
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
Name Resets
TABLE 3-12: PERIPHERAL PIN SELECT OUTPUT REGISTER MAP FOR dsPIC33FJ32GP202
File All
Preliminary
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
Name Resets
TRISA 02C0 — — — — — TRISA10 TRISA9 TRISA8 TRISA7 — — TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 079F
PORTA 02C2 — — — — — RA10 RA9 RA8 RA7 — — RA4 RA3 RA2 RA1 RA0 xxxx
LATA 02C4 — — — — — LATA10 LATA9 LATA8 LATA7 — — LATA4 LATA3 LATA2 LATA1 LATA0 xxxx
ODCA 02C6 — — — — — ODCA10 ODCA9 ODCA8 ODCA7 — — ODCA4 ODCA3 ODCA2 ODCA1 ODCA0 xxxx
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
Preliminary
TRISB 02C8 TRISB15 TRISB14 TRISB13 TRISB12 TRISB11 TRISB10 TRISB9 TRISB8 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 FFFF
PORTB 02CA RB15 RB14 RB13 RB12 RB11 RB10 RB9 RB8 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx
LATB 02CC LATB15 LATB14 LATB13 LATB12 LATB11 LATB10 LATB9 LATB8 LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx
ODCB 02CE ODCB15 ODCB14 ODCB13 ODCB12 ODCB11 ODCB10 ODCB9 ODCB8 ODCB7 ODCB6 ODCB5 ODCB4 ODCB3 ODCB2 ODCB1 ODCB0 xxxx
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
TRISC 02D0 — — — — — — TRISC9 TRISC8 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 03FF
PORTC 02D2 — — — — — — RC9 RC8 RC7 RC6 RC5 RC4 RC4 RC2 RC1 RC0 xxxx
LATC 02D4 — — — — — — LATC9 LATC8 LATC7 LATC6 LATC5 LATC4 LATC4 LATC2 LATC1 LATC0 xxxx
DS70290B-page 41
ODCC 02D6 — — — — — — ODCC9 ODCC8 ODCC7 ODCC6 ODCC5 ODCC4 ODCC4 ODCC2 ODCC1 ODCC0 xxxx
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
DS70290B-page 42
RCON 0740 TRAPR IOPUWR — — — — CM VREGS EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR xxxx(1)
OSCCON 0742 — COSC<2:0> — NOSC<2:0> CLKLOCK IOLOCK LOCK — CF — LPOSCEN OSWEN 0300(2)
CLKDIV 0744 ROI DOZE<2:0> DOZEN FRCDIV<2:0> PLLPOST<1:0> — PLLPRE<4:0> 3040
PLLFBD 0746 — — — — — — — PLLDIV<8:0> 0030
OSCTUN 0748 — — — — — — — — — — TUN<5:0> 0000
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
Note 1: RCON register Reset values dependent on type of Reset.
2: OSCCON register Reset values dependent on the FOSC Configuration bits and by type of Reset.
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.
PMD1 0770 — — T3MD T2MD T1MD — — — I2C1MD — U1MD — SPI1MD — — AD1MD 0000
PMD2 0772 IC8MD IC7MD — — — — IC2MD IC1MD — — — — — — OC2MD OC1MD 0000
Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.
© 2008 Microchip Technology Inc.
dsPIC33FJ32GP202/204 and dsPIC33FJ16GP304
• Register Direct
PC<15:0> W15 (before CALL) • Register Indirect
000000000 PC<22:16> • Register Indirect Post-Modified
<Free Word> W15 (after CALL) • Register Indirect Pre-Modified
• 5-bit or 10-bit Literal
POP : [--W15]
PUSH : [W15++] Note: Not all instructions support all the
addressing modes given above. Individual
instructions can support different subsets
of these addressing modes.
3.3.3 MOVE AND ACCUMULATOR The two-source operand prefetch registers must be
INSTRUCTIONS members of the set {W8, W9, W10, W11}. For data
reads, W8 and W9 are always directed to the X RAGU,
Move instructions and the DSP accumulator class of
and W10 and W11 are always directed to the Y AGU.
instructions provide a greater degree of addressing
The effective addresses generated (before and after
flexibility than other instructions. In addition to the
modification) must, therefore, be valid addresses within
Addressing modes supported by most MCU
X data space for W8 and W9 and Y data space for W10
instructions, move and accumulator instructions also
and W11.
support Register Indirect with Register Offset
Addressing mode, also referred to as Register Indexed Note: Register Indirect with Register Offset
mode. Addressing mode is available only for W9
(in X space) and W11 (in Y space).
Note: For the MOV instructions, the addressing
mode specified in the instruction can differ In summary, the following addressing modes are
for the source and destination EA. supported by the MAC class of instructions:
However, the 4-bit Wb (Register Offset) • Register Indirect
field is shared by both source and
• Register Indirect Post-Modified by 2
destination (but typically only used by
one). • Register Indirect Post-Modified by 4
• Register Indirect Post-Modified by 6
In summary, the following addressing modes are
supported by move and accumulator instructions: • Register Indirect with Register Offset (Indexed)
Sequential Address
b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 0
Pivot Point
XB = 0x0008 for a 16-Word Bit-Reversed Buffer
A3 A2 A1 A0 Decimal A3 A2 A1 A0 Decimal
0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 8
0 0 1 0 2 0 1 0 0 4
0 0 1 1 3 1 1 0 0 12
0 1 0 0 4 0 0 1 0 2
0 1 0 1 5 1 0 1 0 10
0 1 1 0 6 0 1 1 0 6
0 1 1 1 7 1 1 1 0 14
1 0 0 0 8 0 0 0 1 1
1 0 0 1 9 1 0 0 1 9
1 0 1 0 10 0 1 0 1 5
1 0 1 1 11 1 1 0 1 13
1 1 0 0 12 0 0 1 1 3
1 1 0 1 13 1 0 1 1 11
1 1 1 0 14 0 1 1 1 7
1 1 1 1 15 1 1 1 1 15
23 bits
EA 1/0
8 bits 16 bits
24 bits
Select
1 EA 0
Program Space Visibility(1)
0 PSVPAG
(Remapping)
8 bits 15 bits
23 bits
Note 1: The Least Significant bit (LSb) of program space addresses is always fixed as ‘0’ to maintain
word alignment of data in the program and data spaces.
2: Table operations are not required to be word-aligned. Table read operations are permitted in
the configuration memory space.
3.6.2 DATA ACCESS FROM PROGRAM In Byte mode, either the upper or lower byte of the
MEMORY USING TABLE lower program word is mapped to the lower byte of
INSTRUCTIONS a data address. The upper byte is selected when
Byte Select is ‘1’; the lower byte is selected when
The TBLRDL and TBLWTL instructions offer a direct it is ‘0’.
method of reading or writing the lower word of any
address within the program space without going • TBLRDH (Table Read High): In Word mode, this
through data space. The TBLRDH and TBLWTH instruction maps the entire upper word of a program
instructions are the only method to read or write the address (P<23:16>) to a data address. Note that
upper 8 bits of a program space word as data. D<15:8>, the ‘phantom byte’, will always be ‘0’.
The PC is incremented by two for each successive In Byte mode, this instruction maps the upper or
24-bit program word. This allows program memory lower byte of the program word to D<7:0> of the
addresses to directly map to data space addresses. data address, as in the TBLRDL instruction. Note
Program memory can thus be regarded as two that the data will always be ‘0’ when the upper
16-bit-wide word address spaces, residing side by side, ‘phantom’ byte is selected (Byte Select = 1).
each with the same address range. TBLRDL and In a similar fashion, two table instructions, TBLWTH
TBLWTL access the space that contains the least and TBLWTL, are used to write individual bytes or
significant data word. TBLRDH and TBLWTH access the words to a program space address. The details of
space that contains the upper data byte. their operation are explained in Section 4.0 “Flash
Two table instructions are provided to move byte or Program Memory”.
word sized (16-bit) data to and from program space. For all table operations, the area of program memory
Both function as either byte or word operations. space to be accessed is determined by the Table Page
• TBLRDL (Table Read Low): In Word mode, this register (TBLPAG). TBLPAG covers the entire program
instruction maps the lower word of the program memory space of the device, including user and
space location (P<15:0>) to a data address configuration spaces. When TBLPAG<7> = 0, the table
(D<15:0>). page is located in the user memory space. When
TBLPAG<7> = 1, the page is located in configuration
space.
‘Phantom’ Byte
TBLRDH.B (Wn<0> = 0)
TBLRDL.B (Wn<0> = 1)
TBLRDL.B (Wn<0> = 0)
TBLRDL.W
3.6.3 READING DATA FROM PROGRAM 24-bit program word are used to contain the data. The
MEMORY USING PROGRAM SPACE upper 8 bits of any program space location used as
VISIBILITY data should be programmed with ‘1111 1111’ or
‘0000 0000’ to force a NOP. This prevents possible
The upper 32 Kbytes of data space may optionally be issues should the area of code ever be accidentally
mapped into any 16K word page of the program space. executed.
This option provides transparent access to stored
constant data from the data space without the need to Note: PSV access is temporarily disabled during
use special instructions (such as TBLRDL/H). table reads/writes.
Program space access through the data space occurs For operations that use PSV and are executed outside
if the Most Significant bit of the data space EA is ‘1’ and a REPEAT loop, the MOV and MOV.D instructions
program space visibility is enabled by setting the PSV require one instruction cycle in addition to the specified
bit in the Core Control register (CORCON<2>). The execution time. All other instructions require two
location of the program memory space to be mapped instruction cycles in addition to the specified execution
into the data space is determined by the Program time.
Space Visibility Page register (PSVPAG). This 8-bit For operations that use PSV, and are executed inside
register defines any one of 256 possible pages of a REPEAT loop, these instances require two instruction
16K words in program space. In effect, PSVPAG cycles in addition to the specified execution time of the
functions as the upper 8 bits of the program memory instruction:
address, with the 15 bits of the EA functioning as the
lower bits. By incrementing the PC by 2 for each • Execution in the first iteration
program memory word, the lower 15 bits of data space • Execution in the last iteration
addresses directly map to the lower 15 bits in the • Execution prior to exiting the loop due to an
corresponding program space addresses. interrupt
Data reads to this area add a cycle to the instruction • Execution upon re-entering the loop after an
being executed, since two program memory fetches interrupt is serviced
are required. Any other iteration of the REPEAT loop will allow the
Although each data space address 8000h and higher instruction using PSV to access data to execute in a
maps directly into a corresponding program memory single cycle.
address (see Figure 3-9), only the lower 16 bits of the
PSV Area
...while the lower 15 bits
of the EA specify an
exact address within
0xFFFF the PSV area. This
corresponds exactly to
the same lower 15 bits
of the actual program
space address.
0x800000
NOTES:
4.0 FLASH PROGRAM MEMORY the digital signal controller just before shipping the
product. This also allows the most recent firmware or a
Note: This data sheet summarizes the features custom firmware to be programmed.
of the dsPIC33FJ32GP202/204 and RTSP is accomplished using TBLRD (table read) and
dsPIC33FJ16GP304 family of devices. It TBLWT (table write) instructions. With RTSP, the user
is not intended to be a comprehensive application can write program memory data either in
reference source. To complement the blocks or ‘rows’ of 64 instructions (192 bytes) at a time
information in this data sheet, refer to the or a single program memory word, and erase program
dsPIC33F Family Reference Manual, memory in blocks or ‘pages’ of 512 instructions (1536
“Section 5. Flash Programming” bytes) at a time.
(DS70191), which is available from the
Microchip website (www.microchip.com).
4.1 Table Instructions and Flash
The dsPIC33FJ32GP202/204 and Programming
dsPIC33FJ16GP304 devices contain internal Flash
program memory for storing and executing application Regardless of the method used, all programming of
code. The memory is readable, writable and erasable Flash memory is done with the table read and table
during normal operation over the entire VDD range. write instructions. These allow direct read and write
access to the program memory space from the data
Flash memory can be programmed in two ways:
memory while the device is in normal operating mode.
• In-Circuit Serial Programming™ (ICSP™) The 24-bit target address in the program memory is
programming capability formed using bits <7:0> of the TBLPAG register and the
• Run-Time Self-Programming (RTSP) Effective Address (EA) from a W register specified in
the table instruction, as shown in Figure 4-1.
ICSP allows a dsPIC33FJ32GP202/204 and
dsPIC33FJ16GP304 device to be serially programmed The TBLRDL and the TBLWTL instructions are used to
while in the end application circuit. This is done with read or write to bits<15:0> of program memory.
two lines for programming clock and programming data TBLRDL and TBLWTL can access program memory in
(one of the alternate programming pin pairs: both Word and Byte modes.
PGC1/PGD1, PGC2/PGD2 or PGC3/PGD3), and three The TBLRDH and TBLWTH instructions are used to read
other lines for power (VDD), ground (VSS) and Master or write to bits<23:16> of program memory. TBLRDH
Clear (MCLR). This allows customers to manufacture and TBLWTH can also access program memory in Word
boards with unprogrammed devices and then program or Byte mode.
24 bits
Using
0 Program Counter 0
Program Counter
Working Reg EA
Using
1/0 TBLPAG Reg
Table Instruction
8 bits 16 bits
User/Configuration Byte
Space Select 24-bit EA Select
11064 Cycles
T RW = ---------------------------------------------------------------------------------------------- = 1.586ms
7.37 MHz × ( 1 – 0.05 ) × ( 1 – 0.00375 )
If ERASE = 0:
1111 = No operation
1101 = No operation
1100 = No operation
0011 = Memory word program operation
0010 = No operation
0001 = Memory row program operation
0000 = Program a single Configuration register byte
4.4.1 PROGRAMMING ALGORITHM FOR 4. Write the first 64 instructions from data RAM into
FLASH PROGRAM MEMORY the program memory buffers (see Example 4-2).
Programmers can program one row of program Flash 5. Write the program block to Flash memory:
memory at a time. To do this, it is necessary to erase a) Set the NVMOP bits to ‘0001’ to configure
the 8-row erase page that contains the desired row. for row programming. Clear the ERASE bit
The general process is: and set the WREN bit.
1. Read eight rows of program memory b) Write 0x55 to NVMKEY.
(512 instructions) and store in data RAM. c) Write 0xAA to NVMKEY.
2. Update the program data in RAM with the d) Set the WR bit. The programming cycle
desired new data. begins and the CPU stalls for the duration of
3. Erase the block (see Example 4-1): the write cycle. When the write to Flash
memory is done, the WR bit is cleared
a) Set the NVMOP bits (NVMCON<3:0>) to
automatically.
‘0010’ to configure for block erase. Set the
ERASE (NVMCON<6>) and WREN 6. Repeat steps 4 and 5, using the next available
(NVMCON<14>) bits. 64 instructions from the block in data RAM by
incrementing the value in TBLPAG, until all
b) Write the starting address of the page to be
512 instructions are written back to Flash memory.
erased into the TBLPAG and W registers.
c) Write 0x55 to NVMKEY. For protection against accidental operations, the write
initiate sequence for NVMKEY must be used to allow
d) Write 0xAA to NVMKEY.
any erase or program operation to proceed. After the
e) Set the WR bit (NVMCON<15>). The erase programming command has been executed, the user
cycle begins and the CPU stalls for the application must wait for the programming time until
duration of the erase cycle. When the erase is programming is complete. The two instructions
done, the WR bit is cleared automatically. following the start of the programming sequence
should be NOPs, as shown in Example 4-3.
Glitch Filter
MCLR
WDT
Module
Sleep or Idle
BOR
Internal
Regulator SYSRST
VDD
Trap Conflict
Illegal Opcode
Uninitialized W Register
Configuration Mismatch
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: All of the Reset status bits can be set or cleared in software. Setting one of these bits in software does not
cause a device Reset.
2: If the FWDTEN Configuration bit is ‘1’ (unprogrammed), the WDT is always enabled, regardless of the
SWDTEN bit setting.
Note 1: All of the Reset status bits can be set or cleared in software. Setting one of these bits in software does not
cause a device Reset.
2: If the FWDTEN Configuration bit is ‘1’ (unprogrammed), the WDT is always enabled, regardless of the
SWDTEN bit setting.
5.1 System Reset 2. BOR Reset: The on-chip voltage regulator has
a BOR circuit that keeps the device in Reset
The dsPIC33FJ32GP202/204 and until VDD crosses the VBOR threshold and the
dsPIC33FJ16GP304 family of devices have two types delay TBOR has elapsed. The delay TBOR
of Reset: ensures that the voltage regulator output
• Cold Reset becomes stable.
• Warm Reset 3. PWRT Timer: The programmable power-up
timer continues to hold the processor in Reset
A cold Reset is the result of a Power-on Reset (POR)
for a specific period of time (TPWRT) after a
or a Brown-out Reset (BOR). On a cold Reset, the
BOR. The delay TPWRT ensures that the system
FNOSC configuration bits in the FOSC device
power supplies have stabilized at the
configuration register selects the device clock source.
appropriate level for full-speed operation. After
A warm Reset is the result of all other reset sources, the delay TPWRT has elapsed, the SYSRST
including the RESET instruction. On warm Reset, the becomes inactive, which in turn enables the
device will continue to operate from the current clock selected oscillator to start generating clock
source as indicated by the Current Oscillator Selection cycles.
(COSC<2:0>) bits in the Oscillator Control 4. Oscillator Delay: The total delay for the clock to
(OSCCON<14:12>) register. be ready for various clock source selections is
The device is kept in a Reset state until the system given in Table 5-1. Refer to Section 7.0
power supplies have stabilized at appropriate levels “Oscillator Configuration” for more
and the oscillator clock is ready. The sequence in information.
which this occurs is detailed below and is shown in 5. When the oscillator clock is ready, the processor
Figure 5-2. begins execution from location 0x000000. The
1. POR Reset: A POR circuit holds the device in user application programs a GOTO instruction at
Reset when the power supply is turned on. The the reset address, which redirects program
POR circuit is active until VDD crosses the VPOR execution to the appropriate start-up routine.
threshold and the delay TPOR has elapsed. 6. The Fail-Safe Clock Monitor (FSCM), if enabled,
begins to monitor the system clock when the
system clock is ready and the delay TFSCM
elapsed.
Vbor
VBOR
VPOR
VDD
TPOR
1
POR Reset TBOR
2
BOR Reset 3
TPWRT
SYSRST
4
Oscillator Clock
TOSCD TOST TLOCK
6
TFSCM
FSCM
5
Time
Note 1: POR Reset: A POR circuit holds the device in Reset when the power supply is turned on. The POR circuit is
active until VDD crosses the VPOR threshold and the delay TPOR has elapsed.
2: BOR Reset: The on-chip voltage regulator has a BOR circuit that keeps the device in Reset until VDD crosses
the VBOR threshold and the delay TBOR has elapsed. The delay TBOR ensures the voltage regulator output
becomes stable.
3: PWRT Timer: The programmable power-up timer continues to hold the processor in Reset for a specific
period of time (TPWRT) after a BOR. The delay TPWRT ensures that the system power supplies have stabilized
at the appropriate level for full-speed operation. After the delay TPWRT has elapsed, the SYSRST becomes
inactive, which in turn enables the selected oscillator to start generating clock cycles.
4: Oscillator Delay: The total delay for the clock to be ready for various clock source selections are given in
Table 5-1. Refer to Section 7.0 “Oscillator Configuration” for more information.
5: When the oscillator clock is ready, the processor begins execution from location 0x000000. The user
application programs a GOTO instruction at the reset address, which redirects program execution to the
appropriate start-up routine.
6: The Fail-Safe Clock Monitor (FSCM), if enabled, begins to monitor the system clock when the system clock
is ready and the delay TFSCM elapsed.
VBOR
TBOR + TPWRT
SYSRST
VDD
VBOR
TBOR + TPWRT
SYSRST
VDD
VBOR
TBOR + TPWRT
SYSRST
5.3 External Reset (EXTR) The Software Reset (Instruction) Flag (SWR) bit in the
Reset Control (RCON<6>) register is set to indicate
The external Reset is generated by driving the MCLR the software Reset.
pin low. The MCLR pin is a Schmitt trigger input with an
additional glitch filter. Reset pulses that are longer than
5.5 Watchdog Time-out Reset (WDTO)
the minimum pulse-width will generate a Reset. Refer
to Section 21.0 “Electrical Characteristics” for Whenever a Watchdog time-out occurs, the device will
minimum pulse-width specifications. The External asynchronously assert SYSRST. The clock source will
Reset (MCLR) Pin (EXTR) bit in the Reset Control remain unchanged. A WDT time-out during Sleep or
(RCON) register is set to indicate the MCLR Reset. Idle mode will wake-up the processor, but will not reset
the processor.
5.3.1 EXTERNAL SUPERVISORY CIRCUIT
The Watchdog Timer Time-out Flag (WDTO) bit in the
Many systems have external supervisory circuits that Reset Control (RCON<4>) register is set to indicate
generate reset signals to Reset multiple devices in the the Watchdog Reset. Refer to Section 18.4
system. This external Reset signal can be directly “Watchdog Timer (WDT)” for more information on
connected to the MCLR pin to Reset the device when Watchdog Reset.
the rest of system is Reset.
5.6 Trap Conflict Reset
5.3.2 INTERNAL SUPERVISORY CIRCUIT
If a lower-priority hard trap occurs while a
When using the internal power supervisory circuit to higher-priority trap is being processed, a hard trap
Reset the device, the external reset pin (MCLR) should conflict Reset occurs. The hard traps include
be tied directly or resistively to VDD. In this case, the exceptions of priority level 13 through level 15, inclu-
MCLR pin will not be used to generate a Reset. The sive. The address error (level 13) and oscillator error
external reset pin (MCLR) does not have an internal (level 14) traps fall into this category.
pull-up and must not be left unconnected.
The Trap Reset Flag (TRAPR) bit in the Reset Control
(RCON<15>) register is set to indicate the Trap Conflict
5.4 Software RESET Instruction (SWR)
Reset. Refer to Section 6.0 “Interrupt Controller” for
Whenever the RESET instruction is executed, the more information on trap conflict Resets.
device will assert SYSRST, placing the device in a
special Reset state. This Reset state will not
re-initialize the clock. The clock source in effect prior to
the RESET instruction will remain. SYSRST is released
at the next instruction cycle, and the reset vector fetch
will commence.
5.7 Configuration Mismatch Reset each program memory section to store the data values.
The upper 8 bits should be programmed with 3Fh,
To maintain the integrity of the peripheral pin select which is an illegal opcode value.
control registers, they are constantly monitored with
shadow registers in hardware. If an unexpected 5.8.2 UNINITIALIZED W REGISTER
change in any of the registers occur (such as cell RESET
disturbances caused by ESD or other external events),
a configuration mismatch Reset occurs. Any attempts to use the uninitialized W register as an
address pointer will Reset the device. The W register
The Configuration Mismatch Flag (CM) bit in the array (with the exception of W15) is cleared during all
Reset Control (RCON<9>) register is set to indicate resets and is considered uninitialized until written to.
the configuration mismatch Reset. Refer to
Section 9.0 “I/O Ports” for more information on the 5.8.3 SECURITY RESET
configuration mismatch Reset.
If a Program Flow Change (PFC) or Vector Flow
Note: The configuration mismatch feature and Change (VFC) targets a restricted location in a
associated reset flag is not available on all protected segment (Boot and Secure Segment), that
devices. operation will cause a security Reset.
The PFC occurs when the Program Counter is
5.8 Illegal Condition Device Reset reloaded as a result of a Call, Jump, Computed Jump,
Return, Return from Subroutine, or other form of
An illegal condition device Reset occurs due to the branch instruction.
following sources:
The VFC occurs when the Program Counter is
• Illegal Opcode Reset reloaded with an Interrupt or Trap vector.
• Uninitialized W Register Reset
Refer to Section 18.6 “Code Protection and
• Security Reset CodeGuard™ Security” for more information on
The Illegal Opcode or Uninitialized W Access Reset Security Reset.
Flag (IOPUWR) bit in the Reset Control (RCON<14>)
register is set to indicate the illegal condition device 5.9 Using the RCON Status Bits
Reset.
The user application can read the Reset Control
5.8.1 ILLEGAL OPCODE RESET (RCON) register after any device Reset to determine
the cause of the reset.
A device Reset is generated if the device attempts to
execute an illegal opcode value that is fetched from Note: The status bits in the RCON register
program memory. should be cleared after they are read so
The illegal opcode Reset function can prevent the that the next RCON register value after a
device from executing program memory sections that device Reset will be meaningful.
are used to store constant data. To take advantage of Table 5-3 provides a summary of the reset flag bit
the illegal opcode Reset, use only the lower 16 bits of operation.
Note 1: See Table 6-1 for the list of implemented interrupt vectors.
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
Note 1: For complete register details, see Register 2-1: “SR: CPU Status Register”.
2: The IPL<2:0> bits are concatenated with the IPL<3> bit (CORCON<3>) to form the CPU Interrupt Priority
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> Status bits are read-only when NSTDIS (INTCON1<15>) = 1.
Note 1: For complete register details, see Register 2-2: “CORCON: CORE Control Register”.
2: The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU Interrupt Priority Level.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
NOTES:
S3 XTPLL, HSPLL,
ECPLL, FRCPLL FCY
DOZE
OSCI S1 PLL(1) S1/S3
÷ 2
FOSC
FRC
FRCDIV
FRCDIVN
Oscillator S7
FRCDIV<2:0>
TUN<5:0>
FRCDIV16
S6
÷ 16
FRC S0
LPRC LPRC
S5
Oscillator
Secondary Oscillator
SOSC
SOSCO S4
LPOSCEN
SOSCI Clock Fail Clock Switch Reset
S7 NOSC<2:0> FNOSC<2:0>
WDT, PWRT,
FSCM
Timer 1
Note 1: See Figure 7-2 for PLL details.
For example, suppose a 10 MHz crystal is being used, EQUATION 7-3: XT WITH PLL MODE
with “XT with PLL” being the selected oscillator mode. EXAMPLE
• If PLLPRE<4:0> = 0, then N1 = 2. This yields a
VCO input of 10/2 = 5 MHz, which is within the
acceptable range of 0.8-8 MHz. FCY =
2 2
(
FOSC 1 10000000*32
=
2*2
)
= 40 MIPS
• If PLLDIV<8:0> = 0x1E, then M = 32. This yields a
VCO output of 5 x 32 = 160 MHz, which is within
the 100-200 MHz ranged needed.
PLLDIV
Divide by Divide by
2-33 2, 4, 8
Divide by
2-513
Note 1: This bit is cleared when the ROI bit is set and an interrupt occurs.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
7.2 Clock Switching Operation 1. The clock switching hardware compares the
COSC status bits with the new value of the
Applications are free to switch among any of the four NOSC control bits. If they are the same, the
clock sources (Primary, LP, FRC and LPRC) under clock switch is a redundant operation. In this
software control at any time. To limit the possible side case, the OSWEN bit is cleared automatically
effects of this flexibility, dsPIC33FJ32GP202/204 and and the clock switch is aborted.
dsPIC33FJ16GP304 devices have a safeguard lock
2. If a valid clock switch has been initiated, the
built into the switch process.
LOCK (OSCCON<5>) and the CF
Note: Primary Oscillator mode has three different (OSCCON<3>) status bits are cleared.
submodes (XT, HS and EC), which are 3. The new oscillator is turned on by the hardware
determined by the POSCMD<1:0> if it is not currently running. If a crystal oscillator
Configuration bits. While an application must be turned on, the hardware waits until the
can switch to and from Primary Oscillator Oscillator Start-up Timer (OST) expires. If the
mode in software, it cannot switch among new source is using the PLL, the hardware waits
the different primary submodes without until a PLL lock is detected (LOCK = 1).
reprogramming the device. 4. The hardware waits for 10 clock cycles from the
new clock source and then performs the clock
7.2.1 ENABLING CLOCK SWITCHING switch.
To enable clock switching, the FCKSM1 Configuration 5. The hardware clears the OSWEN bit to indicate a
bit in the Configuration register must be programmed to successful clock transition. In addition, the NOSC
‘0’. (Refer to Section 18.1 “Configuration Bits” for bit values are transferred to the COSC status bits.
further details.) If the FCKSM1 Configuration bit is 6. The old clock source is turned off at this time,
unprogrammed (‘1’), the clock switching function and with the exception of LPRC (if WDT or FSCM
Fail-Safe Clock Monitor function are disabled. This is are enabled) or LP (if LPOSCEN remains set).
the default setting.
Note 1: The processor continues to execute code
The NOSC control bits (OSCCON<10:8>) do not throughout the clock switching sequence.
control the clock selection when clock switching is Timing-sensitive code should not be
disabled. However, the COSC bits (OSCCON<14:12>) executed during this time.
reflect the clock source selected by the FNOSC
Configuration bits. 2: Direct clock switches between any primary
oscillator mode with PLL and FRCPLL
The OSWEN control bit (OSCCON<0>) has no effect mode are not permitted. This applies to
when clock switching is disabled. It is held at ‘0’ at all clock switches in either direction. In these
times. instances, the application must switch to
FRC mode as a transition clock source
7.2.2 OSCILLATOR SWITCHING
between the two PLL modes.
SEQUENCE
Performing a clock switch requires this basic 7.3 Fail-Safe Clock Monitor (FSCM)
sequence:
1. If desired, read the COSC bits The Fail-Safe Clock Monitor (FSCM) allows the device
(OSCCON<14:12>) to determine the current to continue to operate even in the event of an oscillator
oscillator source. failure. The FSCM function is enabled by programming.
If the FSCM function is enabled, the LPRC internal
2. Perform the unlock sequence to allow a write to
oscillator runs at all times (except during Sleep mode)
the OSCCON register high byte.
and is not subject to control by the Watchdog Timer.
3. Write the appropriate value to the NOSC control
bits (OSCCON<10:8>) for the new oscillator In the event of an oscillator failure, the FSCM
source. generates a clock failure trap event and switches the
system clock over to the FRC oscillator. Then the
4. Perform the unlock sequence to allow a write to
application program can either attempt to restart the
the OSCCON register low byte.
oscillator or execute a controlled shutdown. The trap
5. Set the OSWEN bit to initiate the oscillator can be treated as a warm Reset by simply loading the
switch. Reset address into the oscillator fail trap vector.
Once the basic sequence is completed, the system If the PLL multiplier is used to scale the system clock,
clock hardware responds automatically as follows: the internal FRC is also multiplied by the same factor
on clock failure. Essentially, the device switches to
FRC with PLL on a clock failure.
NOTES:
8.2.2 IDLE MODE Doze mode is enabled by setting the DOZEN bit
(CLKDIV<11>). The ratio between peripheral and core
The following occur in Idle mode:
clock speed is determined by the DOZE<2:0> bits
• The CPU stops executing instructions. (CLKDIV<14:12>). There are eight possible
• The WDT is automatically cleared. configurations, from 1:1 to 1:128, with 1:1 being the
• The system clock source remains active. By default setting.
default, all peripheral modules continue to operate Programs can use Doze mode to selectively reduce
normally from the system clock source, but can power consumption in event-driven applications. This
also be selectively disabled (see Section 8.4 allows clock-sensitive functions, such as synchronous
“Peripheral Module Disable”). communications, to continue without interruption while
• If the WDT or FSCM is enabled, the LPRC also the CPU idles, waiting for something to invoke an
remains active. interrupt routine. An automatic return to full-speed CPU
The device will wake from Idle mode on any of these operation on interrupts can be enabled by setting the
events: ROI bit (CLKDIV<15>). By default, interrupt events
have no effect on Doze mode operation.
• Any interrupt that is individually enabled.
For example, suppose the device is operating at
• Any device Reset
20 MIPS and the CAN module has been configured for
• A WDT time-out 500 kbps based on this device operating speed. If the
On wake-up from Idle mode, the clock is reapplied to device is placed in Doze mode with a clock frequency
the CPU and instruction execution begins immediately, ratio of 1:4, the CAN module continues to communicate
starting with the instruction following the PWRSAV at the required bit rate of 500 kbps, but the CPU now
instruction, or the first instruction in the ISR. starts executing instructions at a frequency of 5 MIPS.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
9.0 I/O PORTS peripheral that shares the same pin. Figure 9-1 shows
how ports are shared with other peripherals and the
Note: This data sheet summarizes the features associated I/O pin to which they are connected.
of the dsPIC33FJ32GP202/204 and When a peripheral is enabled and the peripheral is
dsPIC33FJ16GP304 family of devices. It actively driving an associated pin, the use of the pin as
is not intended to be a comprehensive a general purpose output pin is disabled. The I/O pin
reference source. To complement the can be read, but the output driver for the parallel port bit
information in this data sheet, refer to the is disabled. If a peripheral is enabled, but the peripheral
dsPIC33F Family Reference Manual, is not actively driving a pin, that pin can be driven by a
“Section 10. I/O Ports” (DS70193), port.
which is available on Microchip website
(www.microchip.com). All port pins have three registers directly associated
with their operation as digital I/O. The data direction
All of the device pins (except VDD, VSS, MCLR and register (TRISx) determines whether the pin is an input
OSC1/CLKI) are shared among the peripherals and the or an output. If the data direction bit is a ‘1’, then the pin
parallel I/O ports. All I/O input ports feature Schmitt is an input. All port pins are defined as inputs after a
Trigger inputs for improved noise immunity. Reset. Reads from the latch (LATx) read the latch.
Writes to the latch, write the latch. Reads from the port
9.1 Parallel I/O (PIO) Ports (PORTx) read the port pins, while writes to the port pins
write the latch.
A parallel I/O port that shares a pin with a peripheral is
generally subservient to the peripheral. The Any bit and its associated data and control registers
peripheral’s output buffer data and control signals are that are not valid for a particular device will be
provided to a pair of multiplexers. The multiplexers disabled. That means the corresponding LATx and
select whether the peripheral or the associated port TRISx registers and the port pin will read as zeros.
has ownership of the output data and control signals of When a pin is shared with another peripheral or
the I/O pin. The logic also prevents “loop through”, in function that is defined as an input only, it is
which a port’s digital output can drive the input of a nevertheless regarded as a dedicated port because
there is no other competing source of outputs.
PIO Module 1
Output Data
Read TRIS 0
WR TRIS CK
TRIS Latch
D Q
WR LAT +
WR Port CK
Data Latch
Read LAT
Input Data
Read Port
0
RP0
1
RP1
U1RX input
to peripheral
2
RP2
25
RP25
9.4.2.2 Output Mapping value of the bit field corresponds to one of the periph-
erals, and that peripheral’s output is mapped to the pin
In contrast to inputs, the outputs of the peripheral pin
(see Table 9-3 and Figure 9-3).
select options are mapped on the basis of the pin. In
this case, a control register associated with a particular The list of peripherals for output mapping also includes
pin dictates the peripheral output to be mapped. The a null value of ‘00000’ because of the mapping
RPORx registers are used to control output mapping. technique. This permits any given pin to remain
Like the RPINRx registers, each register contains sets unconnected from the output of any of the pin
of 5-bit fields, with each set associated with one RPn selectable peripherals.
pin (see Register 9-10 through Register 9-22). The
Default
0
U1TX Output enable
3
U1RTS Output enable 4
Output enable
Default
0
U1TX Output
3
U1RTS Output 4
RPn
Output Data
OC1 Output
18
OC2 Output
19
9.4.3 CONTROLLING CONFIGURATION Unlike the similar sequence with the oscillator’s LOCK
CHANGES bit, IOLOCK remains in one state until changed. This
allows all of the peripheral pin selects to be configured
Because peripheral remapping can be changed during
with a single unlock sequence followed by an update to
run time, some restrictions on peripheral remapping
all control registers, then locked with a second lock
are needed to prevent accidental configuration
sequence.
changes. dsPIC33F devices include three features to
prevent alterations to the peripheral map: 9.4.3.2 Continuous State Monitoring
• Control register lock sequence In addition to being protected from direct writes, the
• Continuous state monitoring contents of the RPINRx and RPORx registers are
• Configuration bit pin select lock constantly monitored in hardware by shadow registers.
If an unexpected change in any of the registers occurs
9.4.3.1 Control Register Lock (such as cell disturbances caused by ESD or other
Under normal operation, writes to the RPINRx and external events), a configuration mismatch Reset will
RPORx registers are not allowed. Attempted writes be triggered.
appear to execute normally, but the contents of the
registers remain unchanged. To change these 9.4.3.3 Configuration Bit Pin Select Lock
registers, they must be unlocked in hardware. The As an additional level of safety, the device can be
register lock is controlled by the IOLOCK bit configured to prevent more than one write session to
(OSCCON<6>). Setting IOLOCK prevents writes to the the RPINRx and RPORx registers. The IOL1WAY
control registers; clearing IOLOCK allows writes. (FOSC<IOL1WAY>) configuration bit blocks the
To set or clear IOLOCK, a specific command sequence IOLOCK bit from being cleared after it has been set
must be executed: once.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
NOTES:
TCKPS<1:0>
SOSCO/ TON 2
1x
T1CK
Gate Prescaler
SOSCEN Sync 01 1, 8, 64, 256
SOSCI
TCY 00
TGATE
TGATE TCS
1 Q D
Set T1IF
0 Q CK
0
Reset
TMR1
1 Sync
Comparator TSYNC
Equal
PR1
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
TCKPS<1:0>
TON 2
T2CK 1x
Gate Prescaler
Sync 01 1, 8, 64, 256
TCY 00
TGATE TGATE
TCS
1 Q D
Set T3IF
Q CK
0
PR3 PR2
MSb LSb
16
Read TMR2
Write TMR2
16
16
TMR3HLD
16
Data Bus<15:0>
Note 1: The 32-bit timer control bit, T32, must be set for 32-bit timer/counter operation. All control bits are respective
to the T2CON register.
2: The ADC event trigger is available only on Timer2/3.
TCKPS<1:0>
TON 2
T2CK 1x
Gate Prescaler
Sync 01 1, 8, 64, 256
TGATE 00
TCY TCS
1 Q D TGATE
Set T2IF Q CK
0
Reset
TMR2 Sync
Comparator
Equal
PR2
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: In 32-bit mode, T3CON control bits do not affect 32-bit timer operation.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: When 32-bit operation is enabled (T2CON<3> = 1), these bits have no effect on Timer3 operation; all timer
functions are set through T2CON.
NOTES:
16 16
ICTMR
1 0
(ICxCON<7>)
Prescaler Edge Detection Logic FIFO
Counter and R/W
(1, 4, 16) Clock Synchronizer Logic
ICx Pin
ICM<2:0> (ICxCON<2:0>)
3 Mode Select
FIFO
ICOV, ICBNE (ICxCON<4:3>)
ICxBUF
ICxI<1:0>
Interrupt
ICxCON Logic
System Bus
Set Flag ICxIF
(in IFSn Register)
Note: An ‘x’ in a signal, register or bit name denotes the number of the capture channel.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
OCxRS
OCxR Output S Q
OCx
Logic R
3 Output Enable
OCM<2:0>
Mode Select OCFA
Comparator
0 1 OCTSEL 0 1
16 16
13.1 Output Compare Modes Compare modes. Figure 13-2 illustrates the output
compare operation for various modes. The user
Configure the Output Compare modes by setting the application must disable the associated timer when
appropriate Output Compare Mode (OCM<2:0>) bits in writing to the output compare control registers to avoid
the Output Compare Control (OCxCON<2:0>) register. malfunctions.
Table 13-1 lists the different bit settings for the Output
OCxRS
TMRy
OCxR
Active-Low One-Shot
(OCM = 001)
Active-High One-Shot
(OCM = 010)
Toggle Mode
(OCM = 011)
Delayed One-Shot
(OCM = 100)
PWM Mode
(OCM = 110 or 111)
NOTES:
14.0 SERIAL PERIPHERAL Each SPI module consists of a 16-bit shift register,
SPIxSR (where x = 1 or 2), used for shifting data in and
INTERFACE (SPI) out, and a buffer register, SPIxBUF. A control register,
Note: This data sheet summarizes the features SPIxCON, configures the module. Additionally, a status
of the dsPIC33FJ32GP202/204 and register, SPIxSTAT, indicates status conditions.
dsPIC33FJ16GP304 family of devices. It The serial interface consists of 4 pins:
is not intended to be a comprehensive
• SDIx (serial data input)
reference source. To complement the
• SDOx (serial data output)
information in this data sheet, refer to the
• SCKx (shift clock input or output)
dsPIC33F Family Reference Manual,
• SSx (active-low slave select)
“Section 18. Serial Peripheral Interface
(SPI)” (DS70206), which is available on In Master mode operation, SCK is a clock output. In
the Microchip website Slave mode, it is a clock input.
(www.microchip.com).
The Serial Peripheral Interface (SPI) module is a
synchronous serial interface useful for communicating
with other peripheral or microcontroller devices. These
peripheral devices can be serial EEPROMs, shift
registers, display drivers, analog-to-digital (A/D)
converters, etc. The SPI module is compatible with SPI
and SIOP from Motorola®.
Transfer Transfer
SPIxRXB SPIxTXB
SPIxBUF
16
Internal Data Bus
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: The CKE bit is not used in the Framed SPI modes. Program this bit to ‘0’ for the Framed SPI modes
(FRMEN = 1).
Note 1: The CKE bit is not used in the Framed SPI modes. Program this bit to ‘0’ for the Framed SPI modes
(FRMEN = 1).
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
NOTES:
Internal
Data Bus
I2CxRCV
Read
Shift
SCLx Clock
I2CxRSR
LSb
I2CxMSK
Write Read
I2CxADD
Read
Read
Collision Write
Detect
I2CxCON
Acknowledge
Generation Read
Clock
Stretching
Write
I2CxTRN
LSb
Shift Clock Read
Reload
Control
Write
Read
TCY/2
R/C-0 HS R/C-0 HS R-0 HSC R/C-0 HSC R/C-0 HSC R-0 HSC R-0 HSC R-0 HSC
IWCOL I2COV D_A P S R_W RBF TBF
bit 7 bit 0
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
NOTES:
16.0 UNIVERSAL ASYNCHRONOUS • Hardware Flow Control Option with UxCTS and
UxRTS pins
RECEIVER TRANSMITTER
• Fully Integrated Baud Rate Generator with 16-bit
(UART) prescaler
Note: This data sheet summarizes the features • Baud rates ranging from 1 Mbps to 15 bps at 16x
of the dsPIC33FJ32GP202/204 and mode at 40 MIPS
dsPIC33FJ16GP304 family of devices. It • Baud rates ranging from 4 Mbps to 61 bps at 4x
is not intended to be a comprehensive mode at 40 MIPS
reference source. To complement the • 4-deep first-in-first-out (FIFO) Transmit Data Buf-
information in this data sheet, refer to the fer
dsPIC33F Family Reference Manual, • 4-Deep FIFO Receive Data Buffer
“Section 17. UART” (DS70188), which is
• Parity, framing and buffer overrun error detection
available on the Microchip website
(www.microchip.com). • Support for 9-bit mode with Address Detect
(9th bit = 1)
The Universal Asynchronous Receiver Transmitter • Transmit and Receive interrupts
(UART) module is one of the serial I/O modules
• A separate interrupt for all UART error conditions
available in the dsPIC33FJ32GP202/204 and
dsPIC33FJ16GP304 device family. The UART is a • Loopback mode for diagnostic support
full-duplex asynchronous system that can • Support for Sync and Break characters
communicate with peripheral devices, such as • Support for automatic baud rate detection
personal computers, LIN, RS-232 and RS-485 • IrDA encoder and decoder logic
interfaces. The module also supports a hardware flow • 16x baud clock output for IrDA support
control option with the UxCTS and UxRTS pins and
also includes an IrDA® encoder and decoder. A simplified block diagram of the UART module is
shown in Figure 16-1. The UART module consists of
The primary features of the UART module are: these key hardware elements:
• Full-Duplex, 8- or 9-bit Data Transmission through • Baud Rate Generator
the UxTX and UxRX pins
• Asynchronous Transmitter
• Even, odd or no parity options (for 8-bit data)
• Asynchronous Receiver
• One or two stop bits
IrDA® BCLK
Note 1: This feature is only available for the 16x BRG mode (BRGH = 0).
Note 1: This feature is only available for the 16x BRG mode (BRGH = 0).
NOTES:
AN0
AN12
S/H0
CHANNEL
SCAN +
CH0SB<4:0>
CH0SA<4:0> -
CH0 CSCNA
AN1
VREF-
CH0NA CH0NB
VREF+(1) AVDD VREF-(1) AVSS
AN0
AN3 S/H1
+
CH123SA CH123SB -
CH1(2)
AN6
AN9
VREF- ADC1BUF0
ADC1BUF1
ADC1BUF2
VREFH VREFL
CH123NA CH123NB
SAR ADC
AN1
AN4
S/H2
+ ADC1BUFE
CH123SA CH123SB - ADC1BUFF
CH2(2) AN7
AN10
VREF-
CH123NA CH123NB
AN2
AN5
S/H3
+
CH123SA CH123SB
-
CH3(2)
AN8
AN11
VREF-
CH123NA CH123NB
Alternate
Input Selection
Note 1: VREF+, VREF- inputs can be multiplexed with other analog inputs.
2: Channels 1, 2 and 3 are not applicable for the 12-bit mode of operation.
AN0
AN12
S/H0
CHANNEL
SCAN +
CH0SB<4:0>
CH0SA<4:0> -
CH0 CSCNA
AN1
VREF-
CH0NA CH0NB
VREF+(1) AVDD VREF-(1) AVSS
AN0
AN3 S/H1
+
CH123SA CH123SB -
CH1(2)
AN9
VREF- ADC1BUF0
ADC1BUF1
ADC1BUF2
VREFH VREFL
CH123NA CH123NB
SAR ADC
AN1
AN4
S/H2
+ ADC1BUFE
CH123SA CH123SB - ADC1BUFF
(2)
CH2
AN10
VREF-
CH123NA CH123NB
AN2
AN5
S/H3
+
CH123SA CH123SB
(2) -
CH3
AN11
VREF-
CH123NA CH123NB
Alternate
Input Selection
Note 1: VREF+, VREF- inputs can be multiplexed with other analog inputs.
2: Channels 1, 2 and 3 are not applicable for the 12-bit mode of operation.
AD1CON3<15>
ADC Internal
RC Clock(2) 0
TAD
AD1CON3<5:0> 1
ADC Conversion
TCY Clock Multiplier
TOSC(1) X2
1, 2, 3, 4, 5,..., 64
Note 1: Refer to Figure 7-2 for the derivation of FOSC when the PLL is enabled. If the PLL is not used, FOSC is equal
to the clock frequency. TOSC = 1/FOSC.
2: See the ADC Electrical Characteristics for the exact RC clock value.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
ADREF+ ADREF-
000 AVDD AVSS
001 External VREF+ AVSS
010 AVDD External VREF-
011 External VREF+ External VREF-
1xx AVDD Avss
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
If AD12B = 0:
11 = CH1 negative input is AN9, CH2 negative input is AN10, CH3 negative input is AN11
10 = Reserved
01 = CH1, CH2, CH3 negative input is VREF-
00 = CH1, CH2, CH3 negative input is VREF-
If AD12B = 0:
11 = CH1 negative input is AN9, CH2 negative input is AN10, CH3 negative input is AN11
10 = CH1 negative input is AN6, CH2 negative input is AN7, CH3 negative input is AN8
01 = CH1, CH2, CH3 negative input is VREF-
00 = CH1, CH2, CH3 negative input is VREF-
bit 8 CH123SB: Channel 1, 2, 3 Positive Input Select for Sample B bit
If AD12B = 1:
1 = Reserved
0 = Reserved
If AD12B = 0:
1 = CH1 positive input is AN3, CH2 positive input is AN4, CH3 positive input is AN5
0 = CH1 positive input is AN0, CH2 positive input is AN1, CH3 positive input is AN2
bit 7-3 Unimplemented: Read as ‘0’
If AD12B = 0:
11 = CH1 negative input is AN9, CH2 negative input is AN10, CH3 negative input is AN11
10 = Reserved
01 = CH1, CH2, CH3 negative input is VREF-
00 = CH1, CH2, CH3 negative input is VREF-
If AD12B = 0:
11 = CH1 negative input is AN9, CH2 negative input is AN10, CH3 negative input is AN11
10 = CH1 negative input is AN6, CH2 negative input is AN7, CH3 negative input is AN8
01 = CH1, CH2, CH3 negative input is VREF-
00 = CH1, CH2, CH3 negative input is VREF-
bit 0 CH123SA: Channel 1, 2, 3 Positive Input Select for Sample A bit
If AD12B = 1:
1 = Reserved
0 = Reserved
If AD12B = 0:
1 = CH1 positive input is AN3, CH2 positive input is AN4, CH3 positive input is AN5
0 = CH1 positive input is AN0, CH2 positive input is AN1, CH3 positive input is AN2
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: On dsPIC33FJ32GP202, all AD1CSSL bits can be selected. However, inputs selected for scan without a
corresponding input on device will convert ADREF-.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
Note 1: On dsPIC33FJ32GP202 devices, all PCFG bits are R/W. However, PCFG bits are ignored on ports without
a corresponding input on device.
NOTES:
3.3V
dsPIC33F
VDD
VDDCORE/VCAP
CF
VSS
A variable postscaler divides down the WDT prescaler The WDT flag bit, WDTO (RCON<4>), is not automatically
output and allows for a wide range of time-out periods. cleared following a WDT time-out. To detect subsequent
The postscaler is controlled by the WDTPOST<3:0> WDT events, the flag must be cleared in software.
Configuration bits (FWDT<3:0>), which allow the selec- The WDT can be optionally controlled in software when
tion of 16 settings, from 1:1 to 1:32,768. Using the pres- the FWDTEN Configuration bit has been programmed
caler and postscaler, time-out periods ranging from to ‘0’. The WDT is enabled in software by setting the
1 ms to 131 seconds can be achieved. SWDTEN control bit (RCON<5>). The SWDTEN
The WDT, prescaler and postscaler are reset: control bit is cleared on any device Reset. The software
WDT option allows the user application to enable the
• On any device Reset WDT for critical code segments and disable the WDT
• On the completion of a clock switch, whether during non-critical segments for maximum power
invoked by software (i.e., setting the OSWEN bit savings.
after changing the NOSC bits) or by hardware
(i.e., Fail-Safe Clock Monitor) Note: If the WINDIS bit (FWDT<6>) is cleared, the
CLRWDT instruction should be executed by
• When a PWRSAV instruction is executed
the application software only during the last
(i.e., Sleep or Idle mode is entered)
1/4 of the WDT period. This CLRWDT
• When the device exits Sleep or Idle mode to window can be determined by using a timer.
resume normal operation If a CLRWDT instruction is executed before
• By a CLRWDT instruction during normal execution this window, a WDT Reset occurs.
Note: The CLRWDT and PWRSAV instructions
clear the prescaler and postscaler counts
when executed.
Sleep/Idle
WDTPRE WDTPOST<3:0>
SWDTEN WDT
FWDTEN Wake-up
RS RS 1
Prescaler Postscaler
LPRC Clock (divide by N1) (divide by N2) WDT
0 Reset
CLRWDT Instruction
18.5 JTAG Interface peripherals) on a single chip. This feature helps protect
individual Intellectual Property in collaborative system
dsPIC33FJ32GP202/204 and dsPIC33FJ16GP304 designs.
devices implement a JTAG interface, which supports
boundary scan device testing, as well as in-circuit When coupled with software encryption libraries, Code-
programming. Detailed information on this interface will Guard™ Security can be used to securely update Flash
be provided in future revisions of the document. even when multiple IPs reside on the single chip.
The code protection features are controlled by the
18.6 Code Protection and Configuration registers: FBS and FGS. The Secure
CodeGuard™ Security segment and RAM is not implemented.
Note: Refer to “CodeGuard Security Reference
The dsPIC33FJ32GP202/204 and
Manual” (DS70180) for further information
dsPIC33FJ16GP304 product families offer the
on usage, configuration and operation of
intermediate implementation of CodeGuard™ Security.
CodeGuard Security.
CodeGuard Security enables multiple parties to
securely share resources (memory, interrupts and
TABLE 18-3: CODE FLASH SECURITY TABLE 18-4: CODE FLASH SECURITY
SEGMENT SIZES FOR SEGMENT SIZES FOR
32 KBYTE DEVICES 16 KBYTE DEVICES
CONFIG BITS CONFIG BITS
000000h 000000h
VS = 256 IW 0001FEh VS = 256 IW 0001FEh
000200h 000200h
BSS<2:0> = x11 0007FEh BSS<2:0> = x11 0007FEh
000800h 000800h
001FFEh 001FFEh
0K 002000h 0K 002000h
GS = 11008 IW 003FFEh GS = 5376 IW
004000h
0057FEh 002BFEh
000000h 000000h
VS = 256 IW 0001FEh VS = 256 IW 0001FEh
000200h 000200h
BS = 768 IW 0007FEh BS = 768 IW 0007FEh
BSS<2:0> = x10 000800h BSS<2:0> = x10 000800h
001FFEh 001FFEh
256 002000h 256 002000h
003FFEh
004000h
GS = 10240 IW GS = 4608 IW
0057FEh 002BFEh
000000h 000000h
VS = 256 IW 0001FEh VS = 256 IW 0001FEh
000200h 000200h
BSS<2:0> = x01 BS = 3840 IW 0007FEh BSS<2:0> = x01 BS = 3840 IW 0007FEh
000800h 000800h
001FFEh 001FFEh
768 002000h 768 002000h
003FFEh
004000h
GS = 7168 IW GS = 1536 IW
0057FEh 002BFEh
000000h 000000h
VS = 256 IW 0001FEh VS = 256 IW 0001FEh
000200h 000200h
BS = 7936 IW 0007FEh BS = 5376 IW 0007FEh
BSS<2:0> = x00 000800h BSS<2:0> = x00 000800h
001FFEh 001FFEh
1792 002000h 1792 002000h
003FFEh
004000h
GS = 3072 IW
0057FEh 002BFEh
Most instructions are a single word. Certain (unconditional/computed branch), indirect CALL/GOTO,
double-word instructions are designed to provide all of all table reads and writes and RETURN/RETFIE
the required information in these 48 bits. In the second instructions, which are single-word instructions but take
word, the 8 MSbs are ‘0’s. If this second word is two or three cycles. Certain instructions that involve skip-
executed as an instruction (by itself), it will execute as ping over the subsequent instruction require either two
a NOP. The double-word instructions execute in two or three cycles if the skip is performed, depending on
instruction cycles. whether the instruction being skipped is a single-word or
Most single-word instructions are executed in a single two-word instruction. Moreover, double-word moves
instruction cycle, unless a conditional test is true, or the require two cycles.
program counter is changed as a result of the Note: For more details on the instruction set,
instruction. In these cases, the execution takes two refer to the “dsPIC30F/33F Programmer’s
instruction cycles with the additional instruction cycle(s) Reference Manual” (DS70157).
executed as a NOP. Notable exceptions are the BRA
Wm*Wm Multiplicand and Multiplier working register pair for Square instructions ∈
{W4 * W4,W5 * W5,W6 * W6,W7 * W7}
Wm*Wn Multiplicand and Multiplier working register pair for DSP instructions ∈
{W4 * W5,W4 * W6,W4 * W7,W5 * W6,W5 * W7,W6 * W7}
Wn One of 16 working registers ∈ {W0..W15}
Wnd One of 16 destination working registers ∈ {W0..W15}
Wns One of 16 source working registers ∈ {W0..W15}
WREG W0 (working register used in file register instructions)
Ws Source W register ∈ { Ws, [Ws], [Ws++], [Ws--], [++Ws], [--Ws] }
Wso Source W register ∈
{ Wns, [Wns], [Wns++], [Wns--], [++Wns], [--Wns], [Wns+Wb] }
Wx X data space prefetch address register for DSP instructions
∈ {[W8]+ = 6, [W8]+ = 4, [W8]+ = 2, [W8], [W8]- = 6, [W8]- = 4, [W8]- = 2,
[W9]+ = 6, [W9]+ = 4, [W9]+ = 2, [W9], [W9]- = 6, [W9]- = 4, [W9]- = 2,
[W9 + W12], none}
Wxd X data space prefetch destination register for DSP instructions ∈ {W4..W7}
Wy Y data space prefetch address register for DSP instructions
∈ {[W10]+ = 6, [W10]+ = 4, [W10]+ = 2, [W10], [W10]- = 6, [W10]- = 4, [W10]- = 2,
[W11]+ = 6, [W11]+ = 4, [W11]+ = 2, [W11], [W11]- = 6, [W11]- = 4, [W11]- = 2,
[W11 + W12], none}
Wyd Y data space prefetch destination register for DSP instructions ∈ {W4..W7}
Note 1: Stresses above those listed under “Absolute Maximum Ratings” can cause permanent damage to the
device. This is a stress rating only, and functional operation of the device at those or any other conditions
above those indicated in the operation listings of this specification is not implied. Exposure to maximum
rating conditions for extended periods can affect device reliability.
2: Maximum allowable current is a function of device maximum power dissipation (see Table 21-2).
3: Exceptions are CLKOUT, which is able to sink/source 25 mA, and the VREF+, VREF-, SCLx, SDAx, PGCx
and PGDx pins, which are able to sink/source 12 mA.
21.1 DC Characteristics
Load Condition 1 – for all pins except OSC2 Load Condition 2 – for OSC2
VDD/2
RL Pin CL
VSS
CL
Pin RL = 464Ω
CL = 50 pF for all pins except OSC2
VSS 15 pF for OSC2 output
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1
OS20
OS30 OS30 OS31 OS31
OS25
CLKO
OS41 OS40
I/O Pin
(Input)
DI35
DI40
FIGURE 21-4: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER AND POWER-UP
TIMER TIMING CHARACTERISTICS
VDD SY12
MCLR
Internal SY10
POR
SY11
PWRT
Time-out
SY30
OSC
Time-out
Internal
Reset
Watchdog
Timer
Reset
SY20
SY13
SY13
I/O Pins
SY35
FSCM
Delay
TABLE 21-21: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER, POWER-UP TIMER
TIMING REQUIREMENTS
Standard Operating Conditions: 3.0V to 3.6V
(unless otherwise stated)
AC CHARACTERISTICS
Operating temperature -40°C ≤ TA ≤ +85°C for Industrial
-40°C ≤ TA ≤ +125°C for Extended
Param
Symbol Characteristic(1) Min Typ(2) Max Units Conditions
No.
SY10 TMCL MCLR Pulse-Width (low) 2 — — μs -40°C to +85°C
SY11 TPWRT Power-up Timer Period — 2 — ms -40°C to +85°C
4 User programmable
8
16
32
64
128
SY12 TPOR Power-on Reset Delay 3 10 30 μs -40°C to +85°C
SY13 TIOZ I/O High-Impedance from MCLR 0.68 0.72 1.2 μs —
Low or Watchdog Timer Reset
SY20 TWDT1 Watchdog Timer Time-out Period — — — ms See Section 18.4
(No Prescaler) “Watchdog Timer (WDT)”
and LPRC parameter F21
(Table 21-19).
SY30 TOST Oscillator Start-up Time — 1024 — — TOSC = OSC1 period
TOSC
SY35 TFSCM Fail-Safe Clock Monitor Delay — 500 900 μs -40°C to +85°C
Note 1: These parameters are characterized but not tested in manufacturing.
2: Data in “Typ” column is at 3.3V, 25°C unless otherwise stated.
TxCK
Tx10 Tx11
Tx15 Tx20
OS60
TMRx
ICx
IC10 IC11
IC15
OCx
(Output Compare
or PWM Mode) OC11 OC10
OC20
OCFA/OCFB
OC15
OCx
SCKx
(CKP = 0)
SCKx
(CKP = 1)
SP31 SP30
SP40 SP41
SCKX
(CKP = 1)
SP35
SP20 SP21
SP40 SP30,SP31
SP41
SSX
SP50 SP52
SCKX
(CKP = 0)
SP71 SP70
SP73 SP72
SCKX
(CKP = 1)
SP72 SP73
SP35
SP30,SP31 SP51
SDIX MSb In Bit 14 - - - -1 LSb In
SP41
SP40
Note: Refer to Figure 21-1 for load conditions.
SP50 SP52
SCKx
(CKP = 0)
SCKx
(CKP = 1)
SP35
SP72 SP73
SP52
SP30,SP31 SP51
SDI
SDIx
MSb In Bit 14 - - - -1 LSb In
SP41
SP40
FIGURE 21-13: I2Cx BUS START/STOP BITS TIMING CHARACTERISTICS (MASTER MODE)
SCLx
IM31 IM34
IM30 IM33
SDAx
Start Stop
Condition Condition
SDAx
Out
FIGURE 21-15: I2Cx BUS START/STOP BITS TIMING CHARACTERISTICS (SLAVE MODE)
SCLx
IS31 IS34
IS30 IS33
SDAx
Start Stop
Condition Condition
SDAx
Out
AD50
ADCLK
Instruction
Execution Set SAMP Clear SAMP
SAMP
AD61
AD60
TSAMP AD55
DONE
AD1IF
1 2 3 4 5 6 7 8 9
AD50
ADCLK
Instruction
Execution Set SAMP Clear SAMP
SAMP
AD61
AD60
DONE
AD1IF
Buffer(0)
Buffer(1)
1 2 3 4 5 6 7 8 5 6 7 8
FIGURE 21-19: ADC CONVERSION (10-BIT MODE) TIMING CHARACTERISTICS (CHPS<1:0> = 01,
SIMSAM = 0, ASAM = 1, SSRC<2:0> = 111, SAMC<4:0> = 00001)
AD50
ADCLK
Instruction
Set ADON
Execution
SAMP
TSAMP AD55 AD55 TSAMP AD55
AD1IF
DONE
1 2 3 4 5 6 7 3 4 5 6 8
4 – Convert bit 8.
XXXXXXXXXXXXXXXXX dsPIC33FJ32GP
XXXXXXXXXXXXXXXXX 202-E/SP e3
YYWWNNN 0730235
XXXXXXXXXXXXXXXXXXXX dsPIC33FJ32GP
XXXXXXXXXXXXXXXXXXXX 202-E/SO e3
XXXXXXXXXXXXXXXXXXXX 0730235
YYWWNNN
XXXXXXXX 33FJ32GP
XXXXXXXX 202EMM e3
YYWWNNN 0730235
XXXXXXXXXX dsPIC33FJ32
XXXXXXXXXX GP204-E/ML e3
XXXXXXXXXX 0730235
YYWWNNN
XXXXXXXXXX dsPIC33FJ
XXXXXXXXXX 32GP204
XXXXXXXXXX -E/PT e3
YYWWNNN 0730235
Note: If the full Microchip part number cannot be marked on one line, it is carried over to the next
line, thus limiting the number of available characters for customer-specific information.
28-Lead Skinny Plastic Dual In-Line (SP) – 300 mil Body [SPDIP]
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
NOTE 1
E1
1 2 3
A A2
L c
A1 b1
b e eB
Units INCHES
Dimension Limits MIN NOM MAX
Number of Pins N 28
Pitch e .100 BSC
Top to Seating Plane A – – .200
Molded Package Thickness A2 .120 .135 .150
Base to Seating Plane A1 .015 – –
Shoulder to Shoulder Width E .290 .310 .335
Molded Package Width E1 .240 .285 .295
Overall Length D 1.345 1.365 1.400
Tip to Seating Plane L .110 .130 .150
Lead Thickness c .008 .010 .015
Upper Lead Width b1 .040 .050 .070
Lower Lead Width b .014 .018 .022
Overall Row Spacing § eB – – .430
Notes:
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. § Significant Characteristic.
3. Dimensions D and E1 do not include mold flash or protrusions. Mold flash or protrusions shall not exceed .010" per side.
4. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
D
N
E
E1
NOTE 1
1 2 3
e
b
h
α
h
φ c
A A2
L
A1 L1 β
Units MILLMETERS
Dimension Limits MIN NOM MAX
Number of Pins N 28
Pitch e 1.27 BSC
Overall Height A – – 2.65
Molded Package Thickness A2 2.05 – –
Standoff § A1 0.10 – 0.30
Overall Width E 10.30 BSC
Molded Package Width E1 7.50 BSC
Overall Length D 17.90 BSC
Chamfer (optional) h 0.25 – 0.75
Foot Length L 0.40 – 1.27
Footprint L1 1.40 REF
Foot Angle Top φ 0° – 8°
Lead Thickness c 0.18 – 0.33
Lead Width b 0.31 – 0.51
Mold Draft Angle Top α 5° – 15°
Mold Draft Angle Bottom β 5° – 15°
Notes:
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. § Significant Characteristic.
3. Dimensions D and E1 do not include mold flash or protrusions. Mold flash or protrusions shall not exceed 0.15 mm per side.
4. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
REF: Reference Dimension, usually without tolerance, for information purposes only.
Microchip Technology Drawing C04-052B
28-Lead Plastic Quad Flat, No Lead Package (MM) – 6x6x0.9 mm Body [QFN-S]
with 0.40 mm Contact Length
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
D D2
EXPOSED
PAD
E2
E
b
2 2
1 1 K
N N
L
NOTE 1 BOTTOM VIEW
TOP VIEW
A3 A1
Units MILLIMETERS
Dimension Limits MIN NOM MAX
Number of Pins N 28
Pitch e 0.65 BSC
Overall Height A 0.80 0.90 1.00
Standoff A1 0.00 0.02 0.05
Contact Thickness A3 0.20 REF
Overall Width E 6.00 BSC
Exposed Pad Width E2 3.65 3.70 4.70
Overall Length D 6.00 BSC
Exposed Pad Length D2 3.65 3.70 4.70
Contact Width b 0.23 0.38 0.43
Contact Length L 0.30 0.40 0.50
Contact-to-Exposed Pad K 0.20 – –
Notes:
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. Package is saw singulated.
3. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
REF: Reference Dimension, usually without tolerance, for information purposes only.
Microchip Technology Drawing C04-124B
44-Lead Plastic Quad Flat, No Lead Package (ML) – 8x8 mm Body [QFN]
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
D D2
EXPOSED
PAD
E2
b
2 2
1 1
N N K
NOTE 1 L
A3 A1
Units MILLIMETERS
Dimension Limits MIN NOM MAX
Number of Pins N 44
Pitch e 0.65 BSC
Overall Height A 0.80 0.90 1.00
Standoff A1 0.00 0.02 0.05
Contact Thickness A3 0.20 REF
Overall Width E 8.00 BSC
Exposed Pad Width E2 6.30 6.45 6.80
Overall Length D 8.00 BSC
Exposed Pad Length D2 6.30 6.45 6.80
Contact Width b 0.25 0.30 0.38
Contact Length L 0.30 0.40 0.50
Contact-to-Exposed Pad K 0.20 – –
Notes:
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. Package is saw singulated.
3. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
REF: Reference Dimension, usually without tolerance, for information purposes only.
44-Lead Plastic Thin Quad Flatpack (PT) – 10x10x1 mm Body, 2.00 mm Footprint [TQFP]
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
D
D1
E
e
E1
N
b
NOTE 1 1 2 3
NOTE 2
A α
c φ
β A1 A2
L L1
Units MILLIMETERS
Dimension Limits MIN NOM MAX
Number of Leads N 44
Lead Pitch e 0.80 BSC
Overall Height A – – 1.20
Molded Package Thickness A2 0.95 1.00 1.05
Standoff A1 0.05 – 0.15
Foot Length L 0.45 0.60 0.75
Footprint L1 1.00 REF
Foot Angle φ 0° 3.5° 7°
Overall Width E 12.00 BSC
Overall Length D 12.00 BSC
Molded Package Width E1 10.00 BSC
Molded Package Length D1 10.00 BSC
Lead Thickness c 0.09 – 0.20
Lead Width b 0.30 0.37 0.45
Mold Draft Angle Top α 11° 12° 13°
Mold Draft Angle Bottom β 11° 12° 13°
Notes:
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. Chamfers at corners are optional; size may vary.
3. Dimensions D1 and E1 do not include mold flash or protrusions. Mold flash or protrusions shall not exceed 0.25 mm per side.
4. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
REF: Reference Dimension, usually without tolerance, for information purposes only.
Microchip Technology Drawing C04-076B
Added Note 1 to all pin diagrams, which references RPn pin usage by
remappable peripherals (see “Pin Diagrams”).
Section 1.0 “Device Overview” Changed PORTA pin name from RA15 to RA10 (see Table 1-1).
Section 3.0 “Memory Organization” Added SFR definitions (ACCAL, ACCAH, ACCAU, ACCBL, ACCBH, and
ACCBU) to the CPU Core Register Map (see Table 3-1).
Updated Reset values for the following SFRs: IPC1, IPC3-IPC5, IPC7,
IPC16 and INTTREG (see Table 3-4).
Updated the Reset value for CLKDIV in the System Control Register Map
(see Table 3-20).
Section 5.0 “Resets” Entire section was replaced to maintain consistency with other dsPIC33F
data sheets.
Section 7.0 “Oscillator Removed the first sentence of the third clock source item (External Clock) in
Configuration” Section 7.1.1.2 “Primary”.
Updated the default bit values for DOZE and FRCDIV in the Clock Divisor
Register (see Register 7-2).
Added the center frequency in the OSCTUN register for the FRC Tuning bits
(TUN<5:0>) value 011111 and updated the center frequency for bits value
011110 (see Register 7-4).
Section 8.0 “Power-Saving Added the following two registers:
Features” • PMD1: Peripheral Module Disable Control Register 1
• PMD2: Peripheral Module Disable Control Register 2
Section 9.0 “I/O Ports” Added paragraph and Table 9-1 to Section 9.1.1 “Open-Drain
Configuration”, which provides details on I/O pins and their functionality.
Removed the following sections, which are now available in the related
section of the dsPIC33F Family Reference Manual:
• 9.4.2 “Available Peripherals”
• 9.4.3.3 “Mapping”
• 9.4.5 “Considerations for Peripheral Pin Selection”
Section 13.0 “Output Compare” Replaced sections 13.1, 13.2 and 13.3 and related figures and tables with
entirely new content.
Removed IrDA references and Note 1, and updated the bit and bit value
descriptions for UTXINV (UxSTA<14>) in the UARTx Status and Control
Register (see Register 16-2).
Section 17.0 “10-bit/12-bit Analog- Removed Equation 17-1: ADC Conversion Clock Period and Figure 17-2:
to-Digital Converter (ADC)” ADC Transfer Function (10-Bit Example).
Added Note 2 to Figure 17-3: ADC Conversion Clock Period Block Diagram.
Added FICD register content (BKBUG, COE, JTAGEN, and ICS<1:0> to the
dsPIC33FJ32GP202/204 and dsPIC33FJ16GP304 Configuration Bits
Description (see Table 18-2).
Removed the words “if enabled” from the second sentence in the fifth
paragraph of Section 18.3 “BOR: Brown-Out Reset”.
Section 21.0 “Electrical Updated Max MIPS value for -40ºC to +125ºC temperature range in
Characteristics” Operating MIPS vs. Voltage (see Table 21-1).
Added Note 4 (reference to new table containing digital-only and analog pin
information to I/O Pin Input Specifications (see Table 21-9).
Updated Typ, Min, and Max values for Program Memory parameters D136,
D137, and D138 (see Table 21-12).
Updated Max value for Internal RC Accuracy parameter F21 for -40°C ≤ TA
≤ +125°C condition and added Note 2 (see Table 21-19).
Removed all values for Reset, Watchdog Timer, Oscillator Start-up Timer,
and Power-up Timer parameter SY20 and updated conditions, which now
refers to Section 18.4 “Watchdog Timer (WDT)” and LPRC parameter
F21 (see Table 21-21).
Updated Min and Typ values for parameters AD60, AD61, AD62 and AD63
and removed Note 3 (see Table 21-37).
Updated Min and Typ values for parameters AD60, AD61, AD62 and AD63
and removed Note 3 (see Table 21-38).
NOTES:
INDEX
A Customer Change Notification Service............................. 248
A/D Converter ................................................................... 167 Customer Notification Service .......................................... 248
Customer Support............................................................. 248
Initialization ............................................................... 167
Key Features............................................................. 167 D
AC Characteristics ............................................................ 210
Data Accumulators and Adder/Subtractor .......................... 23
Internal RC Accuracy ................................................ 212
Data Space Write Saturation ...................................... 25
Load Conditions ........................................................ 210
Overflow and Saturation ............................................. 23
ADC Module
Round Logic ............................................................... 24
ADC11 Register Map ...................................... 37, 39, 40
Write Back .................................................................. 24
Alternate Interrupt Vector Table .......................................... 67
Data Address Space........................................................... 29
Alternate Vector Table (AIVT) ............................................. 67
Alignment.................................................................... 29
Arithmetic Logic Unit (ALU)................................................. 21
Memory Map for dsPIC33F Devices with 8 KBs RAM 30
Assembler
Near Data Space ........................................................ 29
MPASM Assembler................................................... 198
Software Stack ........................................................... 43
B Width .......................................................................... 29
DC Characteristics............................................................ 202
Barrel Shifter ....................................................................... 25
Bit-Reversed Addressing .................................................... 46 I/O Pin Input Specifications ...................................... 207
I/O Pin Output Specifications.................................... 208
Example ...................................................................... 47
Idle Current (IDOZE) .................................................. 206
Implementation ........................................................... 46
Sequence Table (16-Entry)......................................... 47 Idle Current (IIDLE) .................................................... 205
Operating Current (IDD) ............................................ 204
Block Diagrams
Power-Down Current (IPD)........................................ 206
16-bit Timer1 Module ................................................ 133
A/D Module ....................................................... 168, 169 Program Memory...................................................... 209
Connections for On-Chip Voltage Regulator............. 185 Temperature and Voltage Specifications.................. 203
Development Support ....................................................... 197
Device Clock ......................................................... 95, 97
DSP Engine ........................................................................ 21
DSP Engine ................................................................ 22
dsPIC33F .................................................................... 12 Multiplier ..................................................................... 23
dsPIC33F CPU Core................................................... 16 E
Input Capture ............................................................ 141
Electrical Characteristics .................................................. 201
Output Compare ....................................................... 143
AC............................................................................. 210
PLL.............................................................................. 97
Equations
Reset System.............................................................. 59
Device Operating Frequency...................................... 96
Shared Port Structure ............................................... 109
Errata .................................................................................... 9
SPI ............................................................................ 147
Timer2 (16-bit) .......................................................... 137 F
Timer2/3 (32-bit) ....................................................... 136
Flash Program Memory ...................................................... 53
UART ........................................................................ 161
Control Registers........................................................ 54
Watchdog Timer (WDT) ............................................ 186 Operations .................................................................. 54
C Programming Algorithm.............................................. 57
RTSP Operation ......................................................... 54
C Compilers
Table Instructions ....................................................... 53
MPLAB C18 .............................................................. 198
Flexible Configuration ....................................................... 181
MPLAB C30 .............................................................. 198
Clock Switching................................................................. 103 I
Enabling .................................................................... 103 I/O Ports ........................................................................... 109
Sequence.................................................................. 103
Parallel I/O (PIO) ...................................................... 109
Code Examples
Write/Read Timing.................................................... 111
Erasing a Program Memory Page............................... 57 I2 C
Initiating a Programming Sequence............................ 58
Operating Modes ...................................................... 153
Loading Write Buffers ................................................. 58
Registers .................................................................. 153
Port Write/Read ........................................................ 111 I2C Module
PWRSAV Instruction Syntax..................................... 105
I2C1 Register Map...................................................... 36
Code Protection ........................................................ 181, 187
In-Circuit Debugger........................................................... 188
Configuration Bits.............................................................. 181 In-Circuit Emulation .......................................................... 181
Description (Table).................................................... 182
In-Circuit Serial Programming (ICSP)....................... 181, 188
Configuration Register Map .............................................. 181
Input Capture
Configuring Analog Port Pins ............................................ 111 Registers .................................................................. 142
CPU
Input Change Notification ................................................. 111
Control Register .......................................................... 18
Instruction Addressing Modes ............................................ 43
CPU Clocking System......................................................... 96 File Register Instructions ............................................ 43
Options........................................................................ 96
Fundamental Modes Supported ................................. 44
Selection ..................................................................... 96
MAC Instructions ........................................................ 44
NOTES:
READER RESPONSE
It is our intention to provide you with the best documentation possible to ensure successful use of your Microchip prod-
uct. If you wish to provide your comments on organization, clarity, subject matter, and ways in which our documentation
can better serve you, please FAX your comments to the Technical Publications Manager at (480) 792-4150.
Please list the following information, and use this outline to provide us with your comments about this document.
From: Name
Company
Address
City / State / ZIP / Country
Telephone: (_______) _________ - _________ FAX: (______) _________ - _________
Application (optional):
Would you like a reply? Y N
Questions:
2. How does this document meet your hardware and software development needs?
3. Do you find the organization of this document easy to follow? If not, why?
4. What additions to the document do you think would enhance the structure and subject?
5. What deletions from the document could be made without affecting the overall usefulness?
01/02/08