电子工程世界电子工程世界电子工程世界

产品描述

搜索
 

PIC24FJ64GB002-I/SO

器件型号:PIC24FJ64GB002-I/SO
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

MICROCHIP - PIC24FJ64GB002-I/SO - IC; 16BIT MCU; PIC24F; 32MHZ; SOIC-28

PIC24FJ64GB002-I/SO器件文档内容

                                 PIC24FJ64GB004 Family
                                                    Data Sheet

                                                    28/44-Pin, 16-Bit,
                                               Flash Microcontrollers
                                      with USB On-The-Go (OTG)
                                    and nanoWatt XLP Technology

2010 Microchip Technology Inc.  DS39940D
Note the following details of the code protection feature on Microchip devices:
Microchip products meet the specification contained in their particular Microchip Data Sheet.

Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
      intended manner and under normal conditions.

There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
      knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip's Data
      Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

Microchip is willing to work with the customer who is concerned about the integrity of their code.

Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
      mean that we are guaranteeing the product as "unbreakable."

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip's code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information contained in this publication regarding device         Trademarks
applications and the like is provided only for your convenience
and may be superseded by updates. It is your responsibility to     The Microchip name and logo, the Microchip logo, dsPIC,
ensure that your application meets with your specifications.       KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,
MICROCHIP MAKES NO REPRESENTATIONS OR                              PIC32 logo, rfPIC and UNI/O are registered trademarks of
WARRANTIES OF ANY KIND WHETHER EXPRESS OR                          Microchip Technology Incorporated in the U.S.A. and other
IMPLIED, WRITTEN OR ORAL, STATUTORY OR                             countries.
OTHERWISE, RELATED TO THE INFORMATION,
INCLUDING BUT NOT LIMITED TO ITS CONDITION,                        FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,
QUALITY, PERFORMANCE, MERCHANTABILITY OR                           MXDEV, MXLAB, SEEVAL and The Embedded Control
FITNESS FOR PURPOSE. Microchip disclaims all liability             Solutions Company are registered trademarks of Microchip
arising from this information and its use. Use of Microchip        Technology Incorporated in the U.S.A.
devices in life support and/or safety applications is entirely at
the buyer's risk, and the buyer agrees to defend, indemnify and    Analog-for-the-Digital Age, Application Maestro, CodeGuard,
hold harmless Microchip from any and all damages, claims,          dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,
suits, or expenses resulting from such use. No licenses are        ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial
conveyed, implicitly or otherwise, under any Microchip             Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
intellectual property rights.                                      logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code
                                                                   Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,
                                                                   PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance,
                                                                   TSHARC, UniWinDriver, WiperLock and ZENA are
                                                                   trademarks of Microchip Technology Incorporated in the
                                                                   U.S.A. and other countries.

                                                                   SQTP is a service mark of Microchip Technology Incorporated
                                                                   in the U.S.A.

                                                                   All other trademarks mentioned herein are property of their
                                                                   respective companies.

                                                                   2010, Microchip Technology Incorporated, Printed in the
                                                                   U.S.A., All Rights Reserved.

                                                                        Printed on recycled paper.

                                                                   ISBN: 978-1-60932-439-1
                                                                   Microchip received ISO/TS-16949:2002 certification for its worldwide
                                                                   headquarters, design and wafer fabrication facilities in Chandler and
                                                                   Tempe, Arizona; Gresham, Oregon and design centers in California
                                                                   and India. The Company's quality system processes and procedures
                                                                   are for its PIC MCUs and dsPIC DSCs, KEELOQ code hopping
                                                                   devices, Serial EEPROMs, microperipherals, nonvolatile memory and
                                                                   analog products. In addition, Microchip's quality system for the design
                                                                   and manufacture of development systems is ISO 9001:2000 certified.

DS39940D-page 2                                                     2010 Microchip Technology Inc.
                   PIC24FJ64GB004 FAMILY

      28/44-Pin, 16-Bit, Flash Microcontrollers with
USB On-The-Go (OTG) and nanoWatt XLP Technology

Universal Serial Bus Features:                                       Power Management Modes:

USB v2.0 On-The-Go (OTG) Compliant                                  Selectable Power Management modes with nanoWatt
Dual Role Capable can act as either Host or Peripheral              XLP Technology for Extremely Low Power:
Low-Speed (1.5 Mb/s) and Full-Speed (12 Mb/s) USB                     - Deep Sleep mode allows near total power-down
                                                                           (20 nA typical and 500 nA with RTCC or WDT),
   Operation in Host mode                                                  along with the ability to wake-up on external triggers
Full-Speed USB Operation in Device mode                                  or self-wake on programmable WDT or RTCC alarm
High-Precision PLL for USB                                            - Extreme low-power DSBOR for Deep Sleep,
0.25% Accuracy using Internal Oscillator No External                   LPBOR for all other modes
                                                                        - Sleep mode shuts down peripherals and core for
   Crystal Required                                                        substantial power reduction, fast wake-up
Internal Voltage Boost Assist for USB Bus Voltage                     - Idle mode shuts down the CPU and peripherals for
                                                                           significant power reduction, down to 4.5 A typical
   Generation                                                           - Doze mode enables CPU clock to run slower than
Interface for Off-Chip Charge Pump for USB Bus                           peripherals
                                                                        - Alternate Clock modes allow on-the-fly switching to
   Voltage Generation                                                      a lower clock speed for selective power reduction
Supports up to 32 Endpoints (16 bidirectional):                          during Run mode down to 15 A typical

   - USB module can use any RAM location on the                      Special Microcontroller Features:
      device as USB endpoint buffers
                                                                      Operating Voltage Range of 2.0V to 3.6V
On-Chip USB Transceiver                                             Self-Reprogrammable under Software Control
Interface for Off-Chip USB Transceiver                              5.5V Tolerant Input (digital pins only)
Supports Control, Interrupt, Isochronous and Bulk Transfers         High-Current Sink/Source (18 mA/18 mA) on All I/O Pins
On-Chip Pull-up and Pull-Down Resistors                            Flash Program Memory:

High-Performance CPU:                                                   - 10,000 erase/write cycle endurance (minimum)
                                                                        - 20-year data retention minimum
Modified Harvard Architecture                                         - Selectable write protection boundary
Up to 16 MIPS Operation @ 32 MHz                                    Fail-Safe Clock Monitor Operation:
8 MHz Internal Oscillator with 0.25% Typical Accuracy:                - Detects clock failure and switches to on-chip

   - 96 MHz PLL                                                            FRC oscillator
   - Multiple divide options                                          On-Chip 2.5V Regulator
17-Bit x 17-Bit Single-Cycle Hardware                               Power-on Reset (POR), Power-up Timer (PWRT)
   Fractional/integer Multiplier
32-Bit by 16-Bit Hardware Divider                                     and Oscillator Start-up Timer (OST)
16 x 16-Bit Working Register Array                                  Two Flexible Watchdog Timers (WDT) for Reliable
C Compiler Optimized Instruction Set Architecture:
   - 76 base instructions                                               Operation:
   - Flexible addressing modes                                          - Standard programmable WDT for normal operation
Linear Program Memory Addressing up to 12 Mbytes                      - Extreme low-power WDT with programmable
Linear Data Memory Addressing up to 64 Kbytes
Two Address Generation Units for Separate Read and                       period of 2 ms to 26 days for Deep Sleep mode
   Write Addressing of Data Memory                                    In-Circuit Serial ProgrammingTM (ICSPTM) and

                                                                        In-Circuit Debug (ICD) via 2 Pins
                                                                      JTAG Boundary Scan Support

                                 Remappable Peripherals
         Pins
PIC24FJ           Program Memory
Device
                      (Bytes)
                              SRAM
                                  (Bytes)
                                         Remappable
                                             Pins
                                                   Timers
                                                       16-Bit
                                                             Capture
                                                                Input
                                                                       Compare/PWM
                                                                          Output
                                                                                UART w/
                                                                                    IrDA
                                                                                            SPI
                                                                                                      I2CTM
                                                                                                              10-Bit A/D

                                                                                                                  (ch)
                                                                                                                          Comparators

                                                                                                                                    PMP/PSP
                                                                                                                                              RTCC
                                                                                                                                                        CTMU

                                                                                                                                                                  USB OTG

32GB002 28 32K 8K 15 5           5                             5  2  2  2  9  3  Y  Y  Y  Y

64GB002 28 64K 8K 15 5           5                             5  2  2  2  9  3  Y  Y  Y  Y

32GB004 44 32K 8K 25 5           5                             5  2  2  2 13 3   Y  Y  Y  Y

64GB004 44 64K 8K 25 5           5                             5  2  2  2 13 3   Y  Y  Y  Y

2010 Microchip Technology Inc.                                                     DS39940D-page 3
PIC24FJ64GB004 FAMILY

Analog Features:                                              Hardware Real-Time Clock/Calendar (RTCC):
                                                                 - Provides clock, calendar and alarm functions
10-Bit, up to 13-Channel Analog-to-Digital (A/D)               - Functions even in Deep Sleep mode
   Converter:
   - 500 ksps conversion rate                                  Two 3-Wire/4-Wire SPI modules (support 4 Frame
   - Conversion available during Sleep and Idle                  modes) with 8-Level FIFO Buffer

Three Analog Comparators with Programmable                   Two I2CTM modules support Multi-Master/Slave mode
   Input/Output Configuration                                    and 7-Bit/10-Bit Addressing

Charge Time Measurement Unit (CTMU):                         Two UART modules:
   - Supports capacitive touch sensing for touch                 - Supports RS-485, RS-232 and LIN/J2602
      screens and capacitive switches                            - On-chip hardware encoder/decoder for IrDA
   - Provides high-resolution time measurement and               - Auto-wake-up on Start bit
      simple temperature sensing                                 - Auto-Baud Detect (ABD)
                                                                 - 4-level deep FIFO buffer
Peripheral Features:
                                                               Five 16-Bit Timers/Counters with Programmable
Peripheral Pin Select:                                         Prescaler
   - Allows independent I/O mapping of many peripherals
   - Up to 25 available pins (44-pin devices)                  Five 16-Bit Capture Inputs, each with a Dedicated Time
   - Continuous hardware integrity checking and safety           Base
      interlocks prevent unintentional configuration changes
                                                               Five 16-Bit Compare/PWM Outputs, each with a
8-Bit Parallel Master Port (PMP/PSP):                          Dedicated Time Base
   - Up to 16-bit multiplexed addressing, with up to
      11 dedicated address pins on 44-pin devices             Programmable, 32-Bit Cyclic Redundancy Check (CRC)
   - Programmable polarity on control lines                      Generator
   - Supports legacy Parallel Slave Port
                                                               Configurable Open-Drain Outputs on Digital I/O Pins
Pin Diagrams                                                   Up to 3 External Interrupt Sources

    28-Pin SPDIP, SOIC, SSOP(1)

                                                                                             MCLR 1     PIC24FJXXGB002  28 VDD
PGED3/AN0/C3INC/VREF+/ASDA1(2)/RP5/PMD7/CTED1/VBUSVLD/VCMPST1/CN2/RA0 2                                                 27 VSS
PGEC3/AN1/C3IND/VREF-/ASCL1(2)/RP6/PMD6/CTED2/SESSVLD/VCMPST2/CN3/RA1 3                                                 26 AN9/C3INA/VBUSCHG/RP15/VBUSST/CN11/RB15
                                                                                                                        25 AN10/C3INB/CVREF/VCPCON/VBUSON/RP14/CN12/RB14
                                               PGED1/AN2/C2INB/DPH/RP0/PMD0/CN4/RB0 4                                   24 AN11/C1INC/RP13/PMRD/REFO/SESSEND/CN13/RB13
                                              PGEC1/AN3/C2INA/DMH/RP1/PMD1/CN5/RB1 5
                                                                                                                        23 VUSB
                                               AN4/C1INB/DPLN/SDA2/RP2/PMD2/CN6/RB2 6                                   22 PGEC2/D-/VMIO/RP11/CN15/RB11
                                      AN5/C1INA/DMLN/RTCC/SCL2/RP3/PMWR/CN7/RB3 7                                       21 PGED2/D+/VPIO/RP10/CN16/RB10
                                                                                                                        20 VCAP/VDDCORE
                                                                                                VSS 8                   19 DISVREG
                                                                                                                        18 TDO/SDA1/RP9/PMD3/RCV/CN21/RB9
                                                         OSCI/CLKI/C1IND/PMCS1/CN30/RA2 9                               17 TCK/USBOEN/SCL1/RP8/PMD4/CN22/RB8
                                                                 OSCO/CLKO/PMA0/CN29/RA3 10                             16 TDI/RP7/PMD5/INT0/CN23/RB7
                                                                                                                        15 VBUS
                                                           SOSCI/C2IND/RP4/PMBE/CN1/RB4 11
                                                SOSCO/SCLKI/T1CK/C2INC/PMA1/CN0/RA4 12

                                                                                                VDD 13
                                                                          TMS/USBID/CN27/RB5 14

Legend:      RPn represents remappable peripheral pins.
Note 1:      Gray shading indicates 5.5V tolerant input pins.
             Alternative multiplexing for SDA1 and SCL1 when the I2C1SEL bit is set.
         2:

DS39940D-page 4                                                                                                          2010 Microchip Technology Inc.
                                                                         PIC24FJ64GB004 FAMILY

Pin Diagrams                                                                PGEC3/AN1/C3IND/VREF-/ASCL1(2)/RP6/PMD6/CTED2/SESSVLD/VCMPST2/CN3/RA1
                                                                                PGED3/AN0/C3INC/VREF+/ASDA1(2)/RP5/PMD7/CTED1/VBUSVLD/VCMPST1/CN2/RA0
            28-Pin QFN(1,3)                                                          MCLR
                                                                                         VDD
                                                                                              VSS
                                                                                                  AN9/C3INA/VBUSCHG/RP15/VBUSST/CN11/RB15
                                                                                                      AN10/C3INB/CVREF/VCPCON/VBUSON/RP14/CN12/RB14

                                                                            28 27 26 25 24 23 22

         PGED1/AN2/C2INB/DPH/RP0/PMD0/CN4/RB0                            1                                                                             21  AN11/C1INC/RP13/PMRD/REFO/SESSEND/CN13/RB13
         PGEC1/AN3/C2INA/DMH/RP1/PMD1/CN5/RB1                                                                                                              VUSB
          AN4/C1INB/DPLN/SDA2/RP2/PMD2/CN6/RB2                           2                                                                             20  PGEC2/D-/VMIO/RP11/CN15/RB11
AN5/C1INA/DMLN/RTCC/SCL2/RP3/PMWR/CN7/RB3                                                                                                                  PGED2/D+/VPIO/RP10/CN16/RB10
                                                                         3  PIC24FJXXGB0021189                                                             VCAP/VDDCORE
                                                                    VSS  4                                                                                 DISVREG
                      OSCI/CLKI/C1IND/PMCS1/CN30/RA2                                                                                                       TDO/SDA1/RP9/PMD3/RCV/CN21/RB9
                                                                         5                                                                             17
                               OSCO/CLKO/PMA0/CN29/RA3
                                                                         6                                                                             16

                                                                         7  8 9 10 11 12 13 14                                                         15

                                                                            SOSCI/C2IND/RP4/PMBE/CN1/RB4
                                                                                SOSCO/SCLKI/T1CK/C2INC/PMA1/CN0/RA4

                                                                                     VDD
                                                                                         TMS/USBID//CN27/RB5

                                                                                             VBUS
                                                                                                  TDI/RP7/PMD5/INT0/CN23/RB7
                                                                                                      TCK/USBOEN/SCL1/RP8/PMD4/CN22/RB8

Legend:      RPn represents remappable peripheral pins.
Note 1:      Gray shading indicates 5.5V tolerant input pins.
             Alternative multiplexing for SDA1 and SCL1 when the I2C1SEL bit is set.
         2:  The back pad on QFN devices should be connected to VSS.
         3:

2010 Microchip Technology Inc.                                                                                                                            DS39940D-page 5
PIC24FJ64GB004 FAMILY                                                                                                                                                                                                                                                                                                                                                                                                                              SOSCO/SCLKI/T1CK/C2INC/CN0/RA4

Pin Diagrams

                     44-PIN TQFP,
                     44-Pin QFN(1,3)
                                                                                USBOEN/SCL1/RP8/PMD4/CN22/RB8
                                                                                                               RP7/PMD5/INT0/CN23/RB7  VBUS                                           CN27/USBID/RB5                           VDD   VSS   RP21/PMA3/CN26/RC5  RP20/PMA4/CN25/RC4                                                     AN12/RP19/PMBE/CN28/RC3                                                TDI/PMA9/RA9

                                                                                44                             43                      42                                             41                                       40    39    38                  37                                                                     36                                                                     35                                    34                                    SOSCI/C2IND/RP4/CN1/RB4
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         TDO/PMA8/RA8
                              SDA1/RP9/PMD3/RCV/CN21/RB9                    1                                                                                                                                                                                                                                                                                                                                                                                                      33    OSCO/CLKO/CN29/RA3
                                            RP22/PMA1/CN18/RC6                                                                                                                                                                                                                                                                                                                                                                                                                           OSCI/CLKI/C1IND/PMCS1/CN30/RA2
                                            RP23/PMA0/CN17/RC7              2                                                                                                                                                                                                                                                                                                                                                                                                      32    VSS
                                            RP24/PMA5/CN20/RC8                                                                                                                                                                                                                                                                                                                                                                                                                           VDD
                                            RP25/PMA6/CN19/RC9              3                                                                                                                                                                                                                                                                                                                                                                                                      31    AN8/RP18/PMA2/CN10/RC2
                                                               DISVREG                                                                                                                                                                                                                                                                                                                                                                                                                   AN7/RP17/CN9/RC1
                                                        VCAP/VDDCORE        4                                                                                                                                                                                                                                                                                                                                                                                                      30    AN6/RP16/CN8/RC0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         AN5/C1INA/DMLN/RTCC/SCL2/RP3/PMWR/CN7/RB3
                            PGED2/D+/VPIO/RP10/CN16/RB10                    5                                                                                                                                                                                                                                                                                                                                                                                                      29    AN4/C1INB/DPLN/SDA2/RP2/PMD2/CN6/RB2
                             PGEC2/D-/VMIO/RP11/CN15/RB11                   6 PIC24FJXXGB004 28

                                                                      VUSB  7                                                                                                                                                                                                                                                                                                                                                                                                      27
AN11/C1INC/RP13/REFO/PMRD/SESSEND/CN13/RB13
                                                                            8                                                                                                                                                                                                                                                                                                                                                                                                      26

                                                                            9                                                                                                                                                                                                                                                                                                                                                                                                      25

                                                                            10                                                                                                                                                                                                                                                                                                                                                                                                     24

                                                                            11 12   13                                                 14                                             15                                       16    17    18                  19                                                                     20                                                                     21            22                                                      23

                                                                                TMS/PMA10/RA10                 TCK/PMA7/RA7            AN10/C3INB/CVREF/VCPCON/VBUSON/RP14/CN12/RB14  AN9/C3INA/VBUSCHG/RP15/VBUSST/CN11/RB15  AVSS  AVDD  MCLR                PGED3/AN0/C3INC/VREF+/ASDA1(2)/RP5/PMD7/CTED1/VBUSVLD/VCMPST1/CN2/RA0  PGEC3/AN1/C3IND/VREF-/ASCL1(2)/RP6/PMD6/CTED2/SESSVLD/VCMPST2/CN3/RA1  PGED1/AN2/C2INB/DPH/RP0/PMD0/CN4/RB0  PGEC1/AN3/C2INA/DMH/RP1/PMD1/CN5/RB1

                 Legend:      RPn represents remappable peripheral pins.
                 Note 1:      Gray shading indicates 5.5V tolerant input pins.
                              Alternative multiplexing for SDA1 and SCL1 when the I2C1SEL bit is set.
                          2:  The back pad on QFN devices should be connected to VSS.
                          3:

DS39940D-page 6                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2010 Microchip Technology Inc.
                           PIC24FJ64GB004 FAMILY

Table of Contents

1.0 Device Overview .......................................................................................................................................................................... 9
2.0 Guidelines for Getting Started with 16-bit Microcontrollers ........................................................................................................ 19
3.0 CPU ........................................................................................................................................................................................... 25
4.0 Memory Organization ................................................................................................................................................................. 31
5.0 Flash Program Memory.............................................................................................................................................................. 55
6.0 Resets ........................................................................................................................................................................................ 63
7.0 Interrupt Controller ..................................................................................................................................................................... 69
8.0 Oscillator Configuration ............................................................................................................................................................ 107
9.0 Power-Saving Features............................................................................................................................................................ 117
10.0 I/O Ports ................................................................................................................................................................................... 127
11.0 Timer1 ...................................................................................................................................................................................... 149
12.0 Timer2/3 and Timer4/5 ............................................................................................................................................................ 151
13.0 Input Capture with Dedicated Timers ....................................................................................................................................... 157
14.0 Output Compare with Dedicated Timers .................................................................................................................................. 161
15.0 Serial Peripheral Interface (SPI)............................................................................................................................................... 171
16.0 Inter-Integrated Circuit (I2CTM) ................................................................................................................................................. 181
17.0 Universal Asynchronous Receiver Transmitter (UART) ........................................................................................................... 189
18.0 Universal Serial Bus with On-The-Go Support (USB OTG) ..................................................................................................... 197
19.0 Parallel Master Port (PMP)....................................................................................................................................................... 231
20.0 Real-Time Clock and Calendar (RTCC) .................................................................................................................................. 241
21.0 32-Bit Programmable Cyclic Redundancy Check (CRC) Generator ........................................................................................ 253
22.0 10-Bit High-Speed A/D Converter ............................................................................................................................................ 259
23.0 Triple Comparator Module........................................................................................................................................................ 269
24.0 Comparator Voltage Reference................................................................................................................................................ 273
25.0 Charge Time Measurement Unit (CTMU) ................................................................................................................................ 275
26.0 Special Features ...................................................................................................................................................................... 279
27.0 Development Support............................................................................................................................................................... 293
28.0 Instruction Set Summary .......................................................................................................................................................... 297
29.0 Electrical Characteristics .......................................................................................................................................................... 305
30.0 Packaging Information.............................................................................................................................................................. 327
Appendix A: Revision History............................................................................................................................................................. 341
The Microchip Web Site ..................................................................................................................................................................... 349
Customer Change Notification Service .............................................................................................................................................. 349
Customer Support .............................................................................................................................................................................. 349
Reader Response .............................................................................................................................................................................. 350
Product Identification System ............................................................................................................................................................ 351

2010 Microchip Technology Inc.  DS39940D-page 7
PIC24FJ64GB004 FAMILY

                                    TO OUR VALUED CUSTOMERS

  It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip
  products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and
  enhanced as new volumes and updates are introduced.
  If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via
  E-mail at docerrors@microchip.com or fax the Reader Response Form in the back of this data sheet to (480) 792-4150. We
  welcome your feedback.

Most Current Data Sheet

  To obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at:
         http://www.microchip.com

  You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page.
  The last character of the literature number is the version number, (e.g., DS30000A is version A of document DS30000).

Errata

  An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current
  devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision
  of silicon and revision of document to which it applies.
  To determine if an errata sheet exists for a particular device, please check with one of the following:
   Microchip's Worldwide Web site; http://www.microchip.com
   Your local Microchip sales office (see last page)
  When contacting a sales office, please specify which device, revision of silicon and data sheet (include literature number) you are
  using.

Customer Notification System

  Register on our web site at www.microchip.com to receive the most current information on all of our products.

DS39940D-page 8   2010 Microchip Technology Inc.
                                     PIC24FJ64GB004 FAMILY

1.0 DEVICE OVERVIEW                                          Instruction-Based Power-Saving Modes: There
                                                               are three instruction-based power-saving modes:
This document contains device-specific information for
the following devices:                                         - Idle Mode The core is shut down while leaving
                                                                  the peripherals active.
PIC24FJ32GB002    PIC24FJ32GB004
PIC24FJ64GB002    PIC24FJ64GB004                            - Sleep Mode The core and peripherals that
                                                                  require the system clock are shut down, leaving
This family expands on the existing line of Microchip`s           the peripherals active that use their own clock or
16-bit microcontrollers, combining an expanded                    the clock from other devices.
peripheral feature set and enhanced computational
performance with a new connectivity option: USB                - Deep Sleep Mode The core, peripherals
On-The-Go (OTG). The PIC24FJ64GB004 family                        (except RTCC and DSWDT), Flash and SRAM
provides a new platform for high-performance USB                  are shut down for optimal current savings to
applications which may need more than an 8-bit                    extend battery life for portable applications.
platform, but do not require the power of a digital signal
processor.                                                  1.1.3  OSCILLATOR OPTIONS AND
                                                                   FEATURES

1.1 Core Features                                           All of the devices in the PIC24FJ64GB004 family offer
                                                            five different oscillator options, allowing users a range
1.1.1 16-BIT ARCHITECTURE                                   of choices in developing application hardware. These
                                                            include:
Central to all PIC24F devices is the 16-bit modified
Harvard architecture, first introduced with Microchip's      Two Crystal modes using crystals or ceramic
dsPIC digital signal controllers. The PIC24F CPU core         resonators.
offers a wide range of enhancements, such as:
                                                             Two External Clock modes offering the option of a
16-bit data and 24-bit address paths with the                divide-by-2 clock output.
   ability to move information between data and
   memory spaces                                             A Fast Internal RC Oscillator (FRC) with a
                                                               nominal 8 MHz output, which can also be divided
Linear addressing of up to 12 Mbytes (program                under software control to provide clock speeds as
   space) and 64 Kbytes (data)                                 low as 31 kHz.

A 16-element working register array with built-in          A Phase Lock Loop (PLL) frequency multiplier
   software stack support                                      available to the external oscillator modes and the
                                                               FRC Oscillator, which allows clock speeds of up
A 17 x 17 hardware multiplier with support for               to 32 MHz.
   integer math
                                                             A separate Low-Power Internal RC Oscillator
Hardware support for 32 by 16-bit division                   (LPRC) with a fixed 31 kHz output, which pro-
                                                               vides a low-power option for timing-insensitive
An instruction set that supports multiple                    applications.
   addressing modes and is optimized for high-level
   languages, such as `C'                                   The internal oscillator block also provides a stable
                                                            reference source for the Fail-Safe Clock Monitor. This
Operational performance up to 16 MIPS                     option constantly monitors the main clock source
                                                            against a reference signal provided by the internal
1.1.2 POWER-SAVING TECHNOLOGY                               oscillator and enables the controller to switch to the
                                                            internal oscillator, allowing for continued low-speed
All of the devices in the PIC24FJ64GB004 family             operation or a safe application shutdown.
incorporate a range of features that can significantly
reduce power consumption during operation. Key              1.1.4 EASY MIGRATION
items include:
                                                            Regardless of the memory size, all devices share the
On-the-Fly Clock Switching: The device clock              same rich set of peripherals, allowing for a smooth
   can be changed under software control to the             migration path as applications grow and evolve. The
   Timer1 source or the internal, Low-Power Internal        consistent pinout scheme used throughout the entire
   RC Oscillator during operation, allowing the user        family also aids in migrating from one device to the next
   to incorporate power-saving ideas into their             larger device.
   software designs.
                                                            The PIC24F family is pin-compatible with devices in the
Doze Mode Operation: When timing-sensitive                dsPIC33 family, and shares some compatibility with the
   applications, such as serial communications,             pinout schema for PIC18 and dsPIC30 devices. This
   require the uninterrupted operation of peripherals,      extends the ability of applications to grow from the
   the CPU clock speed can be selectively reduced,          relatively simple, to the powerful and complex, yet still
   allowing incremental power savings without               selecting a Microchip device.
   missing a beat.

2010 Microchip Technology Inc.                                    DS39940D-page 9
PIC24FJ64GB004 FAMILY

1.2 USB On-The-Go                                          Parallel Master/Enhanced Parallel Slave Port:
                                                             One of the general purpose I/O ports can be
The PIC24FJ64GB004 family of devices introduces              reconfigured for enhanced parallel data communi-
USB On-The-Go functionality on a single chip to lower        cations. In this mode, the port can be configured
pin count Microchip devices. This module provides            for both master and slave operations, and
on-chip functionality as a target device compatible with     supports 8-bit and 16-bit data transfers with up to
the USB 2.0 standard, as well as limited stand-alone         12 external address lines in Master modes.
functionality as a USB embedded host. By implement-
ing USB Host Negotiation Protocol (HNP), the module       Real-Time Clock/Calendar: This module
can also dynamically switch between device and host          implements a full-featured clock and calendar with
operation, allowing for a much wider range of versatile      alarm functions in hardware, freeing up timer
USB-enabled applications on a microcontroller                resources and program memory space for the use
platform.                                                    of the core application.

In addition to USB host functionality, PIC24FJ64GB004     1.4 Details on Individual Family
family devices provide a true single chip USB solution,            Members
including an on-chip transceiver and a voltage boost
generator for sourcing bus power during host              Devices in the PIC24FJ64GB004 family are available
operations.                                               in 28-pin and 44-pin packages. The general block
                                                          diagram for all devices is shown in Figure 1-1.
1.3 Other Special Features
                                                          The devices are differentiated from each other in
Peripheral Pin Select: The Peripheral Pin Select        several ways:
   feature allows most digital peripherals to be
   mapped over a fixed set of digital I/O pins. Users      Flash Program Memory:
   may independently map the input and/or output of
   any one of the many digital peripherals to any one        - PIC24FJ32GB0 devices 32 Kbytes
   of the I/O pins.                                          - PIC24FJ64GB0 devices 64 Kbytes
                                                          Available I/O Pins and Ports:
Communications: The PIC24FJ64GB004 family
   incorporates a range of serial communication              - 28-pin devices 19 pins on two ports
   peripherals to handle a range of application              - 44-pin devices 33 pins on three ports
   requirements. There are two independent I2CTM          Available Interrupt-on-Change Notification (ICN)
   modules that support both Master and Slave                Inputs:
   modes of operation. Devices also have, through            - 28-pin devices 19
   the Peripheral Pin Select (PPS) feature, two
   independent UARTs with built-in IrDA                     - 44-pin devices 29
   encoder/decoders and two SPI modules.                   Available Remappable Pins:

Analog Features: All members of the                        - 28-pin devices 15 pins
   PIC24FJ64GB004 family include a 10-bit A/D
   Converter module and a triple comparator                  - 44-pin devices 25 pins
   module. The A/D module incorporates program-            Available PMP Address Pins:
   mable acquisition time, allowing for a channel to
   be selected and a conversion to be initiated              - 28-pin devices 3 pins
   without waiting for a sampling period, as well as
   faster sampling speeds. The comparator module             - 44-pin devices 12 pins
   includes three analog comparators that are             Available A/D Input Channels:
   configurable for a wide range of operations.
                                                             - 28-pin devices 9 pins
CTMU Interface: This module provides a
   convenient method for precision time measure-             - 44-pin devices 12 pins
   ment and pulse generation, and can serve as an
   interface for capacitive sensors.                      All other features for devices in this family are identical.
                                                          These are summarized in Table 1-1.

                                                          A list of the pin features available on the
                                                          PIC24FJ64GB004 family devices, sorted by function, is
                                                          shown in Table 1-2. Note that this table shows the pin
                                                          location of individual peripheral features and not how
                                                          they are multiplexed on the same pin. This information
                                                          is provided in the pinout diagrams in the beginning of
                                                          this data sheet. Multiplexed features are sorted by the
                                                          priority given to a feature, with the highest priority
                                                          peripheral being listed first.

DS39940D-page 10                                           2010 Microchip Technology Inc.
                                     PIC24FJ64GB004 FAMILY

TABLE 1-1: DEVICE FEATURES FOR THE PIC24FJ64GB004 FAMILY

                Features             PIC24FJ32GB002 PIC24FJ64GB002 PIC24FJ32GB004 PIC24FJ64GB004

Operating Frequency                                               DC 32 MHz

Program Memory (bytes)               32K                     64K                32K                 64K

Program Memory (instructions)        11,008                  22,016             11,008              22,016

Data Memory (bytes)                                                  8,192

Interrupt Sources (soft vectors/                                     45 (41/4)
NMI traps)

I/O Ports                                 Ports A and B                              Ports A, B, C

Total I/O Pins                               19                                         33

Remappable Pins                              15                                         25

Timers:

Total Number (16-bit)                                                5(1)

32-Bit (from paired 16-bit timers)                                   2

Input Capture Channels                                               5(1)

Output Compare/PWM Channels                                          5(1)

Input Change Notification Interrupt          19                                         29

Serial Communications:

UART                                                                 2(1)

SPI (3-wire/4-wire)                                                  2(1)

I2CTM                                                                2

Parallel Communications (PMP/PSP)                                    Yes

JTAG Boundary Scan                                                   Yes

10-Bit Analog-to-Digital Module              9                                          13

(input channels)

Analog Comparators                                                   3

CTMU Interface                                                       Yes

Resets (and delays)                      POR, BOR, RESET Instruction, MCLR, WDT, Illegal Opcode,
                                     REPEAT Instruction, Hardware Traps, Configuration Word Mismatch

                                                                  (PWRT, OST, PLL Lock)

Instruction Set                      76 Base Instructions, Multiple Addressing Mode Variations

Packages                             28-Pin QFN, SOIC, SSOP and SPDIP           44-Pin QFN and TQFP

Note 1: Peripherals are accessible through remappable pins.

2010 Microchip Technology Inc.                                                             DS39940D-page 11
PIC24FJ64GB004 FAMILY

FIGURE 1-1:       PIC24FJ64GB004 FAMILY GENERAL BLOCK DIAGRAM

                           Interrupt                                               Data Bus                                              PORTA(1)
                           Controller                                                                                                      (9 I/O)
                                                                                                                 16
                                              8                16               16                                                        PORTB
                                                                                                                                          (14 I/O)
             PSV & Table                      PCH      PCL                                             Data Latch    16
             Data Access                                                                               Data RAM                          PORTC(1)
             Control Block                    Program Counter                                                                             (10 I/O)
                                                                                                         Address                16
                                          23   Stack           Repeat                                      Latch
                               23             Control          Control
                                                                Logic                                           16
                                               Logic
                                                                                                       Read AGU
                   Address Latch                                                                       Write AGU
                  Program Memory

                      Data Latch

                                              Address Bus                                            EA MUX
                                                      24
                                                                                       Literal Data  16      16

                                                                        Inst Latch

                                                                        Inst Register                                   RP(1)
                                                                                                                     RP0:RP25

OSCO/CLKO                         Instruction                                Divide               16 x 16
OSCI/CLKI                        Decode &                                   Support           W Reg Array

                                   Control                                                            16-Bit ALU
                                              Control Signals                                                  16

                Timing               Power-up                            17 x 17
             Generation                Timer                            Multiplier

REFO         FRC/LPRC                Oscillator
             Oscillators          Start-up Timer

                                     Power-on
                                       Reset

DISVREG      Precision            Watchdog
             Band Gap               Timer
             Reference
                                  BOR and
              Voltage               LVD(2)
             Regulator

             VDDCORE/VCAP   VDD, VSS          MCLR

Timer1            Timer2/3(3) Timer4/5(3)          RTCC                 10-Bit      Comparators(3)       USB OTG
                                                                        ADC

                                                                                                                     PMP/PSP

  IC              PWM/OC          ICNs(1)              SPI              I2C            UART                  CTMU
1-5(3)              1-5(3)                             1/2(3)           1/2            1/2(3)

Note 1: Not all I/O pins or features are implemented on all device pinout configurations. See Table 1-2 for specific implementations by pin count.
         2: BOR functionality is provided when the on-board voltage regulator is enabled.
         3: These peripheral I/Os are only accessible through remappable pins.

DS39940D-page 12                                                                                                      2010 Microchip Technology Inc.
                                               PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS

              Pin Number

Function     28-Pin  28-Pin         44-Pin  I/O  Input                      Description
             SPDIP/   QFN        QFN/TQFP        Buffer
          SOIC/SSOP

AN0       2          27          19         I    ANA A/D Analog Inputs.
AN1
AN2       3          28          20         I    ANA
AN3
AN4       4          1           21         I    ANA
AN5
AN6       5          2           22         I    ANA
AN7
AN8       6          3           23         I    ANA
AN9
AN10      7          4           24         I    ANA
AN11
AN12      --         --          25         I    ANA
ASCL1
ASDA1     --         --          26         I    ANA
AVDD
AVSS      --         --          27         I    ANA
C1INA
C1INB     26         23          15         I    ANA
C1INC
C1IND     25         22          14         I    ANA
C2INA
C2INB     24         21          11         I    ANA
C2INC
C2IND     --         --          36         I    ANA
C3INA
C3INB     3          28          20         I/O  I2C Alternate I2C1 Synchronous Serial Clock Input/Output.
C3INC
C3IND     2          27          19         I/O  I2C Alternate I2C1 Synchronous Serial Data Input/Output.
CLKI
CLKO      --         --          17         P    -- Positive Supply for Analog modules.
Legend:
          --         --          16         P    -- Ground Reference for Analog modules.

          7          4           24         I    ANA Comparator 1 Input A.

          6          3           23         I    ANA Comparator 1 Input B.

          24         21          11         I    ANA Comparator 1 Input C.

          9          6           30         I    ANA Comparator 1 Input D.

          5          2           22         I    ANA Comparator 2 Input A.

          4          1           21         I    ANA Comparator 2 Input B.

          12         9           34         I    ANA Comparator 2 Input C.

          11         8           33         I    ANA Comparator 2 Input D.

          26         23          15         I    ANA Comparator 3 Input A.

          25         22          14         I    ANA Comparator 3 Input B.

          2          27          19         I    ANA Comparator 3 Input C.

          3          28          20         I    ANA Comparator 3 Input D.

          9          6           30         I    ANA Main Clock Input Connection.

          10         7           31         O    -- System Clock Output.

          TTL = TTL input buffer                 ST = Schmitt Trigger input buffer
          ANA = Analog level input/output        I2CTM = I2C/SMBus input buffer

2010 Microchip Technology Inc.                                                           DS39940D-page 13
PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS (CONTINUED)

                     Pin Number

Function     28-Pin  28-Pin         44-Pin       I/O  Input   Description
             SPDIP/   QFN        QFN/TQFP             Buffer
          SOIC/SSOP

CN0       12         9           34              I    ST Interrupt-on-Change Inputs.

CN1       11         8           33              I    ST

CN2               2  27          19              I    ST

CN3               3  28          20              I    ST

CN4               4  1           21              I    ST

CN5               5  2           22              I    ST

CN6               6  3           23              I    ST

CN7               7  4           24              I    ST

CN8       --         --          25              I    ST

CN9       --         --          26              I    ST

CN10      --         --          27              I    ST

CN11      26         23          15              I    ST

CN12      25         22          14              I    ST

CN13      24         21          11              I    ST

CN15      22         19          9               I    ST

CN16      21         18          8               I    ST

CN17      --         --          3               I    ST

CN18      --         --          2               I    ST

CN19      --         --          5               I    ST

CN20      --         --          4               I    ST

CN21      18         15          1               I    ST

CN22      17         14          44              I    ST

CN23      16         13          43              I    ST

CN25      --         --          37              I    ST

CN26      --         --          38              I    ST

CN27      14         11          41              I    ST

CN28      --         --          36              I    ST

CN29      10         7           31              I    ST

CN30              9  6           30              I    ST

CTED1             2  27          19              I    ANA CTMU External Edge Input 1.

CTED2             3  28          20              I    ANA CTMU External Edge Input 2.

CVREF     25         22          14              O    -- Comparator Voltage Reference Output.

D+        21         18          8               I/O  -- USB Differential Plus Line (internal transceiver).

D-        22         19          9               I/O  -- USB Differential Minus Line (internal transceiver).

DMH               5  2           22              O    -- D- External Pull-up Control Output.

DMLN              7  4           24              O    -- D- External Pull-down Control Output.

DPH               4  1           21              O    -- D+ External Pull-up Control Output.

DPLN              6  3           23              O    -- D+ External Pull-down Control Output.

DISVREG   19         16          6               I    ST Voltage Regulator Disable.

Legend: TTL = TTL input buffer                        ST = Schmitt Trigger input buffer
                ANA = Analog level input/output       I2CTM = I2C/SMBus input buffer

DS39940D-page 14                                               2010 Microchip Technology Inc.
                                               PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS (CONTINUED)

              Pin Number

Function     28-Pin  28-Pin         44-Pin  I/O  Input                         Description
             SPDIP/   QFN        QFN/TQFP        Buffer
          SOIC/SSOP

INT0      16         13          43         I    ST External Interrupt Input.
MCLR
          1          26          18         I    ST Master Clear (device Reset) Input. This line is brought low to

                                                         cause a Reset.

OSCI      9          6           30         I    ANA Main Oscillator Input Connection.
OSCO
PGEC1     10         7           31         O    ANA Main Oscillator Output Connection.
PGED1
PGEC2     5          2           22         I/O  ST In-Circuit Debugger/Emulator/ICSPTM Programming Clock.
PGED2
PGEC3     4          1           21         I/O  ST In-Circuit Debugger/Emulator/ICSP Programming Data.
PGED3
PMA0      22         19          9          I/O  ST In-Circuit Debugger/Emulator/ICSP Programming Clock.

          21         18          8          I/O  ST In-Circuit Debugger/Emulator/ICSP Programming Data.

          3          28          20         I/O  ST In-Circuit Debugger/Emulator/ICSP Programming Clock.

          2          27          19         I/O  ST In-Circuit Debugger/Emulator/ICSP Programming Data.

          10         7           3          I/O  ST Parallel Master Port Address Bit 0 Input (Buffered Slave

                                                         modes) and Output (Master modes).

PMA1      12         9           2          I/O  ST Parallel Master Port Address Bit 1 Input (Buffered Slave

                                                         modes) and Output (Master modes).

PMA2      --         --          27         O    -- Parallel Master Port Address (Demultiplexed Master modes).
PMA3
PMA4      --         --          38         O    --
PMA5
PMA6      --         --          37         O    --
PMA7
PMA8      --         --          4          O    --
PMA9
PMA10     --         --          5          O    --
PMCS1
PMBE      --         --          13         O    --
PMD0
PMD1      --         --          32         O    --
PMD2
PMD3      --         --          35         O    --
PMD4
PMD5      --         --          12         O    --
PMD6
PMD7      9          6           30         I/O ST/TTL Parallel Master Port Chip Select 1 Strobe/Address Bit 15.
PMRD
PMWR      11         8           36         O    -- Parallel Master Port Byte Enable Strobe.
Legend:
          4          1           21         I/O ST/TTL Parallel Master Port Data (Demultiplexed Master mode) or
                                            I/O ST/TTL Address/Data (Multiplexed Master modes).
          5          2           22

          6          3           23         I/O ST/TTL

          18         15          1          I/O ST/TTL

          17         14          44         I/O ST/TTL

          16         13          43         I/O ST/TTL

          3          28          20         I/O ST/TTL

          2          27          19         I/O ST/TTL

          24         21          11         O    -- Parallel Master Port Read Strobe.

          7          4           24         O    -- Parallel Master Port Write Strobe.

          TTL = TTL input buffer                 ST = Schmitt Trigger input buffer
          ANA = Analog level input/output        I2CTM = I2C/SMBus input buffer

2010 Microchip Technology Inc.                                                               DS39940D-page 15
PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS (CONTINUED)

                     Pin Number

Function     28-Pin  28-Pin         44-Pin  I/O  Input                  Description
             SPDIP/   QFN        QFN/TQFP        Buffer
          SOIC/SSOP

RA0               2  27          19         I/O  ST PORTA Digital I/O.
RA1
RA2               3  28          20         I/O  ST
RA3
RA4               9  6           30         I/O  ST
RA7
RA8       10         7           31         I/O  ST
RA9
RA10      12         9           34         I/O  ST
RB0
RB1       --         --          13         I/O  ST
RB2
RB3       --         --          32         I/O  ST
RB4
RB5       --         --          35         I/O  ST
RB7
RB8       --         --          12         I/O  ST
RB9
RB10              4  1           21         I/O  ST PORTB Digital I/O.
RB11
RB13              5  2           22         I/O  ST
RB14
RB15              6  3           23         I/O  ST
RC0
RC1               7  4           24         I/O  ST
RC2
RC3       11         8           33         I/O  ST
RC4
RC5       14         11          41         I/O  ST
RC6
RC7       16         13          43         I/O  ST
RC8
RC9       17         14          44         I/O  ST
RCV
REFO      18         15          1          I/O  ST
Legend:
          21         18          8          I/O  ST

          22         19          9          I/O  ST

          24         21          11         I/O  ST

          25         22          14         I/O  ST

          26         23          15         I/O  ST

          --         --          25         I/O  ST PORTC Digital I/O.

          --         --          26         I/O  ST

          --         --          27         I/O  ST

          --         --          36         I/O  ST

          --         --          37         I/O  ST

          --         --          38         I/O  ST

          --         --          2          I/O  ST

          --         --          3          I/O  ST

          --         --          4          I/O  ST

          --         --          5          I/O  ST

          18         15          1          I    ST USB Receive Input (from external transceiver).

          24         21          11         O    -- Reference Clock Output.

          TTL = TTL input buffer                 ST = Schmitt Trigger input buffer
          ANA = Analog level input/output        I2CTM = I2C/SMBus input buffer

DS39940D-page 16                                                              2010 Microchip Technology Inc.
                                                    PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS (CONTINUED)

              Pin Number

Function     28-Pin  28-Pin         44-Pin       I/O  Input                        Description
             SPDIP/   QFN        QFN/TQFP             Buffer
          SOIC/SSOP

RP0       4          1           21              I/O  ST Remappable Peripheral (input or output).

RP1       5          2           22              I/O  ST

RP2       6          3           23              I/O  ST

RP3       7          4           24              I/O  ST

RP4       11         8           33              I/O  ST

RP5       2          27          19              I/O  ST

RP6       3          28          20              I/O  ST

RP7       16         13          43              I/O  ST

RP8       17         14          44              I/O  ST

RP9       18         15          1               I/O  ST

RP10      21         18          8               I/O  ST

RP11      22         19          9               I/O  ST

RP13      24         21          11              I/O  ST

RP14      25         22          14              I/O  ST

RP15      26         23          15              I/O  ST

RP16      --         --          25              I/O  ST

RP17      --         --          26              I/O  ST

RP18      --         --          27              I/O  ST

RP19      --         --          36              I/O  ST

RP20      --         --          37              I/O  ST

RP21      --         --          38              I/O  ST

RP22      --         --          2               I/O  ST

RP23      --         --          3               I/O  ST

RP24      --         --          4               I/O  ST

RP25      --         --          5               I/O  ST

RTCC      7          4           24              O    -- Real-Time Clock Alarm/Seconds Pulse Output.

SESSEND   24         21          11              I    ST USB VBUS Session End Status Input.

SESSVLD   3          28          20              I    ST USB VBUS Session Valid Status Input.

SCL1      17         14          44              I/O  I2C I2C1 Synchronous Serial Clock Input/Output.

SCL2      7          4           24              I/O  I2C I2C2 Synchronous Serial Clock Input/Output.

SDA1      18         15          1               I/O  I2C I2C1 Data Input/Output.

SDA2      6          3           23              I/O  I2C I2C2 Data Input/Output.

SOSCI     11         8           33              I    ANA Secondary Oscillator/Timer1 Clock Input.

SOSCO     12         9           34              O    ANA Secondary Oscillator/Timer1 Clock Output.

T1CK      12         9           34              I    ST Timer1 Clock Input.

TCK       17         14          13              I    ST JTAG Test Clock Input.

TDI       16         13          35              I    ST JTAG Test Data Input.

TDO       18         15          32              O    -- JTAG Test Data Output.

TMS       14         11          12              I    ST JTAG Test Mode Select Input.

USBID     14         11          41              I    ST USB OTG ID (OTG mode only).

USBOEN    17         14          44              O    -- USB Output Enable Control (for external transceiver).

Legend: TTL = TTL input buffer                        ST = Schmitt Trigger input buffer
                ANA = Analog level input/output       I2CTM = I2C/SMBus input buffer

2010 Microchip Technology Inc.                                                                 DS39940D-page 17
PIC24FJ64GB004 FAMILY

TABLE 1-2: PIC24FJ64GB004 FAMILY PINOUT DESCRIPTIONS (CONTINUED)

                     Pin Number

Function     28-Pin  28-Pin         44-Pin       I/O  Input                   Description
             SPDIP/   QFN        QFN/TQFP             Buffer
          SOIC/SSOP

VBUS      15         12          42              P    -- USB Voltage, Host mode (5V).

VBUSCHG   26         23          15              O    -- USB External VBUS Control Output

VBUSON    25         22          14              O    -- USB OTG External Charge Pump Control.

VBUSST    26         23          15              I    ANA USB OTG Internal Charge Pump Feedback Control.

VBUSVLD           2  27          19              I    ST USB VBUS Valid Status Input.

VCAP      20         17          7               P    -- External Filter Capacitor Connection (regulator enabled).

VCPCON    25         22          14              O    -- USB OTG VBUS PWM/Charge Output.

VDD       13, 28     10, 25      28, 40          P    -- Positive Supply for Peripheral Digital Logic and I/O Pins.

VDDCORE   20         17          7               P    -- Positive Supply for Microcontroller Core Logic (regulator

                                                              disabled).

VMIO      22         19          9               I/O  ST USB Differential Minus Input/Output (external transceiver).

VPIO      21         18          8               I/O  ST USB Differential Plus Input/Output (external transceiver).

VREF-             3  28          20              I    ANA A/D and Comparator Reference Voltage (low) Input.

VREF+             2  27          19              I    ANA A/D and Comparator Reference Voltage (high) Input.

VSS       8, 27      5, 24       29, 39          P    -- Ground Reference for Logic and I/O Pins.

VUSB      23         20          10              P    -- USB Voltage (3.3V).

Legend: TTL = TTL input buffer                        ST = Schmitt Trigger input buffer
                ANA = Analog level input/output       I2CTM = I2C/SMBus input buffer

DS39940D-page 18                                                               2010 Microchip Technology Inc.
                                                   PIC24FJ64GB004 FAMILY

2.0 GUIDELINES FOR GETTING                               FIGURE 2-1:        RECOMMENDED
         STARTED WITH 16-BIT                                                MINIMUM CONNECTIONS
         MICROCONTROLLERS
                                                                                            C2(2)

2.1 Basic Connection Requirements                        VDD

Getting started with the PIC24FJ64GB004 family of                                  VDD
16-bit microcontrollers requires attention to a minimal                                    VSS
set of device pin connections before proceeding with      R1                                                (1) (1)
development.                                                  R2      MCLR
                                                                                   (EN/DIS)VREG
                                                           C1                      VCAP/VDDCORE

The following pins must always be connected:             C6(2)              PIC24FXXXX                             C7

All VDD and VSS pins                                                VSS                          VDD             C3(2)
   (see Section 2.2 "Power Supply Pins")                              VDD                          VSS

All AVDD and AVSS pins, regardless of whether or                          AVDD
   not the analog device features are used                                          AVSS
   (see Section 2.2 "Power Supply Pins")                                                             VDD
                                                                                                              VSS
MCLR pin
   (see Section 2.3 "Master Clear (MCLR) Pin")                              C5(2)           C4(2)

ENVREG/DISVREG and VCAP/VDDCORE pins                   Key (all values are recommendations):
   (PIC24FJ devices only)
   (see Section 2.4 "Voltage Regulator Pins              C1 through C6: 0.1 F, 20V ceramic
   (ENVREG/DISVREG and VCAP/VDDCORE)")

These pins must also be connected if they are being      C7: 10 F, 6.3V or greater, tantalum or ceramic
used in the end application:
                                                         R1: 10 k
PGECx/PGEDx pins used for In-Circuit Serial
   ProgrammingTM (ICSPTM) and debugging purposes         R2: 100 to 470
   (see Section 2.5 "ICSP Pins")
                                                         Note 1:      See Section 2.4 "Voltage Regulator Pins
OSCI and OSCO pins when an external oscillator                  2:  (ENVREG/DISVREG and VCAP/VDDCORE)"
   source is used                                                     for explanation of ENVREG/DISVREG pin
   (see Section 2.6 "External Oscillator Pins")                       connections.

Additionally, the following pins may be required:                     The example shown is for a PIC24F device
                                                                      with five VDD/VSS and AVDD/AVSS pairs.
VREF+/VREF- pins used when external voltage                         Other devices may have more or less pairs;
   reference for analog modules is implemented                        adjust the number of decoupling capacitors
                                                                      appropriately.

Note:  The AVDD and AVSS pins must always be
       connected, regardless of whether any of
       the analog modules are being used.

The minimum mandatory connections are shown in
Figure 2-1.

2010 Microchip Technology Inc.                                                             DS39940D-page 19
PIC24FJ64GB004 FAMILY

2.2 Power Supply Pins                                       2.3 Master Clear (MCLR) Pin

2.2.1 DECOUPLING CAPACITORS                                 The MCLR pin provides two specific device
                                                            functions: device Reset, and device programming
The use of decoupling capacitors on every pair of           and debugging. If programming and debugging are
power supply pins, such as VDD, VSS, AVDD and               not required in the end application, a direct
AVSS is required.                                           connection to VDD may be all that is required. The
                                                            addition of other components, to help increase the
Consider the following criteria when using decoupling       application's resistance to spurious Resets from
capacitors:                                                 voltage sags, may be beneficial. A typical
                                                            configuration is shown in Figure 2-1. Other circuit
Value and type of capacitor: A 0.1 F (100 nF),            designs may be implemented, depending on the
   10-20V capacitor is recommended. The capacitor           application's requirements.
   should be a low-ESR device with a resonance
   frequency in the range of 200 MHz and higher.            During programming and debugging, the resistance
   Ceramic capacitors are recommended.                      and capacitance that can be added to the pin must
                                                            be considered. Device programmers and debuggers
Placement on the printed circuit board: The               drive the MCLR pin. Consequently, specific voltage
   decoupling capacitors should be placed as close          levels (VIH and VIL) and fast signal transitions must
   to the pins as possible. It is recommended to            not be adversely affected. Therefore, specific values
   place the capacitors on the same side of the             of R1 and C1 will need to be adjusted based on the
   board as the device. If space is constricted, the        application and PCB requirements. For example, it is
   capacitor can be placed on another layer on the          recommended that the capacitor, C1, be isolated
   PCB using a via; however, ensure that the trace          from the MCLR pin during programming and
   length from the pin to the capacitor is no greater       debugging operations by using a jumper (Figure 2-2).
   than 0.25 inch (6 mm).                                   The jumper is replaced for normal run-time
                                                            operations.
Handling high-frequency noise: If the board is
   experiencing high-frequency noise (upward of             Any components associated with the MCLR pin
   tens of MHz), add a second ceramic type capaci-          should be placed within 0.25 inch (6 mm) of the pin.
   tor in parallel to the above described decoupling
   capacitor. The value of the second capacitor can         FIGURE 2-2:            EXAMPLE OF MCLR PIN
   be in the range of 0.01 F to 0.001 F. Place this                                CONNECTIONS
   second capacitor next to each primary decoupling                           VDD
   capacitor. In high-speed circuit designs, consider
   implementing a decade pair of capacitances as                        R1
   close to the power and ground pins as possible                                   R2
   (e.g., 0.1 F in parallel with 0.001 F).                                                    MCLR

Maximizing performance: On the board layout                           JP         PIC24FXXXX
   from the power supply circuit, run the power and
   return traces to the decoupling capacitors first,                    C1
   and then to the device pins. This ensures that the
   decoupling capacitors are first in the power chain.      Note 1:     R1  10 k is recommended. A suggested
   Equally important is to keep the trace length                    2:  starting value is 10 k. Ensure that the
   between the capacitor and the power pins to a                        MCLR pin VIH and VIL specifications are met.
   minimum, thereby reducing PCB trace
   inductance.                                                          R2  470 will limit any current flowing into
                                                                        MCLR from the external capacitor, C, in the
2.2.2 TANK CAPACITORS                                                   event of MCLR pin breakdown, due to
                                                                        Electrostatic Discharge (ESD) or Electrical
On boards with power traces running longer than six                     Overstress (EOS). Ensure that the MCLR pin
inches in length, it is suggested to use a tank capacitor               VIH and VIL specifications are met.
for integrated circuits including microcontrollers to
supply a local power source. The value of the tank
capacitor should be determined based on the trace
resistance that connects the power supply source to
the device, and the maximum current drawn by the
device in the application. In other words, select the tank
capacitor so that it meets the acceptable voltage sag at
the device. Typical values range from 4.7 F to 47 F.

DS39940D-page 20                                                                    2010 Microchip Technology Inc.
                                 PIC24FJ64GB004 FAMILY

2.4 Voltage Regulator Pins                                 FIGURE 2-3:        FREQUENCY vs. ESR
         (ENVREG/DISVREG and                                                  PERFORMANCE FOR
         VCAP/VDDCORE)                                              10        SUGGESTED VCAP
                                                                      1
   Note: This section applies only to PIC24FJ
               devices with an on-chip voltage regulator.  ESR ()  0.1

The on-chip voltage regulator enable/disable pin                   0.01
(ENVREG or DISVREG, depending on the device
family) must always be connected directly to either a      0.001         0.1  1  10            100  1000 10,000
supply voltage or to ground. The particular connection             0.01
is determined by whether or not the regulator is to be
used:                                                                         Frequency (MHz)

For ENVREG, tie to VDD to enable the regulator,          Note:         Data for Murata GRM21BF50J106ZE01 shown.
   or to ground to disable the regulator                                 Measurements at 25C, 0V DC bias.

For DISVREG, tie to ground to enable the                 2.5 ICSP Pins
   regulator or to VDD to disable the regulator
                                                           The PGECx and PGEDx pins are used for In-Circuit
Refer to Section 26.2 "On-Chip Voltage Regulator"          Serial Programming (ICSP) and debugging purposes.
for details on connecting and using the on-chip            It is recommended to keep the trace length between
regulator.                                                 the ICSP connector and the ICSP pins on the device as
                                                           short as possible. If the ICSP connector is expected to
When the regulator is enabled, a low-ESR (<5)              experience an ESD event, a series resistor is recom-
capacitor is required on the VCAP/VDDCORE pin to           mended, with the value in the range of a few tens of
stabilize the voltage regulator output voltage. The        ohms, not to exceed 100.
VCAP/VDDCORE pin must not be connected to VDD, and
must use a capacitor of 10 F connected to ground. The      Pull-up resistors, series diodes and capacitors on the
type can be ceramic or tantalum. A suitable example is     PGECx and PGEDx pins are not recommended as they
the Murata GRM21BF50J106ZE01 (10 F, 6.3V) or               will interfere with the programmer/debugger communi-
equivalent. Designers may use Figure 2-3 to evaluate       cations to the device. If such discrete components are
ESR equivalence of candidate devices.                      an application requirement, they should be removed
                                                           from the circuit during programming and debugging.
The placement of this capacitor should be close to         Alternatively, refer to the AC/DC characteristics and
VCAP/VDDCORE. It is recommended that the trace             timing requirements information in the respective
length not exceed 0.25 inch (6 mm). Refer to               device Flash programming specification for information
Section 29.0 "Electrical Characteristics" for              on capacitive loading limits and pin input voltage high
additional information.                                    (VIH) and input low (VIL) requirements.

When the regulator is disabled, the VCAP/VDDCORE pin       For device emulation, ensure that the "Communication
must be tied to a voltage supply at the VDDCORE level.     Channel Select" (i.e., PGECx/PGEDx pins) programmed
Refer to Section 29.0 "Electrical Characteristics" for     into the device matches the physical connections for the
information on VDD and VDDCORE.                            ICSP to the Microchip debugger/emulator tool.

                                                           For more information on available Microchip
                                                           development tools connection requirements, refer to
                                                           Section 27.0 "Development Support".

2010 Microchip Technology Inc.                                                                DS39940D-page 21
PIC24FJ64GB004 FAMILY

2.6 External Oscillator Pins                                 FIGURE 2-4:       SUGGESTED PLACEMENT
                                                                               OF THE OSCILLATOR
Many microcontrollers have options for at least two                            CIRCUIT
oscillators: a high-frequency primary oscillator and a
low-frequency secondary oscillator (refer to                              Single-Sided and In-line Layouts:
Section 8.0 "Oscillator Configuration" for details).
                                                                          Copper Pour Primary Oscillator
The oscillator circuit should be placed on the same                 (tied to ground)       Crystal
side of the board as the device. Place the oscillator
circuit close to the respective oscillator pins with no                                    DEVICE PINS
more than 0.5 inch (12 mm) between the circuit
components and the pins. The load capacitors should           Primary          `                               OSCI
be placed next to the oscillator itself, on the same side    Oscillator        `                               OSCO
of the board.                                                                                                  GND
                                                                 C1                     `
Use a grounded copper pour around the oscillator cir-            C2                                            SOSCO
cuit to isolate it from surrounding circuits. The                                                              SOSC I
grounded copper pour should be routed directly to the        Secondary
MCU ground. Do not run any signal traces or power             Oscillator
traces inside the ground pour. Also, if using a two-sided
board, avoid any traces on the other side of the board         Crystal
where the crystal is placed.
                                                             Sec Oscillator: C1 Sec Oscillator: C2
Layout suggestions are shown in Figure 2-4. In-line
packages may be handled with a single-sided layout                        Fine-Pitch (Dual-Sided) Layouts:
that completely encompasses the oscillator pins. With
fine-pitch packages, it is not always possible to com-                                 Top Layer Copper Pour
pletely surround the pins and components. A suitable                                         (tied to ground)
solution is to tie the broken guard sections to a mirrored
ground layer. In all cases, the guard trace(s) must be        Bottom Layer
returned to ground.                                           Copper Pour
                                                             (tied to ground)
In planning the application's routing and I/O assign-
ments, ensure that adjacent port pins and other signals      OSCO
in close proximity to the oscillator are benign (i.e., free
of high frequencies, short rise and fall times and other     GND                                               C2
similar noise).                                               OSCI                                               Oscillator
                                                                                                                   Crystal
For additional information and design guidance on
oscillator circuits, please refer to these Microchip                                                           C1
Application Notes, available at the corporate web site
(www.microchip.com):

AN826, "Crystal Oscillator Basics and Crystal
   Selection for rfPICTM and PICmicro Devices"

AN849, "Basic PICmicro Oscillator Design"
AN943, "Practical PICmicro Oscillator Analysis

   and Design"

AN949, "Making Your Oscillator Work"

                                                                    DEVICE PINS

DS39940D-page 22                                                                       2010 Microchip Technology Inc.
                                 PIC24FJ64GB004 FAMILY

2.7 Configuration of Analog and                              If your application needs to use certain A/D pins as
         Digital Pins During ICSP                            analog input pins during the debug session, the user
         Operations                                          application must modify the appropriate bits during
                                                             initialization of the ADC module, as follows:
If an ICSP compliant emulator is selected as a debug-
ger, it automatically initializes all of the A/D input pins   For devices with an ADnPCFG register, clear the
(ANx) as "digital" pins. Depending on the particular            bits corresponding to the pin(s) to be configured
device, this is done by setting all bits in the ADnPCFG         as analog. Do not change any other bits, particu-
register(s), or clearing all bit in the ANSx registers.         larly those corresponding to the PGECx/PGEDx
                                                                pair, at any time.
All PIC24F devices will have either one or more
ADnPCFG registers or several ANSx registers (one for          For devices with ANSx registers, set the bits
each port); no device will have both. Refer to                  corresponding to the pin(s) to be configured as
Section 10.2 "Configuring Analog Port Pins" for                 analog. Do not change any other bits, particularly
more specific information.                                      those corresponding to the PGECx/PGEDx pair,
                                                                at any time.
The bits in these registers that correspond to the A/D
pins that initialized the emulator must not be changed       When a Microchip debugger/emulator is used as a
by the user application firmware; otherwise,                 programmer, the user application firmware must
communication errors will result between the debugger        correctly configure the ADnPCFG or ANSx registers.
and the device.                                              Automatic initialization of this register is only done
                                                             during debugger operation. Failure to correctly
                                                             configure the register(s) will result in all A/D pins being
                                                             recognized as analog input pins, resulting in the port
                                                             value being read as a logic '0', which may affect user
                                                             application functionality.

                                                             2.8 Unused I/Os

                                                             Unused I/O pins should be configured as outputs and
                                                             driven to a logic low state. Alternatively, connect a 1 k
                                                             to 10 k resistor to VSS on unused pins and drive the
                                                             output to logic low.

2010 Microchip Technology Inc.                              DS39940D-page 23
PIC24FJ64GB004 FAMILY

NOTES:

DS39940D-page 24        2010 Microchip Technology Inc.
                                 PIC24FJ64GB004 FAMILY

3.0 CPU                                                     For most instructions, the core is capable of executing
                                                            a data (or program data) memory read, a working reg-
Note:  This data sheet summarizes the features              ister (data) read, a data memory write and a program
       of this group of PIC24F devices. It is not           (instruction) memory read per instruction cycle. As a
       intended to be a comprehensive reference             result, three parameter instructions can be supported,
       source. For more information, refer to the           allowing trinary operations (that is, A + B = C) to be
       "PIC24F Family Reference Manual",                    executed in a single cycle.
       Section 2. "CPU" (DS39703).
                                                            A high-speed, 17-bit by 17-bit multiplier has been
The PIC24F CPU has a 16-bit (data), modified Harvard        included to significantly enhance the core arithmetic
architecture with an enhanced instruction set and a         capability and throughput. The multiplier supports
24-bit instruction word with a variable length opcode       Signed, Unsigned and Mixed mode, 16-bit by 16-bit or
field. The Program Counter (PC) is 23 bits wide and         8-bit by 8-bit integer multiplication. All multiply
addresses up to 4M instructions of user program             instructions execute in a single cycle.
memory space. A single-cycle instruction prefetch
mechanism is used to help maintain throughput and           The 16-bit ALU has been enhanced with integer divide
provides predictable execution. All instructions execute    assist hardware that supports an iterative non-restoring
in a single cycle, with the exception of instructions that  divide algorithm. It operates in conjunction with the
change the program flow, the double-word move               REPEAT instruction looping mechanism and a selection
(MOV.D) instruction and the table instructions.             of iterative divide instructions to support 32-bit (or
Overhead-free program loop constructs are supported         16-bit), divided by 16-bit, integer signed and unsigned
using the REPEAT instructions, which are interruptible at   division. All divide operations require 19 cycles to
any point.                                                  complete, but are interruptible at any cycle boundary.

PIC24F devices have sixteen, 16-bit working registers       The PIC24F has a vectored exception scheme with up to
in the programmer's model. Each of the working              8 sources of non-maskable traps and up to 118 interrupt
registers can act as a data, address or address offset      sources. Each interrupt source can be assigned to one of
register. The 16th working register (W15) operates as       seven priority levels.
a Software Stack Pointer for interrupts and calls.
                                                            A block diagram of the CPU is shown in Figure 3-1.
The upper 32 Kbytes of the data space memory map
can optionally be mapped into program space at any          3.1 Programmer's Model
16K word boundary defined by the 8-bit Program Space
Visibility Page Address (PSVPAG) register. The program      The programmer's model for the PIC24F is shown in
to data space mapping feature lets any instruction          Figure 3-2. All registers in the programmer's model are
access program space as if it were data space.              memory mapped and can be manipulated directly by
                                                            instructions. A description of each register is provided
The Instruction Set Architecture (ISA) has been             in Table 3-1. All registers associated with the
significantly enhanced beyond that of the PIC18, but        programmer's model are memory mapped.
maintains an acceptable level of backward compatibility.
All PIC18 instructions and addressing modes are
supported either directly or through simple macros.
Many of the ISA enhancements have been driven by
compiler efficiency needs.

The core supports Inherent (no operand), Relative,
Literal, Memory Direct and three groups of addressing
modes. All modes support Register Direct and various
Register Indirect modes. Each group offers up to seven
addressing modes. Instructions are associated with
predefined addressing modes depending upon their
functional requirements.

2010 Microchip Technology Inc.                             DS39940D-page 25
PIC24FJ64GB004 FAMILY

FIGURE 3-1:       PIC24F CPU CORE BLOCK DIAGRAM

PSV & Table
Data Access
Control Block

                  Interrupt                          Data Bus
                  Controller                                                                   16

                              8                  16  16

                                                                          Data Latch

23                                                                                                                            16

                  23          PCH          PCL                            Data RAM

                              Program Counter                             Address
                                                                           Latch
                               Stack        Loop
                              Control      Control
                               Logic        Logic

             23                                                                         16

Address Latch                                                             RAGU
                                                                          WAGU

Program Memory                Address Bus                                 EA MUX
    Data Latch                       24
                                                         ROM Latch

                                                                          16                       16

                              Instruction                Instruction Reg  Literal Data
                              Decode &

                                Control

                               Control Signals           Hardware         16 x 16
                              to Various Blocks          Multiplier

                                                          Divide          W Register Array
                                                         Support                                          16

                                                                                        16-Bit ALU
                                                                                                         16

                                                                                                       To Peripheral Modules

DS39940D-page 26                                                                                        2010 Microchip Technology Inc.
                                                 PIC24FJ64GB004 FAMILY

TABLE 3-1: CPU CORE REGISTERS

Register(s) Name                                                             Description

W0 through W15                                   Working Register Array
PC                                               23-Bit Program Counter
SR                                               ALU STATUS Register
SPLIM                                            Stack Pointer Limit Value Register
TBLPAG                                           Table Memory Page Address Register
PSVPAG                                           Program Space Visibility Page Address Register
RCOUNT                                           Repeat Loop Counter Register
CORCON                                           CPU Control Register

FIGURE 3-2:     PROGRAMMER'S MODEL

Divider Working Registers                    15                                  0
Multiplier Registers       W0 (WREG)
                                                                                           Working/Address
                                       W1            Frame Pointer                         Registers
                                       W2            Stack Pointer
                                       W3                                       0
                                       W4
                                       W5
                                       W6
                                       W7
                                       W8
                                       W9
                                     W10
                                     W11
                                     W12
                                     W13
                                     W14
                                     W15

                                                     SPLIM                      0    Stack Pointer Limit
                                                                                     Value Register
                22                                                              0    Program Counter
                                                                                     Table Memory Page
                                                 PC                             0    Address Register
                                                                                     Program Space Visibility
                                                          7                     0    Page Address Register
                                                                                     Repeat Loop Counter
                                                             TBLPAG                  Register

                                                          7                     0    ALU STATUS Register (SR)

                                                             PSVPAG                  CPU Control Register (CORCON)

                                 15                                             0

                                                     RCOUNT

                                 15 SRH                             SRL         0

                                 -- -- -- -- -- -- -- DC  2  IPL  RA  N  OV  Z  C
                                                              10

                                 15                                             0

                                 -- -- -- -- -- -- -- -- -- -- -- -- IPL3 PSV -- --

Registers or bits shaded for PUSH.S and POP.S instructions.

2010 Microchip Technology Inc.                                                                             DS39940D-page 27
PIC24FJ64GB004 FAMILY

3.2 CPU Control Registers

REGISTER 3-1: SR: ALU STATUS REGISTER

       U-0         U-0     U-0               U-0  U-0                   U-0    U-0        R/W-0

       --          --      --                --   --                    --            --           DC

bit 15                                                                                                 bit 8

R/W-0(1)    R/W-0(1)       R/W-0(1)          R-0  R/W-0                 R/W-0  R/W-0      R/W-0
                                                     N                    OV      Z          C
IPL2(2)           IPL1(2)  IPL0(2)           RA                                                  bit 0

bit 7

Legend:                    W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit           `1' = Bit is set
-n = Value at POR                                 `0' = Bit is cleared         x = Bit is unknown

bit 15-9    Unimplemented: Read as `0'
bit 8
bit 7-5     DC: ALU Half Carry/Borrow bit

bit 4       1 = A carry out from the 4th low-order bit (for byte-sized data) or 8th low-order bit (for word-sized data)
bit 3             of the result occurred
bit 2
bit 1       0 = No carry out from the 4th or 8th low-order bit of the result has occurred
bit 0       IPL<2:0>: CPU Interrupt Priority Level Status bits(1,2)

            111 = CPU interrupt priority level is 7 (15); user interrupts disabled
            110 = CPU interrupt priority level is 6 (14)
            101 = CPU interrupt priority level is 5 (13)
            100 = CPU interrupt priority level is 4 (12)
            011 = CPU interrupt priority level is 3 (11)
            010 = CPU interrupt priority level is 2 (10)
            001 = CPU interrupt priority level is 1 (9)
            000 = CPU interrupt priority level is 0 (8)

            RA: REPEAT Loop Active bit

            1 = REPEAT loop in progress
            0 = REPEAT loop not in progress

            N: ALU Negative bit

            1 = Result was negative
            0 = Result was non-negative (zero or positive)

            OV: ALU Overflow bit

            1 = Overflow occurred for signed (2's complement) arithmetic in this arithmetic operation
            0 = No overflow has occurred

            Z: ALU Zero bit

            1 = An operation which effects the Z bit has set it at some time in the past
            0 = The most recent operation which effects the Z bit has cleared it (i.e., a non-zero result)

            C: ALU Carry/Borrow bit
            1 = A carry out from the Most Significant bit of the result occurred
            0 = No carry out from the Most Significant bit of the result occurred

Note 1: The IPL Status bits are read-only when NSTDIS (INTCON1<15>) = 1.

        2: The IPL Status bits are concatenated with the IPL3 bit (CORCON<3>) to form the CPU Interrupt Priority
              Level (IPL). The value in parentheses indicates the IPL when IPL3 = 1.

DS39940D-page 28                                                                2010 Microchip Technology Inc.
                                           PIC24FJ64GB004 FAMILY

REGISTER 3-2: CORCON: CPU CONTROL REGISTER

       U-0         U-0           U-0       U-0              U-0                   U-0    U-0                 U-0

       --          --            --        --               --                    --            --           --

bit 15                                                                                                            bit 8

       U-0         U-0           U-0       U-0              R/C-0                 R/W-0  U-0                 U-0

       --          --            --        --               IPL3(1)               PSV           --           --

bit 7                                                                                                             bit 0

Legend:                 C = Clearable bit                   U = Unimplemented bit, read as `0'
R = Readable bit        W = Writable bit
-n = Value at POR       `1' = Bit is set                    `0' = Bit is cleared         x = Bit is unknown

bit 15-4    Unimplemented: Read as `0'
bit 3       IPL3: CPU Interrupt Priority Level Status bit(1)
            1 = CPU interrupt priority level is greater than 7
bit 2       0 = CPU interrupt priority level is 7 or less

bit 1-0     PSV: Program Space Visibility in Data Space Enable bit
            1 = Program space visible in data space
            0 = Program space not visible in data space

            Unimplemented: Read as `0'

Note 1: User interrupts are disabled when IPL3 = 1.

3.3 Arithmetic Logic Unit (ALU)                             The PIC24F CPU incorporates hardware support for
                                                            both multiplication and division. This includes a
The PIC24F ALU is 16 bits wide and is capable of addi-      dedicated hardware multiplier and support hardware
tion, subtraction, bit shifts and logic operations. Unless  for 16-bit divisor division.
otherwise mentioned, arithmetic operations are 2's
complement in nature. Depending on the operation, the       3.3.1 MULTIPLIER
ALU may affect the values of the Carry (C), Zero (Z),
Negative (N), Overflow (OV) and Digit Carry (DC)            The ALU contains a high-speed, 17-bit x 17-bit
Status bits in the SR register. The C and DC Status bits    multiplier. It supports unsigned, signed or mixed sign
operate as Borrow and Digit Borrow bits, respectively,      operation in several multiplication modes:
for subtraction operations.
                                                            1. 16-bit x 16-bit signed
The ALU can perform 8-bit or 16-bit operations,             2. 16-bit x 16-bit unsigned
depending on the mode of the instruction that is used.      3. 16-bit signed x 5-bit (literal) unsigned
Data for the ALU operation can come from the W              4. 16-bit unsigned x 16-bit unsigned
register array, or data memory, depending on the            5. 16-bit unsigned x 5-bit (literal) unsigned
addressing mode of the instruction. Likewise, output        6. 16-bit unsigned x 16-bit signed
data from the ALU can be written to the W register array    7. 8-bit unsigned x 8-bit unsigned
or a data memory location.

2010 Microchip Technology Inc.                                                                     DS39940D-page 29
PIC24FJ64GB004 FAMILY

3.3.2 DIVIDER                                              3.3.3 MULTI-BIT SHIFT SUPPORT

The divide block supports signed and unsigned integer      The PIC24F ALU supports both single bit and
divide operations with the following data sizes:           single-cycle, multi-bit arithmetic and logic shifts.
                                                           Multi-bit shifts are implemented using a shifter block,
1. 32-bit signed/16-bit signed divide                      capable of performing up to a 15-bit arithmetic right
                                                           shift, or up to a 15-bit left shift, in a single cycle. All
2. 32-bit unsigned/16-bit unsigned divide                  multi-bit shift instructions only support Register Direct
                                                           Addressing for both the operand source and result
3. 16-bit signed/16-bit signed divide                      destination.

4. 16-bit unsigned/16-bit unsigned divide                  A full summary of instructions that use the shift
                                                           operation is provided below in Table 3-2.
The quotient for all divide instructions ends up in W0
and the remainder in W1. Sixteen-bit signed and
unsigned DIV instructions can specify any W register
for both the 16-bit divisor (Wn), and any W register
(aligned) pair (W(m + 1):Wm) for the 32-bit dividend.
The divide algorithm takes one cycle per bit of divisor,
so both 32-bit/16-bit and 16-bit/16-bit instructions take
the same number of cycles to execute.

TABLE 3-2: INSTRUCTIONS THAT USE THE SINGLE AND MULTI-BIT SHIFT OPERATION

Instruction                                                Description

ASR               Arithmetic Shift Right Source Register by One or More Bits.

SL                Shift Left Source Register by One or More Bits.

LSR               Logical Shift Right Source Register by One or More Bits.

DS39940D-page 30                                                                2010 Microchip Technology Inc.
                                                                       PIC24FJ64GB004 FAMILY

4.0 MEMORY ORGANIZATION                                                from either the 23-bit Program Counter (PC) during pro-
                                                                       gram execution, or from table operation or data space
As Harvard architecture devices, PIC24F micro-                         remapping, as described in Section 4.3 "Interfacing
controllers feature separate program and data memory                   Program and Data Memory Spaces".
spaces and busses. This architecture also allows the
direct access of program memory from the data space                    User access to the program memory space is restricted
during code execution.                                                 to the lower half of the address range (000000h to
                                                                       7FFFFFh). The exception is the use of TBLRD/TBLWT
4.1 Program Address Space                                              operations which use TBLPAG<7> to permit access to
                                                                       the Configuration bits and Device ID sections of the
The program address memory space of the                                configuration memory space.
PIC24FJ64GB004 family devices is 4M instructions.
The space is addressable by a 24-bit value derived                     Memory maps for the PIC24FJ64GB004 family of
                                                                       devices are shown in Figure 4-1.

FIGURE 4-1:                              PROGRAM SPACE MEMORY MAP FOR PIC24FJ64GB004 FAMILY DEVICES

                                         PIC24FJ32GB00X                PIC24FJ64GB00X           000000h
                                                                                                000002h
                                            GOTO Instruction              GOTO Instruction      000004h
                                             Reset Address                 Reset Address
                                         Interrupt Vector Table        Interrupt Vector Table   0000FEh
                                                                                                000100h
                                                 Reserved                      Reserved         000104h
                                         Alternate Vector Table        Alternate Vector Table   0001FEh
                                                                                                000200h
                                                User Flash
             User Memory Space             Program Memory                  User Flash           0057FEh
                                           (11K instructions)          Program Memory           005800h
                                                                       (22K instructions)
                                          Flash Config Words

                                                    Unimplemented      Flash Config Words       00ABFEh
                                                         Read `0'                               00AC00h
                                                                         Unimplemented
                                                        Reserved              Read `0'
                                              Device Config Registers
                                                                                                7FFFFFh
                                                        Reserved                                800000h
                                                        DEVID (2)
    Note: Memory areas are not shown to scale.                         Reserved
2010 Microchip Technology Inc.
             Configuration Memory Space                                Device Config Registers  F7FFFEh
                                                                                                F80000h
                                                                                                F8000Eh
                                                                                                F80010h

                                                                       Reserved

                                                                       DEVID (2)                FEFFFEh
                                                                                                FF0000h

                                                                                                FFFFFFh

                                                                                                DS39940D-page 31
PIC24FJ64GB004 FAMILY

4.1.1  PROGRAM MEMORY                                         4.1.3 FLASH CONFIGURATION WORDS
       ORGANIZATION
                                                              In PIC24FJ64GB004 family devices, the top four words
The program memory space is organized in                      of on-chip program memory are reserved for configura-
word-addressable blocks. Although it is treated as            tion information. On device Reset, the configuration
24 bits wide, it is more appropriate to think of each         information is copied into the appropriate Configuration
address of the program memory as a lower and upper            registers. The addresses of the Flash Configuration
word, with the upper byte of the upper word being             Word for devices in the PIC24FJ64GB004 family are
unimplemented. The lower word always has an even              shown in Table 4-1. Their location in the memory map
address, while the upper word has an odd address              is shown with the other memory vectors in Figure 4-1.
(Figure 4-2).
                                                              The Configuration Words in program memory are a
Program memory addresses are always word-aligned              compact format. The actual Configuration bits are
on the lower word and addresses are incremented or            mapped in several different registers in the configuration
decremented by two during code execution. This                memory space. Their order in the Flash Configuration
arrangement also provides compatibility with data             Words do not reflect a corresponding arrangement in the
memory space addressing and makes it possible to              configuration space. Additional details on the device
access data in the program memory space.                      Configuration Words are provided in Section 26.1
                                                              "Configuration Bits".
4.1.2 HARD MEMORY VECTORS
                                                              TABLE 4-1:         FLASH CONFIGURATION
All PIC24F devices reserve the addresses between                                 WORDS FOR PIC24FJ64GB004
00000h and 000200h for hard-coded program execu-                                 FAMILY DEVICES
tion vectors. A hardware Reset vector is provided to
redirect code execution from the default value of the         Device                  Program  Configuration
PC on device Reset to the actual start of code. A GOTO                                Memory         Word
instruction is programmed by the user at 000000h with                                 (Words)
the actual address for the start of code at 000002h.                                             Addresses

PIC24F devices also have two interrupt vector tables,         PIC24FJ32GB0            11,008   0057F8h:
located from 000004h to 0000FFh and 000100h to                PIC24FJ64GB0            22,016   0057FEh
0001FFh. These vector tables allow each of the many
device interrupt sources to be handled by separate                                             00ABF8h:
ISRs. A more detailed discussion of the interrupt vector                                       00ABFEh
tables is provided in Section 7.1 "Interrupt Vector
Table".

FIGURE 4-2:       PROGRAM MEMORY ORGANIZATION

         MSW      most significant word                       least significant word          PC Address
       Address                                                            8                 (LSW Address)
                            23                            16
       000001h                                                                        0
       000003h    00000000                                                                      000000h
       000005h                                                                                  000002h
       000007h    00000000                                                                      000004h
                  00000000                                                                      000006h

                  00000000

                  Program Memory                              Instruction Width
                   `Phantom' Byte

                     (read as `0')

DS39940D-page 32                                                                       2010 Microchip Technology Inc.
                                      PIC24FJ64GB004 FAMILY

4.2 Data Address Space                                      PIC24FJ64GB004 family devices implement a total of
                                                            16 Kbytes of data memory. Should an EA point to a
The PIC24F core has a separate, 16-bit wide data mem-       location outside of this area, an all zero word or byte will
ory space, addressable as a single linear range. The        be returned.
data space is accessed using two Address Generation
Units (AGUs), one each for read and write operations.       4.2.1 DATA SPACE WIDTH
The data space memory map is shown in Figure 4-3.
                                                            The data memory space is organized in
All Effective Addresses (EAs) in the data memory space      byte-addressable, 16-bit wide blocks. Data is aligned
are 16 bits wide and point to bytes within the data space.  in data memory and registers as 16-bit words, but all
This gives a data space address range of 64 Kbytes or       data space EAs resolve to bytes. The Least Significant
32K words. The lower half of the data memory space          Bytes (LSBs) of each word have even addresses, while
(that is, when EA<15> = 0) is used for implemented          the Most Significant Bytes (MSBs) have odd
memory addresses, while the upper half (EA<15> = 1) is      addresses.
reserved for the program space visibility area (see
Section 4.3.3 "Reading Data from Program Memory
Using Program Space Visibility").

FIGURE 4-3:  DATA SPACE MEMORY MAP FOR PIC24FJ64GB004 FAMILY DEVICES

               MSB               MSB                        LSB    LSB
             Address                                             Address
                                      SFR Space                           SFR
              0001h                                              0000h    Space
              07FFh                                              07FEh               Near
              0801h                                              0800h           Data Space
              1FFFh
Implemented   2001h                   Data RAM                   1FFEh
Data RAM                                                        2000h
              27FFh
              2801h                                              27FEh
                                                                 2800h

                                 Unimplemented
                                   Read as `0'

             7FFFh                                               7FFFh
             8001h                                               8000h

                                 Program Space
                                  Visibility Area

                          FFFFh                                  FFFEh
Note: Data memory areas are not shown to scale.

2010 Microchip Technology Inc.                                                  DS39940D-page 33
PIC24FJ64GB004 FAMILY

4.2.2  DATA MEMORY ORGANIZATION                                     A Sign-Extend (SE) instruction is provided to allow
       AND ALIGNMENT                                                users to translate 8-bit signed data to 16-bit signed
                                                                    values. Alternatively, for 16-bit unsigned data, users
To maintain backward compatibility with PIC devices                can clear the MSB of any W register by executing a
and improve data space memory usage efficiency, the                 Zero-Extend (ZE) instruction on the appropriate
PIC24F instruction set supports both word and byte                  address.
operations. As a consequence of byte accessibility, all
Effective Address calculations are internally scaled to             Although most instructions are capable of operating on
step through word-aligned memory. For example, the                  word or byte data sizes, it should be noted that some
core recognizes that Post-Modified Register Indirect                instructions operate only on words.
Addressing mode [Ws++] will result in a value of Ws + 1
for byte operations and Ws + 2 for word operations.                 4.2.3 NEAR DATA SPACE

Data byte reads will read the complete word which con-              The 8-Kbyte area between 0000h and 1FFFh is
tains the byte using the LSb of any EA to determine                 referred to as the near data space. Locations in this
which byte to select. The selected byte is placed onto              space are directly addressable via a 13-bit absolute
the LSB of the data path. That is, data memory and                  address field within all memory direct instructions. The
registers are organized as two parallel, byte-wide                  remainder of the data space is indirectly addressable.
entities with shared (word) address decode, but                     Additionally, the whole data space is addressable using
separate write lines. Data byte writes only write to the            MOV instructions, which support Memory Direct
corresponding side of the array or register which                   Addressing with a 16-bit address field.
matches the byte address.
                                                                    4.2.4 SFR SPACE
All word accesses must be aligned to an even address.
Misaligned word data fetches are not supported, so                  The first 2 Kbytes of the near data space, from 0000h
care must be taken when mixing byte and word                        to 07FFh, are primarily occupied with Special Function
operations or translating from 8-bit MCU code. If a                 Registers (SFRs). These are used by the PIC24F core
misaligned read or write is attempted, an address error             and peripheral modules for controlling the operation of
trap will be generated. If the error occurred on a read,            the device.
the instruction underway is completed; if it occurred on
a write, the instruction will be executed but the write will        SFRs are distributed among the modules that they
not occur. In either case, a trap is then executed, allow-          control and are generally grouped together by the
ing the system and/or user to examine the machine                   module. Much of the SFR space contains unused
state prior to execution of the address Fault.                      addresses; these are read as `0'. A diagram of the SFR
                                                                    space, showing where SFRs are actually implemented,
All byte loads into any W register are loaded into the              is shown in Table 4-2. Each implemented area
Least Significant Byte. The Most Significant Byte is not            indicates a 32-byte region where at least one address
modified.                                                           is implemented as an SFR. A complete listing of
                                                                    implemented SFRs, including their addresses, is
                                                                    shown in Tables 4-3 through 4-27.

TABLE 4-2: IMPLEMENTED REGIONS OF SFR DATA SPACE

                                      SFR Space Address

       xx00               xx20  xx40                          xx60  xx80    xxA0      xxC0       xxE0

000h                      Core                                ICN         Interrupts             --
                                                                          Compare
100h              Timers              Capture                                                    --
                                                                              --
200h   I2CTM      UART          SPI                           --    --        --            I/O
                                                                             USB
300h   A/D        A/D / CTMU    --                            --    --        --      --         --
                                                                             PPS
400h   --                 --    --                            --              --                 --

500h   --                 --    --                            --    --                --         --

600h   PMP        RTCC CRC/Comp Comparators                                                      --

700h   --                 --    System/DS NVM/PMD                   --                --         --

Legend: -- = No implemented SFRs in this block

DS39940D-page 34                                                           2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-3: CPU CORE REGISTERS MAP

                                  File  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     All
                                 Name                                                                                                                                                                                 Resets
                                                                                                                                                                                                                 C
                                 WREG0 0000                                                                              Working Register 0                                                                     --     0000
                                                                                                                                                                                                                       0000
                                 WREG1 0002                                                                              Working Register 1                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG2 0004                                                                              Working Register 2                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG3 0006                                                                              Working Register 3                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG4 0008                                                                              Working Register 4                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG5 000A                                                                              Working Register 5                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG6 000C                                                                              Working Register 6                                                                            0000
                                                                                                                                                                                                                       0000
                                 WREG7 000E                                                                              Working Register 7                                                                            0000
                                                                                                                                                                                                                       0800
                                 WREG8 0010                                                                              Working Register 8                                                                            xxxx
                                                                                                                                                                                                                       0000
                                 WREG9 0012                                                                              Working Register 9                                                                            0000

                                 WREG10 0014                                                                             Working Register 10                                                                           0000

                                 WREG11 0016                                                                             Working Register 11                                                                           0000

                                 WREG12 0018                                                                             Working Register 12                                                                           xxxx

                                 WREG13 001A                                                                             Working Register 13                                                                           0000   PIC24FJ64GB004 FAMILY
                                                                                                                                                                                                                       0000
                                 WREG14 001C                                                                             Working Register 14                                                                           xxxx

                                 WREG15 001E                                                                             Working Register 15

                                 SPLIM  0020                                                                      Stack Pointer Limit Value Register

                                 PCL    002E                                                                      Program Counter Low Word Register

                                 PCH    0030   --      --      --      --      --      --                         --     --                             Program Counter Register High Byte
                                                                                                                                                        Table Memory Page Address Register
                                 TBLPAG 0032   --      --      --      --      --      --                         --     --

                                 PSVPAG 0034   --      --      --      --      --      --                         --     --                             Program Space Visibility Page Address Register

                                 RCOUNT 0036                                                                          Repeat Loop Counter Register

                                 SR     0042   --      --      --      --      --      --                         --     DC     IPL2          IPL1      IPL0   RA     N      OV                         Z

                                 CORCON 0044   --      --      --      --      --      --                         --     --     --                  --  --     --     IPL3   PSV                        --

                                 DISICNT 0052  --      --                                                                Disable Interrupts Counter Register

                                 Legend: -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

DS39940D-page 35
DS39940D-page 36                 TABLE 4-4: ICN REGISTER MAP                                                                                                                                                                           PIC24FJ64GB004 FAMILY

                                  File    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      All
                                 Name                                                                                                                                                                                          Resets

                                 CNEN1    0060   CN15IE     --   CN13IE   CN12IE         CN11IE   CN10IE(1)                CN9IE(1)   CN8IE(1)    CN7IE    CN6IE  CN5IE     CN4IE      CN3IE      CN2IE      CN1IE    CN0IE    0000
                                 CNEN2    0062      --   CN30IE  CN29IE  CN28IE(1)       CN27IE   CN26IE(1)               CN25IE(1)       --     CN23IE   CN22IE  CN21IE  CN20IE(1)  CN19IE(1)  CN18IE(1)  CN17IE(1)  CN16IE   0000
                                 CNPU1    0068                                          CN11PUE  CN10PUE(1)              CN9PUE(1)              CN7PUE   CN6PUE                                                                0000
                                 CNPU2    006A  CN15PUE      -- CN13PUE CN12PUE         CN27PUE  CN26PUE(1)              CN25PUE(1)  CN8PUE(1)  CN23PUE  CN22PUE  CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE                    0000
                                                    --   CN30PUE CN29PUE CN28PUE(1)                                                       --                      CN21PUE CN20PUE(1) CN19PUE(1) CN18PUE(1) CN17PUE(1) CN16PUE

                                 Legend:        -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 Note 1: Unimplemented in 28-pin devices; read as `0'.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-5: INTERRUPT CONTROLLER REGISTER MAP

                                 File Name 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        All
                                                                                                                                                                                                       Resets
                                                                                                                                   --
                                 INTCON1  0080 NSTDIS  --     --      --     --    --                              --     --       --   --      -- MATHERR ADDRERR STKERR OSCFAIL           --         0000
                                 INTCON2                                                                                         T2IF                                                                  0000
                                 IFS0     0082 ALTIVT DISI    --      --     --    --                              --     --       --   --      --     --           --     INT2EP INT1EP INT0EP        0000
                                 IFS1                                                                                            IC5IF                                                                 0000
                                 IFS2     0084  --     --     AD1IF U1TXIF U1RXIF SPI1IF SPF1IF T3IF                               --   OC2IF   IC2IF  --           T1IF   OC1IF  IC1IF     INT0IF     0000
                                 IFS3                                                                                              --                                                                  0000
                                 IFS4     0086 U2TXIF U2RXIF INT2IF   T5IF   T4IF OC4IF OC3IF                             --       --   --      --     INT1IF       CNIF   CMIF MI2C1IF SI2C1IF        0000
                                 IFS5                                                                                            T2IE                                                                  0000
                                 IEC0     0088  --     --     PMPIF   --     --    --                              OC5IF  --       --   IC4IF   IC3IF  --           --     --     SPI2IF SPF2IF        0000
                                 IEC1                                                                                            IC5IE                                                                 0000
                                 IEC2     008A  --     RTCIF  --      --     --    --                              --     --       --   --      --     --           --     MI2C2IF SI2C2IF  --         0000
                                 IEC3                                                                                              --                                                                  0000
                                 IEC4     008C  --     --     CTMUIF  --     --    --                              --     LVDIF    --   --      --     --           CRCIF U2ERIF U1ERIF     --         0000
                                 IEC5                                                                                              --                                                                  0000
                                 IPC0     008E  --     --     --      --     --    --                              --     --       --   USB1IF  --     --           --     --     --        --         4444
                                 IPC1                                                                                              --                                                                  4440
                                 IPC2     0094  --     --     AD1IE U1TXIE U1RXIE SPI1IE SPF1IE T3IE                               --   OC2IE   IC2IE  --           T1IE   OC1IE IC1IE INT0IE          4444
                                 IPC3                                                                                              --                                                                  0044
                                 IPC4     0096 U2TXIE U2RXIE INT2IE   T5IE   T4IE OC4IE OC3IE                             --       --   --      --     INT1IE       CNIE   CMIE MI2C1IE SI2C1IE        4444
                                 IPC5                                                                                              --                                                                  0004
                                 IPC6     0098  --     --     PMPIE   --     --    --                              OC5IE  --       --   IC4IE   IC3IE  --           --     --     SPI2IE SPF2IE        4440
                                 IPC7                                                                                              --                                                                  4444
                                 IPC8     009A  --     RTCIE  --      --     --    --                              --     --       --   --      --     --           --     MI2C2IE SI2C2IE  --         0044
                                 IPC9                                                                                              --                                                                  4440
                                 IPC10    009C  --     --     CTMUIE  --     --    --                              --     LVDIE    --   --      --     --           CRCIE U2ERIE U1ERIE     --         0040
                                 IPC11                                                                                             --                                                                  0040
                                 IPC12    009E  --     --     --      --     --    --                              --     --       --   USB1IE  --     --           --     --     --        --         0440
                                 IPC15                                                                                             --                                                                  0400
                                 IPC16    00A4  --     T1IP2 T1IP1 T1IP0     --    OC1IP2 OC1IP1 OC1IP0                            --   IC1IP2 IC1IP1 IC1IP0        --     INT0IP2 INT0IP1 INT0IP0     4440
                                 IPC18                                                                                             --                                                                  0004
                                 IPC19    00A6  --     T2IP2 T2IP1 T2IP0     --    OC2IP2 OC2IP1 OC2IP0                            --   IC2IP2 IC2IP1 IC2IP0        --     --     --        --         0040    PIC24FJ64GB004 FAMILY
                                 IPC21                                                                                             --                                                                  0400
                                 INTTREG  00A8  -- U1RXIP2 U1RXIP1 U1RXIP0 --      SPI1IP2 SPI1IP1 SPI1IP0                              SPF1IP2 SPF1IP1 SPF1IP0     --     T3IP2  T3IP1     T3IP0      0000
                                 Legend:
                                          00AA  --     --     --      --     --    --                              --     --            AD1IP2 AD1IP1 AD1IP0        --     U1TXIP2 U1TXIP1 U1TXIP0

                                          00AC  --     CNIP2 CNIP1 CNIP0     --    CMIP2 CMIP1 CMIP0                                    MI2C1IP2 MI2C1IP1 MI2C1IP0  --     SI2C1IP2 SI2C1IP1 SI2C1IP0

                                          00AE  --     --     --      --     --    --                              --     --            --      --     --           --     INT1IP2 INT1IP1 INT1IP0

                                          00B0  --     T4IP2 T4IP1 T4IP0     --    OC4IP2 OC4IP1 OC4IP0                                 OC3IP2 OC3IP1 OC3IP0        --     --     --        --

                                          00B2  --     U2TXIP2 U2TXIP1 U2TXIP0 -- U2RXIP2 U2RXIP1 U2RXIP0                               INT2IP2 INT2IP1 INT2IP0     --     T5IP2  T5IP1     T5IP0

                                          00B4  --     --     --      --     --    --                              --     --            SPI2IP2 SPI2IP1 SPI2IP0     --     SPF2IP2 SPF2IP1 SPF2IP0

                                          00B6  --     IC5IP2 IC5IP1 IC5IP0  --    IC4IP2 IC4IP1 IC4IP0                                 IC3IP2 IC3IP1 IC3IP0        --     --     --        --

                                          00B8  --     --     --      --     --    --                              --     --            OC5IP2 OC5IP1 OC5IP0        --     --     --        --

                                          00BA  --     --     --      --     --    --                              --     --            PMPIP2 PMPIP1 PMPIP0        --     --     --        --

                                          00BC  --     --     --      --     -- MI2C2IP2 MI2C2IP1 MI2C2IP0                              SI2C2IP2 SI2C2IP1 SI2C2IP0  --     --     --        --

                                          00C2  --     --     --      --     --    RTCIP2 RTCIP1 RTCIP0                                 --      --     --           --     --     --        --

                                          00C4  --     CRCIP2 CRCIP1 CRCIP0  -- U2ERIP2 U2ERIP1 U2ERIP0                                 U1ERIP2 U1ERIP1 U1ERIP0     --     --     --        --

                                          00C8  --     --     --      --     --    --                              --     --            --      --     --           --     LVDIP2 LVDIP1 LVDIP0

                                          00CA  --     --     --      --     --    --                              --     --            CTMUIP2 CTMUIP1 CTMUIP0     --     --     --        --

                                          00CE  --     --     --      --     -- USB1IP2 USB1IP1 USB1IP0                                 --      --     --           --     --     --        --

                                          00E0 CPUIRQ --      VHOLD   --     ILR3  ILR2                            ILR1   ILR0          VECNUM6 VECNUM5 VECNUM4 VECNUM3 VECNUM2 VECNUM1 VECNUM0

DS39940D-page 37                          -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
DS39940D-page 38                 TABLE 4-6: TIMER REGISTER MAP                                                                                                                                             PIC24FJ64GB004 FAMILY

                                 File Name 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     All
                                                                                                                                                                             TSYNC   TCS     --    Resets
                                 TMR1   0100                                                                             Timer1 Register
                                                                                                                                                                                --   TCS     --     0000
                                 PR1    0102                                                                             Timer1 Period Register                                 --   TCS     --     FFFF
                                                                                                                                                                                                    0000
                                 T1CON  0104   TON  --  TSIDL   --  --  --                                        --     --     --               TGATE TCKPS1 TCKPS0  --        --   TCS     --     0000
                                                                                                                                                                                --   TCS     --     0000
                                 TMR2   0106                                                                             Timer2 Register                                                            0000
                                                                                                                                                                                                    FFFF
                                 TMR3HLD 0108                           Timer3 Holding Register (for 32-bit timer operations only)                                                                  FFFF
                                                                                                                                                                                                    0000
                                 TMR3   010A                                                                             Timer3 Register                                                            0000
                                                                                                                                                                                                    0000
                                 PR2    010C                                                                             Timer2 Period Register                                                     0000
                                                                                                                                                                                                    0000
                                 PR3    010E                                                                             Timer3 Period Register                                                     FFFF
                                                                                                                                                                                                    FFFF
                                 T2CON  0110   TON  --  TSIDL   --  --  --                                        --     --     --               TGATE TCKPS1 TCKPS0 T32                            0000
                                                                                                                                                                                                    0000
                                 T3CON  0112   TON  --  TSIDL   --  --  --                                        --     --     --               TGATE TCKPS1 TCKPS0  --

                                 TMR4   0114                                                                             Timer4 Register

                                 TMR5HLD 0116                               Timer5 Holding Register (for 32-bit operations only)

                                 TMR5   0118                                                                             Timer5 Register

                                 PR4    011A                                                                             Timer4 Period Register

                                 PR5    011C                                                                             Timer5 Period Register

                                 T4CON  011E   TON  --  TSIDL   --  --  --                                        --     --     --               TGATE TCKPS1 TCKPS0 T32

                                 T5CON  0120   TON  --  TSIDL   --  --  --                                        --     --     --               TGATE TCKPS1 TCKPS0  --

                                 Legend: -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-7: INPUT CAPTURE REGISTER MAP

                                  File    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    All
                                 Name                                                                               --                                     ICI0                                      Reset
                                                                                                                    --                                      --
                                                                                                                                                                                                        s
                                                                                                                    --                                     ICI0
                                 IC1CON1  0140  --      --      ICSIDL ICTSEL2 ICTSEL1 ICTSEL0                      --    --     --     ICI1                --    ICOV   ICBNE  ICM2   ICM1   ICM0 0000
                                 IC1CON2
                                 IC1BUF   0142  --      --      --      --      --      --                          --    IC32 ICTRIG TRIGSTAT             ICI0   SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
                                 IC1TMR                                                                             --                                      --
                                 IC2CON1  0144                                                                            Input Capture 1 Buffer Register                                            0000
                                 IC2CON2                                                                            --                                     ICI0
                                 IC2BUF   0146                                                                      --    Timer Value 1 Register            --                                       xxxx
                                 IC2TMR
                                 IC3CON1  0148  --      --      ICSIDL ICTSEL2 ICTSEL1 ICTSEL0                      --    --     --     ICI1               ICI0   ICOV   ICBNE  ICM2   ICM1   ICM0 0000
                                 IC3CON2                                                                            --                                      --
                                 IC3BUF   014A  --      --      --      --      --      --                                IC32 ICTRIG TRIGSTAT                    SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
                                 IC3TMR
                                 IC4CON1  014C                                                                            Input Capture 2 Buffer Register                                            0000
                                 IC4CON2
                                 IC4BUF   014E                                                                            Timer Value 2 Register                                                     xxxx
                                 IC4TMR
                                 IC5CON1  0150  --      --      ICSIDL ICTSEL2 ICTSEL1 ICTSEL0                            --     --     ICI1                      ICOV   ICBNE  ICM2   ICM1   ICM0 0000
                                 IC5CON2
                                 IC5BUF   0152  --      --      --      --      --      --                                IC32 ICTRIG TRIGSTAT                    SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D
                                 IC5TMR
                                 Legend:  0154                                                                            Input Capture 3 Buffer Register                                            0000

                                          0156                                                                            Timer Value 3 Register                                                     xxxx

                                          0158  --      --      ICSIDL ICTSEL2 ICTSEL1 ICTSEL0                            --     --     ICI1                      ICOV   ICBNE  ICM2   ICM1   ICM0 0000

                                          015A  --      --      --      --      --      --                                IC32 ICTRIG TRIGSTAT                    SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D

                                          015C                                                                            Input Capture 4 Buffer Register                                            0000            PIC24FJ64GB004 FAMILY

                                          015E                                                                            Timer Value 4 Register                                                     xxxx

                                          0160  --      --      ICSIDL ICTSEL2 ICTSEL1 ICTSEL0                            --     --     ICI1                      ICOV   ICBNE  ICM2   ICM1   ICM0 0000

                                          0162  --      --      --      --      --      --                                IC32 ICTRIG TRIGSTAT                    SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000D

                                          0164                                                                            Input Capture 5 Buffer Register                                            0000

                                          0166                                                                            Timer Value 5 Register                                                     xxxx

                                          -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

DS39940D-page 39
DS39940D-page 40                 TABLE 4-8: OUTPUT COMPARE REGISTER MAP                                                                                                                                                      PIC24FJ64GB004 FAMILY

                                 File Name 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    All
                                                                                                                                                                                                              Resets

                                 OC1CON1  0190  --  --         OCSIDL OCTSEL2 OCTSEL1 OCTSEL0                      ENFLT2 ENFLT1 ENFLT0 OCFLT2                    OCFLT1  OCFLT0 TRIGMODE OCM2  OCM1   OCM0 0000
                                 OC1CON2                                                                            DCB0 OC32 OCTRIG TRIGSTAT                     OCTRIS
                                 OC1RS    0192 FLTMD FLTOUT FLTTRIEN OCINV     --      DCB1                                                                               SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000C
                                 OC1R                                                                                        Output Compare 1 Secondary Register  OCFLT1
                                 OC1TMR   0194                                                                                      Output Compare 1 Register     OCTRIS                                      0000
                                 OC2CON1                                                                                              Timer Value 1 Register
                                 OC2CON2  0196                                                                                                                    OCFLT1                                      0000
                                 OC2RS                                                                             ENFLT2 ENFLT1 ENFLT0 OCFLT2                    OCTRIS
                                 OC2R     0198                                                                      DCB0 OC32 OCTRIG TRIGSTAT                                                                 xxxx
                                 OC2TMR                                                                                                                           OCFLT1                                      0000
                                 OC3CON1  019A --   --         OCSIDL OCTSEL2 OCTSEL1 OCTSEL0                                Output Compare 2 Secondary Register  OCTRIS  OCFLT0 TRIGMODE OCM2  OCM1   OCM0
                                 OC3CON2                                                                                            Output Compare 2 Register
                                 OC3RS    019C FLTMD FLTOUT FLTTRIEN OCINV     --      DCB1                                           Timer Value 2 Register      OCFLT1  SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000C
                                 OC3R                                                                                                                             OCTRIS
                                 OC3TMR   019E                                                                     ENFLT2 ENFLT1 ENFLT0 OCFLT2                                                                0000
                                 OC4CON1                                                                            DCB0 OC32 OCTRIG TRIGSTAT
                                 OC4CON2  01A0                                                                                                                                                                0000
                                 OC4RS                                                                                       Output Compare 3 Secondary Register
                                 OC4R     01A2                                                                                      Output Compare 3 Register                                                 xxxx
                                 OC4TMR                                                                                               Timer Value 3 Register                                                  0000
                                 OC5CON1  01A4 --   --         OCSIDL OCTSEL2 OCTSEL1 OCTSEL0                                                                             OCFLT0 TRIGMODE OCM2  OCM1   OCM0
                                 OC5CON2                                                                           ENFLT2 ENFLT1 ENFLT0 OCFLT2
                                 OC5RS    01A6 FLTMD FLTOUT FLTTRIEN OCINV     --      DCB1                         DCB0 OC32 OCTRIG TRIGSTAT                             SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000C
                                 OC5R
                                 OC5TMR   01A8                                                                               Output Compare 4 Secondary Register                                              0000
                                 Legend:                                                                                            Output Compare 4 Register
                                          01AA                                                                                        Timer Value 4 Register                                                  0000

                                          01AC                                                                     ENFLT2 ENFLT1 ENFLT0 OCFLT2                                                                xxxx
                                                                                                                    DCB0 OC32 OCTRIG TRIGSTAT                                                                 0000
                                          01AE --   --         OCSIDL OCTSEL2 OCTSEL1 OCTSEL0                                                                             OCFLT0 TRIGMODE OCM2  OCM1   OCM0
                                                                                                                             Output Compare 5 Secondary Register
                                          01B0 FLTMD FLTOUT FLTTRIEN OCINV     --      DCB1                                         Output Compare 5 Register             SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000C
                                                                                                                                      Timer Value 5 Register
                                          01B2                                                                                                                                                                0000

                                          01B4                                                                                                                                                                0000

                                          01B6                                                                                                                                                                xxxx
                                                                                                                                                                                                              0000
                                          01B8 --   --         OCSIDL OCTSEL2 OCTSEL1 OCTSEL0                                                                             OCFLT0 TRIGMODE OCM2  OCM1   OCM0

                                          01BA FLTMD FLTOUT FLTTRIEN OCINV     --      DCB1                                                                               SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0 000C

                                          01BC                                                                                                                                                                0000

                                          01BE                                                                                                                                                                0000

                                          01C0                                                                                                                                                                xxxx

                                          -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-9: I2CTM REGISTER MAP

                                 File Name 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       All
                                                                                                                                                                                                                      Resets
                                 I2C1RCV   0200      --      --  --      --      --        --                           --     --                                   Receive Register                RSEN     SEN
                                 I2C1TRN                                                                                --     --                                                                    RBF     TBF       0000
                                 I2C1BRG   0202      --      --  --      --      --        --                           --                                          Transmit Register                                  00FF
                                 I2C1CON                                                                            DISSLW  SMEN                                                                    RSEN     SEN       0000
                                           0204      --      --  --      --      --        --                       GCSTAT  ADD10                            Baud Rate Generator Register            RBF     TBF       1000
                                 I2C1STAT                                                                                                                                                                              0000
                                 I2C1ADD   0206 I2CEN        --  I2CSIDL SCLREL IPMIEN A10M                                        GCEN   STREN ACKDT ACKEN RCEN                           PEN                         0000
                                 I2C1MSK                                                                                           IWCOL                                                   R/W                         0000
                                 I2C2RCV   0208 ACKSTAT TRSTAT   --      --      --    BCL                                                I2COV              D/A    P               S                                  0000
                                 I2C2TRN                                                                                           GCEN                                                    PEN                         00FF
                                 I2C2BRG   020A      --      --  --      --      --        --                                      IWCOL                     Address Register              R/W                         0000
                                 I2C2CON                                                                                                                                                                               1000
                                           020C      --      --  --      --      --        --                                                                Address Mask Register                                     0000
                                 I2C2STAT                                                                                                                                                                              0000
                                 I2C2ADD   0210      --      --  --      --      --        --                           --     --                                   Receive Register                                   0000
                                 I2C2MSK                                                                                --     --
                                 Legend:   0212      --      --  --      --      --        --                           --                                          Transmit Register
                                                                                                                    DISSLW  SMEN
                                           0214      --      --  --      --      --        --                       GCSTAT  ADD10                            Baud Rate Generator Register

                                           0216 I2CEN        --  I2CSIDL SCLREL IPMIEN A10M                                               STREN ACKDT ACKEN RCEN

                                           0218 ACKSTAT TRSTAT   --      --      --    BCL                                                I2COV              D/A    P               S

                                           021A      --      --  --      --      --        --                                                                Address Register

                                           021C      --      --  --      --      --        --                                                                Address Mask Register

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.                                                                                                            PIC24FJ64GB004 FAMILY

                                 TABLE 4-10: UART REGISTER MAPS

                                 File Name 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    All
                                                                                                                                                                                           PDSEL1   PDSEL0   STSEL    Resets
                                 U1MODE    0220 UARTEN   --      USIDL IREN RTSMD      --                           UEN1 UEN0 WAKE LPBACK                    ABAUD RXINV BRGH                        OERR    URXDA
                                 U1STA                                                                              UTXBF TRMT URXISEL1 URXISEL0             ADDEN RIDLE PERR               FERR                       0000
                                 U1TXREG   0222 UTXISEL1 UTXINV UTXISEL0 -- UTXBRK UTXEN                                                                                                            PDSEL0   STSEL     0110
                                 U1RXREG                                                                               --                                           Transmit Register      PDSEL1    OERR    URXDA     xxxx
                                 U1BRG     0224  --      --      --  --      --        --                              --                                           Receive Register        FERR                       0000
                                 U2MODE                                                                              Baud Rate Generator Prescaler Register                                                            0000
                                 U2STA     0226  --      --      --  --      --        --                           UEN1 UEN0 WAKE LPBACK                    ABAUD RXINV BRGH                                          0000
                                 U2TXREG                                                                            UTXBF TRMT URXISEL1 URXISEL0             ADDEN RIDLE PERR                                          0110
                                 U2RXREG   0228                                                                        --                                                                                              xxxx
                                 U2BRG                                                                                 --                                           Transmit Register                                  0000
                                 Legend:   0230 UARTEN   --      USIDL IREN RTSMD      --                            Baud Rate Generator Prescaler Register         Receive Register                                   0000

                                           0232 UTXISEL1 UTXINV UTXISEL0 -- UTXBRK UTXEN

                                           0234  --      --      --  --      --        --

                                           0236  --      --      --  --      --        --

                                           0238

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

DS39940D-page 41
DS39940D-page 42                 TABLE 4-11: SPI REGISTER MAPS                                                                                                                                                                       PIC24FJ64GB004 FAMILY

                                 File Name 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       All
                                                                                                                                                                                                                             Resets
                                                                                                                                                                                   SISEL1    SISEL0    SPITBF
                                 SPI1STAT  0240 SPIEN    --      SPISIDL  --                       -- SPIBEC2 SPIBEC1 SPIBEC0 SRMPT SPIROV                     SRXMPT    SISEL2    SPRE1     SPRE0     PPRE1       SPIRBF    0000
                                 SPI1CON1                                                                                                                      MSTEN     SPRE2                         SPIFE       PPRE0     0000
                                 SPI1CON2  0242  --      --      --       DISSCK DISSDO MODE16 SMP                          CKE     SSEN                CKP                           --        --                 SPIBEN    0000
                                 SPI1BUF                                                                                                                           --       --                         SPITBF                0000
                                 SPI2STAT  0244 FRMEN SPIFSD SPIFPOL --                            --      --       --      --      --                  --                         SISEL1    SISEL0    PPRE1       SPIRBF    0000
                                 SPI2CON1                                                                                                                      SRXMPT    SISEL2    SPRE1     SPRE0     SPIFE       PPRE0     0000
                                 SPI2CON2  0248                                                                            Transmit and Receive Buffer         MSTEN     SPRE2                                     SPIBEN    0000
                                 SPI2BUF                                                                                                                                              --        --                           0000
                                 Legend:   0260 SPIEN    --      SPISIDL  --                       -- SPIBEC2 SPIBEC1 SPIBEC0 SRMPT SPIROV                         --       --

                                           0262  --      --      --       DISSCK DISSDO MODE16 SMP                          CKE     SSEN                CKP

                                           0264 FRMEN SPIFSD SPIFPOL --                            --      --       --      --      --                  --

                                           0268                                                                            Transmit and Receive Buffer

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 TABLE 4-12: PORTA REGISTER MAP

                                  File     Addr  Bit 15  Bit 14  Bit 13   Bit 12                   Bit 11 Bit 10(1) Bit 9(1) Bit 8(1) Bit 7(1)  Bit 6          Bit 5       Bit 4     Bit 3     Bit2      Bit 1       Bit 0      All
                                 Name                                                                                                                                                                                        Resets
                                                                                                                                                                --       TRISA4    TRISA3    TRISA2    TRISA1      TRISA0
                                 TRISA     02C0  --      --      --       --                       --      TRISA10 TRISA9 TRISA8 TRISA7                 --      --         RA4       RA3       RA2       RA1         RA0      079F
                                 PORTA                                                                                                                          --       LATA4     LATA3     LATA2     LATA1                  xxxx
                                 LATA      02C2  --      --      --       --                       --      RA10     RA9     RA8     RA7                 --      --        ODA4      ODA3      ODA2      ODA1       LATA0      xxxx
                                 ODCA                                                                                                                                                                               ODA0      0000
                                 Legend:   02C4  --      --      --       --                       --      LATA10 LATA9 LATA8 LATA7                     --
                                 Note 1:
                                           02C6  --      --      --       --                       --      ODA10 ODA9 ODA8 ODA7                         --

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal. Reset values shown are for 44-pin devices.

                                           Bits are unimplemented in 28-pin devices; read as `0'.

                                 TABLE 4-13: PORTB REGISTER MAP

                                  File     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       All
                                 Name                                                                                                                                                                                        Resets
                                                                                                                            TRISB8  TRISB7       --            TRISB5    TRISB4    TRISB3    TRISB2    TRISB1
                                 TRISB     02C8 TRISB15 TRISB14 TRISB13   --      TRISB11 TRISB10                   TRISB9    RB8     RB7        --              RB5       RB4       RB3       RB2       RB1       TRISB0    EFBF
                                 PORTB                                                                                RB9                        --                                                                  RB0     xxxx
                                 LATB      02CA RB15     RB14    RB13     --                       RB11    RB10             LATB8   LATB7        --            LATB5     LATB4     LATB3     LATB2     LATB1                 xxxx
                                 ODCB                                                                               LATB9    ODB8    ODB7                       ODB5      ODB4      ODB3      ODB2      ODB1       LATB0     0000
                                 Legend:   02CC LATB15 LATB14 LATB13      --                       LATB11 LATB10     ODB9                                                                                           ODB0

                                           02CE ODB15 ODB14 ODB13         --                       ODB11 ODB10

2010 Microchip Technology Inc.            -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 TABLE 4-14: PORTC REGISTER MAP

                                  File     Addr  Bit 15  Bit 14  Bit 13   Bit 12                   Bit 11  Bit 10 Bit 9(1) Bit 8(1) Bit 7(1) Bit 6(1)          Bit 5(1)  Bit 4(1)  Bit 3(1)  Bit 2(1)  Bit 1(2(1)  Bit 0(1)    All
                                 Name                                                                                                                                                                                        Resets
                                                                                                                                                               TRISC5    TRISC4    TRISC3    TRISC2    TRISC1
                                 TRISC     02D0  --      --      --       --                       --      --       TRISC9 TRISC8 TRISC7 TRISC6                  RC5       RC4       RC3       RC2       RC1       TRISC0    03FF
                                 PORTC                                                                                                                                                                               RC0     xxxx
                                 LATC      02D2  --      --      --       --                       --      --       RC9     RC8     RC7         RC6            LATC5     LATC4     LATC3     LATC2      LATC1                xxxx
                                 ODCC                                                                                                                           ODC5      ODC4      ODC3      ODC2      ODC1       LATC0     0000
                                 Legend:   02D4  --      --      --       --                       --      --       LATC9 LATC8 LATC7 LATC6                                                                         ODC0
                                 Note 1:
                                           02D6  --      --      --       --                       --      --       ODC9 ODC8 ODC7 ODC6

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal. Reset values shown are for 44-pin devices.
                                           Bits are unimplemented in 28-pin devices; read as `0'.
2010 Microchip Technology Inc.  TABLE 4-15: PAD CONFIGURATION REGISTER MAP

                                 File Name 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        All
                                                                                                                                    --         --     --        --           --            --                                            Resets

                                 PADCFG1 02FC --         --      --      --        --       --                          --                                                                           RTSECSEL1 RTSECSEL0 PMPTTL 0000

                                 Legend: -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 TABLE 4-16: ADC REGISTER MAP

                                 File Name 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       All
                                                                                                                                                                                                                                         Resets

                                 ADC1BUF0  0300                                                                                           ADC Data Buffer 0                                                                              xxxx
                                 ADC1BUF1                                                                                                                                                                                                xxxx
                                 ADC1BUF2  0302                                                                                           ADC Data Buffer 1                                                                              xxxx
                                 ADC1BUF3                                                                                                                                                                                                xxxx
                                 ADC1BUF4  0304                                                                                           ADC Data Buffer 2                                                                              xxxx
                                 ADC1BUF5                                                                                                                                                                                                xxxx
                                 ADC1BUF6  0306                                                                                           ADC Data Buffer 3                                                                              xxxx
                                 ADC1BUF7                                                                                                                                                                                                xxxx
                                 ADC1BUF8  0308                                                                                           ADC Data Buffer 4                                                                              xxxx
                                 ADC1BUF9                                                                                                                                                                                                xxxx
                                 ADC1BUFA  030A                                                                                           ADC Data Buffer 5                                                                              xxxx
                                 ADC1BUFB                                                                                                                                                                                                xxxx
                                 ADC1BUFC  030C                                                                                           ADC Data Buffer 6                                                                              xxxx
                                 ADC1BUFD                                                                                                                                                                                                xxxx
                                 ADC1BUFE  030E                                                                                           ADC Data Buffer 7                                                                              xxxx
                                 ADC1BUFF                                                                                                                                                                                                xxxx
                                 AD1CON1   0310                                                                                           ADC Data Buffer 8                                                                              0000    PIC24FJ64GB004 FAMILY
                                 AD1CON2                                                                                                                                                                                                 0000
                                 AD1CON3   0312                                                                                           ADC Data Buffer 9                                                                              0000
                                 AD1CHS                                                                                                                                                                                                  0000
                                 AD1PCFG   0314                                                                                           ADC Data Buffer 10                                                                             0000
                                 AD1CSSL                                                                                                                                                                                                 0000
                                 Legend:   0316                                                                                           ADC Data Buffer 11
                                 Note 1:
                                           0318                                                                                           ADC Data Buffer 12

                                           031A                                                                                           ADC Data Buffer 13

                                           031C                                                                                           ADC Data Buffer 14

                                           031E                                                                                           ADC Data Buffer 15

                                           0320 ADON         --  ADSIDL      --        --                           --         FORM1 FORM0 SSRC2 SSRC1                SSRC0            --            --         ASAM    SAMP    DONE
                                                                                                                                                                      SMPI3         SMPI2         SMPI1         SMPI0   BUFM     ALTS
                                           0322 VCFG2 VCFG1 VCFG0            r         --       CSCNA                          --         --         BUFS      --     ADCS5        ADCS4         ADCS3         ADCS2   ADCS1   ADCS0
                                                                                                                                                                                   CH0SA4        CH0SA3        CH0SA2  CH0SA1  CH0SA0
                                           0324 ADRC         r       r   SAMC4 SAMC3 SAMC2 SAMC1 SAMC0 ADCS7 ADCS6                                                       --        PCFG4         PCFG3         PCFG2   PCFG1   PCFG0
                                                                                                                                                                      PCFG5         CSSL4         CSSL3         CSSL2   CSSL1   CSSL0
                                           0328  CH0NB       --      --  CH0SB4     CH0SB3     CH0SB2                          CH0SB1     CH0SB0 CH0NA         --     CSSL5
                                           032C  PCFG15  PCFG14                     PCFG11     PCFG10                          PCFG9
                                           0330  CSSL15  CSSL14  PCFG13 PCFG12(1)   CSSL11     CSSL10                           CSSL9  PCFG8(1) PCFG7(1) PCFG6(1)

                                                                 CSSL13 CSSL12(1)                                                      CSSL8(1) CSSL7(1) CSSL6(1)

                                           -- = unimplemented, read as `0', r = reserved, maintain as `0'. Reset values are shown in hexadecimal.
                                           Bits are not available on 28-pin devices; read as `0'.

DS39940D-page 43                 TABLE 4-17: CTMU REGISTER MAP

                                 File Name 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       All
                                                                                                                                                                                                                                         Resets

                                 CTMUCON   033C CTMUEN -- CTMUSIDL TGEN EDGEN EDGSEQEN                              IDISSEN    CTTRIG     EDG2POL    EDG2SEL1  EDG2SEL0     EDG1POL       EDG1SEL1 EDG1SEL0 EDG2STAT           EDG1STAT  0000
                                 CTMUICON  033E ITRIM5 ITRIM4 ITRIM3 ITRIM2 ITRIM1 ITRIM0                            IRNG1     IRNG0           --         --        --           --                                                 --   0000
                                 Legend:   -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.                                                                               --            --      --
DS39940D-page 44                 TABLE 4-18: USB OTG REGISTER MAP                                                                                                                                                                   PIC24FJ64GB004 FAMILY

                                 File Name 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    All
                                                                                                                                                                                                                         Resets

                                 U1OTGIR   0480     --  --  --                              --  --  --              --     --     IDIF   T1MSECIF LSTATEIF      ACTVIF SESVDIF SESENDIF                 --        VBUSVDIF 0000

                                 U1OTGIE   0482     --  --  --                              --  --  --              --     --     IDIE   T1MSECIE LSTATEIE      ACTVIE SESVDIE SESENDIE                 --        VBUSVDIE 0000

                                 U1OTGSTAT 0484     --  --  --                              --  --  --              --     --     ID     --     LSTATE          --       SESVD SESEND                   --        VBUSVD 0000

                                 U1OTGCON 0486      --  --  --                              --  --  --              --     -- DPPULUP DMPULUP DPPULDWN DMPULDWN VBUSON OTGEN VBUSCHG VBUSDIS 0000

                                 U1PWRC    0488     --  --  --                              --  --  --              --     -- UACTPND    --     --              USLPGRD  --                    --       USUSPND USBPWR 0000

                                 U1IR      048A(1) --   --  --                              --  --  --              --     -- STALLIF    --     RESUMEIF        IDLEIF   TRNIF                 SOFIF    UERRIF       URSTIF 0000
                                                                                                                                                                         TRNIF                 SOFIF    UERRIF    DETACHIF(1) 0000
                                                    --  --  --                              --  --  --              --     --     STALLIF ATTACHIF(1) RESUMEIF  IDLEIF

                                 U1IE      048C(1) --   --  --                              --  --  --              --     -- STALLIE    --     RESUMEIE IDLEIE          TRNIE                 SOFIE    UERRIE    URSTIE 0000
                                                                                                                                                                         TRNIE                 SOFIE
                                                    --  --  --                              --  --  --              --     --     STALLIE ATTACHIE(1) RESUMEIE  IDLEIE                                  UERRIE DETACHIE(1) 0000

                                 U1EIR     048E(1)  --  --  --                              --  --  --              --     --     BTSEF  --     DMAEF           BTOEF    DFN8EF                CRC16EF  CRC5EF    PIDEF  0000
                                                                                                                                                DMAEF           BTOEF    DFN8EF                CRC16EF  EOFEF(1)  PIDEF  0000
                                                    --  --  --                              --  --  --              --     --     BTSEF  --

                                 U1EIE     0490(1)  --  --  --                              --  --  --              --     --     BTSEE  --     DMAEE           BTOEE    DFN8EE                CRC16EE  CRC5EE    PIDEE  0000
                                                                                                                                                DMAEE           BTOEE    DFN8EE                CRC16EE  EOFEE(1)  PIDEE  0000
                                                    --  --  --                              --  --  --              --     --     BTSEE  --

                                 U1STAT    0492     --  --  --                              --  --  --              --     -- ENDPT3 ENDPT2     ENDPT1          ENDPT0   DIR                   PPBI     --        --     0000

                                 U1CON     0494(1)  --  --  --                              --  --  --              --     --     --     SE0    PKTDIS          --       HOSTEN RESUME PPBRST                     USBEN 0000

                                                    --  --  --                              --  --  --              --     -- JSTATE(1)  SE0    TOKBUSY(1) USBRST HOSTEN RESUME PPBRST SOFEN(1) 0000

                                 U1ADDR    0496     --  --  --                              --  --  --              --     -- LSPDEN(1)                         USB Device Address (DEVADDR) Register                    0000

                                 U1BDTP1   0498     --  --  --                              --  --  --              --     --                   Buffer Descriptor Table Base Address Register                     --     0000

                                 U1FRML    049A     --  --  --                              --  --  --              --     --                                   Frame Count Register Low Byte                            0000

                                 U1FRMH    049C     --  --  --                              --  --  --              --     --                               Frame Count Register High Byte                               0000

                                 U1TOK(2)  049E     --  --  --                              --  --  --              --     --     PID3   PID2   PID1            PID0     EP3                   EP2      EP1       EP0    0000

                                 U1SOF(2)  04A0     --  --  --                              --  --  --              --     --                                   Start-of-Frame Count Register                            0000

                                 U1CNFG1   04A6     --  --  --                              --  --  --              --     --     UTEYE UOEMON  --              USBSIDL  --                    --       PPB1      PPB0 0000

                                 U1CNFG2   04A8     --  --  --                              --  --  --              --     --     --     --     UVCMPSEL PUVBUS EXTI2CEN UVBUSDIS UVCMPDIS UTRDIS 0000

                                 Legend:   -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 Note 1: Alternate register or bit definitions when the module is operating in Host mode.

                                          2: This register is available in Host mode only.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-18: USB OTG REGISTER MAP (CONTINUED)

                                 File Name 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    All
                                                                                                                                                                                                                                          Resets
                                 U1EP0    04AA      --  --      --                         --      --      --  --           --     LSPD(1)  RETRYDIS(1)  --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP1    04AC --       --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP2    04AE      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP3    04B0      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP4    04B2      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP5    04B4      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP6    04B6      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP7    04B8      --  --      --                         --      --      --  --           --        --          --     --                      EPCONDIS EPRXEN EPTXEN                 EPSTALL  EPHSHK   0000
                                                                                                                                      --          --                                                                    EPSTALL  EPHSHK   0000
                                 U1EP8    04BA      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN                                   0000
                                                                                                                                      --          --                                                                        --       --   0000
                                 U1EP9    04BC --       --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN                                   0000

                                 U1EP10   04BE      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN

                                 U1EP11   04C0      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN

                                 U1EP12   04C2      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN

                                 U1EP13   04C4      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN

                                 U1EP14   04C6      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN

                                 U1EP15   04C8      --  --      --                         --      --      --  --           --                           --                      EPCONDIS EPRXEN EPTXEN                                           PIC24FJ64GB004 FAMILY

                                 U1PWMRRS 04CC                USB Power Supply PWM Duty Cycle Register                                                          USB Power Supply PWM Period Register

                                 U1PWMCON 04CE PWMEN --         --                         --      --      -- PWMPOL CNTEN                               --                             --            --         --

                                 Legend:  -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
                                 Note 1:  Alternate register or bit definitions when the module is operating in Host mode.

                                         2: This register is available in Host mode only.

                                 TABLE 4-19: PARALLEL MASTER/SLAVE PORT REGISTER MAP

                                 File Name 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      All
                                                                                                                                                                                                                                          Resets

                                 PMCON 0600 PMPEN       --      PSIDL ADRMUX1 ADRMUX0 PTBEEN PTWREN PTRDEN CSF1 CSF0                                                             ALP           --         CS1P   BEP     WRSP     RDSP    0000
                                                                                                                                                                                                                        WAITE1   WAITE0   0000
                                 PMMODE 0602 BUSY       IRQM1 IRQM0                        INCM1       INCM0    MODE16 MODE1 MODE0 WAITB1 WAITB0 WAITM3 WAITM2 WAITM1 WAITM0                                            ADDR1    ADDR0    0000
                                                                                              --          --   ADDR10(1) ADDR9(1) ADDR8(1) ADDR7(1) ADDR6(1) ADDR5(1) ADDR4(1) ADDR3(1) ADDR2(1)                                          0000
                                 PMADDR 0604    --      CS1     --                                                                                                                                                      PTEN1    PTEN0    0000
                                                                                                                                                                                                                         OB1E     OB0E    0000
                                 PMDOUT1                                                                                    Parallel Port Data Out Register 1 (Buffers 0 and 1)                                                           0000
                                                                                                                                                                                                                                          0000
                                 PMDOUT2 0606                                                                               Parallel Port Data Out Register 2 (Buffers 2 and 3)                                                           0000

                                 PMDIN1 0608                                                                                Parallel Port Data In Register 1 (Buffers 0 and 1)

                                 PMDIN2 060A                                                                                Parallel Port Data In Register 2 (Buffers 2 and 3)

                                 PMAEN 060C     --      PTEN14  --                             --      --      PTEN10(1) PTEN9(1) PTEN8(1) PTEN7(1) PTEN6(1) PTEN5(1) PTEN4(1) PTEN3(1) PTEN2(1)

DS39940D-page 45                 PMSTAT 060E IBF        IBOV    --                             --      IB3F    IB2F         IB1F   IB0F     OBE          OBUF                    --            --         OB3E OB2E

                                 Legend: -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
                                 Note 1: Bits are not available on 28-pin devices; read as `0'.
DS39940D-page 46                 TABLE 4-20: REAL-TIME CLOCK AND CALENDAR REGISTER MAP                                                                                                                                         PIC24FJ64GB004 FAMILY

                                 File Name 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     All
                                                                                                                                                                              ARPT4   ARPT3    ARPT2                   Resets
                                                                                                                                                                               CAL4    CAL3     CAL2
                                 ALRMVAL   0620                                                                     Alarm Value Register Window Based on ALRMPTR<1:0>                                                  xxxx
                                 ALCFGRPT                                                                                                                                                                              0000
                                 RTCVAL    0622 ALRMEN CHIME AMASK3 AMASK2 AMASK1 AMASK0 ALRMPTR1 ALRMPTR0 ARPT7 ARPT6 ARPT5                                                                           ARPT1   ARPT0   xxxx
                                 RCFGCAL                                                                                                                                                                CAL1    CAL0   xxxx
                                 Legend:   0624                                                                     RTCC Value Register Window Based on RTCPTR<1:0>

                                           0626 RTCEN  -- RTCWREN RTCSYNC HALFSEC RTCOE RTCPTR1 RTCPTR0 CAL7                                                CAL6       CAL5

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 TABLE 4-21: CRC REGISTER MAP

                                 File Name 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    All
                                                                                                                                                                                                                       Resets
                                 CRCCON1   0640 CRCEN  --   CSIDL VWORD4 VWORD3 VWORD2                              VWORD1 VWORD0 CRCFUL CRCMPT               CRCISEL         CRCGO   LENDIAN     --      --      --
                                 CRCCON2                                                                                                                          --          PLEN4    PLEN3   PLEN2   PLEN1   PLEN0    0000
                                 CRCXORL   0642  --    --   -- DWIDTH4 DWIDTH3 DWIDTH2                              DWIDTH1 DWIDTH0 --                  --        X5                      X3                            0000
                                 CRCXORH                                                                                                                         X21             X4      X19     X2      X1       --    0000
                                 CRCDATL   0644  X15   X14  X13       X12     X11  X10                              X9     X8         X7               X6                       X20              X19     X17     X16    0000
                                 CRCDATH                                                                                                                                                                                xxxx
                                 CRCWDATL  0646  X31   X30  X29       X28     X27  X26                              X25    X24        X23           X22                                                                 xxxx
                                 CRCWDATH                                                                                                                                                                               xxxx
                                 Legend:   0648                                                                     CRC Data Input Register Low Word                                                                    xxxx

                                           064A                                                                     CRC Data Input Register High Word

                                           064C                                                                          CRC Result Register Low Word

                                           064E                                                                          CRC Result Register High Word

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 TABLE 4-22: COMPARATORS REGISTER MAP

                                 File Name 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     All
                                                                                                                                                                                                                       Resets
                                                                                                                                                                                 --     --     C3OUT   C2OUT
                                  CMSTAT   0650 CMIDL  --   --        --      --   C3EVT C2EVT C1EVT                                  --                --           --       CVRSS   CVR3      CVR2    CVR1   C1OUT   0000
                                  CVRCON                                                                                                                           CVRR        CREF                     CCH1    CVR0   0000
                                  CM1CON   0652  --    --   --        --      -- CVREFP CVREFM1 CVREFM0 CVREN CVROE                                                            CREF     --        --    CCH1   CCH0    0000
                                  CM2CON                                                                                                                             --        CREF     --        --    CCH1   CCH0    0000
                                  CM3CON   0654  CEN   COE  CPOL      --      --   --                               CEVT   COUT EVPOL1 EVPOL0                        --                 --        --           CCH0    0000
                                 Legend:                                                                                                                             --
2010 Microchip Technology Inc.            065C CEN    COE  CPOL      --      --   --                               CEVT   COUT EVPOL1 EVPOL0

                                           0664  CEN   COE  CPOL      --      --   --                               CEVT   COUT EVPOL1 EVPOL0

                                           -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
2010 Microchip Technology Inc.  TABLE 4-23: PERIPHERAL PIN SELECT REGISTER MAP

                                 File Name 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    All
                                                                                                                                                                                                       Resets
                                 RPINR0   0680   --  --  --           INT1R4 INT1R3 INT1R2 INT1R1 INT1R0                             --      --     --        --       --       --       --       --
                                                                                                                                             --     --    INT2R4   INT2R3   INT2R2   INT2R1   INT2R0    1F00
                                 RPINR1   0682   --  --  --           --                              --           --  --     --     --      --     --    T2CKR4   T2CKR3   T2CKR2   T2CKR1   T2CKR0    001F
                                                                                                                                             --     --    T4CKR4   T4CKR3   T4CKR2   T4CKR1   T4CKR0    1F1F
                                 RPINR3   0686   --  --  --           T3CKR4 T3CKR3 T3CKR2 T3CKR1 T3CKR0                             --      --     --     IC1R4    IC1R3    IC1R2    IC1R1    IC1R0    1F1F
                                                                                                                                             --     --     IC3R4    IC3R3    IC3R2    IC3R1    IC3R0    1F1F
                                 RPINR4   0688   --  --  --           T5CKR4 T5CKR3 T5CKR2 T5CKR1 T5CKR0                             --      --     --     IC5R4    IC5R3    IC5R2    IC5R1    IC5R0    1F1F
                                                                                                                                             --     --    OCFAR4   OCFAR3   OCFAR2   OCFAR1   OCFAR0    001F
                                 RPINR7   068E   --  --  --           IC2R4   IC2R3                       IC2R2        IC2R1  IC2R0  --      --     --    U1RXR4   U1RXR3   U1RXR2   U1RXR1   U1RXR0    1F1F
                                                                                                                                             --     --    U2RXR4   U2RXR3   U2RXR2   U2RXR1   U2RXR0    1F1F
                                 RPINR8   0690   --  --  --           IC4R4   IC4R3                       IC4R2        IC4R1  IC4R0  --      --     --    SDI1R4   SDI1R3   SDI1R2   SDI1R1   SDI1R0    1F1F
                                                                                                                                             --     --     SS1R4    SS1R3    SS1R2    SS1R1    SS1R0    1F1F
                                 RPINR9   0692   --  --  --           --                              --           --  --     --     --      --     --    SDI2R4   SDI2R3   SDI2R2   SDI2R1   SDI2R0    001F
                                                                                                                                             --     --     SS2R4    SS2R3    SS2R2    SS2R1    SS2R0    1F1F
                                 RPINR11 0696    --  --  --           OCFBR4 OCFBR3 OCFBR2 OCFBR1 OCFBR0                             --      --     --     RP0R4    RP0R3    RP0R2    RP0R1    RP0R0    001F
                                                                                                                                             --     --     RP2R4    RP2R3    RP2R2    RP2R1    RP2R0    0000
                                 RPINR18 06A4    --  --  --           U1CTSR4 U1CTSR3 U1CTSR2 U1CTSR1 U1CTSR0                        --      --     --     RP4R4    RP4R3    RP4R2    RP4R1    RP4R0    0000
                                                                                                                                             --     --     RP6R4    RP6R3    RP6R2    RP6R1    RP6R0    0000
                                 RPINR19 06A6    --  --  --           U2CTSR4 U2CTSR3 U2CTSR2 U2CTSR1 U2CTSR0                        --      --     --     RP8R4    RP8R3    RP8R2    RP8R1    RP8R0    0000
                                                                                                                                             --     --    RP10R4   RP10R3   RP10R2   RP10R1   RP10R0    0000
                                 RPINR20 06A8    --  --  --           SCK1R4 SCK1R3 SCK1R2 SCK1R1 SCK1R0                             --      --     --                                                  0000
                                                                                                                                             --     --        --       --       --       --       --    0000
                                 RPINR21 06AA    --  --  --           --                              --           --  --     --     --      --     --    RP14R4   RP14R3   RP14R2   RP14R1   RP14R0    0000
                                                                                                                                             --     --    RP16R4   RP16R3   RP16R2   RP16R1   RP16R0    0000
                                 RPINR22 06AC    --  --  --           SCK2R4 SCK2R3 SCK2R2 SCK2R1 SCK2R0                             --      --     --    RP18R4   RP18R3   RP18R2   RP18R1   RP18R0    0000
                                                                                                                                             --     --    RP20R4   RP20R3   RP20R2   RP20R1   RP20R0    0000
                                 RPINR23 06AE    --  --  --           --                              --           --  --     --     --      --     --    RP22R4   RP22R3   RP22R2   RP22R1   RP22R0    0000
                                                                                                                                                          RP24R4   RP24R3   RP24R2   RP24R1   RP24R0    0000
                                 RPOR0    06C0   --  --  --           RP1R4 RP1R3 RP1R2 RP1R1 RP1R0                                  --

                                 RPOR1    06C2   --  --  --           RP3R4 RP3R3 RP3R2 RP3R1 RP3R0                                  --                                                                        PIC24FJ64GB004 FAMILY

                                 RPOR2    06C4   --  --  --           RP5R4 RP5R3 RP5R2 RP5R1 RP5R0                                  --

                                 RPOR3    06C6   --  --  --           RP7R4 RP7R3 RP7R2 RP7R1 RP7R0                                  --

                                 RPOR4    06C8   --  --  --           RP9R4 RP9R3 RP9R2 RP9R1 RP9R0                                  --

                                 RPOR5    06CA   --  --  --           RP11R4 RP11R3 RP11R2 RP11R1 RP11R0                             --

                                 RPOR6    06CC   --  --  --           RP13R4 RP13R3 RP13R2 RP13R1 RP13R0                             --

                                 RPOR7    06CE   --  --  --           RP15R4 RP15R3 RP15R2 RP15R1 RP15R0                             --

                                 RPOR8(1) 06D0   --  --  --           RP17R4 RP17R3 RP17R2 RP17R1 RP17R0                             --

                                 RPOR9(1) 06D2   --  --  --           RP19R4 RP19R3 RP19R2 RP19R1 RP19R0                             --

                                 RPOR10(1) 06D4  --  --  --           RP21R4 RP21R3 RP21R2 RP21R1 RP21R0                             --

                                 RPOR11(1) 06D6  --  --  --           RP23R4 RP23R3 RP23R2 RP23R1 RP23R0                             --

                                 RPOR12(1) 06D8  --  --  --           RP25R4 RP25R3 RP25R2 RP25R1 RP25R0                             --

                                 Legend:  -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                 Note 1: Registers are unimplemented in 28-pin devices; read as `0'.

DS39940D-page 47
DS39940D-page 48                 TABLE 4-24: SYSTEM REGISTER MAP                                                                                                                                                                             PIC24FJ64GB004 FAMILY

                                 File Name    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        All
                                                                                                                                                                                                                                  Resets
                                 RCON         0740 TRAPR IOPUWR --   --     --  DPSLP                                  CM     PMSLP EXTR    SWR SWDTEN WDTO SLEEP IDLE                                          BOR     POR
                                 OSCCON                                                                                                                                                                                           Note 1
                                 CLKDIV       0742  --   COSC2 COSC1 COSC0  --  NOSC2 NOSC1 NOSC0 CLKLOCK IOLOCK LOCK                                                       --                    CF POSCEN SOSCEN OSWEN          Note 2
                                 OSCTUN                                                                                                                                                                                            0100
                                 REFOCON      0744  ROI DOZE2 DOZE1 DOZE0 DOZEN RCDIV2 RCDIV1 RCDIV0 CPDIV1 CPDIV0 PLLEN                                                    --                    --     --     --      --         0000
                                 Legend:                                                                                                                                                                                           0000
                                 Note 1:      0748  --   --  --      --     --  --                                     --     --     --     --                TUN5 TUN4 TUN3 TUN2 TUN1 TUN0

                                          2:  074E ROEN  -- ROSSLP ROSEL RODIV3 RODIV2 RODIV1 RODIV0                                 --     --                --            --                    --     --     --      --

                                              -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
                                              The Reset value of the RCON register is dependent on the type of Reset event. See Section 6.0 "Resets" for more information.

                                              The Reset value of the OSCCON register is dependent on both the type of Reset event and the device configuration. See Section 8.0 "Oscillator Configuration" for more information.

                                 TABLE 4-25: DEEP SLEEP REGISTER MAP

                                 File Name 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         All
                                                                                                                                                                                                                                  Resets(1)
                                                                                                                                                               --
                                 DSCON        758 DSEN   --  --      --     --  --                                     --     --     --     --                 --           --     --                    --     DSBOR RELEASE 0000
                                 DSWAKE
                                 DSGPR0       075A  --   --  --      --     --  --                                     --     DSINT0 DSFLT  --                              DSWDT DSRTC DSMCLR --                       DSPOR 0001
                                 DSGPR1
                                 Legend:      075C                                                                     Deep Sleep General Purpose Register 0                                                                      0000
                                 Note 1:
                                              075E                                                                     Deep Sleep General Purpose Register 1                                                                      0000

                                              -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.
                                              The Deep Sleep registers are only reset on a VDD POR event.

                                 TABLE 4-26: NVM REGISTER MAP

                                 File Name    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       All
                                                                                                                                                                                                                                  Resets
                                 NVMCON
                                 NVMKEY       0760  WR   WREN WRERR  --     --  --                                     --     --     --     ERASE             --            -- NVMOP3 NVMOP2                    NVMOP1  NVMOP0    0000(1)
                                 Legend:                                                                                                                                                                                          0000
                                 Note 1:      0766  --   --  --      --     --  --                                     --     --                                            NVMKEY Register<7:0>

                                              -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

                                              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.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  TABLE 4-27: PMD REGISTER MAP

                                 File Name 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      All
                                                                                                                                                                                                   Resets

                                 PMD1     0770 T5MD T4MD T3MD T2MD T1MD  --                                             --      --  I2C1MD    U2MD   U1MD   SPI2MD  SPI1MD  --         --  ADC1MD  0000
                                 PMD2                                                                               IC2MD   IC1MD       --       --    --   OC5MD                  OC2MD   OC1MD   0000
                                 PMD3     0772  --  --  --     IC5MD IC4MD IC3MD                                   RTCCMD   PMPMD                --    --           OC4MD OC3MD    I2C2MD          0000
                                 PMD4                                                                                               CRCMD              --       --                 LVDMD       --  0000
                                 Legend:  0774  --  --  --     --  --    CMPMD                                          --      --      --  UPWMMD              --  --      --             USB1MD

                                          0776  --  --  --     --  --    --                                                                                         REFOMD CTMUMD

                                          -- = unimplemented, read as `0'. Reset values are shown in hexadecimal.

DS39940D-page 49                                                                                                                                                                                           PIC24FJ64GB004 FAMILY
PIC24FJ64GB004 FAMILY

4.2.5 SOFTWARE STACK                                           4.3 Interfacing Program and Data
                                                                        Memory Spaces
In addition to its use as a working register, the W15
register in PIC24F devices is also used as a Software          The PIC24F architecture uses a 24-bit wide program
Stack Pointer. The pointer always points to the first          space and a 16-bit wide data space. The architecture is
available free word and grows from lower to higher             also a modified Harvard scheme, meaning that data
addresses. It predecrements for stack pops and                 can also be present in the program space. To use this
post-increments for stack pushes, as shown in                  data successfully, it must be accessed in a way that
Figure 4-4. Note that for a PC push during any CALL            preserves the alignment of information in both spaces.
instruction, the MSB of the PC is zero-extended before
the push, ensuring that the MSB is always clear.               Aside from normal execution, the PIC24F architecture
                                                               provides two methods by which program space can be
Note:                A PC push during exception processing     accessed during operation:
                     will concatenate the SRL register to the
                     MSB of the PC prior to the push.          Using table instructions to access individual bytes
                                                                  or words anywhere in the program space
The Stack Pointer Limit Value (SPLIM) register, associ-
ated with the Stack Pointer, sets an upper address             Remapping a portion of the program space into
boundary for the stack. SPLIM is uninitialized at Reset.          the data space (program space visibility)
As is the case for the Stack Pointer, SPLIM<0> is
forced to `0' because all stack operations must be             Table instructions allow an application to read or write
word-aligned. Whenever an EA is generated, using               to small areas of the program memory. This makes the
W15 as a source or destination pointer, the resulting          method ideal for accessing data tables that need to be
address is compared with the value in SPLIM. If the            updated from time to time. It also allows access to all
contents of the Stack Pointer (W15) and the SPLIM reg-         bytes of the program word. The remapping method
ister are equal, and a push operation is performed, a          allows an application to access a large block of data on
stack error trap will not occur. The stack error trap will     a read-only basis, which is ideal for look-ups from a
occur on a subsequent push operation. Thus, for                large table of static data; it can only access the least
example, if it is desirable to cause a stack error trap        significant word of the program word.
when the stack grows beyond address, 2000h in RAM,
initialize the SPLIM with the value, 1FFEh.                    4.3.1 ADDRESSING PROGRAM SPACE

Similarly, a Stack Pointer underflow (stack error) trap is     Since the address ranges for the data and program
generated when the Stack Pointer address is found to           spaces are 16 and 24 bits, respectively, a method is
be less than 0800h. This prevents the stack from               needed to create a 23-bit or 24-bit program address
interfering with the Special Function Register (SFR)           from 16-bit data registers. The solution depends on the
space.                                                         interface method to be used.

A write to the SPLIM register should not be immediately        For table operations, the 8-bit Table Memory Page
followed by an indirect read operation using W15.              Address (TBLPAG) register is used to define a 32K word
                                                               region within the program space. This is concatenated
FIGURE 4-4:          CALL STACK FRAME                          with a 16-bit EA to arrive at a full 24-bit program space
                                                               address. In this format, the Most Significant bit of
   0000h 15                      0                             TBLPAG is used to determine if the operation occurs in
                                                               the user memory (TBLPAG<7> = 0) or the configuration
Stack Grows Towards            PC<15:0>   W15 (before CALL)    memory (TBLPAG<7> = 1).
   Higher Address    000000000 PC<22:16>
                                          W15 (after CALL)     For remapping operations, the 8-bit Program Space
                                                    Visibility Page Address (PSVPAG) register is used to
                                          POP : [--W15]        define a 16K word page in the program space. When
                                          PUSH : [W15++]       the Most Significant bit of the EA is `1', PSVPAG is con-
                                                               catenated with the lower 15 bits of the EA to form a
                                                               23-bit program space address. Unlike table operations,
                                                               this limits remapping operations strictly to the user
                                                               memory area.

                                                               Table 4-28 and Figure 4-5 show how the program EA is
                                                               created for table operations and remapping accesses
                                                               from the data EA. Here, P<23:0> refers to a program
                                                               space word, whereas D<15:0> refers to a data space
                                                               word.

DS39940D-page 50                                                2010 Microchip Technology Inc.
                                                PIC24FJ64GB004 FAMILY

TABLE 4-28: PROGRAM SPACE ADDRESS CONSTRUCTION

Access Type                      Access                                       Program Space Address
                                 Space
                                                     <23>  <22:16>                     <15>      <14:1>         <0>

Instruction Access                    User           0                                 PC<22:1>                 0
(Code Execution)                      User
                                 Configuration             0xx xxxx xxxx xxxx xxxx xxx0
TBLRD/TBLWT
(Byte/Word Read/Write)                                  TBLPAG<7:0>                              Data EA<15:0>

                                                         0xxx xxxx                     xxxx xxxx xxxx xxxx
                                                        TBLPAG<7:0>                          Data EA<15:0>

                                                           1xxx xxxx                   xxxx xxxx xxxx xxxx
                                                                                                   Data EA<14:0>(1)
Program Space Visibility         User                0     PSVPAG<7:0>
(Block Remap/Read)                                                                            xxx xxxx xxxx xxxx
                                                     0     xxxx xxxx

Note 1: Data EA<15> is always `1' in this case, but is not used in calculating the program space address. Bit 15 of
              the address is PSVPAG<0>.

FIGURE 4-5:  DATA ACCESS FROM PROGRAM SPACE ADDRESS GENERATION

Program Counter(1)               0                         Program Counter                           0

                                                                              23 Bits

                                                                                       EA            1/0

Table Operations(2)              1/0            TBLPAG

                                                8 Bits                                 16 Bits

                                                           24 Bits

                                                           Select                      EA            0
                                                                           1
Program Space Visibility(1)      0
(Remapping)                                          PSVPAG
                                                        8 Bits
                                                                                       15 Bits

                                                                              23 Bits

                                 User/Configuration                                              Byte Select
                                    Space Select

Note 1: The LSb of program space addresses is always fixed as `0' in order 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.

2010 Microchip Technology Inc.                                                                      DS39940D-page 51
PIC24FJ64GB004 FAMILY

4.3.2  DATA ACCESS FROM PROGRAM                         2. TBLRDH (Table Read High): In Word mode, it
       MEMORY USING TABLE                                     maps the entire upper word of a program address
       INSTRUCTIONS                                           (P<23:16>) to a data address. Note that
                                                              D<15:8>, the `phantom' byte, will always be `0'.
The TBLRDL and TBLWTL instructions offer a direct
method of reading or writing the lower word of any            In Byte mode, it maps the upper or lower byte of
address within the program space without going through        the program word to D<7:0> of the data
data space. The TBLRDH and TBLWTH instructions are            address, as above. Note that the data will
the only method to read or write the upper 8 bits of a        always be `0' when the upper `phantom' byte is
program space word as data.                                   selected (byte select = 1).

The PC is incremented by two for each successive        In a similar fashion, two table instructions, TBLWTH
24-bit program word. This allows program memory         and TBLWTL, are used to write individual bytes or
addresses to directly map to data space addresses.      words to a program space address. The details of
Program memory can thus be regarded as two, 16-bit      their operation are explained in Section 5.0 "Flash
word-wide address spaces, residing side by side, each   Program Memory".
with the same address range. TBLRDL and TBLWTL
access the space which contains the least significant   For all table operations, the area of program memory
data word, and TBLRDH and TBLWTH access the space       space to be accessed is determined by the Table
which contains the upper data byte.                     Memory Page Address register (TBLPAG). TBLPAG
                                                        covers the entire program memory space of the
Two table instructions are provided to move byte or     device, including user and configuration spaces. When
word-sized (16-bit) data to and from program space.     TBLPAG<7> = 0, the table page is located in the user
Both function as either byte or word operations.        memory space. When TBLPAG<7> = 1, the page is
                                                        located in configuration space.
1. TBLRDL (Table Read Low): In Word mode, it
      maps the lower word of the program space          Note:  Only table read operations will execute in
      location (P<15:0>) to a data address (D<15:0>).          the configuration memory space, and only
                                                               then, in implemented areas, such as the
      In Byte mode, either the upper or lower byte of          Device ID. Table write operations are not
      the lower program word is mapped to the lower            allowed.
      byte of a data address. The upper byte is
      selected when the byte select is `1'; the lower
      byte is selected when it is `0'.

FIGURE 4-6:       ACCESSING PROGRAM MEMORY WITH TABLE INSTRUCTIONS

        TBLPAG            Program Space
            02
                                                                                  Data EA<15:0>

                  23  15  0 000000h                               23          16  8              0

                             020000h                    00000000
                             030000h
                                                        00000000

                                                        00000000

                                                        00000000

                                                        `Phantom' Byte

                                                        TBLRDH.B (Wn<0> = 0)
                                                        TBLRDL.B (Wn<0> = 1)
                                                        TBLRDL.B (Wn<0> = 0)

                                                        TBLRDL.W

                          800000h                       The address for the table operation is determined by the data EA
                                                        within the page defined by the TBLPAG register.
                                                        Only read operations are shown; write operations are also valid in
                                                        the user memory area.

DS39940D-page 52                                                               2010 Microchip Technology Inc.
                                           PIC24FJ64GB004 FAMILY

4.3.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 locations 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 provides transparent access of stored constant
data from the data space without the need to use               Note: PSV access is temporarily disabled during
special instructions (i.e., TBLRDL/H).                                     table reads/writes.

Program space access through the data space occurs if       For operations that use PSV and are executed outside
the Most Significant bit (MSb) of the data space EA is `1'  a REPEAT loop, the MOV and MOV.D instructions will
and program space visibility is enabled by setting the      require one instruction cycle in addition to the specified
PSV bit in the CPU Control register (CORCON<2>). The        execution time. All other instructions will 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 Space      time.
Visibility Page Address register (PSVPAG). This 8-bit
register defines any one of 256 possible pages of           For operations that use PSV which are executed inside
16K words in program space. In effect, PSVPAG func-         a REPEAT loop, there will be some instances that
tions as the upper 8 bits of the program memory             require two instruction cycles in addition to the
address, with the 15 bits of the EA functioning as the      specified execution time of the instruction:
lower bits. Note that by incrementing the PC by 2 for
each program memory word, the lower 15 bits of data          Execution in the first iteration
space addresses directly map to the lower 15 bits in the
corresponding program space addresses.                      Execution in the last iteration

Data reads to this area add an additional cycle to the       Execution prior to exiting the loop due to an
instruction being executed, since two program memory           interrupt
fetches are required.
                                                             Execution upon re-entering the loop after an
Although each data space address, 8000h and higher,            interrupt is serviced
maps directly into a corresponding program memory
address (see Figure 4-7), only the lower 16 bits of the     Any other iteration of the REPEAT loop will allow the
                                                            instruction accessing data, using PSV, to execute in a
                                                            single cycle.

FIGURE 4-7:             PROGRAM SPACE VISIBILITY OPERATION

When CORCON<2> = 1 and EA<15> = 1:

                            Program Space                   Data Space

      PSVPAG            23       15        0 000000h                             0000h
          02
                                                                                        Data EA<14:0>
The data in the page
designated by                              010000h
PSVPAG is mapped                           018000h
into the upper half of
the data memory                                                       8000h
space....

                                                            PSV Area

                                                                      FFFFh             ...while the lower
                                                                                        15 bits of the EA
                                           800000h                                      specify an exact
                                                                                        address within the
                                                                                        PSV area. This
                                                                                        corresponds exactly to
                                                                                        the same lower 15 bits
                                                                                        of the actual program
                                                                                        space address.

2010 Microchip Technology Inc.                                                         DS39940D-page 53
PIC24FJ64GB004 FAMILY

NOTES:

DS39940D-page 54        2010 Microchip Technology Inc.
                                      PIC24FJ64GB004 FAMILY

5.0 FLASH PROGRAM MEMORY                                   RTSP is accomplished using TBLRD (table read) and
                                                           TBLWT (table write) instructions. With RTSP, the user
Note:  This data sheet summarizes the features             may write program memory data in blocks of 64 instruc-
       of this group of PIC24F devices. It is not          tions (192 bytes) at a time and erase program memory
       intended to be a comprehensive reference            in blocks of 512 instructions (1536 bytes) at a time.
       source. For more information, refer to the
       "PIC24F Family Reference Manual",                   5.1 Table Instructions and Flash
       Section 4. "Program Memory"                                  Programming
       (DS39715).
                                                           Regardless of the method used, all programming of
The PIC24FJ64GB004 family of devices contains              Flash memory is done with the table read and table
internal Flash program memory for storing and executing    write instructions. These allow direct read and write
application code. The memory is readable, writable and     access to the program memory space from the data
erasable when operating with VDD over 2.35V. (If the       memory while the device is in normal operating mode.
regulator is disabled, VDDCORE must be over 2.25V.)        The 24-bit target address in the program memory is
                                                           formed using the TBLPAG<7:0> bits and the Effective
It can be programmed in four ways:                         Address (EA) from a W register specified in the table
                                                           instruction, as shown in Figure 5-1.
In-Circuit Serial ProgrammingTM (ICSPTM)
                                                           The TBLRDL and the TBLWTL instructions are used to
Run-Time Self-Programming (RTSP)                         read or write to bits<15:0> of program memory.
                                                           TBLRDL and TBLWTL can access program memory in
Enhanced In-Circuit Serial Programming                   both Word and Byte modes.
   (Enhanced ICSP)
                                                           The TBLRDH and TBLWTH instructions are used to read
ICSP allows a PIC24FJ64GB004 family device to be           or write to bits<23:16> of program memory. TBLRDH
serially programmed while in the end application circuit.  and TBLWTH can also access program memory in Word
This is simply done with two lines for the programming     or Byte mode.
clock and programming data (which are named PGECx
and PGEDx, respectively), and three other lines for
power (VDD), ground (VSS) and Master Clear (MCLR).
This allows customers to manufacture boards with
unprogrammed devices and then program the micro-
controller just before shipping the product. This also
allows the most recent firmware or a custom firmware
to be programmed.

FIGURE 5-1:  ADDRESSING FOR TABLE REGISTERS

                                                           24 Bits

             Using

             Program 0                                     Program Counter          0

             Counter

             Using               1/0  TBLPAG Reg                    Working Reg EA
             Table                      8 Bits                             16 Bits

             Instruction

       User/Configuration                                  24-Bit EA                   Byte
       Space Select                                                                    Select

2010 Microchip Technology Inc.                                                        DS39940D-page 55
PIC24FJ64GB004 FAMILY

5.2 RTSP Operation                                         5.3 JTAG Operation

The PIC24F Flash program memory array is organized         The PIC24F family supports JTAG boundary scan.
into rows of 64 instructions or 192 bytes. RTSP allows     Boundary scan can improve the manufacturing
the user to erase blocks of eight rows (512 instructions)  process by verifying pin to PCB connectivity.
at a time and to program one row at a time. It is also
possible to program single words.                          5.4 Enhanced In-Circuit Serial
                                                                    Programming
The 8-row erase blocks and single row write blocks are
edge-aligned, from the beginning of program memory, on     Enhanced In-Circuit Serial Programming uses an
boundaries of 1536 bytes and 192 bytes, respectively.      on-board bootloader, known as the program executive,
                                                           to manage the programming process. Using an SPI
When data is written to program memory using TBLWT         data frame format, the program executive can erase,
instructions, the data is not written directly to memory.  program and verify program memory. For more
Instead, data written using table writes is stored in      information on Enhanced ICSP, see the device
holding latches until the programming sequence is          programming specification.
executed.
                                                           5.5 Control Registers
Any number of TBLWT instructions can be executed
and a write will be successfully performed. However,       There are two SFRs used to read and write the
64 TBLWT instructions are required to write the full row   program Flash memory: NVMCON and NVMKEY.
of memory.
                                                           The NVMCON register (Register 5-1) controls which
To ensure that no data is corrupted during a write, any    blocks are to be erased, which memory type is to be
unused addresses should be programmed with                 programmed and when the programming cycle starts.
FFFFFFh. This is because the holding latches reset to
an unknown state, so if the addresses are left in the      NVMKEY is a write-only register that is used for write
Reset state, they may overwrite the locations on rows      protection. To start a programming or erase sequence,
which were not rewritten.                                  the user must consecutively write 55h and AAh to the
                                                           NVMKEY register. Refer to Section 5.6 "Programming
The basic sequence for RTSP programming is to set up       Operations" for further details.
a Table Pointer, then do a series of TBLWT instructions
to load the buffers. Programming is performed by           5.6 Programming Operations
setting the control bits in the NVMCON register.
                                                           A complete programming sequence is necessary for
Data can be loaded in any order and the holding regis-     programming or erasing the internal Flash in RTSP
ters can be written to multiple times before performing    mode. During a programming or erase operation, the
a write operation. Subsequent writes, however, will        processor stalls (waits) until the operation is finished.
wipe out any previous writes.                              Setting the WR bit (NVMCON<15>) starts the
                                                           operation and the WR bit is automatically cleared when
   Note: Writing to a location multiple times without      the operation is finished.
               erasing is not recommended.

All of the table write operations are single-word writes
(2 instruction cycles) because only the buffers are writ-
ten. A programming cycle is required for programming
each row.

DS39940D-page 56                                            2010 Microchip Technology Inc.
                                            PIC24FJ64GB004 FAMILY

REGISTER 5-1: NVMCON: FLASH MEMORY CONTROL REGISTER

R/SO-0, HC(1) R/W-0(1) R/W-0, HS(1)     U-0   U-0                   U-0                    U-0       U-0

WR          WREN                 WRERR  --    --                    --                     --        --

bit 15                                                                                                    bit 8

       U-0  R/W-0(1)             U-0    U-0   R/W-0(1)              R/W-0(1)               R/W-0(1)  R/W-0(1)
        --
bit 7       ERASE                --     --    NVMOP3(2) NVMOP2(2) NVMOP1(2) NVMOP0(2)

                                                                                                          bit 0

Legend:               SO = Settable Only bit  HC = Hardware Clearable bit HS = Hardware Settable bit
R = Readable bit      W = Writable bit
-n = Value at POR     `1' = Bit is set        U = Unimplemented bit, read as `0'

                                              `0' = Bit is cleared            x = Bit is unknown

bit 15      WR: Write Control bit(1)

bit 14      1 = Initiate a Flash memory program or erase operation. The operation is self-timed and the bit is
bit 13            cleared by hardware once the operation is complete.

bit 12-7    0 = Program or erase operation is complete and inactive
bit 6       WREN: Write Enable bit(1)
bit 5-4
bit 3-0     1 = Enable Flash program/erase operations
            0 = Inhibit Flash program/erase operations
            WRERR: Write Sequence Error Flag bit(1)

            1 = An improper program or erase sequence attempt, or termination has occurred (bit is set
                  automatically on any set attempt of the WR bit)

            0 = The program or erase operation completed normally

            Unimplemented: Read as `0'
            ERASE: Erase/Program Enable bit(1)

            1 = Perform the erase operation specified by NVMOP<3:0> on the next WR command
            0 = Perform the program operation specified by NVMOP<3:0> on the next WR command

            Unimplemented: Read as `0'
            NVMOP<3:0>: NVM Operation Select bits(1,2)
            1111 = Memory bulk erase operation (ERASE = 1) or no operation (ERASE = 0)(3)
            0011 = Memory word program operation (ERASE = 0) or no operation (ERASE = 1)
            0010 = Memory page erase operation (ERASE = 1) or no operation (ERASE = 0)
            0001 = Memory row program operation (ERASE = 0) or no operation (ERASE = 1)

Note 1:     These bits can only be reset on POR.
        2:  All other combinations of NVMOP<3:0> are unimplemented.
        3:  Available in ICSPTM mode only. Refer to the device programming specification.

2010 Microchip Technology Inc.                                                                      DS39940D-page 57
PIC24FJ64GB004 FAMILY

5.6.1  PROGRAMMING ALGORITHM FOR                           4. Write the first 64 instructions from data RAM into
       FLASH PROGRAM MEMORY                                      the program memory buffers (see Example 5-1).

The user can program one row of Flash program memory       5. Write the program block to Flash memory:
at a time. To do this, it is necessary to erase the 8-row
erase block containing the desired row. The general              a) Set the NVMOP bits to `0001' to configure
process is as follows:                                                 for row programming. Clear the ERASE bit
                                                                       and set the WREN bit.
1. Read eight rows of program memory
      (512 instructions) and store in data RAM.                  b) Write 55h to NVMKEY.

2. Update the program data in RAM with the                       c) Write AAh to NVMKEY.
      desired new data.
                                                                 d) Set the WR bit. The programming cycle
3. Erase the block (see Example 5-1):                                  begins and the CPU stalls for the duration
                                                                       of the write cycle. When the write to Flash
      a) Set the NVMOP bits (NVMCON<3:0>) to                           memory is done, the WR bit is cleared
            `0010' to configure for block erase. Set the               automatically.
            ERASE (NVMCON<6>) and WREN
            (NVMCON<14>) bits.                             6. Repeat steps 4 and 5, using the next available
                                                                 64 instructions from the block in data RAM by
      b) Write the starting address of the block to be           incrementing the value in TBLPAG, until all
            erased into the TBLPAG and W registers.              512 instructions are written back to Flash
                                                                 memory.
      c) Write 55h to NVMKEY.
                                                           For protection against accidental operations, the write
      d) Write AAh to NVMKEY.                              initiate sequence for NVMKEY must be used to allow
                                                           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 dura-  must wait for the programming time until programming
            tion of the erase cycle. When the erase is     is complete. The two instructions following the start of
            done, the WR bit is cleared automatically.     the programming sequence should be NOPs, as shown
                                                           in Example 5-5.

EXAMPLE 5-1: ERASING A PROGRAM MEMORY BLOCK ASSEMBLY LANGUAGE CODE

; Set up NVMCON for block erase operation

       MOV        #0x4042, W0                              ;
                                                           ; Initialize NVMCON
       MOV        W0, NVMCON
                                                           ;
; Init pointer to row to be ERASED                         ; Initialize PM Page Boundary SFR
                                                           ; Initialize in-page EA[15:0] pointer
       MOV        #tblpage(PROG_ADDR), W0                  ; Set base address of erase block
                                                           ; Block all interrupts with priority <7
       MOV        W0, TBLPAG                               ; for next 5 instructions

       MOV        #tbloffset(PROG_ADDR), W0                ; Write the 55 key
                                                           ;
       TBLWTL W0, [W0]                                     ; Write the AA key
                                                           ; Start the erase sequence
       DISI #5                                             ; Insert two NOPs after the erase
                                                           ; command is asserted
       MOV        #0x55, W0
       MOV        W0, NVMKEY
       MOV        #0xAA, W1
       MOV        W1, NVMKEY
       BSET       NVMCON, #WR
       NOP
       NOP

DS39940D-page 58                                            2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

EXAMPLE 5-2: ERASING A PROGRAM MEMORY BLOCK `C' LANGUAGE CODE

// C example using MPLAB C30                   // Address of row to write

      unsigned long progAddr = 0xXXXXXX;
      unsigned int offset;

//Set up pointer to the first memory location to be written

TBLPAG = progAddr>>16;                         // Initialize PM Page Boundary SFR

offset = progAddr & 0xFFFF;                    // Initialize lower word of address

__builtin_tblwtl(offset, 0x0000);              // Set base address of erase block
                                               // with dummy latch write

NVMCON = 0x4042;                               // Initialize NVMCON

asm("DISI #5");                                // Block all interrupts with priority <7
__builtin_write_NVM();                         // for next 5 instructions
                                               // C30 function to perform unlock
                                               // sequence and set WR

EXAMPLE 5-3: LOADING THE WRITE BUFFERS ASSEMBLY LANGUAGE CODE

; Set up NVMCON for row programming operations

MOV  #0x4001, W0                               ;

MOV  W0, NVMCON                                ; Initialize NVMCON

; Set up a pointer to the first program memory location to be written

; program memory selected, and writes enabled

MOV  #0x0000, W0                               ;

MOV  W0, TBLPAG                                ; Initialize PM Page Boundary SFR

MOV  #0x6000, W0                               ; An example program memory address

; Perform the TBLWT instructions to write the latches

; 0th_program_word

MOV  #LOW_WORD_0, W2                           ;

MOV  #HIGH_BYTE_0, W3                          ;

TBLWTL W2, [W0]                                ; Write PM low word into program latch

TBLWTH W3, [W0++]                              ; Write PM high byte into program latch

; 1st_program_word

MOV  #LOW_WORD_1, W2                           ;

MOV  #HIGH_BYTE_1, W3                          ;

TBLWTL W2, [W0]                                ; Write PM low word into program latch

TBLWTH W3, [W0++]                              ; Write PM high byte into program latch

; 2nd_program_word

MOV  #LOW_WORD_2, W2                           ;

MOV  #HIGH_BYTE_2, W3                          ;

TBLWTL W2, [W0]                                ; Write PM low word into program latch

TBLWTH W3, [W0++]                              ; Write PM high byte into program latch







; 63rd_program_word

MOV  #LOW_WORD_31, W2                          ;

MOV  #HIGH_BYTE_31, W3                         ;

TBLWTL W2, [W0]                                ; Write PM low word into program latch

TBLWTH W3, [W0]                                ; Write PM high byte into program latch

2010 Microchip Technology Inc.                                                     DS39940D-page 59
PIC24FJ64GB004 FAMILY

EXAMPLE 5-4: LOADING THE WRITE BUFFERS `C' LANGUAGE CODE

// C example using MPLAB C30

#define NUM_INSTRUCTION_PER_ROW 64                 // Address of row to write
unsigned int offset;                               // Buffer of data to write
unsigned int i;
unsigned long progAddr = 0xXXXXXX;
unsigned int progData[2*NUM_INSTRUCTION_PER_ROW];

//Set up NVMCON for row programming                // Initialize NVMCON
      NVMCON = 0x4001;

//Set up pointer to the first memory location to be written

TBLPAG = progAddr>>16;                             // Initialize PM Page Boundary SFR

offset = progAddr & 0xFFFF;                        // Initialize lower word of address

//Perform TBLWT instructions to write necessary number of latches

for(i=0; i < 2*NUM_INSTRUCTION_PER_ROW; i++)

{

   __builtin_tblwtl(offset, progData[i++]);        // Write to address low word

   __builtin_tblwth(offset, progData[i]);          // Write to upper byte

   offset = offset + 2;                            // Increment address

}

EXAMPLE 5-5: INITIATING A PROGRAMMING SEQUENCE ASSEMBLY LANGUAGE CODE

   DISI           #5                 ; Block all interrupts with priority <7
                                     ; for next 5 instructions
   MOV            #0x55, W0
   MOV            W0, NVMKEY         ; Write the 55 key
   MOV            #0xAA, W1          ;
   MOV            W1, NVMKEY         ; Write the AA key
   BSET           NVMCON, #WR        ; Start the erase sequence
   NOP                               ;
   NOP            NVMCON, #15        ;
   BTSC           $-2                ; and wait for it to be
   BRA                               ; completed

EXAMPLE 5-6: INITIATING A PROGRAMMING SEQUENCE `C' LANGUAGE CODE

// C example using MPLAB C30

asm("DISI #5");                // Block all interrupts with priority < 7
                               // for next 5 instructions

__builtin_write_NVM(); // Perform unlock sequence and set WR

DS39940D-page 60                                                           2010 Microchip Technology Inc.
                                           PIC24FJ64GB004 FAMILY

5.6.2        PROGRAMMING A SINGLE WORD                 instructions write the desired data into the write latches
             OF FLASH PROGRAM MEMORY                   and specify the lower 16 bits of the program memory
                                                       address to write to. To configure the NVMCON register
If a Flash location has been erased, it can be pro-    for a word write, set the NVMOP bits (NVMCON<3:0>)
grammed using table write instructions to write an     to `0011'. The write is performed by executing the
instruction word (24-bit) into the write latch. The    unlock sequence and setting the WR bit (see
TBLPAG register is loaded with the 8 Most Significant  Example 5-7).
Bytes of the Flash address. The TBLWTL and TBLWTH

EXAMPLE 5-7:   PROGRAMMING A SINGLE WORD OF FLASH PROGRAM MEMORY
               ASSEMBLY LANGUAGE CODE

; Setup a pointer to data Program Memory

       MOV     #tblpage(PROG_ADDR), W0     ;

       MOV     W0, TBLPAG                  ;Initialize PM Page Boundary SFR

       MOV     #tbloffset(PROG_ADDR), W0   ;Initialize a register with program memory address

       MOV     #LOW_WORD, W2               ;
       MOV     #HIGH_BYTE, W3              ;
       TBLWTL  W2, [W0]                    ; Write PM low word into program latch
       TBLWTH  W3, [W0++]                  ; Write PM high byte into program latch

; Setup NVMCON for programming one word to data Program Memory

       MOV     #0x4003, W0                 ;

       MOV     W0, NVMCON                  ; Set NVMOP bits to 0011

       DISI    #5                          ; Disable interrupts while the KEY sequence is written
       MOV     #0x55, W0                   ; Write the key sequence
       MOV     W0, NVMKEY
       MOV     #0xAA, W0                   ; Start the write cycle
       MOV     W0, NVMKEY                  ; Insert two NOPs after the erase
       BSET    NVMCON, #WR                 ; Command is asserted
       NOP
       NOP

EXAMPLE 5-8:   PROGRAMMING A SINGLE WORD OF FLASH PROGRAM MEMORY
               `C' LANGUAGE CODE

// C example using MPLAB C30

       unsigned int offset;                            // Address of word to program
       unsigned long progAddr = 0xXXXXXX;              // Data to program lower word
       unsigned int progDataL = 0xXXXX;                // Data to program upper byte
       unsigned char progDataH = 0xXX;

//Set up NVMCON for word programming                   // Initialize NVMCON
      NVMCON = 0x4003;

//Set up pointer to the first memory location to be written

       TBLPAG = progAddr>>16;                          // Initialize PM Page Boundary SFR

       offset = progAddr & 0xFFFF;                     // Initialize lower word of address

//Perform TBLWT instructions to write latches          // Write to address low word
             __builtin_tblwtl(offset, progDataL);      // Write to upper byte
             __builtin_tblwth(offset, progDataH);      // Block interrupts with priority < 7
             asm("DISI #5");                           // for next 5 instructions
                                                       // C30 function to perform unlock
             __builtin_write_NVM();                    // sequence and set WR

2010 Microchip Technology Inc.                                                       DS39940D-page 61
PIC24FJ64GB004 FAMILY

NOTES:

DS39940D-page 62        2010 Microchip Technology Inc.
                                             PIC24FJ64GB004 FAMILY

6.0 RESETS                                            Any active source of Reset will make the SYSRST
                                                      signal active. Many registers associated with the CPU
Note:  This data sheet summarizes the features        and peripherals are forced to a known Reset state.
       of this group of PIC24F devices. It is not     Most registers are unaffected by a Reset; their status is
       intended to be a comprehensive reference       unknown on POR and unchanged by all other Resets.
       source. For more information, refer to the
       "PIC24F Family Reference Manual",              Note:  Refer to the specific peripheral or CPU
       Section 7. "Reset" (DS39712).                         section of this manual for register Reset
                                                             states.

The Reset module combines all Reset sources and       All types of device Reset will set a corresponding status
controls the device Master Reset Signal, SYSRST. The  bit in the RCON register to indicate the type of Reset
following is a list of device Reset sources:          (see Register 6-1). A Power-on Reset will clear all bits,
                                                      except for the BOR and POR bits (RCON<1:0>), which
POR: Power-on Reset                                 are set. The user may set or clear any bit at any time
MCLR: Pin Reset                                     during code execution. The RCON bits only serve as
SWR: RESET Instruction                              status bits. Setting a particular Reset status bit in
WDT: Watchdog Timer Reset                           software will not cause a device Reset to occur.
BOR: Brown-out Reset
CM: Configuration Mismatch Reset                    The RCON register also has other bits associated with
TRAPR: Trap Conflict Reset                          the Watchdog Timer and device power-saving states.
IOPUWR: Illegal Opcode Reset                        The function of these bits is discussed in other sections
UWR: Uninitialized W Register Reset                 of this data sheet.

A simplified block diagram of the Reset module is     Note:  The status bits in the RCON register
shown in Figure 6-1.                                         should be cleared after they are read so
                                                             that the next RCON register value after a
                                                             device Reset will be meaningful.

FIGURE 6-1:  RESET SYSTEM BLOCK DIAGRAM

             RESET
             Instruction

                              Glitch Filter

       MCLR     WDT                          POR
        VDD   Module
             Sleep or Idle                                   SYSRST

             VDD Rise
               Detect

             Brown-out                       BOR
               Reset

       Enable Voltage Regulator
                        Trap Conflict

                      Illegal Opcode
         Configuration Mismatch
         Uninitialized W Register

2010 Microchip Technology Inc.              Preliminary     DS39940D-page 63
PIC24FJ64GB004 FAMILY

REGISTER 6-1: RCON: RESET CONTROL REGISTER(1)

R/W-0, HS R/W-0, HS     U-0        U-0           U-0        R/CO-0, HS R/W-0, HS         R/W-0
                                                                                         PMSLP
TRAPR       IOPUWR      --         --            --                    DPSLP  CM
                                                                                                 bit 8
bit 15

R/W-0, HS  R/W-0, HS   R/W-0      R/W-0, HS     R/W-0, HS  R/W-0, HS         R/W-1, HS  R/W-1, HS
    EXTR                                           SLEEP       IDLE              BOR        POR
                   SWR  SWDTEN(2)  WDTO                                                            bit 0
bit 7

Legend:                 CO = Clearable Only bit  HS = Hardware Settable bit
R = Readable bit        W = Writable bit
-n = Value at POR       `1' = Bit is set         U = Unimplemented bit, read as `0'

                                                 `0' = Bit is cleared         x = Bit is unknown

bit 15      TRAPR: Trap Reset Flag bit
bit 14      1 = A Trap Conflict Reset has occurred
            0 = A Trap Conflict Reset has not occurred
bit 13-11
bit 10      IOPUWR: Illegal Opcode or Uninitialized W Access Reset Flag bit
bit 9       1 = An illegal opcode detection, an illegal address mode or uninitialized W register used as an Address
bit 8
                  Pointer caused a Reset
bit 7       0 = An illegal opcode or uninitialized W Reset has not occurred
bit 6
bit 5       Unimplemented: Read as `0'
bit 4
bit 3       DPSLP: Deep Sleep Mode Flag bit
bit 2       1 = Deep Sleep has occurred
            0 = Deep Sleep has not occurred

            CM: Configuration Word Mismatch Reset Flag bit
            1 = A Configuration Word Mismatch Reset has occurred
            0 = A Configuration Word Mismatch Reset has not occurred

            PMSLP: Program Memory Power During Sleep bit
            1 = Program memory bias voltage remains powered during Sleep
            0 = Program memory bias voltage is powered down during Sleep and the voltage regulator enters Standby

                  mode

            EXTR: External Reset (MCLR) Pin bit
            1 = A Master Clear (pin) Reset has occurred
            0 = A Master Clear (pin) Reset has not occurred

            SWR: Software Reset (Instruction) Flag bit
            1 = A RESET instruction has been executed
            0 = A RESET instruction has not been executed
            SWDTEN: Software Enable/Disable of WDT bit(2)
            1 = WDT is enabled
            0 = WDT is disabled

            WDTO: Watchdog Timer Time-out Flag bit
            1 = WDT time-out has occurred
            0 = WDT time-out has not occurred

            SLEEP: Wake From Sleep Flag bit
            1 = Device has been in Sleep mode
            0 = Device has not been in Sleep mode

            IDLE: Wake-up From Idle Flag bit
            1 = Device has been in Idle mode
            0 = Device has not been in Idle mode

Note 1:     All of the Reset status bits may be set or cleared in software. Setting one of these bits in software does not
        2:  cause a device Reset.

            If the FWDTEN Configuration bit is `1' (unprogrammed), the WDT is always enabled, regardless of the
            SWDTEN bit setting.

DS39940D-page 64                   Preliminary                                 2010 Microchip Technology Inc.
                                              PIC24FJ64GB004 FAMILY

REGISTER 6-1: RCON: RESET CONTROL REGISTER(1) (CONTINUED)

bit 1          BOR: Brown-out Reset Flag bit

               1 = A Brown-out Reset has occurred. Note that BOR is also set after a Power-on Reset.
               0 = A Brown-out Reset has not occurred

bit 0          POR: Power-on Reset Flag bit

               1 = A Power-on Reset has occurred
               0 = A Power-on Reset has not occurred

Note 1:     All of the Reset status bits may be set or cleared in software. Setting one of these bits in software does not
        2:  cause a device Reset.

            If the FWDTEN Configuration bit is `1' (unprogrammed), the WDT is always enabled, regardless of the
            SWDTEN bit setting.

TABLE 6-1: RESET FLAG BIT OPERATION

            Flag Bit                          Setting Event                    Clearing Event

TRAPR (RCON<15>)      Trap Conflict Event                                             POR
IOPUWR (RCON<14>)     Illegal Opcode or Uninitialized W Register Access               POR
CM (RCON<9>)          Configuration Mismatch Reset                                    POR
                                                                                      POR
EXTR (RCON<7>)        MCLR Reset                                                      POR
                                                                         PWRSAV Instruction, POR
SWR (RCON<6>)         RESET Instruction                                               POR
                                                                                      POR
WDTO (RCON<4>)        WDT Time-out
                                                                                        --
SLEEP (RCON<3>)       PWRSAV #SLEEP Instruction                                         --
                                                                                      POR
IDLE (RCON<2>)        PWRSAV #IDLE Instruction

BOR (RCON<1>)         POR, BOR

POR (RCON<0>)         POR

DPSLP (RCON<10>)      PWRSAV #SLEEP instruction with DSCON set

Note: All Reset flag bits may be set or cleared by the user software.

6.1 Clock Source Selection at Reset                        6.2 Device Reset Times

If clock switching is enabled, the system clock source at  The Reset times for various types of device Reset are
device Reset is chosen as shown in Table 6-2. If clock     summarized in Table 6-3. Note that the System Reset
switching is disabled, the system clock source is always   signal, SYSRST, is released after the POR and PWRT
selected according to the oscillator configuration bits.   delay times expire.
Refer to Section 8.0 "Oscillator Configuration" for
further details.                                           The time at which the device actually begins to execute
                                                           code will also depend on the system oscillator delays,
TABLE 6-2:     OSCILLATOR SELECTION vs.                    which include the Oscillator Start-up Timer (OST) and
               TYPE OF RESET (CLOCK                        the PLL lock time. The OST and PLL lock times occur
   Reset Type  SWITCHING ENABLED)                          in parallel with the applicable SYSRST delay times.
       POR
       BOR          Clock Source Determinant               The FSCM delay determines the time at which the
      MCLR                                                 FSCM begins to monitor the system clock source after
      WDTO     FNOSC Configuration bits                    the SYSRST signal is released.
       SWR     (CW2<10:8>)

               COSC Control bits
               (OSCCON<14:12>)

2010 Microchip Technology Inc.               Preliminary                DS39940D-page 65
PIC24FJ64GB004 FAMILY

TABLE 6-3: RESET DELAY TIMES FOR VARIOUS DEVICE RESETS

Reset Type                Clock Source                  SYSRST Delay           System Clock        Notes
                                                                                    Delay

POR(6)            EC                                    TPOR + TRST + TPWRT    --            1, 2, 3

                  FRC, FRCDIV                           TPOR + TRST + TPWRT    TFRC          1, 2, 3, 4

                  LPRC                                  TPOR + TRST + TPWRT    TLPRC         1, 2, 3, 4

                  ECPLL                                 TPOR + TRST + TPWRT    TLOCK         1, 2, 3, 5

                  FRCPLL                                TPOR + TRST + TPWRT    TFRC + TLOCK 1, 2, 3, 4, 5

                  XT, HS, SOSC                          TPOR+ TRST + TPWRT     TOST          1, 2, 3, 6

                  XTPLL, HSPLL                          TPOR + TRST + TPWRT    TOST + TLOCK 1, 2, 3, 5, 6

BOR               EC                                    TRST + TPWRT           --            2, 3

                  FRC, FRCDIV                           TRST + TPWRT           TFRC          2, 3, 4

                  LPRC                                  TRST + TPWRT           TLPRC         2, 3, 4

                  ECPLL                                 TRST + TPWRT           TLOCK         2, 3, 5

                  FRCPLL                                TRST + TPWRT           TFRC + TLOCK 2, 3, 4, 5

                  XT, HS, SOSC                          TRST + TPWRT           TOST          2, 3, 6

                  XTPLL, HSPLL                          TRST + TPWRT           TFRC + TLOCK 2, 3, 4, 5

All Others        Any Clock                             TRST                   --            2

Note 1: TPOR = Power-on Reset delay.

     2: TRST = Internal State Reset time.

     3: TPWRT = 64 ms nominal if regulator is disabled (DISVREG tied to VDD).

     4: TFRC and TLPRC = RC Oscillator start-up times.

     5: TLOCK = PLL lock time.

     6: TOST = Oscillator Start-up Timer (OST). A 10-bit counter waits 1024 oscillator periods before releasing the
           oscillator clock to the system.

     7: If Two-Speed Start-up is enabled, regardless of the primary oscillator selected, the device starts with FRC,
           and in such cases, FRC start-up time is valid.

Note: For detailed operating frequency and timing specifications, see Section 29.0 "Electrical Characteristics".

DS39940D-page 66                           Preliminary                          2010 Microchip Technology Inc.
                                 PIC24FJ64GB004 FAMILY

6.2.1  POR AND LONG OSCILLATOR                              6.3 Special Function Register Reset
       START-UP TIMES                                                States

The oscillator start-up circuitry and its associated delay  Most of the Special Function Registers (SFRs) associ-
timers are not linked to the device Reset delays that       ated with the PIC24F CPU and peripherals are reset to a
occur at power-up. Some crystal circuits (especially        particular value at a device Reset. The SFRs are
low-frequency crystals) will have a relatively long         grouped by their peripheral or CPU function and their
start-up time. Therefore, one or more of the following      Reset values are specified in each section of this manual.
conditions is possible after SYSRST is released:
                                                            The Reset value for each SFR does not depend on the
The oscillator circuit has not begun to oscillate.        type of Reset with the exception of four registers. The
                                                            Reset value for the Reset Control register, RCON, will
The Oscillator Start-up Timer has not expired (if a       depend on the type of device Reset. The Reset value
   crystal oscillator is used).                             for the Oscillator Control register, OSCCON, will
                                                            depend on the type of Reset and the programmed
The PLL has not achieved a lock (if PLL is used).         values of the FNOSC bits in Flash Configuration
                                                            Word 2 (CW2); see Table 6-2. The RCFGCAL and
The device will not begin to execute code until a valid     NVMCON registers are only affected by a POR.
clock source has been released to the system. There-
fore, the oscillator and PLL start-up delays must be        6.4 Deep Sleep BOR (DSBOR)
considered when the Reset delay time must be known.
                                                            Deep Sleep BOR is a very low-power BOR circuitry,
6.2.2  FAIL-SAFE CLOCK MONITOR                              used when the device is in Deep Sleep mode. Due to
       (FSCM) AND DEVICE RESETS                             low-current consumption, accuracy may vary.

If the FSCM is enabled, it will begin to monitor the        The DSBOR trip point is around 2.0V. DSBOR is
system clock source when SYSRST is released. If a           enabled by configuring CW4 = 1. DSBOR
valid clock source is not available at this time, the       will re-arm the POR to ensure the device will reset if VDD
device will automatically switch to the FRC Oscillator      drops below the POR threshold.
and the user can switch to the desired crystal oscillator
in the Trap Service Routine (TSR).

2010 Microchip Technology Inc.  Preliminary                DS39940D-page 67
PIC24FJ64GB004 FAMILY

NOTES:

DS39940D-page 68  Preliminary   2010 Microchip Technology Inc.
                                 PIC24FJ64GB004 FAMILY

7.0 INTERRUPT CONTROLLER                                     7.1.1  ALTERNATE INTERRUPT VECTOR
                                                                    TABLE
Note:  This data sheet summarizes the features
       of this group of PIC24F devices. It is not            The Alternate Interrupt Vector Table (AIVT) is located
       intended to be a comprehensive reference              after the IVT, as shown in Figure 7-1. Access to the
       source. For more information, refer to the            AIVT is provided by the ALTIVT control bit
       "PIC24F Family Reference Manual",                     (INTCON2<15>). If the ALTIVT bit is set, all interrupt
       Section 8. "Interrupts" (DS39707).                    and exception processes will use the alternate vectors
                                                             instead of the default vectors. The alternate vectors are
The PIC24F interrupt controller reduces the numerous         organized in the same manner as the default vectors.
peripheral interrupt request signals to a single interrupt
request signal to the PIC24F CPU. It has the following       The AIVT supports emulation and debugging efforts by
features:                                                    providing a means to switch between an application
                                                             and a support environment without requiring the inter-
Up to 8 processor exceptions and software traps            rupt vectors to be reprogrammed. This feature also
                                                             enables switching between applications for evaluation
7 user-selectable priority levels                          of different software algorithms at run time. If the AIVT
                                                             is not needed, the AIVT should be programmed with
Interrupt Vector Table (IVT) with up to 118 vectors        the same addresses used in the IVT.

A unique vector for each interrupt or exception            7.2 Reset Sequence
   source
                                                             A device Reset is not a true exception because the
Fixed priority within a specified user priority level      interrupt controller is not involved in the Reset process.
                                                             The PIC24F devices clear their registers in response to
Alternate Interrupt Vector Table (AIVT) for debug          a Reset which forces the PC to zero. The micro-
   support                                                   controller then begins program execution at location
                                                             000000h. The user programs a GOTO instruction at the
Fixed interrupt entry and return latencies                 Reset address, which redirects program execution to
                                                             the appropriate start-up routine.
7.1 Interrupt Vector Table
                                                             Note:  Any unimplemented or unused vector
The Interrupt Vector Table (IVT) is shown in Figure 7-1.            locations in the IVT and AIVT should be
The IVT resides in program memory, starting at location             programmed with the address of a default
000004h. The IVT contains 126 vectors, consisting of                interrupt handler routine that contains a
8 non-maskable trap vectors, plus up to 118 sources of              RESET instruction.
interrupt. In general, each interrupt source has its own
vector. Each interrupt vector contains a 24-bit wide
address. The value programmed into each interrupt
vector location is the starting address of the associated
Interrupt Service Routine (ISR).

Interrupt vectors are prioritized in terms of their natural
priority. This is linked to their position in the vector
table. All other things being equal, lower addresses
have a higher natural priority. For example, the inter-
rupt associated with Vector 0 will take priority over
interrupts at any other vector address.

PIC24FJ64GB004 family devices implement
non-maskable traps and unique interrupts. These are
summarized in Table 7-1 and Table 7-2.

2010 Microchip Technology Inc.                                                  DS39940D-page 69
PIC24FJ64GB004 FAMILY

FIGURE 7-1:                           PIC24F INTERRUPT VECTOR TABLE

   Decreasing Natural Order Priority  Reset GOTO Instruction     000000h  Interrupt Vector Table (IVT)(1)
                                        Reset GOTO Address       000002h  Alternate Interrupt Vector Table (AIVT)(1)
                                                                   000004h
                                                 Reserved
                                      Oscillator Fail Trap Vector  000014h
                                      Address Error Trap Vector
                                                                   00007Ch
                                       Stack Error Trap Vector     00007Eh
                                        Math Error Trap Vector     000080h

                                                 Reserved          0000FCh
                                                 Reserved          0000FEh
                                                 Reserved          000100h
                                           Interrupt Vector 0      000102h
                                           Interrupt Vector 1
                                                                   000114h
                                                      --
                                                      --           00017Ch
                                                      --           00017Eh
                                           Interrupt Vector 52     000180h
                                           Interrupt Vector 53
                                           Interrupt Vector 54     0001FEh
                                                      --           000200h
                                                      --
                                                      --
                                          Interrupt Vector 116
                                          Interrupt Vector 117

                                                 Reserved
                                                 Reserved
                                                 Reserved
                                      Oscillator Fail Trap Vector
                                      Address Error Trap Vector
                                       Stack Error Trap Vector
                                        Math Error Trap Vector
                                                 Reserved
                                                 Reserved
                                                 Reserved
                                           Interrupt Vector 0
                                           Interrupt Vector 1

                                                      --
                                                      --
                                                      --
                                           Interrupt Vector 52
                                           Interrupt Vector 53
                                           Interrupt Vector 54
                                                      --
                                                      --
                                                      --
                                          Interrupt Vector 116
                                          Interrupt Vector 117
                                              Start of Code

   Note 1: See Table 7-2 for the interrupt vector list.

TABLE 7-1: TRAP VECTOR DETAILS

Vector Number                         IVT Address  AIVT Address                                     Trap Source

0                                     000004h      000104h                  Reserved
                                                                            Oscillator Failure
1                                     000006h      000106h                  Address Error
                                                                            Stack Error
2                                     000008h      000108h                  Math Error
                                                                            Reserved
3                                     00000Ah      00010Ah                  Reserved
                                                                            Reserved
4                                     00000Ch      00010Ch

5                                     00000Eh      00010Eh

6                                     000010h      000110h

7                                     000012h      000112h

DS39940D-page 70                                                             2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

TABLE 7-2: IMPLEMENTED INTERRUPT VECTORS

Interrupt Source                  Vector  IVT Address    AIVT         Interrupt Bit Locations
                                 Number                Address
                                                                Flag      Enable               Priority

ADC1 Conversion Done             13       00002Eh      00012Eh  IFS0<13>  IEC0<13>    IPC3<6:4>
Comparator Event                                                IFS1<2>   IEC1<2>    IPC4<10:8>
CRC Generator                    18       000038h      000138h  IFS4<3>   IEC4<3>   IPC16<14:12>
CTMU Event                                                      IFS4<13>  IEC4<13>   IPC19<6:4>
External Interrupt 0             67       00009Ah      00019Ah  IFS0<0>   IEC0<0>     IPC0<2:0>
External Interrupt 1                                            IFS1<4>   IEC1<4>     IPC5<2:0>
External Interrupt 2             77       0000AEh      0001AEh  IFS1<13>  IEC1<13>    IPC7<6:4>
I2C1 Master Event                                               IFS1<1>   IEC1<1>     IPC4<6:4>
I2C1 Slave Event                 0        000014h      000114h  IFS1<0>   IEC1<0>     IPC4<2:0>
I2C2 Master Event                                               IFS3<2>   IEC3<2>   IPC12<10:8>
I2C2 Slave Event                 20       00003Ch      00013Ch  IFS3<1>   IEC3<1>    IPC12<6:4>
Input Capture 1                                                 IFS0<1>   IEC0<1>     IPC0<6:4>
Input Capture 2                  29       00004Eh      00014Eh  IFS0<5>   IEC0<5>     IPC1<6:4>
Input Capture 3                                                 IFS2<5>   IEC2<5>     IPC9<6:4>
Input Capture 4                  17       000036h      000136h  IFS2<6>   IEC2<6>    IPC9<10:8>
Input Capture 5                                                 IFS2<7>   IEC2<7>   IPC9<14:12>
Input Change Notification        16       000034h      000134h  IFS1<3>   IEC1<3>   IPC4<14:12>
LVD Low-Voltage Detect                                          IFS4<8>   IEC4<8>    IPC18<2:0>
Output Compare 1                 50       000078h      000178h  IFS0<2>   IEC0<2>    IPC0<10:8>
Output Compare 2                                                IFS0<6>   IEC0<6>    IPC1<10:8>
Output Compare 3                 49       000076h      000176h  IFS1<9>   IEC1<9>     IPC6<6:4>
Output Compare 4                                                IFS1<10>  IEC1<10>   IPC6<10:8>
Output Compare 5                 1        000016h      000116h  IFS2<9>   IEC2<9>    IPC10<6:4>
Parallel Master Port                                            IFS2<13>  IEC2<13>   IPC11<6:4>
Real-Time Clock/Calendar         5        00001Eh      00011Eh  IFS3<14>  IEC3<14>  IPC15<10:8>
SPI1 Error                                                      IFS0<9>   IEC0<9>     IPC2<6:4>
SPI1 Event                       37       00005Eh      00015Eh  IFS0<10>  IEC0<10>   IPC2<10:8>
SPI2 Error                                                      IFS2<0>   IEC2<0>     IPC8<2:0>
SPI2 Event                       38       000060h      000160h  IFS2<1>   IEC2<1>     IPC8<6:4>
Timer1                                                          IFS0<3>   IEC0<3>   IPC0<14:12>
Timer2                           39       000062h      000162h  IFS0<7>   IEC0<7>   IPC1<14:12>
Timer3                                                          IFS0<8>   IEC0<8>     IPC2<2:0>
Timer4                           19       00003Ah      00013Ah  IFS1<11>  IEC1<11>  IPC6<14:12>
Timer5                                                          IFS1<12>  IEC1<12>    IPC7<2:0>
UART1 Error                      72       0000A4h      0001A4h  IFS4<1>   IEC4<1>    IPC16<6:4>
UART1 Receiver                                                  IFS0<11>  IEC0<11>  IPC2<14:12>
UART1 Transmitter                2        000018h      000118h  IFS0<12>  IEC0<12>    IPC3<2:0>
UART2 Error                                                     IFS4<2>   IEC4<2>   IPC16<10:8>
UART2 Receiver                   6        000020h      000120h  IFS1<14>  IEC1<14>   IPC7<10:8>
UART2 Transmitter                                               IFS1<15>  IEC1<15>  IPC7<14:12>
USB Interrupt                    25       000046h      000146h  IFS5<6>   IEC5<6>   IPC21<10:8>

                                 26       000048h      000148h

                                 41       000066h      000166h

                                 45       00006Eh      00016Eh

                                 62       000090h      000190h

                                 9        000026h      000126h

                                 10       000028h      000128h

                                 32       000054h      000154h

                                 33       000056h      000156h

                                 3        00001Ah      00011Ah

                                 7        000022h      000122h

                                 8        000024h      000124h

                                 27       00004Ah      00014Ah

                                 28       00004Ch      00014Ch

                                 65       000096h      000196h

                                 11       00002Ah      00012Ah

                                 12       00002Ch      00012Ch

                                 66       000098h      000198h

                                 30       000050h      000150h

                                 31       000052h      000152h

                                 86       0000C0h      0001C0h

2010 Microchip Technology Inc.                                                   DS39940D-page 71
PIC24FJ64GB004 FAMILY

7.3 Interrupt Control and Status                           The interrupt sources are assigned to the IFSx, IECx
         Registers                                         and IPCx registers in the order of their vector numbers,
                                                           as shown in Table 7-2. For example, the INT0 (External
The PIC24FJ64GB004 family of devices implements            Interrupt 0) is shown as having a vector number and a
the following registers for the interrupt controller:      natural order priority of 0. Thus, the INT0IF status bit is
                                                           found in IFS0<0>, the INT0IE enable bit in IEC0<0>
INTCON1                                                  and the INT0IP<2:0> priority bits in the first position of
                                                           IPC0 (IPC0<2:0>).
INTCON2
                                                           Although they are not specifically part of the interrupt
IFS0 through IFS5                                        control hardware, two of the CPU control registers
                                                           contain bits that control interrupt functionality. The ALU
IEC0 through IEC5                                        STATUS Register (SR) contains the IPL<2:0> bits
                                                           (SR<7:5>); these indicate the current CPU interrupt
IPC0 through IPC21 (except IPC13, IPC14 and              priority level. The user may change the current CPU
   IPC17)                                                  priority level by writing to the IPL bits.

INTTREG                                                  The CORCON register contains the IPL3 bit, which,
                                                           together with IPL<2:0>, indicates the current CPU
Global interrupt control functions are controlled from     priority level. IPL3 is a read-only bit so that trap events
INTCON1 and INTCON2. INTCON1 contains the                  cannot be masked by the user software.
Interrupt Nesting Disable (NSTDIS) bit, as well as the
control and status flags for the processor trap sources.   The interrupt controller has the Interrupt Controller Test
The INTCON2 register controls the external interrupt       Register (INTTREG) that displays the status of the
request signal behavior and the use of the Alternate       interrupt controller. When an interrupt request occurs,
Interrupt Vector Table.                                    its associated vector number and the new interrupt
                                                           priority level are latched into INTTREG.
The IFSx registers maintain all of the interrupt request
flags. Each source of interrupt has a status bit which is  This information can be used to determine a specific
set by the respective peripherals, or an external signal,  interrupt source if a generic ISR is used for multiple
and is cleared via software.                               vectors such as when ISR remapping is used in boot-
                                                           loader applications. It also could be used to check if
The IECx registers maintain all of the interrupt enable    another interrupt is pending while in an ISR.
bits. These control bits are used to individually enable
interrupts from the peripherals or external signals.       All interrupt registers are described in Register 7-1
                                                           through Register 7-35, on the following pages.
The IPCx registers are used to set the Interrupt Priority
Level for each source of interrupt. Each user interrupt
source can be assigned to one of eight priority levels.

DS39940D-page 72                                            2010 Microchip Technology Inc.
                                                    PIC24FJ64GB004 FAMILY

REGISTER 7-1: SR: ALU STATUS REGISTER (IN CPU)

       U-0         U-0           U-0                U-0           U-0            U-0    U-0                 R-0

        --         --            --                 --            --             --            --           DC(1)

bit 15                                                                                                              bit 8

     R/W-0     R/W-0              R/W-0              R-0        R/W-0            R/W-0  R/W-0      R/W-0
   IPL2(2,3)  IPL1(2,3)          IPL0(2,3)          RA(1)        N(1)            OV(1)   Z(1)       C(1)

bit 7                                                                                                     bit 0

Legend:                          W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit                 `1' = Bit is set
-n = Value at POR                                          `0' = Bit is cleared         x = Bit is unknown

bit 7-5       IPL<2:0>: CPU Interrupt Priority Level Status bits(2,3)

              111 = CPU interrupt priority level is 7 (15). User interrupts disabled.
              110 = CPU interrupt priority level is 6 (14)
              101 = CPU interrupt priority level is 5 (13)
              100 = CPU interrupt priority level is 4 (12)
              011 = CPU interrupt priority level is 3 (11)
              010 = CPU interrupt priority level is 2 (10)
              001 = CPU interrupt priority level is 1 (9)
              000 = CPU interrupt priority level is 0 (8)

Note 1:     See Register 3-1 for the description of the remaining bit(s) that are not dedicated to interrupt control
        2:  functions.
        3:
            The IPL bits are concatenated with the IPL3 bit (CORCON<3>) to form the CPU interrupt priority level.
            The value in parentheses indicates the interrupt priority level if IPL3 = 1.

            The IPL Status bits are read-only when NSTDIS (INTCON1<15>) = 1.

REGISTER 7-2: CORCON: CPU CONTROL REGISTER

       U-0         U-0           U-0                U-0           U-0            U-0    U-0                 U-0
        --
bit 15             --            --                 --            --             --            --           --

                                                                                                                    bit 8

       U-0         U-0           U-0                U-0         R/C-0            R/W-0  U-0                 U-0
        --
bit 7              --            --                 --          IPL3(2)  PSV(1)                --           --

                                                                                                                    bit 0

Legend:                          C = Clearable bit         U = Unimplemented bit, read as `0'
R = Readable bit                 W = Writable bit
-n = Value at POR                `1' = Bit is set          `0' = Bit is cleared         x = Bit is unknown

bit 3         IPL3: CPU Interrupt Priority Level Status bit(2)

              1 = CPU interrupt priority level is greater than 7
              0 = CPU interrupt priority level is 7 or less

Note 1: See Register 3-2 for the description of the remaining bit(s) that are not dedicated to interrupt control
              functions.

        2: The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU interrupt priority level.

2010 Microchip Technology Inc.                                                                    DS39940D-page 73
PIC24FJ64GB004 FAMILY

REGISTER 7-3: INTCON1: INTERRUPT CONTROL REGISTER 1

R/W-0              U-0  U-0               U-0             U-0                   U-0    U-0                 U-0

NSTDIS             --   --                --              --                    --            --           --

bit 15                                                                                                          bit 8

       U-0         U-0  U-0               R/W-0           R/W-0                 R/W-0  R/W-0               U-0

       --          --   --   MATHERR ADDRERR STKERR OSCFAIL                                                --

bit 7                                                                                                           bit 0

Legend:                 W = Writable bit                  U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                                         `0' = Bit is cleared         x = Bit is unknown

bit 15      NSTDIS: Interrupt Nesting Disable bit
bit 14-5    1 = Interrupt nesting is disabled
bit 4       0 = Interrupt nesting is enabled
bit 3
bit 2       Unimplemented: Read as `0'
bit 1
bit 0       MATHERR: Arithmetic Error Trap Status bit
            1 = Overflow trap has occurred
            0 = Overflow trap has not occurred

            ADDRERR: Address Error Trap Status bit
            1 = Address error trap has occurred
            0 = Address error trap has not occurred

            STKERR: Stack Error Trap Status bit
            1 = Stack error trap has occurred
            0 = Stack error trap has not occurred

            OSCFAIL: Oscillator Failure Trap Status bit
            1 = Oscillator failure trap has occurred
            0 = Oscillator failure trap has not occurred

            Unimplemented: Read as `0'

DS39940D-page 74                                                                        2010 Microchip Technology Inc.
                                           PIC24FJ64GB004 FAMILY

REGISTER 7-4: INTCON2: INTERRUPT CONTROL REGISTER 2

R/W-0              R-0           U-0       U-0  U-0                       U-0     U-0                 U-0

ALTIVT             DISI          --        --   --                        --        --                --

bit 15                                                                                                     bit 8

       U-0         U-0           U-0       U-0  U-0                       R/W-0   R/W-0   R/W-0

       --          --            --        --   --                        INT2EP  INT1EP  INT0EP

bit 7                                                                                                      bit 0

Legend:                  W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit         `1' = Bit is set
-n = Value at POR                               `0' = Bit is cleared              x = Bit is unknown

bit 15      ALTIVT: Enable Alternate Interrupt Vector Table (AIVT) bit
bit 14      1 = Use Alternate Interrupt Vector Table
bit 13-3    0 = Use standard (default) Interrupt Vector Table (IVT)
bit 2
bit 1       DISI: DISI Instruction Status bit
bit 0       1 = DISI instruction is active
            0 = DISI instruction is not active

            Unimplemented: Read as `0'

            INT2EP: External Interrupt 2 Edge Detect Polarity Select bit
            1 = Interrupt on negative edge
            0 = Interrupt on positive edge

            INT1EP: External Interrupt 1 Edge Detect Polarity Select bit
            1 = Interrupt on negative edge
            0 = Interrupt on positive edge

            INT0EP: External Interrupt 0 Edge Detect Polarity Select bit
            1 = Interrupt on negative edge
            0 = Interrupt on positive edge

2010 Microchip Technology Inc.                                                           DS39940D-page 75
PIC24FJ64GB004 FAMILY

REGISTER 7-5: IFS0: INTERRUPT FLAG STATUS REGISTER 0

      U-0          U-0   R/W-0             R/W-0   R/W-0                 R/W-0   R/W-0   R/W-0
       --                                                                        SPF1IF   T3IF
bit 15             --    AD1IF             U1TXIF  U1RXIF                SPI1IF
                                                                                                bit 8

R/W-0             R/W-0  R/W-0             U-0     R/W-0                 R/W-0   R/W-0   R/W-0

       T2IF       OC2IF  IC2IF             --      T1IF                  OC1IF   IC1IF   INT0IF

bit 7                                                                                                bit 0

Legend:                  W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit         `1' = Bit is set
-n = Value at POR                                  `0' = Bit is cleared          x = Bit is unknown

bit 15-14    Unimplemented: Read as `0'
bit 13
bit 12       AD1IF: A/D Conversion Complete Interrupt Flag Status bit
bit 11       1 = Interrupt request has occurred
bit 10       0 = Interrupt request has not occurred
bit 9
bit 8        U1TXIF: UART1 Transmitter Interrupt Flag Status bit
bit 7        1 = Interrupt request has occurred
bit 6        0 = Interrupt request has not occurred
bit 5
bit 4        U1RXIF: UART1 Receiver Interrupt Flag Status bit
bit 3        1 = Interrupt request has occurred
bit 2        0 = Interrupt request has not occurred
bit 1
bit 0        SPI1IF: SPI1 Event Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             SPF1IF: SPI1 Fault Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             T3IF: Timer3 Interrupt Flag Status bit

             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             T2IF: Timer2 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             OC2IF: Output Compare Channel 2 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             IC2IF: Input Capture Channel 2 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             Unimplemented: Read as `0'

             T1IF: Timer1 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             OC1IF: Output Compare Channel 1 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             IC1IF: Input Capture Channel 1 Interrupt Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

             INT0IF: External Interrupt 0 Flag Status bit
             1 = Interrupt request has occurred
             0 = Interrupt request has not occurred

DS39940D-page 76                                                                  2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

REGISTER 7-6: IFS1: INTERRUPT FLAG STATUS REGISTER 1

    R/W-0    R/W-0               R/W-0    R/W-0   R/W-0                 R/W-0  R/W-0               U-0
   U2TXIF   U2RXIF               INT2IF    T5IF    T4IF                 OC4IF  OC3IF               --
bit 15
                                                                                                        bit 8

       U-0         U-0           U-0      R/W-0   R/W-0                 R/W-0  R/W-0    R/W-0

       --          --            --       INT1IF  CNIF                  CMIF   MI2C1IF  SI2C1IF

bit 7                                                                                              bit 0

Legend:                 W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                                 `0' = Bit is cleared         x = Bit is unknown

bit 15      U2TXIF: UART2 Transmitter Interrupt Flag Status bit
bit 14      1 = Interrupt request has occurred
bit 13      0 = Interrupt request has not occurred
bit 12
bit 11      U2RXIF: UART2 Receiver Interrupt Flag Status bit
bit 10      1 = Interrupt request has occurred
bit 9       0 = Interrupt request has not occurred
bit 8-5
bit 4       INT2IF: External Interrupt 2 Flag Status bit
bit 3       1 = Interrupt request has occurred
bit 2       0 = Interrupt request has not occurred
bit 1
bit 0       T5IF: Timer5 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            T4IF: Timer4 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            OC4IF: Output Compare Channel 4 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            OC3IF: Output Compare Channel 3 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            Unimplemented: Read as `0'

            INT1IF: External Interrupt 1 Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            CNIF: Input Change Notification Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            CMIF: Comparator Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            MI2C1IF: Master I2C1 Event Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            SI2C1IF: Slave I2C1 Event Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

2010 Microchip Technology Inc.                                                       DS39940D-page 77
PIC24FJ64GB004 FAMILY

REGISTER 7-7: IFS2: INTERRUPT FLAG STATUS REGISTER 2

       U-0         U-0    R/W-0             U-0  U-0                   U-0  R/W-0               U-0
                                                                            OC5IF               --
       --          --     PMPIF             --   --                    --
                                                                                                     bit 8
bit 15

R/W-0             R/W-0   R/W-0             U-0  U-0                   U-0  R/W-0    R/W-0

IC5IF              IC4IF  IC3IF             --   --                    --   SPI2IF   SPF2IF

bit 7                                                                                           bit 0

Legend:                   W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit          `1' = Bit is set
-n = Value at POR                                `0' = Bit is cleared       x = Bit is unknown

bit 15-14   Unimplemented: Read as `0'
bit 13
            PMPIF: Parallel Master Port Interrupt Flag Status bit
bit 12-10   1 = Interrupt request has occurred
bit 9       0 = Interrupt request has not occurred

bit 8       Unimplemented: Read as `0'
bit 7
            OC5IF: Output Compare Channel 5 Interrupt Flag Status bit
bit 6       1 = Interrupt request has occurred
            0 = Interrupt request has not occurred
bit 5
            Unimplemented: Read as `0'
bit 4-2
bit 1       IC5IF: Input Capture Channel 5 Interrupt Flag Status bit
            1 = Interrupt request has occurred
bit 0       0 = Interrupt request has not occurred

            IC4IF: Input Capture Channel 4 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            IC3IF: Input Capture Channel 3 Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            Unimplemented: Read as `0'

            SPI2IF: SPI2 Event Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            SPF2IF: SPI2 Fault Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

DS39940D-page 78                                                             2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

REGISTER 7-8: IFS3: INTERRUPT FLAG STATUS REGISTER 3

       U-0  R/W-0                U-0      U-0  U-0                     U-0      U-0                 U-0

       --   RTCIF                --       --   --                      --          --               --

bit 15                                                                                                   bit 8

       U-0         U-0           U-0      U-0  U-0                     R/W-0,   R/W-0               U-0

       --          --            --       --   --                      MI2C2IF  SI2C2IF             --

bit 7                                                                                                    bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared             x = Bit is unknown

bit 15      Unimplemented: Read as `0'
bit 14
            RTCIF: Real-Time Clock/Calendar Interrupt Flag Status bit
bit 13-3    1 = Interrupt request has occurred
bit 2       0 = Interrupt request has not occurred

bit 1       Unimplemented: Read as `0'

bit 0       MI2C2IF: Master I2C2 Event Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            SI2C2IF: Slave I2C2 Event Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            Unimplemented: Read as `0'

2010 Microchip Technology Inc.                                                        DS39940D-page 79
PIC24FJ64GB004 FAMILY

REGISTER 7-9: IFS4: INTERRUPT FLAG STATUS REGISTER 4

       U-0         U-0  R/W-0             U-0  U-0                   U-0    U-0        R/W-0

       --          --   CTMUIF            --   --                    --            --  LVDIF

bit 15                                                                                               bit 8

       U-0         U-0  U-0               U-0  R/W-0                 R/W-0  R/W-0               U-0

       --          --   --                --   CRCIF             U2ERIF     U1ERIF              --

bit 7                                                                                                bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared         x = Bit is unknown

bit 15-14   Unimplemented: Read as `0'
bit 13
            CTMUIF: CTMU Interrupt Flag Status bit
bit 12-9    1 = Interrupt request has occurred
bit 8       0 = Interrupt request has not occurred

bit 7-4     Unimplemented: Read as `0'
bit 3
            LVDIF: Low-Voltage Detect Interrupt Flag Status bit
bit 2       1 = Interrupt request has occurred
            0 = Interrupt request has not occurred
bit 1
            Unimplemented: Read as `0'
bit 0
            CRCIF: CRC Generator Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            U2ERIF: UART2 Error Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            U1ERIF: UART1 Error Interrupt Flag Status bit
            1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            Unimplemented: Read as `0'

DS39940D-page 80                                                             2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

REGISTER 7-10: IFS5: INTERRUPT FLAG STATUS REGISTER 5

       U-0         U-0           U-0      U-0  U-0                   U-0  U-0                 U-0

       --          --            --       --   --                    --            --         --

bit 15                                                                                             bit 8

       U-0  R/W-0                U-0      U-0  U-0                   U-0  U-0                 U-0

       --   USB1IF               --       --   --                    --            --         --

bit 7                                                                                              bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared       x = Bit is unknown

bit 15-7    Unimplemented: Read as `0'
bit 6
            USB1IF: USB1 (USB OTG) Interrupt Flag Status bit
bit 5-0     1 = Interrupt request has occurred
            0 = Interrupt request has not occurred

            Unimplemented: Read as `0'

2010 Microchip Technology Inc.                                                        DS39940D-page 81
PIC24FJ64GB004 FAMILY

REGISTER 7-11: IEC0: INTERRUPT ENABLE CONTROL REGISTER 0

      U-0          U-0    R/W-0             R/W-0   R/W-0                 R/W-0   R/W-0   R/W-0
       --                                                                         SPF1IE   T3IE
bit 15             --     AD1IE             U1TXIE  U1RXIE                SPI1IE
                                                                                                 bit 8

R/W-0              R/W-0  R/W-0             U-0     R/W-0                 R/W-0   R/W-0   R/W-0

       T2IE       OC2IE   IC2IE             --      T1IE                  OC1IE   IC1IE   INT0IE

bit 7                                                                                                 bit 0

Legend:                   W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit          `1' = Bit is set
-n = Value at POR                                   `0' = Bit is cleared          x = Bit is unknown

bit 15-14    Unimplemented: Read as `0'
bit 13
bit 12       AD1IE: A/D Conversion Complete Interrupt Enable bit
bit 11       1 = Interrupt request is enabled
bit 10       0 = Interrupt request is not enabled
bit 9
bit 8        U1TXIE: UART1 Transmitter Interrupt Enable bit
bit 7        1 = Interrupt request is enabled
bit 6        0 = Interrupt request is not enabled
bit 5
bit 4        U1RXIE: UART1 Receiver Interrupt Enable bit
bit 3        1 = Interrupt request is enabled
bit 2        0 = Interrupt request is not enabled
bit 1
bit 0        SPI1IE: SPI1 Transfer Complete Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             SPF1IE: SPI1 Fault Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             T3IE: Timer3 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             T2IE: Timer2 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             OC2IE: Output Compare Channel 2 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             IC2IE: Input Capture Channel 2 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             Unimplemented: Read as `0'

             T1IE: Timer1 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             OC1IE: Output Compare Channel 1 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             IC1IE: Input Capture Channel 1 Interrupt Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

             INT0IE: External Interrupt 0 Enable bit
             1 = Interrupt request is enabled
             0 = Interrupt request is not enabled

DS39940D-page 82                                                                   2010 Microchip Technology Inc.
                                            PIC24FJ64GB004 FAMILY

REGISTER 7-12: IEC1: INTERRUPT ENABLE CONTROL REGISTER 1

    R/W-0    R/W-0                R/W-0     R/W-0      R/W-0                 R/W-0  R/W-0               U-0
   U2TXIE   U2RXIE               INT2IE(1)   T5IE       T4IE                 OC4IE  OC3IE               --
bit 15
                                                                                                             bit 8

       U-0         U-0           U-0        R/W-0      R/W-0                 R/W-0  R/W-0    R/W-0

       --          --            --         INT1IE(1)  CNIE                  CMIE   MI2C1IE  SI2C1IE

bit 7                                                                                                   bit 0

Legend:                 W = Writable bit               U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                                      `0' = Bit is cleared         x = Bit is unknown

bit 15      U2TXIE: UART2 Transmitter Interrupt Enable bit
bit 14      1 = Interrupt request is enabled
bit 13      0 = Interrupt request is not enabled
bit 12
bit 11      U2RXIE: UART2 Receiver Interrupt Enable bit
bit 10      1 = Interrupt request is enabled
bit 9       0 = Interrupt request is not enabled
bit 8-5     INT2IE: External Interrupt 2 Enable bit(1)
bit 4       1 = Interrupt request is enabled
bit 3       0 = Interrupt request is not enabled
bit 2
bit 1       T5IE: Timer5 Interrupt Enable bit
bit 0       1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            T4IE: Timer4 Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            OC4IE: Output Compare Channel 4 Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            OC3IE: Output Compare Channel 3 Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            Unimplemented: Read as `0'
            INT1IE: External Interrupt 1 Enable bit(1)
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            CNIE: Input Change Notification Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            CMIE: Comparator Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            MI2C1IE: Master I2C1 Event Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            SI2C1IE: Slave I2C1 Event Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

Note 1: If an external interrupt is enabled, the interrupt input must also be configured to an available RPn or PRIx
              pin. See Section 10.4 "Peripheral Pin Select (PPS)" for more information.

2010 Microchip Technology Inc.                                                            DS39940D-page 83
PIC24FJ64GB004 FAMILY

REGISTER 7-13: IEC2: INTERRUPT ENABLE CONTROL REGISTER 2

       U-0         U-0    R/W-0             U-0  U-0                   U-0  R/W-0               U-0
                                                                            OC5IE               --
       --          --     PMPIE             --   --                    --
                                                                                                     bit 8
bit 15

R/W-0             R/W-0   R/W-0             U-0  U-0                   U-0  R/W-0    R/W-0

IC5IE              IC4IE  IC3IE             --   --                    --   SPI2IE   SPF2IE

bit 7                                                                                           bit 0

Legend:                   W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit          `1' = Bit is set
-n = Value at POR                                `0' = Bit is cleared       x = Bit is unknown

bit 15-14   Unimplemented: Read as `0'
bit 13
            PMPIE: Parallel Master Port Interrupt Enable bit
bit 12-10   1 = Interrupt request is enabled
bit 9       0 = Interrupt request is not enabled

bit 8       Unimplemented: Read as `0'
bit 7
            OC5IE: Output Compare Channel 5 Interrupt Enable bit
bit 6       1 = Interrupt request is enabled
            0 = Interrupt request is not enabled
bit 5
            Unimplemented: Read as `0'
bit 4-2
bit 1       IC5IE: Input Capture Channel 5 Interrupt Enable bit
            1 = Interrupt request is enabled
bit 0       0 = Interrupt request is not enabled

            IC4IE: Input Capture Channel 4 Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            IC3IE: Input Capture Channel 3 Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            Unimplemented: Read as `0'

            SPI2IE: SPI2 Event Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            SPF2IE: SPI2 Fault Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

DS39940D-page 84                                                             2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

REGISTER 7-14: IEC3: INTERRUPT ENABLE CONTROL REGISTER 3

       U-0  R/W-0                U-0      U-0  U-0                   U-0    U-0                 U-0
                                                                                                --
       --   RTCIE                --       --   --                    --            --
                                                                                                     bit 8
bit 15

       U-0         U-0           U-0      U-0  U-0                   R/W-0  R/W-0               U-0

       --          --            --       --   --                 MI2C2IE   SI2C2IE             --

bit 7                                                                                                bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared         x = Bit is unknown

bit 15      Unimplemented: Read as `0'
bit 14
            RTCIE: Real-Time Clock/Calendar Interrupt Enable bit
bit 13-3    1 = Interrupt request is enabled
bit 2       0 = Interrupt request is not enabled

bit 1       Unimplemented: Read as `0'

bit 0       MI2C2IE: Master I2C2 Event Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            SI2C2IE: Slave I2C2 Event Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            Unimplemented: Read as `0'

2010 Microchip Technology Inc.                                                        DS39940D-page 85
PIC24FJ64GB004 FAMILY

REGISTER 7-15: IEC4: INTERRUPT ENABLE CONTROL REGISTER 4

       U-0         U-0  R/W-0             U-0               U-0      U-0    U-0        R/W-0

       --          --   CTMUIE            --                --       --            --  LVDIE

bit 15                                                                                               bit 8

       U-0         U-0  U-0               U-0               R/W-0    R/W-0  R/W-0               U-0

       --          --   --                --                CRCIE  U2ERIE   U1ERIE              --

bit 7                                                                                                bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared         x = Bit is unknown

bit 15-14   Unimplemented: Read as `0'
bit 13
            CTMUIE: CTMU Interrupt Enable bit
bit 12-9    1 = Interrupt request is enabled
bit 8       0 = Interrupt request is not enabled

bit 7-4     Unimplemented: Read as `0'
bit 3
            LVDIE: Low-Voltage Detect Interrupt Enable bit
bit 2       1 = Interrupt request is enabled
            0 = Interrupt request is not enabled
bit 1
            Unimplemented: Read as `0'
bit 0
            CRCIE: CRC Generator Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            U2ERIE: UART2 Error Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            U1ERIE: UART1 Error Interrupt Enable bit
            1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            Unimplemented: Read as `0'

DS39940D-page 86                                                             2010 Microchip Technology Inc.
                                          PIC24FJ64GB004 FAMILY

REGISTER 7-16: IEC5: INTERRUPT ENABLE CONTROL REGISTER 5

       U-0         U-0           U-0      U-0            U-0         U-0  U-0                 U-0
                                                                                              --
       --          --            --       --             --          --            --
                                                                                                   bit 8
bit 15

       U-0  R/W-0                U-0      U-0            U-0         U-0  U-0                 U-0

       --   USB1IE               --       --             --          --            --         --

bit 7                                                                                              bit 0

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared       x = Bit is unknown

bit 15-7    Unimplemented: Read as `0'
bit 6
            USB1IE: USB1 (USB OTG) Interrupt Enable bit
bit 5-0     1 = Interrupt request is enabled
            0 = Interrupt request is not enabled

            Unimplemented: Read as `0'

2010 Microchip Technology Inc.                                                        DS39940D-page 87
PIC24FJ64GB004 FAMILY

REGISTER 7-17: IPC0: INTERRUPT PRIORITY CONTROL REGISTER 0

      U-0         R/W-1   R/W-0             R/W-0   U-0                   R/W-1   R/W-0    R/W-0
       --         T1IP2   T1IP1             T1IP0                                OC1IP1   OC1IP0
bit 15                                              --   OC1IP2
                                                                                                  bit 8

      U-0         R/W-1   R/W-0             R/W-0   U-0                   R/W-1  R/W-0    R/W-0
       --         IC1IP2  IC1IP1            IC1IP0
bit 7                                               --   INT0IP2                 INT0IP1  INT0IP0

                                                                                                     bit 0

Legend:                   W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit          `1' = Bit is set
-n = Value at POR                                   `0' = Bit is cleared         x = Bit is unknown

bit 15     Unimplemented: Read as `0'
bit 14-12
           T1IP<2:0>: Timer1 Interrupt Priority bits
bit 11
bit 10-8   111 = Interrupt is Priority 7 (highest priority interrupt)
           
bit 7      
bit 6-4   
           001 = Interrupt is Priority 1
bit 3      000 = Interrupt source is disabled
bit 2-0
           Unimplemented: Read as `0'

           OC1IP<2:0>: Output Compare Channel 1 Interrupt Priority bits

           111 = Interrupt is Priority 7 (highest priority interrupt)
           
           
           
           001 = Interrupt is Priority 1
           000 = Interrupt source is disabled

           Unimplemented: Read as `0'

           IC1IP<2:0>: Input Capture Channel 1 Interrupt Priority bits

           111 = Interrupt is Priority 7 (highest priority interrupt)
           
           
           
           001 = Interrupt is Priority 1
           000 = Interrupt source is disabled

           Unimplemented: Read as `0'

           INT0IP<2:0>: External Interrupt 0 Priority bits

           111 = Interrupt is Priority 7 (highest priority interrupt)
           
           
           
           001 = Interrupt is Priority 1
           000 = Interrupt source is disabled

DS39940D-page 88                                                                  2010 Microchip Technology Inc.
                                         PIC24FJ64GB004 FAMILY

REGISTER 7-18: IPC1: INTERRUPT PRIORITY CONTROL REGISTER 1

      U-0   R/W-1                R/W-0   R/W-0   U-0                   R/W-1    R/W-0     R/W-0
       --   T2IP2                T2IP1   T2IP0                                 OC2IP1    OC2IP0
bit 15                                           --   OC2IP2
                                                                                                 bit 8

       U-0  R/W-1                R/W-0   R/W-0   U-0                      U-0  U-0                 U-0

       --   IC2IP2               IC2IP1  IC2IP0  --                       --         --            --

bit 7                                                                                                   bit 0

Legend:             W = Writable bit             U = Unimplemented bit, read as `0'
R = Readable bit    `1' = Bit is set
-n = Value at POR                                `0' = Bit is cleared          x = Bit is unknown

bit 15      Unimplemented: Read as `0'
bit 14-12
            T2IP<2:0>: Timer2 Interrupt Priority bits
bit 11
bit 10-8    111 = Interrupt is Priority 7 (highest priority interrupt)
            
bit 7      
bit 6-4     
            001 = Interrupt is Priority 1
bit 3-0     000 = Interrupt source is disabled

            Unimplemented: Read as `0'

            OC2IP<2:0>: Output Compare Channel 2 Interrupt Priority bits

            111 = Interrupt is Priority 7 (highest priority interrupt)
            
            
            
            001 = Interrupt is Priority 1
            000 = Interrupt source is disabled

            Unimplemented: Read as `0'

            IC2IP<2:0>: Input Capture Channel 2 Interrupt Priority bits

            111 = Interrupt is Priority 7 (highest priority interrupt)
            
            
            
            001 = Interrupt is Priority 1
            000 = Interrupt source is disabled

            Unimplemented: Read as `0'

2010 Microchip Technology Inc.                                                          DS39940D-page 89
PIC24FJ64GB004 FAMILY

REGISTER 7-19: IPC2: INTERRUPT PRIORITY CONTROL REGISTER 2

       U-0        R/W-1  R/W-0             R/W-0    U-0                  R/W-1    R/W-0    R/W-0
                                                                        SPI1IP2  SPI1IP1  SPI1IP0
       --   U1RXIP2 U1RXIP1 U1RXIP0                 --
                                                                                                  bit 8
bit 15

       U-0        R/W-1  R/W-0             R/W-0    U-0                   R/W-1  R/W-0    R/W-0
                                                                          T3IP2  T3IP1    T3IP0
       --   SPF1IP2      SPF1IP1           SPF1IP0  --
                                                                                                 bit 0
bit 7

Legend:                  W = Writable bit           U = Unimplemented bit, read as `0'
R = Readable bit         `1' = Bit is set
-n = Value at POR                                   `0' = Bit is cleared         x = Bit is unknown

bit 15      Unimplemented: Read as `0'
bit 14-12