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

型号

产品描述

搜索

dsPIC33CH64MP502T-I/SS

器件型号:dsPIC33CH64MP502T-I/SS
器件类别:半导体    嵌入式处理器和控制器    数字信号处理器和控制器 - DSP    DSC   
厂商名称:Microchip
厂商官网:https://www.microchip.com
标准:
下载文档

器件描述

数字信号处理器和控制器 - DSP, DSC 16 Bit DSC, Dual Core, 64K Flash, 16K+ 4K RAM, 100MHz, 28Pin, CAN, T&R

参数

产品属性属性值
制造商:Microchip
产品种类:数字信号处理器和控制器 - DSP, DSC
RoHS:详细信息
安装风格:SMD/SMT
封装 / 箱体:SSOP-28
系列:dsPIC33CH
产品:DSCs
核心:dsPIC33CH
最大时钟频率:180 MHz, 200 MHz
程序存储器大小:24 kB, 64 kB
数据 RAM 大小:4 kB, 16 kB
工作电源电压:3 V to 3.6 V
最小工作温度:- 40 C
最大工作温度:+ 85 C
封装:Cut Tape
封装:Reel
程序存储器类型:Flash
商标:Microchip Technology
接口类型:CAN, I2C, I2S, SPI, UART
数据总线宽度:16 bit
说明书类型:Fixed/Floating Point
内核数量:2 Core
计时器/计数器数量:1 Timer
产品类型:DSP - Digital Signal Processors & Controllers
工厂包装数量:2100
子类别:Embedded Processors & Controllers
电源电压-最大:3.6 V
电源电压-最小:3 V
商标名:dsPIC
看门狗计时器:Watchdog Timer

dsPIC33CH64MP502T-I/SS器件文档内容

                                       dsPIC33CH128MP508 FAMILY

      28/36/48/64/80-Pin Dual Core, 16-Bit Digital Signal Controllers

      with High-Resolution PWM and CAN Flexible Data (CAN FD)

Operating Conditions                                  Power Management

•  3V to 3.6V, -40°C to +125°C:                       •  Low-Power Management Modes

   -  Master Core: DC to 90 MIPS                         (Sleep, Idle, Doze)

   -  Slave Core: DC to 100 MIPS                      •  Integrated Power-on Reset and Brown-out Reset

Core: Dual 16-Bit dsPIC33CH CPU                       High Resolution PWM with Fine Edge

•  Master/Slave Core Operation                        Placement

•  Independent Peripherals for Master Core and        •  Up to 12 PWM Channels:

   Slave Core                                            -  Four channels for Master

•  Dual Partition for Slave PRAM LiveUpdate              -  Eight channels for Slave

•  Configurable Shared Resources for Master Core      •  250 ps PWM Resolution

   and Slave Core                                     •  Applications Include:

•  Master Core with 64-128 Kbytes of Program             -  DC/DC Converters

   Flash with ECC and 16K RAM                            -  AC/DC power supplies

•  Slave Core with 24 Kbytes of Program RAM              -  Uninterruptable Power Supply (UPS)

   (PRAM) with ECC and 4K Data Memory RAM                -  Motor Control: BLDC, PMSM, SR, ACIM

•  Fast 6-Cycle Divide

•  Message Boxes and FIFO to Communicate              Timers/Output Compare/Input Capture

   Between Master and Slave (MSI)

•  Code Efficient (C and Assembly) Architecture       •  Two General Purpose 16-Bit Timers:

•  40-Bit Wide Accumulators                              -  One each for Master and Slave

•  Single-Cycle (MAC/MPY) with Dual Data Fetch        •  Peripheral Trigger Generator (PTG) Module:

•  Single-Cycle, Mixed-Sign MUL Plus Hardware            -  One module for Master

   Divide                                                -  Slave can interrupt on select PTG sources

•  32-Bit Multiply Support                               -  Useful for automating complex sequences

•  Five Sets of Interrupt Context Selected Registers  •  12 SCCP Modules:

   and Accumulators per Core for Fast Interrupt          -  Eight modules for Master

   Response                                              -  Four modules for Slave

•  Zero Overhead Looping                                 -  Timer, Capture/Compare and PWM Modes

Clock Management                                         -  16 or 32-bit time base

                                                         -  16 or 32-bit capture

•  Internal Oscillator                                   -  4-deep capture buffer

•  Programmable PLLs and Oscillator    Clock             -  Fully Asynchronous Operation, Available in

   Sources                                                  Sleep Modes

•  Master Reference Clock Output

•  Slave Reference Clock Output

•  Fail-Safe Clock Monitor (FSCM)

•  Fast Wake-up and Start-up

•  Backup Internal Oscillator

•  LPRC Oscillator

 2017-2018 Microchip Technology Inc.                                                 DS70005319B-page 1
dsPIC33CH128MP508                                FAMILY

Advanced Analog Features                         Other Features

•  Four ADC Modules:                             •  PPS to Allow Function Remap

   -  One module for Master core                 •  Programmable Cyclic Redundancy Check (CRC)

   -  Three modules for Slave core                  for the Master

   -  12-bit, 3.5 Msps ADC                       •  Two SENT Modules for the Master

   -  Up to 18 conversion channels               Direct Memory Access (DMA)

•  Four DAC/Analog Comparator Modules:

   -  One module for Master core                 •  Eight DMA Channels:

   -  Three modules for Slave core                  -  Six DMA channels available for the Master core

   -  12-bit DACs with hardware slope               -  Two DMA channels available for the Slave core

      compensation

   -  15 ns analog comparators                   Debugger Development Support

•  Three PGA Modules:                            •  In-Circuit and In-Application Programming

   -  Three modules for Slave core               •  Simultaneous Debugging Support for Master and

   -  Can be read by Master ADC                     Slave Cores

   -  Option to interface with Master ADC        •  Master Only Debug and Slave Only Debug

•  Shared DAC/Analog Output:                        Support

   -  DAC/analog comparator outputs              •  Master with Three Complex, Five Simple

   -  PGA outputs                                   Breakpoints and Slave with One Complex,

                                                    Two Simple Breakpoints

Communication Interfaces                         •  IEEE 1149.2 Compatible (JTAG) Boundary Scan

•  Three UART Modules:                           •  Trace Buffer and Run-Time Watch

   -  Two modules for Master core                Safety Features

   -  One module for Slave core

   -  Support for DMX, LIN/J2602 protocols  and  •  DMT (Deadman Timer)

      IrDA®                                      •  ECC (Error Correcting Code)

•  Three 4-Wire SPI/I2S Modules:                 •  WDT (Watchdog Timer)

   -  Two modules for Master core                •  CodeGuard™ Security

   -  One module for Slave core                  •  CRC (Cyclic Redundancy Check)

•  CAN Flexible Data-Rate (FD) Module for   the  •  Two-Speed Start-up

   Master Core                                   •  Fail-Safe Clock Monitoring

•  Three I2C Modules:                            •  Backup FRC (BFRC)

   -  Two modules for Master                     •  Capless Internal Voltage Regulator

   -  One module for Slave                       •  Virtual Pins for Redundancy and Monitoring

   -  Support for SMBus

DS70005319B-page 2                                                   2017-2018 Microchip Technology Inc.
                                       dsPIC33CH128MP508                                        FAMILY

TABLE 1:        MASTER AND SLAVE CORE FEATURES

              Feature                  Master Core                                  Slave Core  Shared

Core Frequency                         90 MIPS @ 180 MHz                   100 MIPS @ 200 MHz   —

Program Memory                         64K-128 Kbytes                      24 Kbytes (PRAM)(2)  —

Internal Data RAM                      16 Kbytes                                    4 Kbytes    —

16-Bit Timer                           1                                            1           —

DMA                                    6                                            2           —

SCCP (Capture/Compare/Timer)           8                                            4           —

UART                                   2                                            1           —

SPI/I2S                                2                                            1           —

I2C                                    2                                            1           —

CAN FD                                 1                                            —           —

SENT                                   2                                            —           —

CRC                                    1                                            —           —

QEI                                    1                                            1           —

PTG                                    1                                            —           —

CLC                                    4                                            4           —

16-Bit High-Speed PWM                  4                                            8           —

ADC 12-Bit                             1                                            3           —

Digital Comparator                     4                                            4           —

12-Bit DAC/Analog CMP Module           1                                            3           —

Watchdog Timer                         1                                            1           —

Deadman Timer                          1                                            —           —

Input/Output                           69                                           69          69

Simple Breakpoints                     5                                            2           —

PGAs(1)                                —                                            3           3

DAC Output Buffer                      —                                            —           1

Oscillator                             1                                            1           1

Note 1:     Slave owns the peripheral/feature, but it is shared with  the  Master.

      2:    Dual Partition feature is available on Slave PRAM.

 2017-2018 Microchip Technology Inc.                                                           DS70005319B-page 3
DS70005319B-page 4                     dsPIC33CH128MP508 PRODUCT FAMILIES                                                                                                                                                                                                                 dsPIC33CH128MP508

                                       The device names, pin counts, memory sizes and peripheral availability of each device                          are listed in  Table    2.  The  following  pages  show  their  pinout                              diagrams.

                                       TABLE 2:  dsPIC33CHXXXMP50X FAMILY

                                                 Product        Core    Pins  Flash(1)  Data RAM  12-ADC Module  ADC Channels  Timers  SCCP   CAN FD  SENT  UART     SPI/I2S  I2C      QEI  CLC   PTG    CRC   PWM (High Resolution)  Analog Comparators  PGA  Current Bias Source  REFO

                                       dsPIC33CH64MP502         Master  28    64K       16K       1              12            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              11            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH128MP502        Master  28    128K      16K       1              12            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              11            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1     FAMILY

                                       dsPIC33CH64MP503         Master  36    64K       16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              16            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH128MP503        Master  36    128K      16K       1              15            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              16            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH64MP505         Master  48    64K       16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              15            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH128MP505        Master  48    128K      16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

 2017-2018 Microchip Technology Inc.                           Slave         24K       4K        3              15            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH64MP506         Master  64    64K       16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              18            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH128MP506        Master  64    128K      16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              18            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH64MP508         Master  80    64K       16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              18            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       dsPIC33CH128MP508        Master  80    128K      16K       1              16            1       8      1       2     2        2            2    1    4     1      1     4                      1                   —    1                    1

                                                                Slave         24K       4K        3              18            1       4      —       —     1        1            1    1    4     —      —     8                      3                   3    —                    1

                                       Note  1:  For the Slave  core, the implemented program     memory of                    24K is  PRAM.
 2017-2018 Microchip Technology Inc.  TABLE 3:  dsPIC33CHXXXMP20X FAMILY WITH NO CAN FD

                                                 Product        Core    Pins  Flash(1)  Data RAM  ADC Modules  ADC Channels  Timers  SCCP   CAN FD  SENT  UART  SPI/I2S  I2C  QEI  CLC  PTG  CRC  PWM (High Resolution)  Analog Comparators  PGA  Current Bias Source  REFO

                                       dsPIC33CH64MP202         Master  28    64K       16K       1            12            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            11            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH128MP202        Master  28    128K      16K       1            12            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            11            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH64MP203         Master  36    64K       16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            16            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1     dsPIC33CH128MP508 FAMILY

                                       dsPIC33CH128MP203        Master  36    128K      16K       1            15            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            16            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH64MP205         Master  48    64K       16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            15            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH128MP205        Master  48    128K      16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            15            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH64MP206         Master  64    64K       16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            18            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH128MP206        Master  64    128K      16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            18            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH64MP208         Master  80    64K       16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

                                                                Slave         24K       4K        3            18            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       dsPIC33CH128MP208        Master  80    128K      16K       1            16            1       8      —       2     2     2        2    1    4    1    1    4                      1                   —    1                    1

DS70005319B-page 5                                              Slave         24K       4K        3            18            1       4      —       —     1     1        1    1    4    —    —    8                      3                   3    —                    1

                                       Note  1:  For the Slave  core, the implemented program     memory of                  24K is  PRAM.
dsPIC33CH128MP508                                         FAMILY

Pin Diagrams

         28-Pin SSOP(1)

                                           RA1            1                                       28  RA0

                                           RA2            2                                       27  MCLR

                                           RA3            3   dsPIC33CHXXXMP502dsPIC33CHXXXMP202  26  RB15

                                           RA4            4                                       25  RB14

                                           AVDD           5                                       24  RB13

                                           AVSS           6                                       23  RB12

                                           VDD            7                                       22  RB11

                                           VSS            8                                       21  RB10

                                           RB0            9                                       20  VDD

                                           RB1            10                                      19  VSS

                                           RB2            11                                      18  RB9

                                           RB3            12                                      17  RB8

                                           RB4            13                                      16  RB7

                                           RB5            14                                      15  RB6

         Note 1:  Shaded pins are up to 5.5 VDC tolerant  (refer  to             Table 3-28 and Table       4-25).  For  the  list  of  analog  ports,

                  refer to Table 3-27 and Table 4-24.

TABLE    4:       28-PIN SSOP

Pin #                         Master Core                                                                   Slave Core

1        AN1/RA1                                                                 S1AN15/S1RA1

2        AN2/RA2                                                                 S1AN16/S1RA2

3        AN3/IBIAS0/RA3                                                          S1AN0/S1CMP1A/S1PGA1P1/S1RA3

4        AN4/IBIAS1/RA4                                                          S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

5        AVDD                                                                    AVDD

6        AVSS                                                                    AVSS

7        VDD                                                                     VDD

8        VSS                                                                     VSS

9        OSCI/CLKI/AN5/RP32/RB0                                                  S1AN5/S1RP32/S1RB0

10       OSCO/CLKO/AN6/IBIAS2/RP33/RB1(1)                                        S1AN4/S1RP33/S1RB1

11       DACOUT/AN7/CMP1D/RP34/INT0/RB2                                          S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/

                                                                                 S1RP34/S1INT0/S1RB2

12       PGD2/AN8/RP35/RB3                                                       S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

13       PGC2/RP36/RB4                                                           S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

14       PGD3/RP37/SDA2/RB5                                                      S1PGD3/S1RP37/S1RB5

15       PGC3/RP38/SCL2/RB6                                                      S1PGC3/S1RP38/S1RB6

16       TDO/AN9/RP39/RB7                                                        S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

17       PGD1/AN10/RP40/SCL1/RB8                                                 S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

18       PGC1/AN11/RP41/SDA1/RB9                                                 S1PGC1/S1RP41/S1SDA1/S1RB9

19       VSS                                                                     VSS

20       VDD                                                                     VDD

21       TMS/RP42/PWM3H/RB10                                                     S1RP42/S1PWM3H/S1RB10

22       TCK/RP43/PWM3L/RB11                                                     S1RP43/S1PWM8H/S1PWM3L/S1RB11

23       TDI/RP44/PWM2H/RB12                                                     S1RP44/S1PWM2H/S1RB12

24       RP45/PWM2L/RB13                                                         S1RP45/S1PWM7H/S1PWM2L/S1RB13

25       RP46/PWM1H/RB14                                                         S1RP46/S1PWM1H/S1RB14

26       RP47/PWM1L/RB15                                                         S1RP47/S1PWM6H/S1PWM1L/S1RB15

27       MCLR                                                                                                       —

28       AN0/CMP1A/RA0                                                           S1RA0

Legend:  RPn and S1RPn represent remappable pins for Peripheral Pin Select functions.

Note 1:  At device power-up (POR), a pulse with an amplitude around 2V and a duration greater than 500 µs may be observed on this device pin,

         independent of pull-down resistors. It is recommended not to use this pin as an output driver unless the circuit being driven can endure this

         active duration.

DS70005319B-page 6                                                                                           2017-2018 Microchip Technology Inc.
                                                   dsPIC33CH128MP508                                            FAMILY

Pin Diagrams (Continued)

       28-Pin UQFN(1,2)                                  RB13  RB12  RB11  RB10  VDD  VSS  RB9

                                                         28 27 26 25 24 23 22

                                          RB14     1                                            21  RB8

                                          RB15     2                                            20  RB7

                                          MCLR     3     dsPIC33CHXXXMP502                      19  RB6

                                          RA0      4     dsPIC33CHXXXMP202                      18  RB5

                                          RA1      5                                            17  RB4

                                          RA2      6                                            16  RB3

                                          RA3      7                                            15  RB2

                                                          8    9     10 11 12 13 14

                                                         RA4   AVDD  AVSS  VDD   VSS  RB0  RB1

Note     1:   Shaded pins are up to 5.5 VDC tolerant (refer to Table 3-28 and Table 4-25). For the list of analog ports, refer to

              Table 3-27 and Table 4-24.

         2:   The large center pad on the bottom of the package may be left floating or connected to VSS. The four-corner anchor

              pads are internally connected to the large bottom pad, and therefore, must be connected to the same net as the large

              center pad.

TABLE    5:       28-PIN UQFN

Pin #             Master Core                                                                       Slave Core

1        RP46/PWM1H/RB14                           S1RP46/S1PWM1H/S1RB14

2        RP47/PWM1L/RB15                           S1RP47/S1PWM6H/S1PWM1L/S1RB15

3        MCLR                                                                                       —

4        AN0/CMP1A/RA0                             S1RA0

5        AN1/RA1                                   S1AN15/S1RA1

6        AN2/RA2                                   S1AN16/S1RA2

7        AN3/IBIAS0/RA3                            S1AN0/S1CMP1A/S1PGA1P1/S1RA3

8        AN4/IBIAS1/RA4                            S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

9        AVDD                                      AVDD

10       AVSS                                      AVSS

11       VDD                                       VDD

12       VSS                                       VSS

13       OSCI/CLKI/AN5/RP32/RB0                    S1AN5/S1RP32/S1RB0

14       OSCO/CLKO/AN6/IBIAS2/RP33/RB1             S1AN4/S1RP33/S1RB1

15       DACOUT/AN7/CMP1D/RP34/INT0/RB2            S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/S1RP34/S1INT0/S1RB2

16       PGD2/AN8/RP35/RB3                         S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

17       PGC2/RP36/RB4                             S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

18       PGD3/RP37/SDA2/RB5                        S1PGD3/S1RP37/S1RB5

19       PGC3/RP38/SCL2/RB6                        S1PGC3/S1RP38/S1RB6

20       TDO/AN9/RP39/RB7                          S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

21       PGD1/AN10/RP40/SCL1/RB8                   S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

22       PGC1/AN11/RP41/SDA1/RB9                   S1PGC1/S1RP41/S1SDA1/S1RB9

23       VSS                                       VSS

24       VDD                                       VDD

25       TMS/RP42/PWM3H/RB10                       S1RP42/S1PWM3H/S1RB10

26       TCK/RP43/PWM3L/RB11                       S1RP43/S1PWM8H/S1PWM3L/S1RB11

27       TDI/RP44/PWM2H/RB12                       S1RP44/S1PWM2H/S1RB12

28       RP45/PWM2L/RB13                           S1RP45/S1PWM7H/S1PWM2L/S1RB13

Legend:  RPn and S1RPn represent remappable  pins  for Peripheral Pin Select functions.

 2017-2018 Microchip Technology Inc.                                                                           DS70005319B-page 7
dsPIC33CH128MP508                                          FAMILY

Pin Diagrams (Continued)

36-Pin UQFN(1,2)

                                               RB13  RB12  RB11  RB10  VDD  VSS  RC5  RC4  RB9

                                               36    35    34    33    32   31   30   29   28       RB8

                          RB14              1                                                   27

                          RB15              2                                                   26  RB7

                          MCLR              3                                                   25  RB6

                                       RC0  4                                                   24  RB5

                                       RA0  5        dsPIC33CHXXXMP503                          23  VDD

                                                     dsPIC33CHXXXMP203                          22  VSS

                                       RA1  6

                                       RA2  7                                                   21  RB4

                                       RA3  8                                                   20  RB3

                                       RA4  9                                                   19  RB2

                                               10    11    12    13    14   15   16   17   18

                                               AVDD  AVSS  RC1   RC2   VDD  VSS  RC3  RB0  RB1

Note 1:  Shaded pins are up to 5.5 VDC tolerant (refer to Table 3-28 and Table 4-25). For the list of analog ports, refer

         to Table 3-27 and Table 4-24.

2:       The large center pad on the bottom of the package may be left floating or connected to VSS. The four-corner

         anchor pads are internally connected to the large bottom pad, and therefore, must be connected to the same

         net as the large center pad.

DS70005319B-page 8                                                                                        2017-2018 Microchip Technology  Inc.
                                                         dsPIC33CH128MP508 FAMILY

TABLE    6:       36-PIN UQFN

Pin #                            Master Core                                                     Slave Core

1        RP46/PWM1H/RB14                                                  S1RP46/S1PWM1H/S1RB14

2        RP47/PWM1L/RB15                                                  S1RP47/S1PWM6H/S1PWM1L/S1RB15

3        MCLR                                                                                         —

4        AN12/IBIAS3/RP48/RC0                                             S1AN10/S1RP48/S1RC0

5        AN0/CMP1A/RA0                                                    S1RA0

6        AN1/RA1                                                          S1AN15/S1RA1

7        AN2/RA2                                                          S1AN16/S1RA2

8        AN3/IBIAS0/RA3                                                   S1AN0/S1CMP1A/S1PGA1P1/S1RA3

9        AN4/IBIAS1/RA4                                                   S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

10       AVDD                                                             AVDD

11       AVSS                                                             AVSS

12       AN13/ISRC0/RP49/RC1                                              S1ANA1/S1RP49/S1RC1

13       AN14/ISRC1/RP50/RC2                                              S1ANA0/S1RP50/S1RC2

14       VDD                                                              VDD

15       VSS                                                              VSS

16       CMP1B/RP51/RC3                                                   S1AN8/S1CMP3B/S1RP51/S1RC3

17       OSCI/CLKI/AN5/RP32/RB0                                           S1AN5/S1RP32/S1RB0

18       OSCO/CLKO/AN6/IBIAS2/RP33/RB1                                    S1AN4/S1RP33/S1RB1

19       DACOUT/AN7/CMP1D/RP34/INT0/RB2                                   S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/

                                                                          S1RP34/S1INT0/S1RB2

20       PGD2/AN8/RP35/RB3                                                S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

21       PGC2/RP36/RB4                                                    S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

22       VSS                                                              VSS

23       VDD                                                              VDD

24       PGD3/RP37/SDA2/RB5                                               S1PGD3/S1RP37/S1RB5

25       PGC3/RP38/SCL2/RB6                                               S1PGC3/S1RP38/S1RB6

26       TDO/AN9/RP39/RB7                                                 S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

27       PGD1/AN10/RP40/SCL1/RB8                                          S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

28       PGC1/AN11/RP41/SDA1/RB9                                          S1PGC1/S1RP41/S1SDA1/S1RB9

29       RP52/RC4                                                         S1RP52/S1PWM2H/S1RC4

30       RP53/RC5                                                         S1RP53/S1PWM2L/S1RC5

31       VSS                                                              VSS

32       VDD                                                              VDD

33       TMS/RP42/PWM3H/RB10                                              S1RP42/S1PWM3H/S1RB10

34       TCK/RP43/PWM3L/RB11                                              S1RP43/S1PWM8H/S1PWM3L/S1RB11

35       TDI/RP44/PWM2H/RB12                                              S1RP44/S1PWM7L/S1RB12

36       RP45/PWM2L/RB13                                                  S1RP45/S1PWM7H/S1RB13

Legend:  RPn and S1RPn represent remappable   pins  for  Peripheral  Pin  Select functions.

 2017-2018 Microchip Technology Inc.                                                                         DS70005319B-page 9
dsPIC33CH128MP508                                          FAMILY

Pin Diagrams (Continued)

48-Pin QFN/TQFP/UQFN(1,2)

                               RB13            RB12  RB11  RB10  RD1  VDD  VSS  RC11  RC10  RC5  RC4   RB9

                               48              47    46    45    44   43   42   41    40    39   38    37

                     RB14  1                                                                                36  RB8

                     RB15  2                                                                                35  RB7

                     RC12  3                                                                                34  RB6

                     RC13  4                                                                                33  RB5

                     MCLR  5                                                                                32  VDD

                     RD13  6                         dsPIC33CHXXXMP505                                      31  VSS

                     RC0   7                         dsPIC33CHXXXMP205                                      30  RD8

                     RA0   8                                                                                29  RC9

                     RA1   9                                                                                28  RC8

                     RA2   10                                                                               27  RB4

                     RA3   11                                                                               26  RB3

                     RA4   12                                                                               25  RB2

                               13              14    15    16    17   18   19   20    21    22   23    24

                               AVDD            AVSS  RC1   RC2   RC6  VDD  VSS  RC3   RB0   RB1  RD10  RC7

Note  1:  Shaded pins are up to 5.5 VDC tolerant (refer to Table 3-28 and Table 4-25). For the list of analog ports,

          refer to Table 3-27 and Table 4-24.

      2:  The large center pad on the bottom of the package may be left floating or connected to VSS. The four-corner

          anchor pads are internally connected to the large bottom pad, and therefore, must be connected to the

          same net as the large center pad.

DS70005319B-page 10                                                                                          2017-2018 Microchip Technology  Inc.
                                                            dsPIC33CH128MP508 FAMILY

TABLE 7:           48-PIN QFN/TQFP/UQFN

Pin #                        Master Core                                                      Slave Core

1      RP46/PWM1H/RB14                                      S1RP46/S1PWM6L/S1RB14

2      RP47/PWM1L/RB15                                      S1RP47/S1PWM6H/S1RB15

3      RP60/RC12                                            S1RP60/S1PWM3H/S1RC12

4      RP61/RC13                                            S1RP61/S1PWM3L/S1RC13

5      MCLR                                                                                   —

6      RD13                                                 S1ANN0/S1PGA1N2/S1RD13

7      AN12/IBIAS3/RP48/RC0                                 S1AN10/S1RP48/S1RC0

8      AN0/CMP1A/RA0                                        S1RA0

9      AN1/RA1                                              S1AN15/S1RA1

10     AN2/RA2                                              S1AN16/S1RA2

11     AN3/IBIAS0/RA3                                       S1AN0/S1CMP1A/S1PGA1P1/S1RA3

12     AN4/IBIAS1/RA4                                       S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

13     AVDD                                                 AVDD

14     AVSS                                                 AVSS

15     AN13/ISRC0/RP49/RC1                                  S1ANA1/S1RP49/S1RC1

16     AN14/ISRC1/RP50/RC2                                  S1ANA0/S1RP50/S1RC2

17     RP54/RC6                                             S1AN11/S1CMP1B/S1RP54/S1RC6

18     VDD                                                  VDD

19     VSS                                                  VSS

20     CMP1B/RP51/RC3                                       S1AN8/S1CMP3B/S1RP51/S1RC3

21     OSCI/CLKI/AN5/RP32/RB0                               S1AN5/S1RP32/S1RB0

22     OSCO/CLKO/AN6/IBIAS2/RP33/RB1                        S1AN4/S1RP33/S1RB1

23     ISRC3/RD10                                           S1AN13/S1CMP2B/S1RD10

24     AN15/ISRC2/RP55/RC7                                  S1AN12/S1RP55/S1RC7

25     DACOUT/AN7/CMP1D/RP34/INT0/RB2                       S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/S1RP34/

                                                            S1INT0/S1RB2

26     PGD2/AN8/RP35/RB3                                    S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

27     PGC2/RP36/RB4                                        S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

28     RP56/ASDA1/SCK2/RC8                                  S1RP56/S1ASDA1/S1SCK1/S1RC8

29     RP57/ASCL1/SDI2/RC9                                  S1RP57/S1ASCL1/S1SDI1/S1RC9

30     SDO2/PCI19/RD8                                       S1SDO1/S1PCI19/S1RD8

31     VSS                                                  VSS

32     VDD                                                  VDD

33     PGD3/RP37/SDA2/RB5                                   S1PGD3/S1RP37/S1RB5

34     PGC3/RP38/SCL2/RB6                                   S1PGC3/S1RP38/S1RB6

35     TDO/AN9/RP39/RB7                                     S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

36     PGD1/AN10/RP40/SCL1/RB8                              S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

37     PGC1/AN11/RP41/SDA1/RB9                              S1PGC1/S1RP41/S1SDA1/S1RB9

38     RP52/RC4                                             S1RP52/S1PWM2H/S1RC4

39     RP53/RC5                                             S1RP53/S1PWM2L/S1RC5

40     RP58/RC10                                            S1RP58/S1PWM1H/S1RC10

41     RP59/RC11                                            S1RP59/S1PWM1L/S1RC11

42     VSS                                                  VSS

43     VDD                                                  VDD

44     RP65/RD1                                             S1RP65/S1PWM4H/S1RD1

45     TMS/RP42/PWM3H/RB10                                  S1RP42/S1PWM8L/S1RB10

46     TCK/RP43/PWM3L/RB11                                  S1RP43/S1PWM8H/S1RB11

47     TDI/RP44/PWM2H/RB12                                  S1RP44/S1PWM7L/S1RB12

48     RP45/PWM2L/RB13                                      S1RP45/S1PWM7H/S1RB13

Legend:     RPn and S1RPn represent  remappable  pins  for  Peripheral Pin Select functions.

 2017-2018 Microchip Technology Inc.                                                                     DS70005319B-page 11
dsPIC33CH128MP508                                              FAMILY

Pin Diagrams (Continued)

64-Pin TQFP/QFN(1,2)

                                RB13         RB12  RB11  RB10  RD0  RD1  RD2  VDD  VSS  RD3  RD4  RC11  RC10  RC5   RC4   RB9

                                64           63    62    61    60   59   58   57   56   55   54   53    52    51    50    49

                      RB14  1                                                                                                  48  RB8

                      RB15  2                                                                                                  47  RB7

                      RC12  3                                                                                                  46  RB6

                      RC13  4                                                                                                  45  RB5

                      RC14  5                                                                                                  44  RD5

                      RC15  6                                                                                                  43  RD6

                      MCLR  7                            dsPIC33CHXXXMP506                                                     42  RD7

                      RD15  8                            dsPIC33CHXXXMP206                                                     41  VDD

                      VSS   9                                                                                                  40  Vss

                      VDD   10                                                                                                 39  RD8

                      RD14  11                                                                                                 38  RD9

                      RD13  12                                                                                                 37  RC9

                      RC0   13                                                                                                 36  RC8

                      RA0   14                                                                                                 35  RB4

                      RA1   15                                                                                                 34  RB3

                      RA2   16                                                                                                 33  RB2

                                17   18        19    20    21      22  23   24   25   26   27   28   29       30  31      32

                                RA3  RA4       AVDD  AVSS  RD12  RC1   RC2  RC6  VDD  VSS  RC3  RB0     RB1   RD11  RD10  RC7

Note  1:  Shaded pins are up to 5.5 VDC tolerant (refer to Table 3-28 and Table 4-25). For the list of analog ports,

          refer to Table 3-27 and Table 4-24.

      2:  The large center pad on the bottom of the package may be left floating or connected to VSS. The four-corner

          anchor pads are internally connected to the large bottom pad, and therefore, must be connected to the

          same net as the large center pad.

DS70005319B-page 12                                                                                                                 2017-2018 Microchip Technology  Inc.
                                                         dsPIC33CH128MP508 FAMILY

TABLE 8:           64-PIN TQFP/QFN

Pin #                      Master Core                                                     Slave Core

1      RP46/PWM1H/RB14                                   S1RP46/S1RB14

2      RP47/PWM1L/RB15                                   S1RP47/S1RB15

3      RP60/PWM4H/RC12                                   S1RP60/S1RC12

4      RP61/PWM4L/RC13                                   S1RP61/S1RC13

5      RP62/RC14                                         S1RP62/S1PWM7H/S1RC14

6      RP63/RC15                                         S1RP63/S1PWM7L/S1RC15

7      MCLR                                                                                —

8      PCI22/RD15                                        S1PCI22/S1RD15

9      VSS                                               VSS

10     VDD                                               VDD

11     PCI21/RD14                                        S1ANN1/S1PGA2N2/S1PCI21/S1RD14

12     RD13                                              S1ANN0/S1PGA1N2/S1RD13

13     AN12/IBIAS3/RP48/RC0                              S1AN10/S1RP48/S1RC0

14     AN0/CMP1A/RA0                                     S1RA0

15     AN1/RA1                                           S1AN15/S1RA1

16     AN2/RA2                                           S1AN16/S1RA2

17     AN3/IBIAS0/RA3                                    S1AN0/S1CMP1A/S1PGA1P1/S1RA3

18     AN4/IBIAS1/RA4                                    S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

19     AVDD                                              AVDD

20     AVSS                                              AVSS

21     RD12                                              S1AN14/S1PGA2P2/S1RD12

22     AN13/ISRC0/RP49/RC1                               S1ANA1/S1RP49/S1RC1

23     AN14/ISRC1/RP50/RC2                               S1ANA0/S1RP50/S1RC2

24     RP54/RC6                                          S1AN11/S1CMP1B/S1RP54/S1RC6

25     VDD                                               VDD

26     VSS                                               VSS

27     CMP1B/RP51/RC3                                    S1AN8/S1CMP3B/S1RP51/S1RC3

28     OSCI/CLKI/AN5/RP32/RB0                            S1AN5/S1RP32/S1RB0

29     OSCO/CLKO/AN6/IBIAS2/RP33/RB1                     S1AN4/S1RP33/S1RB1

30     RD11                                              S1AN17/S1PGA1P2/S1RD11

31     ISRC3/RD10                                        S1AN13/S1CMP2B/S1RD10

32     AN15/ISRC2/RP55/RC7                               S1AN12/S1RP55/S1RC7

33     DACOUT/AN7/CMP1D/RP34/INT0/RB2                    S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/S1RP34/

                                                         S1INT0/S1RB2

34     PGD2/AN8/RP35/RB3                                 S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

35     PGC2/RP36/RB4                                     S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

36     RP56/ASDA1/SCK2/RC8                               S1RP56/S1ASDA1/S1SCK1/S1RC8

37     RP57/ASCL1/SDI2/RC9                               S1RP57/S1ASCL1/S1SDI1/S1RC9

38     PCI20/RD9                                         S1PCI20/S1RD9

39     SDO2/PCI19/RD8                                    S1SDO1/S1PCI19/S1RD8

40     VSS                                               VSS

41     VDD                                               VDD

42     RP71/RD7                                          S1RP71/S1PWM8H/S1RD7

43     RP70/RD6                                          S1RP70/S1PWM6H/S1RD6

44     RP69/RD5                                          S1RP69/S1PWM6L/S1RD5

45     PGD3/RP37/SDA2/RB5                                S1PGD3/S1RP37/S1RB5

46     PGC3/RP38/SCL2/RB6                                S1PGC3/S1RP38/S1RB6

47     TDO/AN9/RP39/RB7                                  S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

48     PGD1/AN10/RP40/SCL1/RB8                           S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

49     PGC1/AN11/RP41/SDA1/RB9                           S1PGC1/S1RP41/S1SDA1/S1RB9

50     RP52/RC4                                          S1RP52/S1PWM2H/S1RC4

Legend:  RPn and S1RPn represent  remappable  pins  for  Peripheral Pin Select functions.

 2017-2018 Microchip Technology Inc.                                                                   DS70005319B-page 13
dsPIC33CH128MP508 FAMILY

TABLE 8:          64-PIN TQFP/QFN (CONTINUED)

Pin #                   Master Core                                                        Slave Core

51     RP53/RC5                                          S1RP53/S1PWM2L/S1RC5

52     RP58/RC10                                         S1RP58/S1PWM1H/S1RC10

53     RP59/RC11                                         S1RP59/S1PWM1L/S1RC11

54     RP68/RD4                                          S1RP68/S1PWM3H/S1RD4

55     RP67/RD3                                          S1RP67/S1PWM3L/S1RD3

56     VSS                                               VSS

57     VDD                                               VDD

58     RP66/RD2                                          S1RP66/S1PWM8L/S1RD2

59     RP65/RD1                                          S1RP65/S1PWM4H/S1RD1

60     RP64/RD0                                          S1RP64/S1PWM4L/S1RD0

61     TMS/RP42/PWM3H/RB10                               S1RP42/S1RB10

62     TCK/RP43/PWM3L/RB11                               S1RP43/S1RB11

63     TDI/RP44/PWM2H/RB12                               S1RP44/S1RB12

64     RP45/PWM2L/RB13                                   S1RP45/S1RB13

Legend:  RPn and S1RPn represent  remappable  pins  for  Peripheral Pin Select functions.

DS70005319B-page 14                                                                         2017-2018  Microchip  Technology  Inc.
                                                        dsPIC33CH128MP508                                                                                           FAMILY

Pin  Diagrams (Continued)

     80-Pin TQFP(1)

                                            RB13  RE15  RB12  RE14RB11  RB10  RD0 RD1 RD2 VDD  VSS  RD3 RD4 RC11RC10  RC5RE13RC4RE12 RB9

                                            80    79    78    77    76  75    74  73  72  71   70  69   68  67    6665   64    63  6261         RB8

                     RB14               1                                                                                                   60
                     RE0                2                                                                                                   59  RE11
                     RB15
                                        3                                                                                                   58  RB7
                     RE1                                                                                                                    57  RE10
                     RC12               4                                                                                                       RB6
                                        5                                                                                                   56
                     RC13               6                                                                                                   55  RB5
                     RC14               7                                                                                                       RD5
                                                                                                                                            54
                     RC15               8                                                                                                   53  RD6
                                                                                                                                            52  RD7
                     MCLR               9                           dsPIC33CHXXXMP508                                                           VDD
                     RD15               10                                                                                                  51
                     VSS                                            dsPIC33CHXXXMP208                                                       50  VSS
                     VDD                11                                                                                                  49  RD8
                                        12
                     RD14                                                                                                                   48  RD9
                     RD13               13                                                                                                  47  RC9
                                        14
                     RC0                                                                                                                    46  RC8
                     RA0                15                                                                                                      RB4
                                        16                                                                                                  45
                     RE2                                                                                                                        RE9
                     RA1                17                                                                                                  44  RB3
                                        18
                                                                                                                                            43  RE8
                                                                                                                                            42
                     RE3                19                                                                                                      RB2
                                                                                                                                            41
                     RA2                20

                                            21    22  23  24   25   26    27    28    29  30  31   32  33   34    3536   37    38  39  40

                                            RA3  RE4RA4   RE5  AVDD AVSS  RD12  RC1 RC2RC6    VDD  VSS RC3 RB0    RB1 RD11RE6  RD10RE7 RC7

     Note 1:  Shaded pins are up to 5.5 VDC tolerant (refer                            to  Table         3-28     and       Table       4-25).  For  the  list  of  analog

              ports, refer to Table 3-27 and Table 4-24.

  2017-2018 Microchip Technology Inc.                                                                                                                              DS70005319B-page  15
dsPIC33CH128MP508 FAMILY

TABLE 9:           80-PIN TQFP

Pin #                     Master Core                                                      Slave Core

1      RP46/PWM1H/RB14                                   S1RP46/S1RB14

2      RE0                                               S1RE0

3      RP47/PWM1L/RB15                                   S1RP47/S1RB15

4      RE1                                               S1RE1

5      RP60/PWM4H/RC12                                   S1RP60/S1RC12

6      RP61/PWM4L/RC13                                   S1RP61/S1RC13

7      RP62/RC14                                         S1RP62/S1PWM7H/S1RC14

8      RP63/RC15                                         S1RP63/S1PWM7L/S1RC15

9      MCLR                                                                                —

10     PCI22/RD15                                        S1PCI22/S1RD15

11     VSS                                               VSS

12     VDD                                               VDD

13     PCI21/RD14                                        S1ANN1/S1PGA2N2/S1PCI21/S1RD14

14     RD13                                              S1ANN0/S1PGA1N2/S1RD13

15     AN12/IBIAS3/RP48/RC0                              S1AN10/S1RP48/S1RC0

16     AN0/CMP1A/RA0                                     S1RA0

17     RE2                                               S1RE2

18     AN1/RA1                                           S1AN15/S1RA1

19     RE3                                               S1RE3

20     AN2/RA2                                           S1AN16/S1RA2

21     AN3/IBIAS0/RA3                                    S1AN0/S1CMP1A/S1PGA1P1/S1RA3

22     RE4                                               S1RE4

23     AN4/IBIAS1/RA4                                    S1MCLR3/S1AN1/S1CMP2A/S1PGA2P1/S1PGA3P2/S1RA4

24     RE5                                               S1RE5

25     AVDD                                              AVDD

26     AVSS                                              AVSS

27     RD12                                              S1AN14/S1PGA2P2/S1RD12

28     AN13/ISRC0/RP49/RC1                               S1ANA1/S1RP49/S1RC1

29     AN14/ISRC1/RP50/RC2                               S1ANA0/S1RP50/S1RC2

30     RP54/RC6                                          S1AN11/S1CMP1B/S1RP54/S1RC6

31     VDD                                               VDD

32     VSS                                               VSS

33     CMP1B/RP51/RC3                                    S1AN8/S1CMP3B/S1RP51/S1RC3

34     OSCI/CLKI/AN5/RP32/RB0                            S1AN5/S1RP32/S1RB0

35     OSCO/CLKO/AN6/IBIAS2/RP33/RB1                     S1AN4/S1RP33/S1RB1

36     RD11                                              S1AN17/S1PGA1P2/S1RD11

37     RE6                                               S1PGA3N2/S1RE6

38     ISRC3/RD10                                        S1AN13/S1CMP2B/S1RD10

39     RE7                                               S1RE7

40     AN15/ISRC2/RP55/RC7                               S1AN12/S1RP55/S1RC7

41     DACOUT/AN7/CMP1D/RP34/INT0/RB2                    S1MCLR2/S1AN3/S1ANC0/S1ANC1/S1CMP1D/S1CMP2D/S1CMP3D/S1RP34/

                                                         S1INT0/S1RB2

42     RE8                                               S1RE8

43     PGD2/AN8/RP35/RB3                                 S1PGD2/S1AN18/S1CMP3A/S1PGA3P1/S1RP35/S1RB3

44     RE9                                               S1RE9

45     PGC2/RP36/RB4                                     S1PGC2/S1AN9/S1RP36/S1PWM5L/S1RB4

46     RP56/ASDA1/SCK2/RC8                               S1RP56/S1ASDA1/S1SCK1/S1RC8

47     RP57/ASCL1/SDI2/RC9                               S1RP57/S1ASCL1/S1SDI1/S1RC9

48     PCI20/RD9                                         S1PCI20/S1RD9

49     SDO2/PCI19/RD8                                    S1SDO1/S1PCI19/S1RD8

50     VSS                                               VSS

Legend:  RPn and S1RPn represent  remappable  pins  for  Peripheral Pin Select functions.

DS70005319B-page 16                                                                         2017-2018 Microchip Technology  Inc.
                                                         dsPIC33CH128MP508                             FAMILY

TABLE 9:           80-PIN TQFP (CONTINUED)

Pin #                      Master Core                                                     Slave Core

51     VDD                                               VDD

52     RP71/RD7                                          S1RP71/S1PWM8H/S1RD7

53     RP70/RD6                                          S1RP70/S1PWM6H/S1RD6

54     RP69/RD5                                          S1RP69/S1PWM6L/S1RD5

55     PGD3/RP37/SDA2/RB5                                S1PGD3/S1RP37/S1RB5

56     PGC3/RP38/SCL2/RB6                                S1PGC3/S1RP38/S1RB6

57     RE10                                              S1RE10

58     TDO/AN9/RP39/RB7                                  S1MCLR1/S1AN6/S1RP39/S1PWM5H/S1RB7

59     RE11                                              S1RE11

60     PGD1/AN10/RP40/SCL1/RB8                           S1PGD1/S1AN7/S1RP40/S1SCL1/S1RB8

61     PGC1/AN11/RP41/SDA1/RB9                           S1PGC1/S1RP41/S1SDA1/S1RB9

62     ASCL2/RE12                                        S1RE12

63     RP52/RC4                                          S1RP52/S1PWM2H/S1RC4

64     ASDA2/RE13                                        S1RE13

65     RP53/RC5                                          S1RP53/S1PWM2L/S1RC5

66     RP58/RC10                                         S1RP58/S1PWM1H/S1RC10

67     RP59/RC11                                         S1RP59/S1PWM1L/S1RC11

68     RP68/RD4                                          S1RP68/S1PWM3H/S1RD4

69     RP67/RD3                                          S1RP67/S1PWM3L/S1RD3

70     VSS                                               VSS

71     VDD                                               VDD

72     RP66/RD2                                          S1RP66/S1PWM8L/S1RD2

73     RP65/RD1                                          S1RP65/S1PWM4H/S1RD1

74     RP64/RD0                                          S1RP64/S1PWM4L/S1RD0

75     TMS/RP42/PWM3H/RB10                               S1RP42/S1RB10

76     TCK/RP43/PWM3L/RB11                               S1RP43/S1RB11

77     RE14                                              S1RE14

78     TDI/RP44/PWM2H/RB12                               S1RP44/S1RB12

79     RE15                                              S1RE15

80     RP45/PWM2L/RB13                                   S1RP45/S1RB13

Legend:  RPn and S1RPn represent  remappable  pins  for  Peripheral Pin Select functions.

 2017-2018 Microchip Technology Inc.                                                                  DS70005319B-page 17
dsPIC33CH128MP508 FAMILY

Table of Contents

1.0   Device Overview ........................................................................................................................................................................ 21

2.0   Guidelines for Getting Started with 16-Bit Digital Signal Controllers .......................................................................................... 29

3.0   Master Modules .......................................................................................................................................................................... 35

4.0   Slave Modules .......................................................................................................................................................................... 261

5.0   Master Slave Interface (MSI).................................................................................................................................................... 417

6.0   Oscillator with High-Frequency PLL ......................................................................................................................................... 431

7.0   Power-Saving Features (Master and Slave) ............................................................................................................................ 471

8.0   Direct Memory Access (DMA) Controller ................................................................................................................................. 491

9.0   High-Resolution PWM (HSPWM) with Fine Edge Placement .................................................................................................. 501

10.0  Capture/Compare/PWM/Timer Modules (SCCP) ..................................................................................................................... 535

11.0  High-Speed Analog Comparator with Slope Compensation DAC ............................................................................................ 553

12.0  Quadrature Encoder Interface (QEI) (Master/Slave) ................................................................................................................ 565

13.0  Universal Asynchronous Receiver Transmitter (UART) ........................................................................................................... 583

14.0  Serial Peripheral Interface (SPI)............................................................................................................................................... 605
      Inter-Integrated Circuit (I2C) ..................................................................................................................................................... 623
15.0

16.0  Single-Edge Nibble Transmission (SENT) ............................................................................................................................... 633

17.0  Timer1 ...................................................................................................................................................................................... 643

18.0  Configurable Logic Cell (CLC).................................................................................................................................................. 647

19.0  32-Bit Programmable Cyclic Redundancy Check (CRC) Generator ....................................................................................... 659

20.0  Current Bias Generator (CBG) ................................................................................................................................................. 663

21.0  Special Features ...................................................................................................................................................................... 667

22.0  Instruction Set Summary .......................................................................................................................................................... 713

23.0  Development Support............................................................................................................................................................... 723

24.0  Electrical Characteristics .......................................................................................................................................................... 727

25.0  Packaging Information.............................................................................................................................................................. 767

Appendix A: Revision History............................................................................................................................................................. 791

Index .................................................................................................................................................................................................  793

The Microchip Web Site ..................................................................................................................................................................... 803

Customer Change Notification Service .............................................................................................................................................. 803

Customer Support .............................................................................................................................................................................. 803

Product Identification System............................................................................................................................................................. 805

DS70005319B-page 18        2017-2018 Microchip Technology Inc.
                                                      dsPIC33CH128MP508 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. 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., DS30000000A is version A of document DS30000000).

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.

 2017-2018 Microchip Technology Inc.                                                                          DS70005319B-page 19
dsPIC33CH128MP508 FAMILY

Referenced Sources

This  device  data    sheet  is   based      on  the  following

individual  chapters    of   the  “dsPIC33/PIC24         Family

Reference     Manual”.    These   documents      should    be

considered as the general reference for the operation

of a particular module or device feature.

   Note 1:    To  access    the   documents      listed  below,

              browse to the documentation section of the

              dsPIC33CH128MP508 product page of the

              Microchip   web     site  (www.microchip.com)

              or select a family reference manual section

              from the following list.

              In addition to parameters, features and

              other documentation, the resulting page

              provides    links   to    the  related     family

              reference manual sections.

•  “Introduction” (DS70573)

•  “dsPIC33E Enhanced CPU” (DS70005158)

•  “dsPIC33E/PIC24E Program Memory” (DS70000613)

•  “Data Memory” (DS70595)

•  “Dual Partition Flash Program Memory” (DS70005156)

•  “Flash Programming” (DS70609)

•  “Reset” (DS70602)

•  “Interrupts” (DS70000600)

•  “I/O Ports with Edge Detect” (DS70005322)

•  “Deadman Timer” (DS70005155)

•  “CAN Flexible Data-Rate (FD) Protocol Module” (DS70005340)

•  “12-Bit High-Speed, Multiple SARs A/D Converter (ADC)” (DS70005213)

•  “Peripheral Trigger Generator (PTG)” (DS70000669)

•  “Programmable Gain Amplifier (PGA)” (DS70005146)

•  “Master Slave Interface (MSI) Module” (DS70005278)

•  “Watchdog Timer and Power-Saving Modes” (DS70615)

•  “Oscillator Module with High-Speed PLL” (DS70005255)

•  “Timer1 Module” (DS70005279)

•  “Direct Memory Access Controller (DMA)” (DS39742)

•  “Capture/Compare/PWM/Timer (MCCP and SCCP)” (DS33035)

•  “High-Resolution PWM with Fine Edge Placement” (DS70005320)

•  “Serial Peripheral Interface (SPI) with Audio Codec Support” (DS70005136)

•  “Inter-Integrated Circuit (I2C)” (DS70000195)

•  “Multiprotocol Universal Asynchronous Receiver Transmitter (UART) Module”  (DS70005288)

•  “Single-Edge Nibble Transmission (SENT) Module” (DS70005145)

•  “32-Bit Programmable Cyclic Redundancy Check (CRC)” (DS30009729)

•  “Configurable Logic Cell (CLC)” (DS70005298)

•  “Quadrature Encoder Interface (QEI)” (DS70000601)

•  “High-Speed Analog Comparator Module” (DS70005280)

•  “Current Bias Generator (CBG)” (DS70005253)

•  “Dual Watchdog Timer” (DS70005250)

•  “Programming and Diagnostics” (DS70608)

•  “CodeGuard™ Security” (DS70634)

DS70005319B-page 20                                                            2017-2018 Microchip Technology Inc.
                                                       dsPIC33CH128MP508 FAMILY

1.0      DEVICE OVERVIEW                                             Once the code development is complete, the Master

                                                                     Flash will be programmed with the Master code, as well

Note     1:  This data sheet summarizes the features                 as the Slave code. After a Power-on Reset (POR), the

             of   the  dsPIC33CH128MP508            family  of       Slave code from Master Flash will be loaded to the

             devices. It is not intended to be a com-                PRAM (program memory of the Slave) and the Slave

             prehensive resource. To complement the                  can execute the code independently of the Master. The

             information   in  this   data  sheet,  refer   to       Master and Slave can communicate with each other

             the  related   section     of    the  “dsPIC33/         using the Master Slave Interface (MSI) peripheral, and

             PIC24         Family  Reference        Manual”,         can exchange data between them.

             which     is  available    from  the   Microchip        Figure 1-1  shows  the   block   diagram      of  the  device

             web site (www.microchip.com).                           operation during a POR and the process of transferring

         2:  Some      registers     and    associated      bits     the Slave code from the Master to Slave PRAM.

             described in this section may not be avail-             The I/O ports are shared between the Master and Slave.

             able on all devices. Refer to Section 3.2               Table 1 shows the number of peripherals and the shared

             “Master       Memory       Organization”      and       peripherals that the Master and Slave own. There are

             Section 4.2    “Slave      Memory     Organiza-         Configuration bits in the Flash memory that specify the

             tion” in this data sheet for device-specific            ownership (Master or Slave) of each device pin.

             register and bit information.                           The default (erased) state of the Flash assigns all of the

This document contains device-specific information                   device pins to the Master.

for the dsPIC33CH128MP508 Digital Signal Controller                  The  two    cores  (Master    and  Slave)     can  both       be

(DSC) and Microcontroller (MCU) devices.                             connected to debug tools, which support independent

dsPIC33CH128MP508           devices       contain   extensive        and simultaneous debugging. When the Slave core or

Digital  Signal  Processor     (DSP)    functionality   with      a  Master core is debugged (non-Dual Debug mode), the

high-performance, 16-bit MCU architecture.                           S1MCLRx is not used. MCLR is used for programming

Figure 1-2 shows a general block diagram of the cores                and debugging both the Master core and the Slave

and  peripheral   modules      of  the  Master     and  Slave.       core. S1MCLRx is only used when debugging both the

Table 1-1 lists the functions of the various pins shown              cores at the same time.

in the pinout diagrams.                                              In  normal  operation,   the  “owner”  of  a  device     pin  is

The  Master      core  and     Slave    core  can       operate      responsible for full control of that pin; this includes both

independently, and can be programmed and debugged                    the digital and analog functionality.

separately during the application development. Both                  The pin owner’s GPIO registers control all aspects of

processor (Master and Slave) subsystems have their                   the I/O pad, including the ANSELx, CNPUx, CNPDx,

own interrupt controllers, clock generators, ICD, port               ODCx registers and slew rate control.

logic, I/O MUXes and PPS. The device is equivalent to                    Note:   Both   the   Master  and   Slave      cores  can
having two complete dsPIC® DSCs on a single die.
                                                                                 monitor a pin as an input, regardless of pin
The Master core will execute the code from Program
                                                                                 ownership. Pin ownership is valid only for
Flash Memory (PFM) and the Slave core will operate
                                                                                 the output functionality of the port.
from Program RAM Memory (PRAM).

 2017-2018 Microchip Technology Inc.                                                                       DS70005319B-page 21
dsPIC33CH128MP508 FAMILY

FIGURE 1-1:          SLAVE CORE CODE TRANSFER BLOCK DIAGRAM

Before a POR:

             Master Flash           Slave PRAM

Code to Transfer the Slave  Master                                               Slave

Code to the Slave PRAM      CPU                                                  CPU

                                    No Code

             Master Code    Master                                               Slave

                            RAM                                                  RAM

             Slave Code

After a POR, it is Master code’s responsibility to load the Slave PRAM with the Slave code.

Once the Slave code is loaded to PRAM, the Master can enable the Slave to start

Slave code execution:

             Master Flash           Slave PRAM

Code to Transfer the Slave  Master                                               Slave

Code to the Slave PRAM      CPU                                                  CPU

                                    Slave Code

             Master Code    Master                                               Slave

                            RAM                                                  RAM

             Slave Code

DS70005319B-page 22                                           2017-2018 Microchip Technology  Inc.
                                                     dsPIC33CH128MP508 FAMILY

FIGURE  1-2:           dsPIC33CH128MP508 FAMILY BLOCK DIAGRAM(1)

        CLC (4)        QEI (1)         SENT (2)      CAN FD (1)  ADC (1)         DMA (6)       SCCP (8)          I2C (2)

        WDT/                                         HS PWM                       DAC/         SPI/I2S           UART (2)

        DMT            CRC (1)         PTG (1)       (4)         Timer1 (1)  Comparator                 (2)

                                                                                  (1)

                                       Power-up
                                             Timer
OSCI/CLKI                                                             Master CPU                                 PORTA(2)
                 Timing
                 Generation            Oscillator
                                       Start-up
                                             Timer
                 MCLR

                 S1MCLRx               POR/BOR                   MSI (Master Slave Interface)                    PORTB(2)

                       VDD, VSS        Watchdog
                                             Timer/
                       AVDD, AVSS      Deadman

                                             Timer

                                                                       Slave CPU                                 PORTC(2)

                                                                                                                 PORTD(2)

                                                                                                             16

                                                                                                                 PORTE(2)

              QEI (1)  PGA (3)         CLC (4)       ADC (3)     DMA (2)         SCCP          I2C (1)

                                                                                 (4)

                                                                                                                 Remappable
                                                                                                                 Pins(3)

                                       HS PWM        Timer1      DAC/        SPI/I2S                             PORTS
                          WDT                                    Comparator               UART (1)
                                       (8)           (1)                         (1)
                                                                 (3)

Note    1:    The numbers in the parentheses are the number of instantiations of the module indicated.

        2:    Not all I/O pins or features are implemented on all device pinout configurations. See Table 1-1 for specific

              implementations by pin count.

        3:    Some peripheral I/Os are only accessible through remappable pins.

 2017-2018 Microchip Technology Inc.                                                                            DS70005319B-page 23
dsPIC33CH128MP508 FAMILY

TABLE 1-1:      PINOUT I/O DESCRIPTIONS

           Pin Name(1)          Pin   Buffer  PPS                               Description

                                Type    Type

AN0-AN18                        I     Analog  No   Master analog input channels

S1AN0-S1AN18                    I     Analog  No   Slave analog input channels

S1ANA0, S1ANA1                  I     Analog  No   Slave alternate analog inputs

ADCTRG                          I       ST    Yes  ADC Trigger Input 31

CAN1RX                          I       ST    Yes  CAN1 receive input

CAN1                            O       —     Yes  CAN1 transmit output

CLKI                            I       ST/   No   External Clock (EC) source input. Always associated with OSCI pin

                                      CMOS         function.

CLKO                            O       —     No   Oscillator crystal output. Connects to crystal or resonator in Crystal

                                                   Oscillator mode. Optionally functions as CLKO in RC and EC

                                                   modes. Always associated with OSCO pin function.

OSCI                            I       ST/   No   Oscillator crystal input. ST buffer when configured in RC mode;

                                      CMOS         CMOS otherwise.

OSCO                            I/O     —     No   Oscillator crystal output. Connects to crystal or resonator in Crystal

                                                   Oscillator mode. Optionally functions as CLKO in RC and EC

                                                   modes.

REFOI/S1REFOI                   I       ST    Yes  Reference clock input

REFCLKO/S1REFCLKO(3)            O       —     Yes  Reference clock output

INT0/S1INT0(3)                  I       ST    No   External Interrupt 0
INT1/S1INT1(3)
INT2/S1INT2(3)                  I       ST    Yes  External Interrupt 1

INT3/S1INT3(3)                  I       ST    Yes  External Interrupt 2

                                I       ST    Yes  External Interrupt 3

IOCA<4:0>/S1IOCA<4:0>(3)        I       ST    No   Interrupt-on-Change input    for  PORTA
IOCB<15:0>/S1IOCB<15:0>(3)
IOCC<15:0>/S1IOCC<15:0>(3)      I       ST    No   Interrupt-on-Change input    for  PORTB

IOCD<15:0>/S1IOCD<15:0>(3)      I       ST    No   Interrupt-on-Change input    for  PORTC

IOCE<15:0>/S1IOCE<15:0>(3)      I       ST    No   Interrupt-on-Change input    for  PORTD

                                I       ST    No   Interrupt-on-Change input    for  PORTE

QEIA1                           I       ST    Yes  QEI Input A

QEIB1                           I       ST    Yes  QEI Input B

QEINDX1                         I       ST    Yes  QEI Index 1 input

QEIHOM1                         I       ST    Yes  QEI Home 1 input

QEICMP                          O       —     Yes  QEI comparator output

RA0-RA4/S1RA0-S1RA4(3)          I/O     ST    No   PORTA is a bidirectional I/O port

RB0-RB15/S1RB0-S1RB15(3)        I/O     ST    No   PORTB is a bidirectional I/O port

RC0-RC15/S1RC0-S1RC15(3)        I/O     ST    No   PORTC is a bidirectional I/O port

RD0-RD15/S1RD0-S1RD15(3)        I/O     ST    No   PORTD is a bidirectional I/O port

RE0-RE15/S1RE0-S1RE15(3)        I/O     ST    No   PORTE is a bidirectional I/O port

T1CK/S1T1CK(3)                  I       ST    Yes  Timer1 external clock input

Legend:    CMOS = CMOS compatible input or output               Analog = Analog input        P = Power

           ST = Schmitt Trigger input with CMOS levels          O = Output                   I = Input

           PPS = Peripheral Pin Select                          TTL = TTL input buffer

Note   1:  Not all pins are available in all package variants. See the “Pin Diagrams” section for pin availability.

       2:  These pins are remappable as well as dedicated. Some of the pins are associated with the Slave function

           and have S1 attached to the beginning of the name. For example, AN0 for the Slave is S1AN0.

       3:  S1 attached to the beginning of the name indicates the Slave feature for that function. For example, AN0 for

           the Slave is S1AN0.

DS70005319B-page 24                                                                   2017-2018 Microchip Technology Inc.
                                               dsPIC33CH128MP508 FAMILY

TABLE 1-1:      PINOUT I/O DESCRIPTIONS (CONTINUED)

          Pin Name(1)          Pin     Buffer  PPS                         Description

                               Type    Type

U1CTS/S1U1CTS(3)               I       ST      Yes  UART1 Clear-to-Send
U1RTS/S1U1RTS(3)
U1RX/S1U1RX(3)                 O       —       Yes  UART1 Request-to-Send

U1TX/S1U1TX(3)                 I       ST      Yes  UART1 receive

                               O       —       Yes  UART1 transmit

U1DSR/S1U1DSR                  I       ST      Yes  UART1 Data-Set-Ready

U1DTR/S1U1DTR                  O       —       Yes  UART1 Data-Terminal-Ready

U2CTS                          I       ST      Yes  UART2 Clear-to-Send

U2RTS                          O       —       Yes  UART2 Request-to-Send

U2RX                           I       ST      Yes  UART2 receive

U2TX                           O       —       Yes  UART2 transmit

U2DSR                          I       ST      Yes  UART2 Data-Set-Ready

U2DTR                          O       —       Yes  UART2 Data-Terminal-Ready

SENT1                          I       ST      Yes  SENT1 input

SENT2                          I       ST      Yes  SENT2 input

SENT1OUT                       O       —       Yes  SENT1 output

SENT2OUT                       O       —       Yes  SENT2 output

PTGTRG24                       O       —       Yes  PTG Trigger Output 24

PTGTRG25                       O       —       Yes  PTG Trigger Output 25

TCKI1-TCKI8/                   I       ST      Yes  SCCP Timer Inputs 1 through 8/1 through 4
S1TCKI1-S1TCKI4(3)

ICM1-ICM8/                     I       ST      Yes  SCCP Capture Inputs 1 through 8/1 through 4
S1ICM1-S1ICM4(3)

OCFA-OCFB/                     I       ST      Yes  SCCP Fault Inputs A through B
S1OCFA-S1OCFB(3)

OCM1-OCM8/                     O       —       Yes  SCCP Compare Outputs 1 through 8/1 through      4
S1OCM1-S1OCM4(3)

SCK1/S1SCK1(3)                 I/O     ST      Yes  Synchronous serial clock input/output for SPI1
SDI1/S1SDI1(3)
SDO1/S1SDO1(3)                 I       ST      Yes  SPI1 data in

SS1/S1SS1(3)                   O       —       Yes  SPI1 data out

                               I/O     ST      Yes  SPI1 Slave synchronization or frame pulse I/O

SCK2                           I/O     ST      Yes  Synchronous serial clock input/output for SPI2

SDI2                           I       ST      Yes  SPI2 data in

SDO2                           O       —       Yes  SPI2 data out

SS2                            I/O     ST      Yes  SPI2 Slave synchronization or frame pulse I/O

SCL1/S1SCL1(3)                 I/O     ST      No   Synchronous serial clock input/output for I2C1
SDA1/S1SDA1(3)
                               I/O     ST      No   Synchronous serial data input/output for I2C1

ASCL1                          I/O     ST      No   Alternate synchronous serial clock input/output for I2C1

ASDA1                          I/O     ST      No   Alternate synchronous serial data input/output for I2C1

SCL2                           I/O     ST      No   Synchronous serial clock input/output for I2C2

SDA2                           I/O     ST      No   Synchronous serial data input/output for I2C2

ASCL2                          I/O     ST      No   Alternate synchronous serial clock input/output for I2C2

ASDA2                          I/O     ST      No   Alternate synchronous serial data input/output for I2C2

Legend:   CMOS = CMOS compatible input or output       Analog = Analog input                   P = Power

          ST = Schmitt Trigger input with CMOS levels  O = Output                              I = Input

          PPS = Peripheral Pin Select                  TTL = TTL input buffer

Note  1:  Not all pins are available in all package variants. See the “Pin Diagrams” section for pin availability.

      2:  These pins are remappable as well as dedicated. Some of the pins are associated with the Slave function

          and have S1 attached to the beginning of the name. For example, AN0 for the Slave is S1AN0.

      3:  S1 attached to the beginning of the name indicates the Slave feature for that function. For example, AN0 for

          the Slave is S1AN0.

 2017-2018 Microchip Technology Inc.                                                               DS70005319B-page 25
dsPIC33CH128MP508 FAMILY

TABLE 1-1:      PINOUT I/O DESCRIPTIONS (CONTINUED)

          Pin Name(1)          Pin   Buffer  PPS                             Description

                               Type    Type

TMS                            I       ST    No   JTAG Test mode select pin

TCK                            I       ST    No   JTAG test clock input pin

TDI                            I       ST    No   JTAG test data input pin

TDO                            O       —     No   JTAG test data output pin

PCI8-PCI18/                    I       ST    Yes  PWM Inputs 8 through 18

S1PCI8-S1PCI18

PWMEA-PWMED/                   O       —     Yes  PWM Event Outputs A through D

S1PWMEA-S1PWMED

PCI19-PCI22/                   I       ST    No   PWM Inputs 19 through 22
S1PCI19-S1PCI22(3)

PWM1L-PWM4L/S1PWM1L/           O       —     No   PWM Low Outputs 1 through 8
S1PWM8L(3)

PWM1H-PWM4H/                   O       —          PWM High Outputs 1 through 8
S1PWM1H-S1PWM8H(2,3)

CLCINA-CLCIND/                 I       ST    Yes  CLC Inputs A through D
S1CLCINA-S1CLCIND(3)

CLC1OUT-CLC4OUT                O       —     Yes  CLC Outputs 1 through 4

CMP1                           O       —     Yes  Comparator 1 output

CMP1A/                         I     Analog  No   Comparator Channels 1A through 3A inputs
S1CMP1A-S1CMP3A(3)

CMP1B/                         I     Analog  No   Comparator Channels 1B through 3B inputs
S1CMP1B-S1CMP3B(3)

CMP1D/                         I     Analog  No   Comparator Channels 1D through 3D inputs
S1CMP1D-S1CMP3D(3)

DACOUT                         O       —     No   DAC output voltage

IBIAS3, IBIAS2, IBIAS1,        O     Analog  No   Constant-Current Outputs 0 through 3

IBIAS0/ISRC3, ISRC2,

ISRC1, ISRC0

S1PGA1P2                       I     Analog  No   PGA1 Positive Input 2

S1PGA1N2                       I     Analog  No   PGA1 Negative Input 2

S1PGA2P2                       I     Analog  No   PGA2 Positive Input 2

S1PGA2N2                       I     Analog  No   PGA2 Negative Input 2

S1PGA3P1-S1PGA3P2              I     Analog  No   PGA3 Positive Inputs 1 through 2

S1PGA3N2                       I     Analog  No   PGA3 Negative Input 2

PGD1/S1PGD1(3)                 I/O     ST    No   Data I/O pin for Programming/Debugging Communication Channel 1
PGC1/S1PGC1(3)
                               I       ST    No   Clock input pin for Programming/Debugging Communication

PGD2/S1PGD2(3)                                    Channel 1

PGC2/S1PGC2(3)                 I/O     ST    No   Data I/O pin for Programming/Debugging Communication Channel 2

                               I       ST    No   Clock input pin for Programming/Debugging Communication

PGD3/S1PGD3(3)                                    Channel 2

PGC3/S1PGC3(3)                 I/O     ST    No   Data I/O pin for Programming/Debugging Communication Channel 3

                               I       ST    No   Clock input pin for Programming/Debugging Communication

                                                  Channel 3

Legend:   CMOS = CMOS compatible input or output             Analog = Analog input        P = Power

          ST = Schmitt Trigger input with CMOS levels        O = Output                   I = Input

          PPS = Peripheral Pin Select                        TTL = TTL input buffer

Note  1:  Not all pins are available in all package variants. See the “Pin Diagrams” section for pin availability.

      2:  These pins are remappable as well as dedicated. Some of the pins are associated with the Slave function

          and have S1 attached to the beginning of the name. For example, AN0 for the Slave is S1AN0.

      3:  S1 attached to the beginning of the name indicates the Slave feature for that function. For example, AN0 for

          the Slave is S1AN0.

DS70005319B-page 26                                                              2017-2018 Microchip Technology Inc.
                                               dsPIC33CH128MP508 FAMILY

TABLE 1-1:  PINOUT I/O DESCRIPTIONS (CONTINUED)

          Pin Name(1)          Pin     Buffer  PPS                          Description

                               Type    Type

MCLR/S1MCLR1/S1MCLR2/          I/P     ST      No   Master Clear (Reset) input. This pin is an active-low Reset to the

S1MCLR3                                             device. S1MCLRx is valid only for slave debug in Dual Debug

                                                    mode.

AVDD                           P       P       No   Positive supply for analog modules. This pin must be connected at all

                                                    times.

AVSS                           P       P       No   Ground reference for analog modules. This pin must be connected at

                                                    all times.

VDD                            P       —       No   Positive supply for peripheral logic and I/O pins

VSS                            P       —       No   Ground reference for logic and I/O pins

Legend:   CMOS = CMOS compatible input or output                Analog = Analog input        P = Power

          ST = Schmitt Trigger input with CMOS levels           O = Output                   I = Input

          PPS = Peripheral Pin Select                           TTL = TTL input buffer

Note  1:  Not all pins are available in all package variants. See the “Pin Diagrams” section for pin availability.

      2:  These pins are remappable as well as dedicated. Some of the pins are associated with the Slave function

          and have S1 attached to the beginning of the name. For example, AN0 for the Slave is S1AN0.

      3:  S1 attached to the beginning of the name indicates the Slave feature for that function. For example, AN0 for

          the Slave is S1AN0.

 2017-2018 Microchip Technology Inc.                                                        DS70005319B-page 27
dsPIC33CH128MP508    FAMILY

NOTES:

DS70005319B-page 28           2017-2018 Microchip Technology Inc.
                                                dsPIC33CH128MP508 FAMILY

2.0        GUIDELINES FOR GETTING                            2.2       Decoupling Capacitors

           STARTED WITH 16-BIT DIGITAL                       The  use  of  decoupling  capacitors   on  every      pair  of

           SIGNAL CONTROLLERS                                power  supply   pins,  such  as  VDD,     VSS,     AVDD  and

                                                             AVSS is required.

2.1        Basic Connection Requirements                     Consider the following criteria when using decoupling

Getting    started  with  the  family  devices      of  the  capacitors:

dsPIC33CH128MP508 requires attention to a minimal            •  Value and type of capacitor: Recommendation

set of device pin connections before proceeding with            of 0.1 µF (100 nF), 10-20V. This capacitor should

development. The following is a list of pin names which         be a low-ESR and have resonance frequency in

must always be connected:                                       the range of 20 MHz and higher. It is

•  All VDD and VSS pins                                         recommended to use ceramic capacitors.

   (see Section 2.2 “Decoupling Capacitors”)                 •  Placement on the printed circuit board: The

•  All AVDD and AVSS pins                                       decoupling capacitors should be placed as close

   regardless if ADC module is not used (see                    to the pins as possible. It is recommended to

   Section 2.2 “Decoupling Capacitors”)                         place the capacitors on the same side of the

•  MCLR pin                                                     board as the device. If space is constricted, the

   (see Section 2.3 “Master Clear (MCLR) Pin”)                  capacitor can be placed on another layer on the

                                                                PCB using a via; however, ensure that the trace

•  PGCx/PGDx pins                                               length from the pin to the capacitor is within

   used for In-Circuit Serial Programming™ (ICSP™)              one-quarter inch (6 mm) in length.

   and debugging purposes (see Section 2.4 “ICSP             •  Handling high-frequency noise: If the board is

   Pins”)                                                       experiencing high-frequency noise, above tens of

•  OSCI and OSCO pins                                           MHz, add a second ceramic-type capacitor in

   when an external oscillator source is used (see              parallel to the above described decoupling

   Section 2.5 “External Oscillator Pins”)                      capacitor. The value of the second capacitor can

                                                                be in the range of 0.01 µF to 0.001 µF. Place this

                                                                second capacitor next to the primary decoupling

                                                                capacitor. In high-speed circuit designs, consider

                                                                implementing a decade pair of capacitances as

                                                                close to the power and ground pins as possible.

                                                                For example, 0.1 µF in parallel with 0.001 µF.

                                                             •  Maximizing performance: On the board layout

                                                                from the power supply circuit, run the power and

                                                                return traces to the decoupling capacitors first,

                                                                and then to the device pins. This ensures that the

                                                                decoupling capacitors are first in the power chain.

                                                                Equally important is to keep the trace length

                                                                between the capacitor and the power pins to a

                                                                minimum, thereby reducing PCB track

                                                                inductance.

 2017-2018 Microchip Technology Inc.                                                         DS70005319B-page 29
dsPIC33CH128MP508 FAMILY

FIGURE 2-1:                              RECOMMENDED                                           2.3        Master Clear (MCLR) Pin

                                         MINIMUM CONNECTION                                    The     MCLR         pin     provides   two          specific     device

                                                                                               functions:

VDD                                                                         0.1 µF             •  Device Reset

                                                                            Ceramic

                                                                                               •  Device Programming and Debugging.

       R                                                          VDD  VSS                     During    device     programming             and     debugging,        the

          R1                                                                                   resistance and capacitance that can be added to the

                 MCLR                                                                          pin  must      be  considered.    Device       programmers             and

       C                                                                                       debuggers         drive   the     MCLR         pin.    Consequently,

                                         dsPIC33                                               specific  voltage    levels      (VIH  and   VIL)    and    fast  signal

                                                                                               transitions must not be adversely affected. Therefore,

                 VSS                                                   VDD                     specific  values     of   R  and  C    will  need      to   be  adjusted

                                                                       VSS                     based on the application and PCB requirements.

     0.1 µF      VDD                                                        0.1 µF             For    example,      as      shown     in      Figure 2-2,         it  is

    Ceramic              AVDD            AVSS                     VDD  VSS  Ceramic            recommended that the capacitor, C, be isolated from

                                                         0.1 µF             0.1 µF             the  MCLR      pin   during      programming         and    debugging

                                                         Ceramic            Ceramic            operations.

                 L1(1)                                                                         Place     the  components,        as   shown           in   Figure 2-2,

                                                                                               within one-quarter inch (6 mm) from the MCLR pin.

Note 1:       As an option, instead of a hard-wired connection, an                                  Note 1:   There are the S1MCLR1, S1MCLR2 and

              inductor (L1) can be substituted between VDD and

              AVDD to improve ADC noise rejection. The inductor                                               S1MCLR3           pins  and     they    are  used       for

              impedance should be less than 1 and the inductor                                               Slave      debug        during     the  dual     debug

              capacity greater than 10 mA.                                                                    process.      Those     pins    do      not  reset  the

              Where:                                                                                          Slave core during normal operation.

              f  =    -F----C---N----V-                  (i.e., ADC Conversion Rate/2)
                         2                                                                     FIGURE 2-2:                      EXAMPLE OF MCLR PIN

              f = -----------1------------                                                                                      CONNECTIONS

                      2                LC

                        ---2-------f1------C-----  2                                               VDD

              L  =    

                                                                                                              R(1)

2.2.1         BULK CAPACITORS                                                                                            R1(2)

                                                                                                                                 MCLR

On boards with power traces running longer than six                                                           JP

inches in length, it is suggested to use a bulk capacitor                                                                              dsPIC33

for integrated circuits, including DSCs, to supply a local                                                    C

power source. The value of the bulk capacitor should

be   determined       based              on              the  trace    resistance        that

connects the power supply source to the device and                                                Note   1:   R  10 k is recommended. A suggested

the  maximum          current            drawn                by  the  device        in  the                  starting value is 10 k. Ensure that the

application. In other words, select the bulk capacitor so                                                     MCLR pin VIH and VIL specifications are met.

that it meets the acceptable voltage sag at the device.                                                  2:   R1  470 will limit any current flowing into

Typical values range from 4.7 µF to 47 µF.                                                                    MCLR from the external capacitor, C, in the

                                                                                                              event of MCLR pin breakdown due to

                                                                                                              Electrostatic Discharge (ESD) or Electrical

                                                                                                              Overstress (EOS). Ensure that the MCLR pin

                                                                                                              VIH and VIL specifications are met.

DS70005319B-page 30                                                                                                       2017-2018 Microchip Technology Inc.
                                                        dsPIC33CH128MP508 FAMILY

2.4         ICSP Pins                                              2.5     External Oscillator Pins

The  PGCx   and  PGDx      pins  are    used  for  ICSP  and       Many DSCs have options for at least two oscillators: a

debugging purposes. It is recommended to keep the                  high-frequency        Primary      Oscillator  (POSC)         and   a

trace length between the ICSP connector and the ICSP               low-frequency         Secondary     Oscillator       (SOSC).  For

pins on the device as short as possible. If the ICSP con-          details, see Section 6.4.1 “Master Oscillator Control

nector  is  expected   to  experience   an    ESD       event,  a  Registers”.

series resistor is recommended, with the value in the              The oscillator circuit should be placed on the same

range of a few tens of Ohms, not to exceed 100 Ohms.               side of the board as the device. Also, place the oscil-

Pull-up resistors, series diodes and capacitors on the             lator circuit close to the respective oscillator pins, not

PGCx and PGDx pins are not recommended as they                     exceeding    one-half      inch    (12  mm)    distance      between

will interfere with the programmer/debugger communi-               them. The load capacitors should be placed next to

cations to the device. If such discrete components are             the  oscillator  itself,   on  the  same       side  of  the  board.

an application requirement, they should be removed                 Use  a  grounded           copper  pour  around       the    oscillator

from the circuit during programming and debugging.                 circuit to isolate them from surrounding circuits. The

Alternatively, refer to the AC/DC characteristics and              grounded copper pour should be routed directly to the

timing  requirements       information  in    the  respective      MCU ground. Do not run any signal traces or power

device Flash programming specification for information             traces  inside        the  ground       pour.  Also,     if  using  a

on capacitive loading limits and pin Voltage Input High            two-sided board, avoid any traces on the other side of

(VIH) and Voltage Input Low (VIL) requirements.                    the board where the crystal is placed. A suggested

Ensure that the “Communication Channel Select” (i.e.,              layout is shown in Figure 2-3.

PGCx/PGDx   pins)      programmed       into       the  device     FIGURE 2-3:                SUGGESTED PLACEMENT

matches the physical connections for the ICSP to                                              OF THE OSCILLATOR
PICkit™ 3, MPLAB® ICD 3 or MPLAB REAL ICE™

emulator.                                                                                     CIRCUIT

For more information on MPLAB ICD 2, MPLAB ICD 3

and  REAL   ICE  emulator  connection         requirements,             Main Oscillator

refer to the following documents that are available on

the Microchip web site.                                                 Guard Ring

•  “Using MPLAB® ICD 3 In-Circuit Debugger”

   (poster) (DS51765)                                                   Guard Trace

•  “Development Tools Design Advisory” (DS51764)

•  “MPLAB® REAL ICE™ In-Circuit Emulator User’s                         Oscillator Pins

   Guide” (DS51616)

•  “Using MPLAB® REAL ICE™ In-Circuit Emulator”

   (poster) (DS51749)

 2017-2018 Microchip Technology Inc.                                                                       DS70005319B-page 31
dsPIC33CH128MP508 FAMILY

2.6      Oscillator Value Conditions on                                     2.8        Targeted Applications

         Device Start-up                                                    •   Power Factor Correction (PFC):

If  the  PLL   of   the  target  device      is  enabled      and               -  Interleaved PFC

configured     for  the  device  start-up        oscillator,  the               -  Critical Conduction PFC

maximum oscillator source frequency must be limited                             -  Bridgeless PFC

to a certain frequency (see Section 6.0 “Oscillator                         •   DC/DC Converters:

with High-Frequency PLL”) to comply with device                                 -  Buck, Boost, Forward, Flyback, Push-Pull

PLL start-up conditions. This means that if the external                        -  Half/Full-Bridge

oscillator frequency is outside this range, the applica-

tion must start up in the FRC mode first. The default                           -  Phase-Shift Full-Bridge

PLL settings after a POR with an oscillator frequency                           -  Resonant Converters

outside  this  range     will  violate  the  device  operating              •   DC/AC:

speed.                                                                          -  Half/Full-Bridge Inverter

Once the device powers up, the application firmware                             -  Resonant Inverter

can initialize the PLL SFRs, CLKDIV and PLLFBD, to a                        •   Motor Control

suitable value, and then perform a clock switch to the                          -  BLDC

Oscillator + PLL clock source. Note that clock switching

must be enabled in the device Configuration Word.                               -  PMSM

                                                                                -  SR

2.7      Unused I/Os                                                            -  ACIM

Unused I/O pins should be configured as outputs and                         Examples of typical application connections are  shown

driven to a logic low state.                                                in Figure 2-4 through Figure 2-6.

Alternatively, connect a 1k to 10k resistor between VSS

and unused pins, and drive the output to logic low.

FIGURE 2-4:                INTERLEAVED PFC

                                                                                                                  VOUT+

                                 |VAC|

                                                              k1            k2

               k4     VAC                                                                                     k3

                                                                                                     VOUT-

                                                     FET                        FET
                                                     Driver                    Driver

                               PGA/ADC Channel       PWM          PGA/ADC       PWM    PGA/ADC       ADC

                                                                   Channel             Channel       Channel

                               ADC Channel           dsPIC33CH128MP508

DS70005319B-page 32                                                                              2017-2018 Microchip Technology Inc.
                                                   dsPIC33CH128MP508 FAMILY

FIGURE 2-5:            PHASE-SHIFTED FULL-BRIDGE CONVERTER

VIN+                                                                   Gate 6

                               Gate     3

Gate 1

                                                                                                         VOUT+

             S1                            S3

Gate 2                                                                                                   VOUT-

                                           Gate 4                      Gate 5

VIN-

                                                                               Gate 5   Gate 6

                                                                                        FET       k2
                                                                                        Driver

                                                                       k1

                                                       Analog
                                                       Ground
Gate 1

                       FET                                             PWM     PGA/ADC  PWM       ADC
                       Driver
S1                                                                             Channel          Channel
                                           Gate 3

                                                               FET             dsPIC33CH128MP508

                                                   S3          Driver  PWM

Gate 2

                                           Gate 4

 2017-2018 Microchip  Technology Inc.                                                  DS70005319B-page 33
dsPIC33CH128MP508                                 FAMILY

FIGURE 2-6:          OFF-LINE UPS

      Push-Pull Converter                                    VDC                                Full-Bridge  Inverter

VBAT                                                                                                                   VOUT+

                                                          +

                                                                                                                       VOUT-

                                                             GND

GND

             FET           FET  k2            k1  FET        FET     FET     FET        k4      k5
             Driver  Driver                       Driver     Driver  Driver  Driver

             PWM     PWM        PGA/ADC     ADC   PWM        PWM     PWM     PWM
                                or
                                Analog Comp.

      k3                            dsPIC33CH128MP508                        ADC

             ADC                                                             ADC

                           ADC                    PWM

                                                                                        FET
                                                                                        Driver
                           k6

                                                          +

                           Battery Charger

DS70005319B-page 34                                                                    2017-2018 Microchip Technology Inc.
                                                            dsPIC33CH128MP508 FAMILY

3.0    MASTER MODULES                                                   3.1.1      REGISTERS

3.1    Master CPU                                                       The dsPIC33CH128MP508 devices have sixteen, 16-bit

                                                                        Working registers in the programmer’s model. Each of

     Note 1:  This data sheet summarizes the features                   the Working registers can act as a Data, Address or

              of    the   dsPIC33CH128MP508             family     of   Address    Offset   register.   The   16th    Working      register

              devices.    It     is  not  intended      to     be  a    (W15)    operates      as  a    Software    Stack     Pointer     for

              comprehensive             reference  source.         To   interrupts and calls.

              complement the information in this data                   In addition, the dsPIC33CH128MP508 devices include

              sheet,      refer  to     “dsPIC33E     Enhanced          four Alternate Working register sets, which consist of

              CPU”        (DS70005158)       in  the  “dsPIC33/         W0 through W14. The Alternate Working registers can

              PIC24 Family Reference Manual”, which                     be   made  persistent      to   help  reduce     the  saving    and

              is available from the Microchip web site                  restoring of register content during Interrupt Service

              (www.microchip.com).                                      Routines (ISRs). The Alternate Working registers can

                                                                        be assigned to a specific Interrupt Priority Level (IPL1

There  are     two       independent      CPU      cores    in     the  through IPL7) by configuring the CTXTx<2:0> bits in

dsPIC33CH128MP508              family.  The  Master   and      Slave    the  FALTREG       Configuration      register.  The   Alternate

cores are similar, except for the fact that the Slave core              Working registers can also be accessed manually by

can run at a higher speed than the Master core.                         using the CTXTSWP instruction. The CCTXI<2:0> and

The Slave core fetches instructions from the PRAM                       MCTXI<2:0>  bits       in  the  CTXTSTAT         register  can    be

and the Master core fetches the code from the Flash.                    used to identify the current, and most recent, manually

The Master and Slave cores can run independently                        selected Working register sets.

asynchronously, at the same speed or at a different                     3.1.2      INSTRUCTION SET

speed. This section discusses the Master core.

Note:         All of the associated register names are the              The instruction set for dsPIC33CH128MP508 devices

              same on the Master, as well as on the Slave.              has  two   classes     of  instructions:  the    MCU       class  of

              The Slave code will be developed in a sepa-               instructions and the DSP class of instructions. These

              rate project in MPLAB® X IDE with the device              two instruction classes are seamlessly integrated into the

              selection, dsPIC33CH128MP508S1, where                     architecture and execute from a single execution unit.

              the S1 indicates the Slave device.                        The instruction set includes many addressing modes and

                                                                        was designed for optimum C compiler efficiency.

The   dsPIC33CH128MP508              family  CPU   has      a  16-bit

(data) modified Harvard architecture with an enhanced

instruction set, including significant support for Digital

Signal Processing (DSP). The CPU has a 24-bit instruc-

tion  word    with  a     variable   length  opcode      field.    The

Program Counter (PC) is 23 bits wide and addresses up

to 4M x 24 bits of user program memory space.

An    instruction   prefetch     mechanism       helps    maintain

throughput and provides predictable execution. Most

instructions execute in a single-cycle effective execu-

tion rate, with the exception of instructions that change

the   program      flow,  the    double-word       move     (MOV.D)

instruction, PSV accesses and the table instructions.

Overhead-free program loop constructs are supported

using the DO and REPEAT instructions, both of which

are interruptible at any point.

 2017-2018 Microchip Technology Inc.                                                                         DS70005319B-page 35
dsPIC33CH128MP508 FAMILY

3.1.3          DATA SPACE ADDRESSING                                  3.1.4        ADDRESSING MODES

The base Data Space (DS) can be addressed as up to                    The CPU supports these addressing modes:

4K words       or  8   Kbytes,   and  is  split   into  two  blocks,  •  Inherent (no operand)

referred to as X and Y data memory. Each memory block                 •  Relative

has   its  own     independent        Address     Generation  Unit    •  Literal

(AGU). The MCU class of instructions operates solely

through the X memory AGU, which accesses the entire                   •  Memory Direct

memory map as one linear Data Space. Certain DSP                      •  Register Direct

instructions operate through the X and Y AGUs to sup-                 •  Register Indirect

port dual operand reads, which splits the data address                Each   instruction    is  associated  with  a  predefined

space into two parts. The X and Y Data Space boundary                 addressing mode group, depending upon its functional

is device-specific.                                                   requirements. As many as six addressing modes are

The upper 32 Kbytes of the Data Space memory map                      supported for each instruction.

can optionally be mapped into Program Space (PS) at

any 16K program word boundary. The program-to-Data

Space      mapping     feature,  known        as  Program    Space

Visibility (PSV), lets any instruction access Program

Space      as  if  it  were     Data  Space.      Refer  to   “Data

Memory” (DS70595) in the “dsPIC33/PIC24 Family

Reference Manual” for more details on PSV and table

accesses.

On dsPIC33CH128MP508 family devices, overhead-

free   circular        buffers   (Modulo       Addressing)    are

supported      in  both  X      and   Y   address  spaces.    The

Modulo     Addressing    removes         the  software   boundary

checking overhead for DSP algorithms. The X AGU

Circular Addressing can be used with any of the MCU

class of instructions. The X AGU also supports Bit-

Reversed Addressing to greatly simplify input or output

data re-ordering for radix-2 FFT algorithms.

DS70005319B-page 36                                                                          2017-2018 Microchip Technology Inc.
                                                    dsPIC33CH128MP508 FAMILY

FIGURE 3-1:        dsPIC33CH128MP508 FAMILY (MASTER)                                     CPU BLOCK DIAGRAM

                                                                                         X Address Bus

                                                               Y Data Bus

                                                                                                                             X Data Bus

                                                                                         16                 16      16           16

             Interrupt                     PSV and Table                                      Data Latch                     Data Latch

             Controller                         Data Access    8                     16                     Y Data               X Data

                                       24       Control Block                                               RAM                  RAM

                                                                                                            Address              Address      16  24

                         24                                                                                 Latch                Latch

                                           24                                                Y Address Bus           16          16

                                                               PCU        PCH  PCL                          16       X RAGU

                                                               Program Counter                                       X WAGU

                                                               Stack           Loop
                                                               Control         Control
                                                               Logic           Logic
             Address Latch

                                                                                             Y AGU

             Program Memory

                 Data Latch                                                                                 16       EA MUX

                                                    16

                                                               ROM Latch                                                     16  24

                                                24                        IR

                                                                                                                    Data

                                           16                                                                       Literal

                                                                                                            16-Bit

                                                                                         Working Register Arrays                          16

                                                                                         16                 16

                                                                                                                                 Divide

                                                                                         DSP                                     Support

                                                                                         Engine

                                                                                                                   16-Bit ALU

Control Signals              Instruction                                                     16                              16
                             Decode and
to Various Blocks                      Control

                             Power, Reset                                                                   Ports

                             and Oscillator

                                       Modules

                                                                                                            Peripheral

                                                                                                            Modules

                                                    Slave                      MSI

                                                    CPU

 2017-2018 Microchip Technology Inc.                                                                                                     DS70005319B-page 37
dsPIC33CH128MP508 FAMILY

3.1.5       PROGRAMMER’S MODEL                                   In addition to the registers contained in the programmer’s

The programmer’s model for the dsPIC33CH128MP508                 model,  the  dsPIC33CH128MP508         devices  contain

family  is  shown  in  Figure 3-2.  All  registers  in  the      control registers for Modulo Addressing, Bit-Reversed

programmer’s model are memory-mapped and can be                  Addressing   and  interrupts.  These   registers    are

manipulated directly by instructions. Table 3-1 lists a          described in subsequent sections of this document.

description of each register.                                    All registers associated with the programmer’s model

                                                                 are   memory-mapped,   as  shown   in  Figure 3-3   and

                                                                 Figure 3-4.

TABLE 3-1:         PROGRAMMER’S MODEL REGISTER DESCRIPTIONS

            Register(s) Name                                             Description

W0 through W15(1)                        Working Register Array

W0 through W14(1)                        Alternate Working Register Array 1

W0 through W14(1)                        Alternate Working Register Array 2

W0 through W14(1)                        Alternate Working Register Array 3

W0 through W14(1)                        Alternate Working Register Array 4

ACCA, ACCB                               40-Bit DSP Accumulators (Additional 4 Alternate Accumulators)

PC                                       23-Bit Program Counter

SR                                       ALU and DSP Engine STATUS Register

SPLIM                                    Stack Pointer Limit Value Register

TBLPAG                                   Table Memory Page Address Register

DSRPAG                                   Extended Data Space (EDS) Read Page Register

RCOUNT                                   REPEAT Loop Counter Register

DCOUNT                                   DO Loop Counter Register

DOSTARTH, DOSTARTL(2)                    DO Loop Start Address Register (High and Low)

DOENDH, DOENDL                           DO Loop End Address Register (High and Low)

CORCON                                   Contains DSP Engine, DO Loop Control and Trap Status bits

Note    1:  Memory-mapped      W0   through W14 represent the value of the register in the currently active CPU  context.

        2:  The DOSTARTH       and  DOSTARTL registers are read-only.

DS70005319B-page 38                                                                 2017-2018 Microchip Technology Inc.
                                                      dsPIC33CH128MP508 FAMILY

FIGURE 3-2:      PROGRAMMER’S MODEL (MASTER)

                                                                              D15                               D0

                                                                     D15                                 D0

                                                            D15                                    D0

                                                      D15                                  D0

                                              D15                                  D0

                                                                     W0 (WREG)          W0     W0        W0    W0

                                  W0-W3                                       W1        W1       W1      W1     W1

                                                                              W2        W2     W2        W2  W2

                                                                              W3        W3       W3      W3    W3

                                                                              W4        W4       W4      W4     W4         Alternate

                 DSP Operand                                                  W5        W5       W5     W5      W5         Working/Address

                 Registers                                                    W6        W6     W6        W6     W6         Registers

Working/Address                                                               W7        W7     W7        W7     W7

Registers                                                                     W8        W8     W8       W8      W8

                 DSP Address                                                  W9        W9     W9        W9  W9

                 Registers                                                    W10      W10     W10     W10   W10

                                                                              W11      W11     W11      W11  W11

                                                                              W12      W12     W12     W12   W12

                                                                              W13       W13    W13      W13  W13

                                                            Frame    Pointer/W14       W14     W14     W14   W14

                                                          Stack Pointer/W15        0

           PUSH.S and POP.S Shadows

           Nested DO Stack                                  SPLIM                  0           Stack Pointer Limit

                                                    AD39                AD31                                    AD15                      AD0

                                              AD39                AD31                                   AD15                        AD0

                                        AD39                AD31                                   AD15                         AD0

                                  AD39                AD31                                   AD15                          AD0

                            AD39              AD31                                     AD15                           AD0

DSP              ACCA
Accumulators(1)
                 ACCB

    PC23                                                                              PC0

     0                                                                                  0      Program Counter

                                                                  7                     0

                                                                        TBLPAG                 Data Table Page Address

                                                            9                           0

                                                                        DSRPAG                 X Data Space Read Page Address

                                                  15                                    0

                                                                RCOUNT                         REPEAT Loop Counter

                                              15                                        0

                                                                DCOUNT                         DO Loop Counter and Stack

     23                                                                                 0

     0                                  DOSTART                                         0      DO Loop Start Address and Stack

     23                                                                                 0

     0                                  DOEND                                           0      DO Loop End Address and Stack

                                                  15                                    0

                                                                CORCON                         CPU Core Control Register

                                                                                   SRL

OA       OB  SA  SB         OAB        SAB    DA    DC    IPL2    IPL1  IPL0  RA        N    OV      Z       C        STATUS Register

 2017-2018 Microchip Technology Inc.                                                                                 DS70005319B-page 39
dsPIC33CH128MP508 FAMILY

3.1.6  CPU RESOURCES                                       3.1.6.1      Key Resources

Many useful resources are provided on the main prod-       •  “dsPIC33E Enhanced CPU” (DS70005158) in

uct page of the Microchip web site for the devices listed     the “dsPIC33/PIC24 Family Reference Manual”

in this data sheet. This product page contains the latest  •  Code Samples

updates and additional information.                        •  Application Notes

                                                           •  Software Libraries

                                                           •  Webinars

                                                           •  All related “dsPIC33/PIC24 Family Reference

                                                              Manual” Sections

                                                           •  Development Tools

DS70005319B-page 40                                                          2017-2018 Microchip Technology  Inc.
                                                 dsPIC33CH128MP508 FAMILY

3.1.7          CPU CONTROL/STATUS REGISTERS

REGISTER 3-1:      SR: CPU STATUS REGISTER

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

         OA        OB                  SA(3)     SB(3)        OAB                 SAB           DA                 DC

bit 15                                                                                                                      bit 8

     R/W-0(2)      R/W-0(2)  R/W-0(2)              R-0        R/W-0               R/W-0         R/W-0              R/W-0

     IPL2(1)       IPL1(1)             IPL0(1)     RA               N             OV            Z                      C

bit 7                                                                                                                       bit 0

Legend:                      C = Clearable bit

R = Readable bit             W = Writable bit               U = Unimplemented bit, read as ‘0’

-n = Value at POR            ‘1’= Bit is set                ‘0’ = Bit is cleared         x = Bit is unknown

bit  15        OA: Accumulator A Overflow Status bit

               1 = Accumulator A has overflowed

               0 = Accumulator A has not overflowed

bit  14        OB: Accumulator B Overflow Status bit

               1 = Accumulator B has overflowed

               0 = Accumulator B has not overflowed

bit  13        SA: Accumulator A Saturation ‘Sticky’ Status bit(3)

               1 = Accumulator A is saturated or has been saturated at some time

               0 = Accumulator A is not saturated

bit  12        SB: Accumulator B Saturation ‘Sticky’ Status bit(3)

               1 = Accumulator B is saturated or has been saturated at some time

               0 = Accumulator B is not saturated

bit  11        OAB: OA || OB Combined Accumulator Overflow Status bit

               1 = Accumulator A or B has overflowed

               0 = Neither Accumulator A or B has overflowed

bit  10        SAB: SA || SB Combined Accumulator ‘Sticky’ Status bit

               1 = Accumulator A or B is saturated or has been saturated at some time

               0 = Neither Accumulator A or B is saturated

bit  9         DA: DO Loop Active bit

               1 = DO loop is in progress

               0 = DO loop is not in progress

bit  8         DC: MCU ALU Half Carry/Borrow bit

               1=  A carry-out from the 4th low-order bit (for byte-sized data) or 8th low-order bit (for word-sized data)

                   of the result occurred

               0=  No carry-out from the 4th low-order bit (for byte-sized data) or 8th low-order bit (for word-sized

                   data) of the result occurred

Note     1:   The IPL<2:0> bits are concatenated with the IPL<3> bit (CORCON<3>) to form the CPU Interrupt Priority

              Level. The value in parentheses indicates the IPL, if IPL<3> = 1. User interrupts are disabled when

              IPL<3> = 1.

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

         3:   A data write to the SR register can modify the SA and SB bits by either a data write to SA and SB or by

              clearing the SAB bit. To avoid a possible SA or SB bit write race condition, the SA and SB bits should not

              be modified using bit operations.

 2017-2018 Microchip Technology Inc.                                                           DS70005319B-page 41
dsPIC33CH128MP508 FAMILY

REGISTER 3-1:        SR: CPU STATUS REGISTER (CONTINUED)

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

              111 = CPU Interrupt Priority Level is 7 (15); user interrupts are disabled

              110 = CPU Interrupt Priority Level is 6 (14)

              101 = CPU Interrupt Priority Level is 5 (13)

              100 = CPU Interrupt Priority Level is 4 (12)

              011 = CPU Interrupt Priority Level is 3 (11)

              010 = CPU Interrupt Priority Level is 2 (10)

              001 = CPU Interrupt Priority Level is 1 (9)

              000 = CPU Interrupt Priority Level is 0 (8)

bit  4        RA: REPEAT Loop Active bit

              1 = REPEAT loop is in progress

              0 = REPEAT loop is not in progress

bit  3        N: MCU ALU Negative bit

              1 = Result was negative

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

bit  2        OV: MCU ALU Overflow bit

              This bit is used for signed arithmetic (2’s complement). It indicates an overflow of   the magnitude        that

              causes the sign bit to change state.

              1 = Overflow occurred for signed arithmetic (in this arithmetic operation)

              0 = No overflow occurred

bit  1        Z: MCU ALU Zero bit

              1 = An operation that affects the Z bit has set it at some time in the past

              0 = The most recent operation that affects the Z bit has cleared it (i.e., a non-zero  result)

bit  0        C: MCU ALU Carry/Borrow 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<2:0> bits are concatenated with the IPL<3> bit (CORCON<3>) to form the CPU Interrupt Priority

              Level. The value in parentheses indicates the IPL, if IPL<3> = 1. User interrupts are disabled when

              IPL<3> = 1.

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

          3:  A data write to the SR register can modify the SA and SB bits by either a data write to SA and SB or by

              clearing the SAB bit. To avoid a possible SA or SB bit write race condition, the SA and SB bits should not

              be modified using bit operations.

DS70005319B-page 42                                                                   2017-2018 Microchip Technology Inc.
                                               dsPIC33CH128MP508 FAMILY

REGISTER 3-2:      CORCON: CORE CONTROL REGISTER

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

        VAR        —                   US1      US0               EDT(1)           DL2           DL1              DL0

bit 15                                                                                                                 bit  8

     R/W-0         R/W-0               R/W-1    R/W-0             R/C-0            R-0           R/W-0            R/W-0

        SATA       SATB      SATDW              ACCSAT            IPL3(2)          SFA           RND              IF

bit 7                                                                                                                  bit  0

Legend:                      C = Clearable bit

R = Readable bit             W = Writable bit                U = Unimplemented bit, read as ‘0’

-n = Value at POR            ‘1’ = Bit is set                ‘0’ = Bit is cleared            x = Bit is unknown

bit 15        VAR: Variable Exception Processing Latency Control bit

              1 = Variable exception processing is enabled

              0 = Fixed exception processing is enabled

bit 14        Unimplemented: Read as ‘0’

bit 13-12     US<1:0>: DSP Multiply Unsigned/Signed Control bits

              11 = Reserved

              10 = DSP engine multiplies are mixed sign

              01 = DSP engine multiplies are unsigned

              00 = DSP engine multiplies are signed

bit 11        EDT: Early DO Loop Termination Control bit(1)

              1 = Terminates executing DO loop at the end of the current loop iteration

              0 = No effect

bit 10-8      DL<2:0>: DO Loop Nesting Level Status bits

              111 = Seven DO loops are active

              ...

              001 = One DO loop is active

              000 = Zero DO loops are active

bit  7        SATA: ACCA Saturation Enable bit

              1 = Accumulator A saturation is enabled

              0 = Accumulator A saturation is disabled

bit  6        SATB: ACCB Saturation Enable bit

              1 = Accumulator B saturation is enabled

              0 = Accumulator B saturation is disabled

bit  5        SATDW: Data Space Write from DSP Engine Saturation Enable bit

              1 = Data Space write saturation is enabled

              0 = Data Space write saturation is disabled

bit  4        ACCSAT: Accumulator Saturation Mode Select bit

              1 = 9.31 saturation (super saturation)

              0 = 1.31 saturation (normal saturation)

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

              1 = CPU Interrupt Priority Level is greater than 7

              0 = CPU Interrupt Priority Level is 7 or less

Note    1:    This bit is always read as ‘0’.

        2:    The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU  Interrupt  Priority  Level.

 2017-2018 Microchip Technology Inc.                                                            DS70005319B-page 43
dsPIC33CH128MP508 FAMILY

REGISTER 3-2:        CORCON: CORE CONTROL REGISTER (CONTINUED)

bit 2         SFA: Stack Frame Active Status bit

              1=     Stack frame is active; W14 and W15 address 0x0000 to 0xFFFF, regardless of DSRPAG

              0=     Stack frame is not active; W14 and W15 address the base Data Space

bit 1         RND: Rounding Mode Select bit

              1=     Biased (conventional) rounding is enabled

              0=     Unbiased (convergent) rounding is enabled

bit 0         IF: Integer or Fractional Multiplier Mode Select bit

              1 = Integer mode is enabled for DSP multiply

              0 = Fractional mode is enabled for DSP multiply

Note      1:  This bit is always read as ‘0’.

          2:  The IPL3 bit is concatenated with the IPL<2:0> bits (SR<7:5>) to form the CPU Interrupt Priority Level.

REGISTER 3-3:        CTXTSTAT: CPU W REGISTER CONTEXT STATUS REGISTER

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

        —            —        —                   —                 —               CCTXI2  CCTXI1      CCTXI0

bit 15                                                                                                                 bit 8

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

        —            —        —                   —                 —               MCTXI2  MCTXI1      MCTXI0

bit 7                                                                                                                  bit 0

Legend:

R = Readable bit          W = Writable bit                    U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set                    ‘0’ = Bit is cleared          x = Bit is unknown

bit  15-11    Unimplemented: Read as ‘0’

bit  10-8     CCTXI<2:0>: Current (W Register) Context Identifier bits

              111 = Reserved

              •

              •

              •

              100 = Alternate Working Register Set 4 is currently in use

              011 = Alternate Working Register Set 3 is currently in use

              010 = Alternate Working Register Set 2 is currently in use

              001 = Alternate Working Register Set 1 is currently in use

              000 = Default register set is currently in use

bit  7-3      Unimplemented: Read as ‘0’

bit  2-0      MCTXI<2:0>: Manual (W Register) Context Identifier bits

              111 = Reserved

              •

              •

              •

              100 = Alternate Working Register Set 4 was most recently manually selected

              011 = Alternate Working Register Set 3 was most recently manually selected

              010 = Alternate Working Register Set 2 was most recently manually selected

              001 = Alternate Working Register Set 1 was most recently manually selected

              000 = Default register set was most recently manually selected

DS70005319B-page 44                                                                  2017-2018 Microchip Technology Inc.
                                                        dsPIC33CH128MP508 FAMILY

3.1.8        ARITHMETIC LOGIC UNIT (ALU)                              3.1.9      DSP ENGINE

The dsPIC33CH128MP508 family ALU is 16 bits wide                      The DSP engine consists of a high-speed 17-bit x 17-bit

and is capable of addition, subtraction, bit shifts and logic         multiplier, a 40-bit barrel shifter and a 40-bit adder/

operations.  Unless         otherwise    mentioned,    arithmetic     subtracter (with two target accumulators, round and

operations are two’s complement in nature. Depending                  saturation logic).

on the operation, the ALU can affect the values of the                The DSP engine can also perform inherent accumulator-

Carry (C), Zero (Z), Negative (N), Overflow (OV) and                  to-accumulator      operations  that  require  no  additional

Digit Carry (DC) Status bits in the SR register. The C                data. These instructions are, ADD, SUB, NEG, MIN and

and DC Status bits operate as Borrow and Digit Borrow                 MAX.

bits, respectively, for subtraction operations.                       The DSP engine has options selected through bits in

The    ALU   can   perform       8-bit   or  16-bit  operations,      the CPU Core Control register (CORCON), as listed

depending on the mode of the instruction that is used.                below:

Data   for   the   ALU   operation      can  come    from   the  W    •  Fractional or integer DSP multiply (IF)

register    array  or    data  memory,       depending     on    the

addressing mode of the instruction. Likewise, output                  •  Signed, unsigned or mixed-sign DSP multiply

data from the ALU can be written to the W register array                 (USx)

or a data memory location.                                            •  Conventional or convergent rounding (RND)

Refer  to    the   “16-Bit  MCU     and      DSC  Programmer’s        •  Automatic saturation on/off for ACCA (SATA)

Reference Manual” (DS70000157) for information on                     •  Automatic saturation on/off for ACCB (SATB)

the SR bits affected by each instruction.                             •  Automatic saturation on/off for writes to data

The core CPU incorporates hardware support for both                      memory (SATDW)

multiplication and division. This includes a dedicated                •  Accumulator Saturation mode selection

hardware     multiplier  and     support     hardware  for  16-bit       (ACCSAT)

divisor division.

3.1.8.1           Multiplier                                          TABLE 3-2:          DSP INSTRUCTIONS

                                                                                          SUMMARY

Using the high-speed, 17-bit x 17-bit multiplier, the ALU                                 Algebraic                  ACC

supports unsigned, signed or mixed-sign operation in                     Instruction      Operation                  Write-Back

several MCU multiplication modes:

•  16-bit x 16-bit signed                                                CLR              A=0                            Yes

•  16-bit x 16-bit unsigned                                              ED               A = (x – y)2                   No

•  16-bit signed x 5-bit (literal) unsigned                              EDAC             A = A + (x – y)2               No

•  16-bit signed x 16-bit unsigned                                       MAC              A = A + (x • y)                Yes

•  16-bit unsigned x 5-bit (literal) unsigned                            MAC              A = A + x2                     No

•  16-bit unsigned x 16-bit signed                                       MOVSAC           No change in A                 Yes

•  8-bit unsigned x 8-bit unsigned                                       MPY              A=x•y                          No

3.1.8.2           Divider                                                MPY              A = x2                         No

The divide block supports 32-bit/16-bit and 16-bit/16-bit                MPY.N            A=–x•y                         No

signed and unsigned integer divide operations with the                   MSC              A=A–x•y                        Yes

following data sizes:

•  32-bit signed/16-bit signed divide

•  32-bit unsigned/16-bit unsigned divide

•  16-bit signed/16-bit signed divide

•  16-bit unsigned/16-bit unsigned divide

The 16-bit signed and unsigned DIV instructions can

specify any W register for both the 16-bit divisor (Wn)

and any W register (aligned) pair (W(m + 1):Wm) for

the  32-bit  dividend.      The  divide   algorithm    takes   one

cycle per bit of divisor, so both 32-bit/16-bit and 16-bit/

16-bit instructions take the same number of cycles to

execute. There are additional instructions: DIV2 and

DIVF2. Divide instructions will complete in six cycles.

 2017-2018 Microchip Technology Inc.                                                                       DS70005319B-page 45
dsPIC33CH128MP508 FAMILY

3.2       Master Memory Organization                                                                  3.2.1            PROGRAM ADDRESS SPACE

Note:     This data sheet summarizes the features                                                     The    program       address       memory         space  of   the

          of     the  dsPIC33CH128MP508                                     family  of                dsPIC33CH128MP508 family devices is 4M instructions.

          devices.        It   is  not  intended                            to  be  a                 The space is addressable by a 24-bit value derived

          comprehensive reference source. To com-                                                     either from the 23-bit PC during program execution, or

          plement the information in this data sheet,                                                 from   table     operation  or  Data     Space    remapping,  as

          refer       to  “dsPIC33E/PIC24E                                  Program                   described in Section 3.2.9 “Interfacing Program and

          Memory” (DS70000613) in the “dsPIC33/                                                       Data Memory Spaces”.

          PIC24 Family Reference Manual”, which is                                                    User application access to the program memory space

          available       from     the  Microchip                           web     site              is   restricted  to  the    lower  half  of  the  address  range

          (www.microchip.com).                                                                        (0x000000 to 0x7FFFFF). The exception is the use of

The dsPIC33CH128MP508 family architecture features                                                    TBLRD operations, which use TBLPAG<7> to permit

separate  program         and  data     memory  spaces,                             and               access to calibration data and Device ID sections of the

buses. This architecture also allows the direct access                                                configuration memory space.

of program memory from the Data Space (DS) during                                                     The    program       memory        maps      for  the      Master

code execution.                                                                                       dsPIC33CHXXXMPX08 device are shown in Figure 3-3

                                                                                                      and Figure 3-4.

FIGURE 3-3:      PROGRAM MEMORY MAP FOR                                                   MASTER dsPIC33CH128MPXXX DEVICES(1)

                                                                                    GOTO Instruction         0x000000

                                                                                    Reset Address            0x000002

                                                                                 Interrupt Vector Table      0x000004
                                                                                                             0x0001FE
                                                User Memory Space                                            0x000200
                                                                                    User Program
                                                                                    Flash Memory

                                                                                    (44K instructions)       0x015EFE

                                                                                 Device Configuration        0x015F00

                                                                                                             0x015FFE

                                                                                                             0x016000

                                                                                    Unimplemented

                                                                                     (Read ‘0’s)

                                                                                                             0x7FFFFE
                                                                                                             0x800000
                                                                                          Reserved
                                                                                                             0x800FFE

                                                                                                             0x801000

                                                                                    Calibration Data(2,3)

                                                Configuration Memory Space                                   0x8016FC
                                                                                                             0x801700
                                                                                    User OTP Memory
                                                                                                             0x8017FE
                                                                                                             0x801800

                                                                                          Reserved

                                                                                                             0xF9FFFE

                                                                                    Write Latches            0xFA0000

                                                                                                             0xFA0002
                                                                                                             0xFA0004

                                                                                          Reserved

                                                                                                             0xFEFFFE
                                                                                                             0xFF0000
                                                                                          DEVID
                                                                                                             0xFF0002

                                                                                          Reserved           0xFF0004

                                                                                                             0xFFFFFE

     Note 1:  Memory areas are not shown to scale.

          2:  Calibration data area must be maintained during programming.

          3:  Calibration data area includes UDID locations.

DS70005319B-page 46                                                                                                         2017-2018 Microchip Technology Inc.
                                                                           dsPIC33CH128MP508 FAMILY

FIGURE   3-4:  PROGRAM  MEMORY                                             MAP FOR MASTER          dsPIC33CH64MPXXX  DEVICES(1)

                                                                           GOTO Instruction        0x000000

                                                                           Reset Address           0x000002

                                                                           Interrupt Vector Table  0x000004
                                                                                                   0x0001FE
                                               User Memory Space                                   0x000200
                                                                           User Program
                                                                           Flash Memory

                                                                           (22K instructions)      0x00AEFE

                                                                                                   0x00AF00

                                                                           Device Configuration

                                                                                                   0x00AFFE
                                                                                                   0x00B000

                                                                           Unimplemented

                                                                           (Read ‘0’s)

                                                                                                   0x7FFFFE
                                                                                                   0x800000
                                                                           Reserved

                                                                                                   0x800FFE

                                                                                                   0x800100

                                                                           Calibration Data(2,3)

                                               Configuration Memory Space                          0x8016FC

                                                                           User OTP Memory         0x801700

                                                                                                   0x8017FE
                                                                                                   0x801800
                                                                           Reserved

                                                                                                   00xxFFA9F00F0F0E

                                                                           Write Latches           0xFA0002

                                                                                                   0xFA0004

                                                                           Reserved

                                                                                                   0xFEFFFE
                                                                                                   0xFF0000
                                                                           DEVID
                                                                                                   0xFF0002

                                                                           Reserved                0xFF0004

                                                                                                   0xFFFFFE

Note 1:  Memory areas are not shown to scale.

2:       Calibration data area must be maintained during programming.

3:       Calibration data area includes UDID locations.

 2017-2018 Microchip Technology Inc.                                                                                DS70005319B-page 47
dsPIC33CH128MP508 FAMILY

3.2.1.1       Program Memory Organization                                3.2.1.2            Interrupt and Trap Vectors

The  program  memory         space   is  organized      in  word-        All dsPIC33CH128MP508 family devices reserve the

addressable blocks. Although it is treated as 24 bits                    addresses between 0x000000 and 0x000200 for hard-

wide, it is more appropriate to think of each address of                 coded program execution vectors. A hardware Reset

the program memory as a lower and upper word, with                       vector is provided to redirect code execution from the

the upper byte of the upper word being unimplemented.                    default value of the PC on device Reset to the actual

The lower word always has an even address, while the                     start of code. A GOTO instruction is programmed by the

upper word has an odd address (Figure 3-5).                              user  application      at    address,     0x000000,    of  Flash

Program memory addresses are always word-aligned                         memory, with the actual address for the start of code at

on the lower word, and addresses are incremented or                      address, 0x000002, of Flash memory.

decremented,  by      two,   during  code      execution.   This         A  more  detailed      discussion     of  the  Interrupt   Vector

arrangement provides compatibility with data memory                      Tables   (IVTs)    is  provided    in     Section 3.5    “Master

space    addressing   and    makes   data      in  the     program       Interrupt Controller”.

memory space accessible.

FIGURE 3-5:                  PROGRAM MEMORY ORGANIZATION

             msw                     most significant word                  least significant   word               PC Address

             Address                                                                                               (lsw Address)

                                               23                    16           8                         0

         0x000001            00000000                                                                              0x000000

         0x000003            00000000                                                                              0x000002

         0x000005            00000000                                                                              0x000004

         0x000007            00000000                                                                              0x000006

                             Program Memory                              Instruction Width

                             ‘Phantom’ Byte

                             (read as ‘0’)

3.2.2        UNIQUE DEVICE IDENTIFIER                                    The UDID is stored in five read-only locations, located

             (UDID)                                                      between 0x801200 and 0x801208 in the device config-

All dsPIC33CH128MP508 family devices are individually                    uration  space.    Table 3-3  lists    the  addresses      of  the

encoded      during   final  manufacturing     with     a  Unique        identifier words and shows their contents

Device Identifier or UDID. The UDID cannot be erased                     TABLE 3-3:             UDID ADDRESSES

by a bulk erase command or any other user-accessible

means. This feature allows for manufacturing trace-                            UDID                 Address             Description

ability of Microchip Technology devices in applications                        UDID1                0x801200            UDID Word 1

where this is a requirement. It may also be used by the

application manufacturer for any number of things that                         UDID2                0x801202            UDID Word 2

may require unique identification, such as:                                    UDID3                0x801204            UDID Word 3

•  Tracking the device                                                         UDID4                0x801206            UDID Word 4

•  Unique serial number                                                        UDID5                0x801208            UDID Word 5

•  Unique security key

The UDID comprises five 24-bit program words. When

taken  together,      these  fields  form   a  unique       120-bit

identifier.

DS70005319B-page 48                                                                              2017-2018 Microchip Technology Inc.
                                                           dsPIC33CH128MP508 FAMILY

3.2.3            DATA ADDRESS SPACE (MASTER)                             All word accesses must be aligned to an even address.

The dsPIC33CH128MP508 family CPU has a separate                          Misaligned word data fetches are not supported, so

16-bit wide data memory space. The Data Space is                         care    must     be     taken    when    mixing     byte    and   word

accessed     using     separate  Address        Generation      Units    operations, or translating from 8-bit MCU code. If a

(AGUs)     for    read   and    write    operations.      The   data     misaligned read or write is attempted, an address error

memory map is shown in Figure 3-6.                                       trap is generated. If the error occurred on a read, the

All Effective Addresses (EAs) in the data memory space                   instruction underway is completed. If the error occurred

are  16    bits  wide   and   point  to    bytes  within  the   Data     on a write, the instruction is executed but the write does

Space.     This   arrangement    gives      a   base    Data    Space    not   occur.     In  either    case,  a   trap  is  then    executed,

address range of 64 Kbytes or 32K words.                                 allowing the system and/or user application to examine

                                                                         the machine state prior to execution of the address

The lower half of the data memory space (i.e., when                      Fault.

EA<15>     =     0)  is   used   for     implemented      memory         All byte loads into any W register are loaded into the

addresses,       while   the  upper     half    (EA<15>    =    1)  is   LSB; the MSB is not modified.

reserved for the Program Space Visibility (PSV).                         A Sign-Extend (SE) instruction is provided to allow user

The dsPIC33CH128MP508 family devices implement                           applications     to     translate  8-bit  signed      data  to    16-bit

up to 16 Kbytes of data memory. If an EA points to a                     signed values. Alternatively, for 16-bit unsigned data,

location outside of this area, an all-zero word or byte is               user applications can clear the MSB of any W register

returned.                                                                by   executing       a  Zero-Extend       (ZE)  instruction     on   the

3.2.3.1           Data Space Width                                       appropriate address.

The    data      memory       space    is   organized     in    byte-    3.2.3.3              SFR Space

addressable, 16-bit wide blocks. Data is aligned in data                 The   first   4  Kbytes      of  the   Near     Data    Space,    from

memory and registers as 16-bit words, but all Data                       0x0000 to 0x0FFF, is primarily occupied by Special

Space      EAs   resolve  to    bytes.     The  Least     Significant    Function Registers (SFRs). These are used by the

Bytes (LSBs) of each word have even addresses, while                     dsPIC33CH128MP508                family   core      and   peripheral

the    Most      Significant    Bytes      (MSBs)         have  odd      modules for controlling the operation of the device.

addresses.                                                               SFRs    are   distributed      among      the   modules     that    they

3.2.3.2           Data Memory Organization and                           control and are generally grouped together by module.

                  Alignment                                              Much of the SFR space contains unused addresses;

To   maintain     backward     compatibility      with    PIC®  MCU      these are read as ‘0’.

devices    and    improve      Data     Space     memory        usage    Note:            The actual set of peripheral features and

efficiency, the dsPIC33CH128MP508 family instruction                                      interrupts varies by the device. Refer to the

set  supports     both    word   and     byte   operations.     As  a                     corresponding        device    tables   and  pinout

consequence of byte accessibility, all Effective Address                                  diagrams for device-specific information.

calculations are internally scaled to step through word-                 3.2.3.4              Near Data Space

aligned memory. For example, the core recognizes that

Post-Modified        Register    Indirect      Addressing       mode     The   8-Kbyte        area,   between     0x0000     and   0x1FFF,    is

[Ws++] results in a value of Ws + 1 for byte operations                  referred to as the Near Data Space. Locations in this

and Ws + 2 for word operations.                                          space are directly addressable through a 13-bit absolute

A    data  byte   read,   reads      the   complete       word  that     address field within all memory direct instructions. Addi-

contains the byte, using the LSb of any EA to determine                  tionally, the whole Data Space is addressable using MOV

which byte to select. The selected byte is placed onto                   instructions, which support Memory Direct Addressing

the LSB of the data path. That is, data memory and                       mode with a 16-bit address field, or by using Indirect

registers    are  organized      as    two     parallel,  byte-wide      Addressing       mode       using  a   Working      register     as  an

entities   with   shared      (word)     address      decode,       but  Address Pointer.

separate write lines. Data byte writes only write to the

corresponding side of the array or register that matches

the byte address.

 2017-2018 Microchip Technology Inc.                                                                              DS70005319B-page 49
dsPIC33CH128MP508 FAMILY

FIGURE 3-6:  DATA    MEMORY   MAP  FOR dsPIC33CH128MP508         DEVICES

                     MSB                                         LSB

                     Address                       16 Bits       Address

                                   MSB                      LSB

4-Kbyte              0x0001                                      0x0000

SFR Space                               SFR Space

                     0x0FFF                                      0x0FFE       8-Kbyte

                     0x1001                                                   Near

                                                                              Data Space

                                   X Data RAM (X) (8K)           0x2000

16-Kbyte             0x2FFF                                      0x2FFE

SRAM Space           0x3001                                      0x3000

                                   Y Data RAM (Y) (8K)

                     0x4FFF                                      0x4FFE
                     0x5001                                      0x5000

                     0x8001                                      0x8000

                                                   X Data

                                   Unimplemented (X)

                                                                              Optionally

                                                                              Mapped

                                                                              into Program

                                                                              Memory

                     0xFFFF                                      0xFFFE

Note:        Memory areas are not shown to scale.

DS70005319B-page 50                                               2017-2018  Microchip Technology  Inc.
                                                   dsPIC33CH128MP508 FAMILY

3.2.3.5        X and Y Data Spaces                              Both the X and Y Data Spaces support Modulo Address-

The dsPIC33CH128MP508 family core has two Data                  ing mode for all instructions, subject to addressing mode

Spaces, X and Y. These Data Spaces can be considered            restrictions.  Bit-Reversed  Addressing     mode  is  only

either separate (for some DSP instructions) or as one           supported for writes to X Data Space.

unified linear address range (for MCU instructions). The        All data memory writes, including in DSP instructions,

Data Spaces are accessed using two Address Genera-              view Data Space as combined X and Y address space.

tion Units (AGUs) and separate data paths. This feature         The boundary between the X and Y Data Spaces is

allows   certain  instructions  to  concurrently   fetch   two  device-dependent and is not user-programmable.

words from RAM, thereby enabling efficient execution of         3.2.4          MEMORY RESOURCES

DSP algorithms, such as Finite Impulse Response (FIR)

filtering and Fast Fourier Transform (FFT).                     Many   useful  resources     are  provided  on  the   main

The  X   Data     Space  is  used   by  all  instructions  and  product page of the Microchip web site for the devices

supports  all  addressing    modes.     X    Data  Space   has  listed in this data sheet. This product page contains the

separate read and write data buses. The X read data             latest updates and additional information.

bus is the read data path for all instructions that view        3.2.4.1        Key Resources

Data Space as combined X and Y address space. It is

also the X data prefetch path for the dual operand DSP          •  “dsPIC33E Enhanced CPU” (DS70005158) in

instructions (MAC class).                                          the “dsPIC33/PIC24 Family Reference Manual”

The Y Data Space is used in concert with the X Data             •  Code Samples

Space    by  the  MAC    class  of  instructions   (CLR,   ED,  •  Application Notes

EDAC, MAC, MOVSAC, MPY, MPY.N and MSC) to provide               •  Software Libraries

two concurrent data read paths.                                 •  Webinars

                                                                •  All Related “dsPIC33/PIC24 Family Reference

                                                                   Manual” Sections

                                                                •  Development Tools

 2017-2018 Microchip Technology Inc.                                                             DS70005319B-page 51
dsPIC33CH128MP508 FAMILY

3.2.5     SFR MAPS                                                       dsPIC33CH128MP508                   family.  Not  all  registers        are

The following tables show dsPIC33CH128MP508 fam-                         present on all device variants. Refer to Table 1 and

ily Master SFR names, addresses and Reset values.                        Table 2  for  peripheral       availability.      Table 4-25            shows

These    tables  contain  all  registers  applicable    to  the          port availability for the different package options.

TABLE 3-4:            MASTER SFR BLOCK 000h

Register  Address         All Resets      Register          Address      All Resets                Register  Address            All Resets

Core                                      MODCON            046          00--000000000000          CRC

WREG0            000  0000000000000000    XMODSRT           048          xxxxxxxxxxxxxxx0          CRCCONL   0B0           0-000000010000--

WREG1            002  0000000000000000    XMODEND           04A          xxxxxxxxxxxxxxx1          CRCCONH   0B2           ---00000---00000

WREG2            004  0000000000000000    YMODSRT           04C          xxxxxxxxxxxxxxx0          CRCXORL   0B4           000000000000000-

WREG3            006  0000000000000000    YMODEND           04E          xxxxxxxxxxxxxxx1          CRCXORH   0B6           0000000000000000

WREG4            008  0000000000000000    XBREV             050          0xxxxxxxxxxxxxxx          CRCDATL   0B8           0000000000000000

WREG5       00A       0000000000000000    DISICNT           052          xxxxxxxxxxxxxx00          CRCDATH   0BA           0000000000000000

WREG6       00C       0000000000000000    TBLPAG            054          --------00000000          CRCWDATL  0BC           0000000000000000

WREG7       00E       0000000000000000    YPAG              056          --------00000001          CRCWDATH  0BE           0000000000000000

WREG8            010  0000000000000000    MSTRPR            058          ----------00---0          CLC

WREG9            012  0000000000000000    CTXTSTAT          05A          0000000000000000          CLC1CONL  0C0           0-0-00--000--000

WREG10           014  0000000000000000    DMTCON            05C          0000000000000000          CLC1CONH  0C2           ------------0000

WREG11           016  0000000000000000    DMTPRECLR         060          0000000000000000          CLC1SEL   0C4           -000-000-000-000

WREG12           018  0000000000000000    DMTCLR            064          0000000000000000          CLC1GLSL  0C8           0000000000000000

WREG13      01A       0000000000000000    DMTSTAT           068          0000000000000000          CLC1GLSH  0CA           0000000000000000

WREG14      01C       0000000000000000    DMTCNTL           06C          0000000000000000          CLC2CONL  0CC           0-0-00--000--000

WREG15      01E       0000100000000000    DMTCNTH           06E          0000000000000000          CLC2CONH  0CE           ------------0000

SPLIM            020  xxxxxxxxxxxxxxxx    DMTHOLDREG        070          0000000000000000          CLC2SEL   0D0           -000-000-000-000

ACCAL            022  xxxxxxxxxxxxxxxx    DMTPSCNTL         074          0000000000000000          CLC2GLSL  0D4           0000000000000000

ACCAH            024  xxxxxxxxxxxxxxxx    DMTPSCNTH         076          0000000000000000          CLC2GLSH  0D6           0000000000000000

ACCAU            026  xxxxxxxxxxxxxxxx    DMTPSINTVL        078          0000000000000000          CLC3CONL  0D8           0-0-00--000--000

ACCBL            028  xxxxxxxxxxxxxxxx    DMTPSINTVH        07A          0000000000000000          CLC3CONH  0DA           ------------0000

ACCBH       02A       xxxxxxxxxxxxxxxx    SENT                                                     CLC3SEL   0DC           -000-000-000-000

ACCBU       02C       xxxxxxxxxxxxxxxx    SENT1CON1         080          0000000000000000          CLC3GLSL  0E0           0000000000000000

PCL         02E       0000000000000000    SENT1CON2         084          0000000000000000          CLC3GLSH  0E2           0000000000000000

PCH              030  --------00000000    SENT1CON3         088          0000000000000000          CLC4CONL  0E4           0-0-00--000--000

DSRPAG           032  ------0000000001    SENT1STAT         08C          0000000000000000          CLC4CONH  0E6           ------------0000

DSWPAG           034  -----00000000001    SENT1SYNC         090          0000000000000000          CLC4SEL   0E8           -000-000-000-000

RCOUNT           036  xxxxxxxxxxxxxxxx    SENT1DATL         094          0000000000000000          CLC4GLSL  0EC           0000000000000000

DCOUNT           038  xxxxxxxxxxxxxxxx    SENT1DATH         096          0000000000000000          CLC4GLSH  0EE           0000000000000000

DOSTART     03A       1111111111111111    SENT2CON1         098          0000000000000000          ECCCONL   0F0           ---------------0

DOSTARTL    03A       1111111111111110    SENT2CON2         09C          0000000000000000          ECCCONH   0F2           0000000000000000

DOSTARTH    03C       0000000011111111    SENT2CON3         0A0          0000000000000000          ECCADDRL  0F4           0000000000000000

DOENDL      03E       xxxxxxxxxxxxxxx0    SENT2STAT         0A4          0000000000000000          ECCADDRH  0F6           0000000000000000

DOENDH           040  ---------xxxxxxx    SENT2SYNC         0A8          0000000000000000          ECCSTATL  0F8           0000000000000000

SR               042  0000000000000000    SENT2DATL         0AC          0000000000000000          ECCSTATH  0FA           ------0000000000

CORCON           044  x-xx000000100000    SENT2DATH         0AE          0000000000000000

Legend:   x = unknown or indeterminate value; “-” = unimplemented bits.  Address and Reset values  are in hexadecimal and binary, respectively.

Note 1:   SFR shown is for the superset 80-pin device.

DS70005319B-page 52                                                                                 2017-2018 Microchip Technology Inc.
                                                      dsPIC33CH128MP508 FAMILY

TABLE 3-5:          MASTER SFR BLOCK 100h

Register       Address      All Resets                Register   Address    All Resets                 Register    Address  All Resets

Timers                                                INT1TMRH         15E  0000000000000000           MSI1MBX3D   1E0      0000000000000000

T1CON          100          0-0000000-00-00-          INT1HLDL         160  0000000000000000           MSI1MBX4D   1E2      0000000000000000

     TMR1      104          0000000000000000          INT1HLDH         162  0000000000000000           MSI1MBX5D   1E4      0000000000000000

     PR1       108          0000000000000000          INDX1CNTL        164  0000000000000000           MSI1MBX6D   1E6      0000000000000000

QEI                                                   INDX1CNTH        166  0000000000000000           MSI1MBX7D   1E8      0000000000000000

QEI1CON        140          0000000000000000          INDX1HLDL        168  0000000000000000           MSI1MBX8D   1EA      0000000000000000

QEI1IOCL       144          000000000000xxxx          INDX1HLDH        16A  0000000000000000           MSI1MBX9D   1EC      0000000000000000

QEI1IOCH       146          ---------------0          QEI1GECL         16C  0000000000000000           MSI1MBX10D  1EE      0000000000000000

QEI1STAT       148          --00000000000000          QEI1GECH         16E  0000000000000000           MSI1MBX11D  1F0      0000000000000000

POS1CNTL       14C          0000000000000000          QEI1LECL         170  0000000000000000           MSI1MBX12D  1F2      0000000000000000

POS1CNTH       14E          0000000000000000          QEI1LECH         172  0000000000000000           MSI1MBX13D  1F4      0000000000000000

POS1HLDL       150          0000000000000000          MSI1CON          1D2  0---xx0000000000           MSI1MBX14D  1F6      0000000000000000

POS1HLDH       152          0000000000000000          MSI1STAT         1D4  0000000000000000           MSI1MBX15D  1F8      0000000000000000

VEL1CNTL       154          0000000000000000          MSI1KEY          1D6  --------00000000           MSI1FIFOCS  1FA      0---00000---0000

VEL1CNTH       156          0000000000000000          MSI1MBXS         1D8  --------00000000           MRSWFDATA   1FC      0000000000000000

VEL1HLDL       158          0000000000000000          MSI1MBX0D        1DA  0000000000000000           MWSRFDATA   1FE      0000000000000000

VEL1HLDH       15A          0000000000000000          MSI1MBX1D        1DC  0000000000000000

INT1TMRL       15C          0000000000000000          MSI1MBX2D        1DE  0000000000000000

Legend:    x=  unknown  or  indeterminate value; “-”  = unimplemented  bits. Address and Reset values  are in hexadecimal and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                              DS70005319B-page 53
dsPIC33CH128MP508 FAMILY

TABLE 3-6:            MASTER SFR BLOCK 200h

Register         Address  All Resets        Register    Address  All Resets                           Register   Address  All Resets

I2C                                              U1P2   24E      -------000000000                     SPI1CON1H  2AE      0000000000000000

I2C1CONL         200      0-01000000000000       U1P3   250      0000000000000000                     SPI1CON2L  2B0      -----------00000

I2C1CONH         202      ---------0000000  U1P3H       252      --------00000000                     SPI1CON2H  2B2      ----------------

I2C1STAT         204      000--00000000000  U1TXCHK     254      --------00000000                     SPI1STATL  2B4      ---00--0001-1-00

I2C1ADD          208      ------0000000000  U1RXCHK     256      --------00000000                     SPI1STATH  2B6      --000000--000000

I2C1MSK          20C      ------0000000000  U1SCCON     258      ----------00000-                     SPI1BUFL   2B8      0000000000000000

I2C1BRG          210      0000000000000000  U1SCINT     25A      --00-000--00-000                     SPI1BUFH   2BA      0000000000000000

I2C1TRN          214      --------11111111       U1INT  25C      --------00---0--                     SPI1BRGL   2BC      ---xxxxxxxxxxxxx

I2C1RCV          218      --------00000000  U2MODE      260      0-000-0000000000                     SPI1BRGH   2BE      ----------------

I2C2CONL         21C      0-01000000000000  U2MODEH     262      00---00000000000                     SPI1IMSKL  2C0      ---00--0000-0-00

I2C2CONH         21E      ---------0000000  U2STA       264      0000000010000000                     SPI1IMSKH  2C2      0-0000000-000000

I2C2STAT         220      000--00000000000  U2STAH      266      -000-00000101110                     SPI1URDTL  2C4      0000000000000000

I2C2ADD          224      ------0000000000  U2BRG       268      0000000000000000                     SPI1URDTH  2C6      0000000000000000

I2C2MSK          228      ------0000000000  U2BRGH      26A      ------------0000                     SPI2CON1L  2C8      0-00000000000000

I2C2BRG          22C      0000000000000000  U2RXREG     26C      --------xxxxxxxx                     SPI2CON1H  2CA      0000000000000000

I2C2TRN          230      --------11111111  U2TXREG     270      -------xxxxxxxxx                     SPI2CON2L  2CC      -----------00000

I2C2RCV          234      --------00000000       U2P1   274      -------000000000                     SPI2CON2H  2CE      ----------------

UART                                             U2P2   276      -------000000000                     SPI2STATL  2D0      ---00--0001-1-00

U1MODE           238      0-000-0000000000       U2P3   278      0000000000000000                     SPI2STATH  2D2      --000000--000000

U1MODEH          23A      00---00000000000  U2P3H       27A      --------00000000                     SPI2BUFL   2D4      0000000000000000

U1STA            23C      0000000010000000  U2TXCHK     27C      --------00000000                     SPI2BUFH   2D6      0000000000000000

U1STAH           23E      -000-00000101110  U2RXCHK     27E      --------00000000                     SPI2BRGL   2D8      ---xxxxxxxxxxxxx

U1BRG            240      0000000000000000  U2SCCON     280      ----------00000-                     SPI2BRGH   2DA      ----------------

U1BRGH           242      ------------0000  U2SCINT     282      --00-000--00-000                     SPI2IMSKL  2DC      ---00--0000-0-00

U1RXREG          244      --------xxxxxxxx       U2INT  284      --------00---0--                     SPI2IMSKH  2DE      0-0000000-000000

U1TXREG          248      -------xxxxxxxxx  SPI                                                       SPI2URDTL  2E0      0000000000000000

     U1P1        24C      -------000000000  SPI1CON1L   2AC      0-00000000000000                     SPI2URDTH  2E2      0000000000000000

Legend:    x  =  unknown  or indeterminate value; “-” = unimplemented bits. Address and Reset values  are in hexadecimal and binary, respectively.

DS70005319B-page 54                                                                                    2017-2018 Microchip Technology Inc.
                                                   dsPIC33CH128MP508 FAMILY

TABLE 3-7:       MASTER SFR BLOCK 300h-400h

Register   Address    All Resets                   Register   Address     All Resets                Register   Address  All Resets

High-Speed PWM                                     PG1TRIGB   356         0000000000000000          PG3FFPCIH  3AE      0000-00000000000

PCLKCON     300       00-----0--00--00             PG1TRIGC   358         0000000000000000          PG3SPCIL   3B0      0000000000000000

FSCL        302       0000000000000000             PG1DTL     35A         --00000000000000          PG3SPCIH   3B2      0000-00000000000

FSMINPER    304       0000000000000000             PG1DTH     35C         --00000000000000          PG3LEBL    3B4      0000000000000000

MPHASE      306       0000000000000000             PG1CAP     35E         0000000000000000          PG3LEBH    3B6      -----000----0000

MDC         308       0000000000000000             PG2CONL    360         0-00000000000000          PG3PHASE   3B8      0000000000000000

MPER        30A       0000000000000000             PG2CONH    362         000-000000--0000          PG3DC      3BA      0000000000000000

LFSR        30C       0000000000000000             PG2STAT    364         0000000000000000          PG3DCA     3BC      --------00000000

CMBTRIGL    30E       --------00000000             PG2IOCONL  366         0000000000000000          PG3PER     3BE      0000000000000000

CMBTRIGH    310       --------00000000             PG2IOCONH  368         -000---0--000000          PG3TRIGA   3C0      0000000000000000

LOGCONA     312       000000000000-000             PG2EVTL    36A         00000000---00000          PG3TRIGB   3C2      0000000000000000

LOGCONB     314       000000000000-000             PG2EVTH    36C         0000--0000000000          PG3TRIGC   3C4      0000000000000000

LOGCONC     316       000000000000-000             PG2FPCIL   36E         0000000000000000          PG3DTL     3C6      --00000000000000

LOGCOND     318       000000000000-000             PG2FPCIH   370         0000-00000000000          PG3DTH     3C8      --00000000000000

LOGCONE     31A       000000000000-000             PG2CLPCIL  372         0000000000000000          PG3CAP     3CA      0000000000000000

LOGCONF     31C       000000000000-000             PG2CLPCIH  374         0000-00000000000          PG4CONL    3CC      0-00000000000000

PWMEVTA     31E       0000----0000-000             PG2FFPCIL  376         0000000000000000          PG4CONH    3CE      000-000000--0000

PWMEVTB     320       0000----0000-000             PG2FFPCIH  378         0000-00000000000          PG4STAT    3D0      0000000000000000

PWMEVTC     322       0000----0000-000             PG2SPCIL   37A         0000000000000000          PG4IOCONL  3D2      0000000000000000

PWMEVTD     324       0000----0000-000             PG2SPCIH   37C         0000-00000000000          PG4IOCONH  3D4      -000---0--000000

PWMEVTE     326       0000----0000-000             PG2LEBL    37E         0000000000000000          PG4EVTL    3D6      00000000---00000

PWMEVTF     328       0000----0000-000             PG2LEBH    380         -----000----0000          PG4EVTH    3D8      0000--0000000000

PG1CONL     32A       0-00000000000000             PG2PHASE   382         0000000000000000          PG4FPCIL   3DA      0000000000000000

PG1CONH     32C       000-000000--0000             PG2DC      384         0000000000000000          PG4FPCIH   3DC      0000-00000000000

PG1STAT     32E       0000000000000000             PG2DCA     386         --------00000000          PG4CLPCIL  3DE      0000000000000000

PG1IOCONL   330       0000000000000000             PG2PER     388         0000000000000000          PG4CLPCIH  3E0      0000-00000000000

PG1IOCONH   332       -000---0--000000             PG2TRIGA   38A         0000000000000000          PG4FFPCIL  3E2      0000000000000000

PG1EVTL     334       00000000---00000             PG2TRIGB   38C         0000000000000000          PG4FFPCIH  3E4      0000-00000000000

PG1EVTH     336       0000--0000000000             PG2TRIGC   38E         0000000000000000          PG4SPCIL   3E6      0000000000000000

PG1FPCIL    338       0000000000000000             PG2DTL     390         --00000000000000          PG4SPCIH   3E8      0000-00000000000

PG1FPCIH    33A       0000-00000000000             PG2DTH     392         --00000000000000          PG4LEBL    3EA      0000000000000000

PG1CLPCIL   33C       0000000000000000             PG2CAP     394         0000000000000000          PG4LEBH    3EC      -----000----0000

PG1CLPCIH   33E       0000-00000000000             PG3CONL    396         0-00000000000000          PG4PHASE   3EE      0000000000000000

PG1FFPCIL   340       0000000000000000             PG3CONH    398         000-000000--0000          PG4DC      3F0      0000000000000000

PG1FFPCIH   342       0000-00000000000             PG3STAT    39A         0000000000000000          PG4DCA     3F2      --------00000000

PG1SPCIL    344       0000000000000000             PG3IOCONL  39C         0000000000000000          PG4PER     3F4      0000000000000000

PG1SPCIH    346       0000-00000000000             PG3IOCONH  39E         -000---0--000000          PG4TRIGA   3F6      0000000000000000

PG1LEBL     348       0000000000000000             PG3EVTL    3A0         00000000---00000          PG4TRIGB   3F8      0000000000000000

PG1LEBH     34A       -----000----0000             PG3EVTH    3A2         0000--0000000000          PG4TRIGC   3FA      0000000000000000

PG1PHASE    34C       0000000000000000             PG3FPCIL   3A4         0000000000000000          PG4DTL     3FC      --00000000000000

PG1DC       34E       0000000000000000             PG3FPCIH   3A6         0000-00000000000          PG4DTH     3FE      --00000000000000

PG1DCA      350       --------00000000             PG3CLPCIL  3A8         0000000000000000          PG4CAP     400      0000000000000000

PG1PER      352       0000000000000000             PG3CLPCIH  3AA         0000-00000000000

PG1TRIGA    354       0000000000000000             PG3FFPCIL  3AC         0000000000000000

Legend:  x = unknown  or indeterminate value; “-”  = unimplemented bits.  Address and Reset values  are in hexadecimal and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                               DS70005319B-page 55
dsPIC33CH128MP508 FAMILY

TABLE 3-8:        MASTER SFR BLOCK 500h

Register     Address      All Resets                Register   Address      All Resets                Register   Address  All Resets

CAN FD                                              C1TSCONL         5D4    ------0000000000          C1RXOVIFH  5EA      0000000000000000

C1CONL       5C0          0-00011101100000          C1TSCONH         5D6    -------------000          C1TXATIFL  5EC      0000000000000000

C1CONH       5C2          0000010010011000          C1VECL           5D8    ---00000-1000000          C1TXATIFH  5EE      0000000000000000

C1NBTCFGL    5C4          -0001111-0001111          C1VECH           5DA    -10000---1000000          C1TXREQL   5F0      0000000000000000

C1NBTCFGH    5C6          0000000000111110          C1INTL           5DC    000000-----00000          C1TXREQH   5F2      0000000000000000

C1DBTCFGL    5C8          ----0011----0011          C1INTH           5DE    00000000---00000          C1TRECL    5F4      0000000000000000

C1DBTCFGH    5CA          00000000---01110          C1RXIFL          5E0    000000000000000-          C1TRECH    5F6      ----------100000

C1TDCL       5CC          -0010000--000000          C1RXIFH          5E2    0000000000000000          C1BDIAG0L  5F8      0000000000000000

C1TDCH       5CE          ------00------10          C1TXIFL          5E4    0000000000000000          C1BDIAG0H  5FA      0000000000000000

C1TBCL       5D0          0000000000000000          C1TXIFH          5E6    0000000000000000          C1BDIAG1L  5FC      0000000000000000

C1TBCH       5D2          0000000000000000          C1RXOVIFL        5E8    000000000000000-          C1BDIAG1H  5FE      00000-000-000000

Legend:  x=  unknown  or  indeterminate value; “-”  = unimplemented  bits.  Address and Reset values  are in hexadecimal and binary, respectively.

DS70005319B-page 56                                                                                    2017-2018 Microchip Technology Inc.
                                                   dsPIC33CH128MP508 FAMILY

TABLE 3-9:          MASTER SFR BLOCK 600h

Register     Address     All Resets                Register         Address  All Resets        Register                Address  All Resets

CAN FD (Continued)                                 C1FIFOCON6H      65A      00000000-1100000  C1MASK5L                6AC      0000000000000000

C1TEFCONL    600         -----100--0-0000          C1FIFOSTA6       65C      ---0000000000000  C1MASK5H                6AE      0000000000000000

C1TEFCONH    602         ---00000--------          C1FIFOUA6L       660      xxxxxxxxxxxxxxxx  C1FLTOBJ6L              6B0      0000000000000000

C1TEFSTA     604         ------------0000          C1FIFOUA6H       662      xxxxxxxxxxxxxxxx  C1FLTOBJ6H              6B2      0000000000000000

C1TEFUAL     608         xxxxxxxxxxxxxxxx          C1FIFOCON7L      664      -----10000000000  C1MASK6L                6B4      0000000000000000

C1TEFUAH     60A         xxxxxxxxxxxxxxxx          C1FIFOCON7H      666      00000000-1100000  C1MASK6H                6B6      0000000000000000

C1FIFOBAL    60C         0000000000000000          C1FIFOSTA7       668      ---0000000000000  C1FLTOBJ7L              7B8      0000000000000000

C1FIFOBAH    60E         0000000000000000          C1FIFOUA7L       66C      xxxxxxxxxxxxxxxx  C1FLTOBJ7H              6BA      0000000000000000

C1TXQCONL    610         -----1001--0-0-0          C1FIFOUA7H       66E      xxxxxxxxxxxxxxxx  C1MASK7L                6BC      0000000000000000

C1TXQCONH    612         00000000-1100000          C1FLTCON0L       670      0--000000--00000  C1MASK7H                6BE      0000000000000000

C1TXQSTA     614         ---000000000-0-0          C1FLTCON0H       672      0--000000--00000  C1FLTOBJ8L              6C0      0000000000000000

C1TXQUAL     618         xxxxxxxxxxxxxxxx          C1FLTCON1L       674      0--000000--00000  C1FLTOBJ8H              6C2      0000000000000000

C1TXQUAH     61A         xxxxxxxxxxxxxxxx          C1FLTCON1H       676      0--000000--00000  C1MASK8L                6C4      0000000000000000

C1FIFOCON1L  61C         -----10000000000          C1FLTCON2L       678      0--000000--00000  C1MASK8H                6C6      0000000000000000

C1FIFOCON1H  61E         00000000-1100000          C1FLTCON2H       67A      0--000000--00000  C1FLTOBJ9L              6C8      0000000000000000

C1FIFOSTA1   620         ---0000000000000          C1FLTCON3L       67C      0--000000--00000  C1FLTOBJ9H              6CA      0000000000000000

C1FIFOUA1L   624         xxxxxxxxxxxxxxxx          C1FLTCON3H       67E      0--000000--00000  C1MASK9L                6CC      0000000000000000

C1FIFOUA1H   626         xxxxxxxxxxxxxxxx          C1FLTOBJ0L       680      0000000000000000  C1MASK9H                6CE      0000000000000000

C1FIFOCON2L  628         -----10000000000          C1FLTOBJ0H       682      0000000000000000  C1FLTOBJ10L             6D0      0000000000000000

C1FIFOCON2H  62A         00000000-1100000          C1MASK0L         684      0000000000000000  C1FLTOBJ10H             6D2      0000000000000000

C1FIFOSTA2   62C         ---0000000000000          C1MASK0H         686      0000000000000000  C1MASK10L               6D4      0000000000000000

C1FIFOUA2L   630         xxxxxxxxxxxxxxxx          C1FLTOBJ1L       688      0000000000000000  C1MASK10H               6D6      0000000000000000

C1FIFOUA2H   632         xxxxxxxxxxxxxxxx          C1FLTOBJ1H       68A      0000000000000000  C1FLTOBJ11L             6D8      0000000000000000

C1FIFOCON3L  634         -----10000000000          C1MASK1L         68C      0000000000000000  C1FLTOBJ11H             6DA      0000000000000000

C1FIFOCON3H  636         00000000-1100000          C1MASK1H         68E      0000000000000000  C1MASK11L               6DC      0000000000000000

C1FIFOSTA3   638         ---0000000000000          C1FLTOBJ2L       690      0000000000000000  C1MASK11H               6DE      0000000000000000

C1FIFOUA3L   63C         xxxxxxxxxxxxxxxx          C1FLTOBJ2H       692      0000000000000000  C1FLTOBJ12L             6E0      0000000000000000

C1FIFOUA3H   63E         xxxxxxxxxxxxxxxx          C1MASK2L         694      0000000000000000  C1FLTOBJ12H             6E2      0000000000000000

C1FIFOCON4L  640         -----10000000000          C1MASK2H         696      0000000000000000  C1MASK12L               6E4      0000000000000000

C1FIFOCON4H  642         00000000-1100000          C1FLTOBJ3L       698      0000000000000000  C1MASK12H               6E6      0000000000000000

C1FIFOSTA4   644         ---0000000000000          C1FLTOBJ3H       69A      0000000000000000  C1FLTOBJ13L             6E8      0000000000000000

C1FIFOUA4L   648         xxxxxxxxxxxxxxxx          C1MASK3L         69C      0000000000000000  C1FLTOBJ13H             6EA      0000000000000000

C1FIFOUA4H   64A         xxxxxxxxxxxxxxxx          C1MASK3H         69C      0000000000000000  C1MASK13L               6EC      0000000000000000

C1FIFOCON5L  64C         -----10000000000          C1FLTOBJ4L       6A0      0000000000000000  C1MASK13H               6EE      0000000000000000

C1FIFOCON5H  64E         00000000-1100000          C1FLTOBJ4H       6A2      0000000000000000  C1FLTOBJ14L             6F0      0000000000000000

C1FIFOSTA5   650         ---0000000000000          C1MASK4L         6A4      0000000000000000  C1FLTOBJ14H             6F2      0000000000000000

C1FIFOUA5L   654         xxxxxxxxxxxxxxxx          C1MASK4H         6A6      0000000000000000

C1FIFOUA5H   656         xxxxxxxxxxxxxxxx          C1FLTOBJ5L       6A8      0000000000000000

C1FIFOCON6L  658         -----10000000000          C1FLTOBJ5H       6AA      0000000000000000

Legend:  x = unknown or  indeterminate value; “-”  = unimplemented  bits. Address and Reset values are in hexadecimal  and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                                  DS70005319B-page 57
dsPIC33CH128MP508 FAMILY

TABLE 3-10:            MASTER SFR BLOCK 700h

Register          Address  All Resets                      Register  Address    All Resets        Register                   Address  All Resets

CAN FD (Continued)                                      C1FLTOBJ15L  6F8        0000000000000000  C1MASK15H                  6FE      -000000000000000

C1MASK14L         6F4      0000000000000000             C1FLTOBJ15H  6FA        -000000000000000

C1MASK14H         6F6      -000000000000000             C1MASK15L    6FC        0000000000000000

Legend:     x = unknown or indeterminate value; “-” = unimplemented bits. Address and Reset values are in hexadecimal and binary, respectively.

TABLE 3-11:            MASTER SFR BLOCK 800h

Register          Address  All Resets                      Register  Address    All Resets        Register                   Address  All Resets

Interrupts                                                 IPC3      846        -100-100-100-100       IPC33                 882      -100-100-100-100

IFS0              800      0000000000-00000                IPC4      848        -100-100-100-100       IPC34                 884      -100-100-100-100

IFS1              802      0000000000000000                IPC5      84A        -100-100-100-100       IPC35                 886      ---------100-100

IFS2              804      00000-00-00000--                IPC6      84C        -100-100-100-100       IPC35                 886      ---------100-100

IFS3              806      000--------00000                IPC7      84E        -100-100-100-100       IPC36                 888      -----100--------

IFS4              808      --000----0000-00                IPC8      850        -100-100--------       IPC37                 88A      -----100-100----

IFS5              80A      000000000000000-                IPC9      852        -----100-100-100       IPC38                 88C      ---------100-100

IFS6              80C      0000000000000000                IPC10     854        -100-----100-100       IPC39                 88E      ---------100----

IFS7              80E      0000000000000---                IPC11     856        -100-100-100-100       IPC42                 894      -100-100-100-100

IFS8              810      --0000000000000-                IPC12     858        -100-100-100-100       IPC43                 896      -100-100-100-100

IFS9              812      --0---00-00--0--                IPC13     85A        -------------100       IPC44                 898      -100-100-100-100

IFS10             814      00000000--------                IPC15     85E        -100-100-100----       IPC45                 89A      -------------100

IFS11             816      -00--------00000                IPC16     860        -100-----100-100       IPC47                 89E      -----100-100----

IEC0              820      0000000000-00000                IPC17     862        -----100-100-100  INTCON1                    8C0      000000000000000-

IEC1              822      0000000000000000                IPC18     864        -100------------  INTCON2                    8C2      000----0----0000

IEC2              824      00000-00-00000--                IPC19     866        ---------100-100  INTCON3                    8C4      -------0---0---0

IEC3              826      000--------00000                IPC20     868        -100-100-100----  INTCON4                    8C6      --------------00

IEC4              828      --000----0000-00                IPC21     86A        -100-100-100-100  INTTREG                    8C8      000-000000000000

IEC5              82A      000000000000000-                IPC22     86C        -100-100-100-100  Flash

IEC6              82C      0000000000000000                IPC23     86E        -100-100-100-100  NVMCON                     8D0      0000--00----0000

IEC7              82E      0000000000000---                IPC24     870        -100-100-100-100  NVMADR                     8D2      0000000000000000

IEC8              830      --0000000000000-                IPC25     872        -100-100-100-100  NVMADRU                    8D4      --------00000000

IEC8              830      --0000000000000-                IPC26     874        -100-100-100-100  NVMKEY                     8D6      --------00000000

IEC9              832      --0---00-00--0--                IPC27     876        -100-100-100-100  NVMSRCADRL                 8D8      0000000000000000

IEC10             834      00000000------00                IPC28     878        -100------------  NVMSRCADRH                 8DA      --------00000000

IEC11             836      -00--------00000                IPC29     87A        -100-100-100-100  CBG

IPC0              840      -100-100-100-100                IPC30     87C        -100-100-100-100  BIASCON                    8F0      --------0---0000

IPC1              842      -100-100-----100                IPC31     87E        -100-100-100-100  IBIASCONL                  8F4      --000000--000000

IPC2              844      -100-100-100-100                IPC32     880        -100-100-100----  IBIASCONH                  8F6      --000000--000000

Legend:     x  =  unknown  or indeterminate value; “-”  =  unimplemented bits.  Address and Reset values are in hexadecimal  and binary, respectively.

DS70005319B-page 58                                                                                     2017-2018 Microchip Technology Inc.
                                        dsPIC33CH128MP508 FAMILY

TABLE 3-12:       MASTER SFR BLOCK 900h

Register   Address    All Resets        Register                   Address  All Resets              Register   Address  All Resets

PTG                                     CCP1CON3H                  95A      0000------0-00--        CCP3PRL    9AC      1111111111111111

PTGCST       900      0-00-00000x---00  CCP1STATL                  95C      -----0--00xx0000        CCP3PRH    9AE      1111111111111111

PTGCON       902      -----00000000000  CCP1STATH                  95E      -----------00000        CCP3RAL    9B0      0000000000000000

PTGBTE       904      xxxxxxxxxxxxxxxx  CCP1TMRL                   960      0000000000000000        CCP3RBL    9B4      0000000000000000

PTGBTEH      906      ----------------  CCP1TMRH                   962      0000000000000000        CCP3BUFL   9B8      0000000000000000

PTGHOLD      908      0000000000000000  CCP1PRL                    964      1111111111111111        CCP3BUFH   9BA      0000000000000000

PTGT0LIM     90C      0000000000000000  CCP1PRH                    966      1111111111111111        CCP4CON1L  9BC      0-00000000000000

PTGT1LIM     910      0000000000000000  CCP1RAL                    968      0000000000000000        CCP4CON1H  9BE      00--000000000000

PTGSDLIM     914      0000000000000000  CCP1RBL                    96C      0000000000000000        CCP4CON2L  9C0      00-0----00000000

PTGC0LIM     918      0000000000000000  CCP1BUFL                   970      0000000000000000        CCP4CON2H  9C2      0------100-00000

PTGC1LIM     91C      0000000000000000  CCP1BUFH                   972      0000000000000000        CCP4CON3H  9C6      0000------0-00--

PTGADJ       920      0000000000000000  CCP2CON1L                  974      0-00000000000000        CCP4STATL  9C8      -----0--00xx0000

PTGL0        924      0000000000000000  CCP2CON1H                  976      00--000000000000        CCP4STATH  9CA      -----------00000

PTGQPTR      928      -----------00000  CCP2CON2L                  978      00-0----00000000        CCP4TMRL   9CC      0000000000000000

PTGQUE0      930      xxxxxxxxxxxxxxxx  CCP2CON2H                  97A      0------100-00000        CCP4TMRH   9CE      0000000000000000

PTGQUE1      932      xxxxxxxxxxxxxxxx  CCP2CON3H                  97E      0000------0-00--        CCP4PRL    9D0      1111111111111111

PTGQUE2      934      xxxxxxxxxxxxxxxx  CCP2STATL                  980      -----0--00xx0000        CCP4PRH    9D2      1111111111111111

PTGQUE3      936      xxxxxxxxxxxxxxxx  CCP2STATH                  982      -----------00000        CCP4RAL    9D4      0000000000000000

PTGQUE4      938      xxxxxxxxxxxxxxxx  CCP2TMRL                   984      0000000000000000        CCP4RBL    9D8      0000000000000000

PTGQUE5      93A      xxxxxxxxxxxxxxxx  CCP2TMRH                   986      0000000000000000        CCP4BUFL   9DC      0000000000000000

PTGQUE6      93C      xxxxxxxxxxxxxxxx  CCP2PRL                    988      1111111111111111        CCP4BUFH   9DE      0000000000000000

PTGQUE7      93E      xxxxxxxxxxxxxxxx  CCP2PRH                    98A      1111111111111111        CCP5CON1L  9E0      0-00000000000000

PTGQUE8      940      xxxxxxxxxxxxxxxx  CCP2RAL                    98C      0000000000000000        CCP5CON1H  9E2      00--000000000000

PTGQUE9      942      xxxxxxxxxxxxxxxx  CCP2RBL                    990      0000000000000000        CCP5CON2L  9E4      00-0----00000000

PTGQUE10     944      xxxxxxxxxxxxxxxx  CCP2BUFL                   994      0000000000000000        CCP5CON2H  9E6      0------100-00000

PTGQUE11     946      xxxxxxxxxxxxxxxx  CCP2BUFH                   996      0000000000000000        CCP5CON3H  9EA      0000------0-00--

PTGQUE12     948      xxxxxxxxxxxxxxxx  CCP3CON1L                  998      0-00000000000000        CCP5STATL  9EC      -----0--00xx0000

PTGQUE13     94A      xxxxxxxxxxxxxxxx  CCP3CON1H                  99A      00--000000000000        CCP5STATH  9EE      -----------00000

PTGQUE14     94C      xxxxxxxxxxxxxxxx  CCP3CON2L                  99C      00-0----00000000        CCP5TMRL   9F0      0000000000000000

PTGQUE15     94E      xxxxxxxxxxxxxxxx  CCP3CON2H                  99E      0------100-00000        CCP5TMRH   9F2      0000000000000000

CCP                                     CCP3CON3H                  9A2      0000------0-00--        CCP5PRL    9F4      1111111111111111

CCP1CON1L    950      0-00000000000000  CCP3STATL                  9A4      -----0--00xx0000        CCP5PRH    9F6      1111111111111111

CCP1CON1H    952      00--000000000000  CCP3STATH                  9A6      -----------00000        CCP5RAL    9F8      0000000000000000

CCP1CON2L    954      00-0----00000000  CCP3TMRL                   9A8      0000000000000000        CCP5RBL    9FC      0000000000000000

CCP1CON2H    956      0------100-00000  CCP3TMRH                   9AA      0000000000000000

Legend:  x = unknown  or indeterminate value; “-” = unimplemented  bits.  Address and Reset values  are in hexadecimal and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                          DS70005319B-page 59
dsPIC33CH128MP508 FAMILY

TABLE 3-13:           MASTER SFR BLOCK A00h

Register   Address    All Resets        Register   Address               All Resets                Register  Address  All Resets

CCP (Continued)                         CCP7PRH    A3E                   1111111111111111          DMADST0   ACA      0000000000000000

CCP5BUFL         A00  0000000000000000  CCP7RAL    A40                   0000000000000000          DMACNT0   ACC      0000000000000001

CCP5BUFH         A02  0000000000000000  CCP7RBL    A44                   0000000000000000          DMACH1    ACE      ---0-00000000000

CCP6CON1L        A04  0-00000000000000  CCP7BUFL   A48                   0000000000000000          DMAINT1   AD0      0000000000000--0

CCP6CON1H        A06  00--000000000000  CCP7BUFH   A4A                   0000000000000000          DMASRC1   AD2      0000000000000000

CCP6CON2L        A08  00-0----00000000  CCP8CON1L  A4C                   0-00000000000000          DMADST1   AD4      0000000000000000

CCP6CON2H        A0A  0------100-00000  CCP8CON1H  A4E                   00--000000000000          DMACNT1   AD6      0000000000000001

CCP6CON3H        A0E  0000------0-00--  CCP8CON2L  A50                   00-0----00000000          DMACH2    AD8      ---0-00000000000

CCP6STATL        A10  -----0--00xx0000  CCP8CON2H  A52                   0------100-00000          DMAINT2   ADA      0000000000000--0

CCP6STATH        A12  -----------00000  CCP8CON3H  A56                   0000------0-00--          DMASRC2   ADC      0000000000000000

CCP6TMRL         A14  0000000000000000  CCP8STATL  A58                   -----0--00xx0000          DMADST2   ADE      0000000000000000

CCP6TMRH         A16  0000000000000000  CCP8STATH  A5A                   -----------00000          DMACNT2   AE0      0000000000000001

CCP6PRL          A18  1111111111111111  CCP8TMRL   A5C                   0000000000000000          DMACH3    AE2      ---0-00000000000

CCP6PRH          A1A  1111111111111111  CCP8TMRH   A5E                   0000000000000000          DMAINT3   AE4      0000000000000--0

CCP6RAL          A1C  0000000000000000  CCP8PRL    A60                   1111111111111111          DMASRC3   AE6      0000000000000000

CCP6RBL          A20  0000000000000000  CCP8PRH    A62                   1111111111111111          DMADST3   AE8      0000000000000000

CCP6BUFL         A24  0000000000000000  CCP8RAL    A64                   0000000000000000          DMACNT3   AEA      0000000000000001

CCP6BUFH         A26  0000000000000000  CCP8RBL    A68                   0000000000000000          DMACH4    AEC      ---0-00000000000

CCP7CON1L        A28  0-00000000000000  CCP8BUFL   A6C                   0000000000000000          DMAINT4   AEE      0000000000000--0

CCP7CON1H        A2A  00--000000000000  CCP8BUFH   A6E                   0000000000000000          DMASRC4   AF0      0000000000000000

CCP7CON2L        A2C  00-0----00000000  DMA                                                        DMADST4   AF2      0000000000000000

CCP7CON2H        A2E  0------100-00000  DMACON     ABC                   0--------------0          DMACNT4   AF4      0000000000000001

CCP7CON3H        A32  0000------0-00--  DMABUF     ABE                   0000000000000000          DMACH5    AF6      ---0-00000000000

CCP7STATL        A34  -----0--00xx0000  DMAL       AC0                   0000000000000000          DMAINT5   AF8      0000000000000--0

CCP7STATH        A36  -----------00000  DMAH       AC2                   0001000000000000          DMASRC5   AFA      0000000000000000

CCP7TMRL         A38  0000000000000000  DMACH0     AC4                   ---0-00000000000          DMADST5   AFC      0000000000000000

CCP7TMRH         A3A  0000000000000000  DMAINT0    AC6                   0000000000000--0          DMACNT5   AFE      0000000000000001

CCP7PRL          A3C  1111111111111111  DMASRC0    AC8                   0000000000000000

Legend:  x = unknown  or indeterminate value; “-” = unimplemented bits.  Address and Reset values  are in hexadecimal and binary, respectively.

DS70005319B-page 60                                                                                 2017-2018 Microchip Technology Inc.
                                       dsPIC33CH128MP508 FAMILY

TABLE 3-14:       MASTER SFR BLOCK B00h

Register   Address  All Resets         Register   Address  All Resets                            Register   Address  All Resets

ADC                                    ADCMP1ENH  B42      -----------00000                      ADTRIG0H   B82      0000000000000000

ADCON1L      B00    000-00000----000   ADCMP1LO   B44      0000000000000000                      ADTRIG1L   B84      0000000000000000

ADCON1H      B02    --------011-----   ADCMP1HI   B46      0000000000000000                      ADTRIG1H   B86      0000000000000000

ADCON2L      B04    00-0-00000000000   ADCMP2ENL  B48      0000000000000000                      ADTRIG2L   B88      0000000000000000

ADCON2H      B06    00-0000000000000   ADCMP2ENH  B4A      -----------00000                      ADTRIG2H   B8A      0000000000000000

ADCON3L      B08    00000x0000000000   ADCMP2LO   B4C      0000000000000000                      ADTRIG3L   B8C      0000000000000000

ADCON3H      B0A    000000000-------   ADCMP2HI   B4E      0000000000000000                      ADTRIG3H   B8E      0000000000000000

ADMOD0L      B10    -0-0-0-0-0-0-0-0   ADCMP3ENL  B50      0000000000000000                      ADTRIG4L   B90      0000000000000000

ADMOD0H      B12    -0-0-0-0-0-0-0-0   ADCMP3ENH  B52      -----------00000                      ADTRIG4H   B92      0000000000000000

ADMOD1L      B14    -------0-0-0-0-0   ADCMP3LO   B54      0000000000000000                      ADTRIG5L   B94      000-----00000000

ADIEL        B20    xxxxxxxxxxxxxxxx   ADCMP3HI   B56      0000000000000000                      ADCMP0CON  BA0      0000000000000000

ADIEH        B22    -----------xxxxx   ADFL0DAT   B68      0000000000000000                      ADCMP1CON  BA4      0000000000000000

ADCSS1L      B28    0000000000000000   ADFL0CON   B6A      0xx0000000000000                      ADCMP2CON  BA8      0000000000000000

ADSTATL      B30    0000000000000000   ADFL1DAT   B6C      0000000000000000                      ADCMP3CON  BAC      0000000000000000

ADSTATH      B32    -----------00000   ADFL1CON   B6E      0xx0000000000000                      ADLVLTRGL  BD0      0000000000000000

ADCMP0ENL    B38    0000000000000000   ADFL2DAT   B70      0000000000000000                      ADLVLTRGH  BD2      -----------xxxxx

ADCMP0ENH    B3A    -----------00000   ADFL2CON   B72      0xx0000000000000                      ADEIEL     BF0      xxxxxxxxxxxxxxxx

ADCMP0LO     B3C    0000000000000000   ADFL3DAT   B74      0000000000000000                      ADEIEH     BF2      -----------xxxxx

ADCMP0HI     B3E    0000000000000000   ADFL3CON   B76      0xx0000000000000                      ADEISTATL  BF8      xxxxxxxxxxxxxxxx

ADCMP1ENL    B40    0000000000000000   ADTRIG0L   B80      0000000000000000                      ADEISTATH  BFA      -----------xxxxx

Legend:  x = unknown or indeterminate value; “-” = unimplemented bits. Address and Reset values  are in hexadecimal and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                       DS70005319B-page 61
dsPIC33CH128MP508 FAMILY

TABLE 3-15:           MASTER SFR BLOCK C00h

Register  Address         All Resets                Register  Address       All Resets                Register   Address  All Resets

ADC (Continued)                                     ADCBUF9          C1E    0000000000000000          DAC

ADCON5L          C00      0-------0-------          ADCBUF10         C20    0000000000000000          DACCTRL1L  C80      000-----0000-000

ADCON5H          C02      0---xxxx0-------          ADCBUF11         C22    0000000000000000          DACCTRL2L  C84      ------0001010101

ADCAL1H          C0A      00000-00-000----          ADCBUF12         C24    0000000000000000          DACCTRL2H  C86      ------0010001010

ADCBUF0          C0C      0000000000000000          ADCBUF13         C26    0000000000000000          DAC1CONL   C88      000--000x0000000

ADCBUF1          C0E      0000000000000000          ADCBUF14         C28    0000000000000000          DAC1CONH   C8A      ------0000000000

ADCBUF2          C10      0000000000000000          ADCBUF15         C2A    0000000000000000          DAC1DATL   C8C      0000000000000000

ADCBUF3          C12      0000000000000000          ADCBUF16         C2C    0000000000000000          DAC1DATH   C8E      0000000000000000

ADCBUF4          C14      0000000000000000          ADCBUF17         C2E    0000000000000000          SLP1CONL   C90      0000000000000000

ADCBUF5          C16      0000000000000000          ADCBUF18         C30    0000000000000000          SLP1CONH   C92      0---000---------

ADCBUF6          C18      0000000000000000          ADCBUF19         C32    0000000000000000          SLP1DAT    C94      0000000000000000

ADCBUF7          C1A      0000000000000000          ADCBUF20         C34    0000000000000000          VREGCON    CFC      0---------000000

ADCBUF8          C1C      0000000000000000

Legend:  x = unknown  or  indeterminate value; “-”  = unimplemented  bits.  Address and Reset values  are in hexadecimal and binary, respectively.

DS70005319B-page 62                                                                                    2017-2018 Microchip Technology Inc.
                                       dsPIC33CH128MP508 FAMILY

TABLE 3-16:       MASTER SFR BLOCK D00h

Register   Address  All Resets         Register  Address  All Resets                               Register  Address  All Resets

I/O Ports                              RPINR19   D2A      1111111111111111                         RPOR4     D88      --000000--000000

RPCON        D00    ----0-----------   RPINR20   D2C      1111111111111111                         RPOR5     D8A      --000000--000000

RPINR0       D04    11111111--------   RPINR21   D2E      1111111111111111                         RPOR6     D8C      --000000--000000

RPINR1       D06    1111111111111111   RPINR22   D30      1111111111111111                         RPOR7     D8E      --000000--000000

RPINR2       D08    11111111--------   RPINR23   D32      1111111111111111                         RPOR8     D90      --000000--000000

RPINR3       D0A    1111111111111111   RPINR26   D38      --------11111111                         RPOR9     D92      --000000--000000

RPINR4       D0C    1111111111111111   RPINR30   D40      11111111--------                         RPOR10    D94      --000000--000000

RPINR5       D0E    1111111111111111   RPINR37   D4E      11111111--------                         RPOR11    D96      --000000--000000

RPINR6       D10    1111111111111111   RPINR38   D50      --------11111111                         RPOR12    D98      --000000--000000

RPINR7       D12    1111111111111111   RPINR42   D58      1111111111111111                         RPOR13    D9A      --000000--000000

RPINR8       D14    1111111111111111   RPINR43   D5A      1111111111111111                         RPOR14    D9C      --000000--000000

RPINR9       D16    1111111111111111   RPINR44   D5C      1111111111111111                         RPOR15    D9E      --000000--000000

RPINR10      D18    1111111111111111   RPINR45   D5E      1111111111111111                         RPOR16    DA0      --000000--000000

RPINR11      D1A    1111111111111111   RPINR46   D60      1111111111111111                         RPOR17    DA2      --000000--000000

RPINR12      D1C    1111111111111111   RPINR47   D62      1111111111111111                         RPOR18    DA4      --000000--000000

RPINR13      D1E    1111111111111111   RPOR0     D80      --000000--000000                         RPOR19    DA6      --000000--000000

RPINR14      D20    1111111111111111   RPOR1     D82      --000000--000000                         RPOR20    DA8      --000000--000000

RPINR15      D22    1111111111111111   RPOR2     D84      --000000--000000                         RPOR21    DAA      --000000--000000

RPINR18      D28    1111111111111111   RPOR3     D86      --000000--000000                         RPOR22    DAC      --000000--000000

Legend:    x = unknown or indeterminate value; “-” = unimplemented bits. Address and Reset values  are in hexadecimal and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                                        DS70005319B-page 63
dsPIC33CH128MP508 FAMILY

TABLE 3-17:            MASTER SFR BLOCK E00h

Register  Address          All Resets                Register  Address       All Resets                Register  Address        All Resets

I/O Ports (Continued)                                CNCONB           E2A    0---0-----------          LATD                E5A  xxxxxxxxxxxxxxxx

ANSELA       E00           -----------11111          CNEN0B           E2C    0000000000000000          ODCD                E5C  0000000000000000

TRISA        E02           -----------11111          CNSTATB          E2E    0000000000000000          CNPUD               E5E  0000000000000000

PORTA        E04           -----------xxxxx          CNEN1B           E30    0000000000000000          CNPDD               E60  0000000000000000

LATA         E06           -----------xxxxx          CNFB             E32    0000000000000000          CNCOND              E62  0---0-----------

ODCA         E08           -----------00000          ANSELC           E38    --------1---1111          CNEN0D              E64  0000000000000000

CNPUA        E0A           -----------00000          TRISC            E3A    1111111111111111          CNSTATD             E66  0000000000000000

CNPDA        E0C           -----------00000          PORTC            E3C    xxxxxxxxxxxxxxxx          CNEN1D              E68  0000000000000000

CNCONA       E0E           0---0-----------          LATC             E3E    xxxxxxxxxxxxxxxx          CNFD                E6A  0000000000000000

CNEN0A       E10           -----------00000          ODCC             E40    0000000000000000          TRISE               E72  1111111111111111

CNSTATA      E12           -----------00000          CNPUC            E42    0000000000000000          PORTE               E74  xxxxxxxxxxxxxxxx

CNEN1A       E14           -----------00000          CNPDC            E44    0000000000000000          LATE                E76  xxxxxxxxxxxxxxxx

CNFA         E16           -----------00000          CNCONC           E46    0---0-----------          ODCE                E78  0000000000000000

ANSELB       E1C           ------111---1111          CNEN0C           E48    0000000000000000          CNPUE               E7A  0000000000000000

TRISB        E1E           1111111111111111          CNSTATC          E4A    0000000000000000          CNPDE               E7C  0000000000000000

PORTB        E20           xxxxxxxxxxxxxxxx          CNEN1C           E4C    0000000000000000          CNCONE              E7E  0---0-----------

LATB         E22           xxxxxxxxxxxxxxxx          CNFC             E4E    0000000000000000          CNEN0E              E80  0000000000000000

ODCB         E24           0000000000000000          ANSELD           E54    -----1----------          CNSTATE             E82  0000000000000000

CNPUB        E26           0000000000000000          TRISD            E56    1111111111111111          CNEN1E              E84  0000000000000000

CNPDB        E28           0000000000000000          PORTD            E58    xxxxxxxxxxxxxxxx          CNFE                E86  0000000000000000

Legend:  x = unknown   or  indeterminate value; “-”  = unimplemented  bits.  Address and Reset values  are in hexadecimal  and binary, respectively.

DS70005319B-page 64                                                                                     2017-2018 Microchip Technology Inc.
                                            dsPIC33CH128MP508 FAMILY

TABLE 3-18:       MASTER SFR BLOCK F00h

Register    Address  All Resets        Register   Address  All Resets        Register  Address  All Resets

Reset                                  PMD1       FA4      ----000-00000-00  PCTRAPH   FC2      --------00000000

RCON         F80     00--x-0000000011  PMD2       FA6      --------00000000  FEXL      FC4      xxxxxxxxxxxxxxxx

Oscillator                             PMD3       FA8      --------0-----0-  FEXH      FC6      --------xxxxxxxx

OSCCON       F84     -000-yyy0-0-0--0  PMD4       FAA      ------------0---  DPCL      FCE      xxxxxxxxxxxxxxxx

CLKDIV       F86     00110000--000001  PMD6       FAE      --000000--------  DPCH      FD0      --------xxxxxxxx

PLLFBD       F88     ----000010010110  PMD7       FB0      -------x----0---  APPO      FD2      xxxxxxxxxxxxxxxx

PLLDIV       F8A     ------00-011-001  PMD8       FB2      ---00--0--xx000-  APPI      FD4      xxxxxxxxxxxxxxxx

OSCTUN       F8C     ----------000000  WDT                                   APPS      FD6      -----------xxxxx

ACLKCON1     F8E     00-----0--000001  WDTCONL    FB4      0--0000000000000  STROUTL   FD8      xxxxxxxxxxxxxxxx

APLLFBD1     F90     ----000010010110  WDTCONH    FB6      0000000000000000  STROUTH   FDA      xxxxxxxxxxxxxxxx

APLLDIV1     F92     ------00-011-001  REFOCONL   FB8      0-000-00----0000  STROVCNT  FDC      xxxxxxxxxxxxxxxx

CANCLKCON    F9A     ----xxxx-xxxxxxx  REFOCONH   FBA      -000000000000000  JDATAH    FFA      xxxxxxxxxxxxxxxx

PMD                                    REFOTRIML  FBC      0000000000000000  JDATAL    FFC      xxxxxxxxxxxxxxxx

PMDCON       FA0     ----0-----------  PCTRAPL    FC0      0000000000000000

Legend:     x = unknown or indeterminate value; “-” =unimplemented bits; y = value set by Configuration bits. Address and Reset values are in hexadecimal

            and binary, respectively.

 2017-2018 Microchip Technology Inc.                                                  DS70005319B-page 65
dsPIC33CH128MP508 FAMILY

3.2.5.1        Paged Memory Scheme                                       The  paged         memory       scheme   provides  access      to

The dsPIC33CH128MP508 architecture extends the                           multiple 32-Kbyte windows in the PSV memory. The

available   Data     Space     through   a     paging   scheme,          Data Space Read Page (DSRPAG) register, in combi-

which    allows      the  available      Data  Space    to     be        nation with the upper half of the Data Space address,

accessed using MOV instructions in a linear fashion                      can provide up to 8 Mbytes of PSV address space. The

for pre- and post-modified Effective Addresses (EAs).                    paged data memory space is shown in Figure 3-8.

The  upper     half  of   the  base  Data     Space  address   is        The  Program           Space  (PS)  can  be    accessed  with  a

used in conjunction with the Data Space Read Page                        DSRPAG of 0x200 or greater. Only reads from PS are

(DSRPAG)       register   to   form      the   Program  Space            supported using the DSRPAG.

Visibility (PSV) address.

The Data Space Read Page (DSRPAG) register is

located    in  the   SFR       space.    Construction   of     the

PSV    address       is   shown      in  Figure 3-7.    When

DSRPAG<9> = 1             and  the       base  address         bit,

EA<15> = 1, the DSRPAG<8:0> bits are concatenated

onto EA<14:0> to form the 24-bit PSV read address.

FIGURE 3-7:               PROGRAM SPACE VISIBILITY                       (PSV) READ ADDRESS GENERATION

                                                                                            16-Bit DS EA          Byte
                                                                                                                  Select

                               EA<15> = 0               No EDS Access    0                      EA

                     (DSRPAG = don’t care)

                                                                         EA<15>

                                                            DSRPAG<9>    1                      EA
                                                                     =1

                                                       Select
                                                       DSRPAG

                                     Generate     1     DSRPAG<8:0>
                               PSV Address

                                                               9 Bits                           15 Bits

                                                                         24-Bit      PSV    EA                    Byte

                                                                                                                  Select

     Note:  DS   read access when DSRPAG       =  0x000 will force an address error  trap.

DS70005319B-page 66                                                                              2017-2018 Microchip Technology Inc.
 2017-2018 Microchip Technology Inc.  FIGURE 3-8:    PAGED DATA        MEMORY SPACE

                                                                                                                   Program Space                        Table Address Space

                                                                                                                   (Instruction & Data)                 (TBLPAG<7:0>)

                                                                                                                                         DS_Addr<15:0>

                                                                                                                                         0x0000         (TBLPAG = 0x00)

                                                                                                                   Program Memory                       lsw Using

                                                                        DS_Addr<14:0>                              (lsw – <15:0>)                       TBLRDL/TBLWTL,

                                                                                                                   0x00_0000                            MSB Using

                                                                        0x0000                                                                          TBLRDH/TBLWTH

                                                                                       (DSRPAG = 0x200)                                  0xFFFF

                                                      Local Data Space                 No Writes Allowed

                                       DS_Addr<15:0>                    0x7FFF

                                       0x0000                                                             PSV                                                                dsPIC33CH128MP508 FAMILY

                                                      SFR Registers                                       Program

                                       0x0FFF                                                             Memory

                                       0x1000                           0x0000                            (lsw)                          0x0000         (TBLPAG = 0x7F)

                                                      Up to 16-Kbyte                   (DSRPAG = 0x2FF)                                                 lsw Using

                                                      RAM                              No Writes Allowed           0x7F_FFFF                            TBLRDL/TBLWTL,

                                                                        0x7FFF                                                                          MSB Using

                                       0x2FFF                           0x0000                                                                          TBLRDH/TBLWTH

                                       0x3000                                          (DSRPAG = 0x300)                                  0xFFFF

                                       0x7FFF                                          No Writes Allowed           Program Memory

                                       0x8000                           0x7FFF                                     (MSB – <23:16>)

                                                      32-Kbyte                                            PSV      0x00_0000

                                                      PSV Window                                          Program

                                       0xFFFF                                                             Memory

                                                                                                          (MSB)

                                                                        0x0000

                                                                                       (DSRPAG = 0x3FF)

                                                                                       No Writes Allowed

                                                                        0x7FFF

DS70005319B-page 67                                                                                                0x7F_FFFF
dsPIC33CH128MP508 FAMILY

When     a   PSV  page  overflow      or  underflow  occurs,          address within the PSV window. This creates a linear

EA<15> is cleared as a result of the register indirect EA             PSV  address    space,  but  only    when  using   Register

calculation. An overflow or underflow of the EA in the                Indirect Addressing modes.

PSV pages can occur at the page boundaries when:                      Exceptions  to  the  operation    described    above   arise

•  The initial address, prior to modification,                        when entering and exiting the boundaries of Page 0

   addresses the PSV page                                             and PSV spaces. Table 3-19 lists the effects of overflow

•  The EA calculation uses Pre- or Post-Modified                      and underflow scenarios at different boundaries.

   Register Indirect Addressing; however, this does                   In  the  following  cases,  when     overflow  or  underflow

   not include Register Offset Addressing                             occurs, the EA<15> bit is set and the DSRPAG is not

In general, when an overflow is detected, the DSRPAG                  modified; therefore, the EA will wrap to the beginning of

register is incremented and the EA<15> bit is set to                  the current page:

keep the base address within the PSV window. When                     •   Register Indirect with Register Offset Addressing

an  underflow     is  detected,  the  DSRPAG    register   is         •   Modulo Addressing

decremented and the EA<15> bit is set to keep the base                •   Bit-Reversed Addressing

TABLE 3-19:           OVERFLOW AND UNDERFLOW SCENARIOS AT PAGE 0 AND
                      PSV SPACE BOUNDARIES(2,3,4)

   O/U,                                         Before                                             After

   R/W   Operation      DSRPAG                  DS              Page              DSRPAG              DS             Page

                                                EA<15>     Description                             EA<15>        Description

O,                    DSRPAG = 0x2FF            1         PSV: Last lsw    DSRPAG = 0x300               1  PSV: First MSB

Read         [++Wn]                                       page                                             page

O,           or       DSRPAG = 0x3FF            1         PSV: Last MSB    DSRPAG = 0x3FF               0  See Note 1

Read         [Wn++]                                       page

U,                    DSRPAG = 0x001            1         PSV page         DSRPAG = 0x001               0  See Note 1

Read

U,           [--Wn]   DSRPAG = 0x200            1         PSV: First lsw   DSRPAG = 0x200               0  See Note 1

Read         or                                           page

U,           [Wn--]   DSRPAG = 0x300                      PSV: First MSB   DSRPAG = 0x2FF                  PSV: Last lsw

                                                1                                                       1

Read                                                      page                                             page

Legend:      O = Overflow, U = Underflow, R = Read, W = Write

Note     1:  The Register Indirect Addressing now addresses a location in the base Data Space (0x0000-0x8000).

         2:  An EDS access, with DSRPAG = 0x000, will generate an address error trap.

         3:  Only reads from PS are supported using DSRPAG.

         4:  Pseudolinear Addressing is not supported for large offsets.

DS70005319B-page 68                                                                         2017-2018 Microchip Technology Inc.
                                                               dsPIC33CH128MP508 FAMILY

3.2.5.2          Extended X Data Space                                      When the PC is pushed onto the stack, PC<15:0> are

The lower portion of the base address space range,                          pushed                              onto    the  first  available  stack    word,    then

between 0x0000 and 0x7FFF, is always accessible,                            PC<22:16> are pushed into the second available stack

regardless of the contents of the Data Space Read                           location. For a PC push during any CALL instruction,

Page register. It is indirectly addressable through the                     the MSB of the PC is zero-extended before the push,

register     indirect  instructions.      It    can  be   regarded      as  as shown in Figure 3-9. During exception processing,

being located in the default EDS Page 0 (i.e., EDS                          the MSB of the PC is concatenated with the lower eight

address range of 0x000000 to 0x007FFF with the base                         bits of the CPU STATUS Register, SR. This allows the

address bit, EA<15> = 0, for this address range). How-                      contents of SRL to be preserved automatically during

ever, Page 0 cannot be accessed through the upper                           interrupt processing.

32 Kbytes, 0x8000 to 0xFFFF, of base Data Space in                          Note 1:                                 To maintain system Stack Pointer (W15)

combination      with      DSRPAG         =     0x00.  Consequently,                                                coherency,      W15    is  never    subject     to

DSRPAG is initialized to 0x001 at Reset.                                                                            (EDS) paging, and is therefore, restricted

Note 1:          DSRPAG should not be used to access                                                                to  an   address       range  of    0x0000      to

                 Page 0. An EDS access with DSRPAG                                                                  0xFFFF. The same applies to the W14

                 set   to  0x000    will     generate     an   address                                              when     used   as  a  Stack  Frame  Pointer

                 error trap.                                                                                        (SFA = 1).

             2:  Clearing the DSRPAG in software has no                                                         2:  As the stack can be placed in, and can

                 effect.                                                                                            access X and Y spaces, care must be

                                                                                                                    taken regarding its use, particularly with

The remaining PSV pages are only accessible using                                                                   regard to local automatic variables in a C

the DSRPAG register in combination with the upper                                                                   development environment

32 Kbytes, 0x8000 to 0xFFFF, of the base address,

where the base address bit, EA<15> = 1.                                     FIGURE 3-9:                                           CALL STACK FRAME

3.2.5.3          Software Stack

The  W15         register  serves    as      a  dedicated      Software     0x0000                              15                         0

Stack Pointer (SSP), and is automatically modified by                                                                                             CALL  SUBR

exception        processing,    subroutine      calls     and  returns;

however, W15 can be referenced by any instruction in                        Stack Grows Toward  Higher Address

the same manner as all other W registers. This simpli-

fies reading, writing and manipulating the Stack Pointer                                                                  PC<15:1>                W15 (before CALL)

(for example, creating stack frames).                                                                               b‘000000000’  PC<22:16>

Note:            To    protect    against       misaligned     stack                                                                   W15 (after CALL)

                 accesses, W15<0> is fixed to ‘0’ by the

                 hardware.

W15      is  initialized   to  0x1000     during     all  Resets.  This

address ensures that the SSP points to valid RAM in all

dsPIC33CH128MP508 devices and permits stack avail-

ability  for  non-maskable        trap    exceptions.     These     can

occur before the SSP is initialized by the user software.

You can reprogram the SSP during initialization to any

location within Data Space.

The Software Stack Pointer always points to the first

available        free  word    and   fills      the  software  stack,

working       from     lower    toward          higher    addresses.

Figure 3-9       illustrates    how   it  pre-decrements           for  a

stack pop (read) and post-increments for a stack push

(writes).

 2017-2018 Microchip Technology Inc.                                                                                                         DS70005319B-page 69
dsPIC33CH128MP508 FAMILY

3.2.6          INSTRUCTION ADDRESSING                                   3.2.6.2        MCU Instructions

               MODES                                                    The three-operand MCU instructions are of the form:

The addressing modes shown in Table 3-20 form the                       Operand 3 = Operand 1 Operand 2

basis of the addressing modes optimized to support the                  where Operand 1 is always a Working register (that is,

specific      features   of  individual      instructions.     The      the  addressing     mode    can     only  be  Register  Direct),

addressing     modes     provided       in  the  MAC      class  of     which is referred to as Wb. Operand           2 can be a W

instructions differ from those in the other instruction                 register fetched from data memory or a 5-bit literal. The

types.                                                                  result location can either be a W register or a data

3.2.6.1           File Register Instructions                            memory location. The following addressing modes are

Most    file   register  instructions   use  a   13-bit   address       supported by MCU instructions:

field (f)  to  directly  address    data    present  in   the    first  •  Register Direct

8192 bytes of data memory (Near Data Space). Most                       •  Register Indirect

file register instructions employ a Working register, W0,               •  Register Indirect Post-Modified

which is denoted as WREG in these instructions. The                     •  Register Indirect Pre-Modified

destination is typically either the same file register or               •  5-Bit or 10-Bit Literal

WREG       (with  the    exception  of  the  MUL     instruction),         Note:       Not  all     instructions  support       all  the

which writes the result to a register or register pair. The                            addressing modes given above. Individ-

MOV    instruction  allows   additional      flexibility  and    can                   ual  instructions    can   support  different

access the entire Data Space.                                                          subsets of these addressing modes.

TABLE 3-20:              FUNDAMENTAL            ADDRESSING MODES SUPPORTED

              Addressing Mode                                                     Description

File Register Direct                             The address of the file register is specified explicitly.

Register Direct                                  The contents of a register are accessed directly.

Register Indirect                                The contents of Wn form the Effective Address (EA).

Register Indirect Post-Modified                  The contents of Wn form the EA. Wn is post-modified        (incremented

                                                 or decremented) by a constant value.

Register Indirect Pre-Modified                   Wn is pre-modified (incremented or decremented) by         a signed constant   value

                                                 to form the EA.

Register Indirect with Register Offset           The sum of Wn and Wb forms the EA.

(Register Indexed)

Register Indirect with Literal Offset            The sum of Wn and a literal forms the EA.

DS70005319B-page 70                                                                            2017-2018 Microchip Technology Inc.
                                                         dsPIC33CH128MP508 FAMILY

3.2.6.3            Move and Accumulator Instructions                3.2.6.4         MAC Instructions

Move instructions, and the DSP accumulator class of                 The dual source operand DSP instructions (CLR, ED,

instructions,  provide     a  greater  degree  of   addressing      EDAC, MAC, MPY, MPY.N, MOVSAC and MSC), also referred

flexibility  than   other  instructions.   In  addition    to  the  to as MAC instructions, use a simplified set of addressing

addressing modes supported by most MCU instructions,                modes      to  allow   the  user      application  to  effectively

move     and       accumulator  instructions    also     support    manipulate the Data Pointers through register indirect

Register Indirect with Register Offset Addressing mode,             tables.

also referred to as Register Indexed mode.                          The two-source operand prefetch registers must be

    Note:      For the MOV instructions, the addressing             members of the set {W8, W9, W10, W11}. For data

               mode specified in the instruction can differ         reads, W8 and W9 are always directed to the X RAGU,

               for the source and destination EA. How-              and W10 and W11 are always directed to the Y AGU.

               ever, the 4-bit Wb (Register Offset) field is        The Effective Addresses generated (before and after

               shared by both source and destination (but           modification) must therefore, be valid addresses within

               typically only used by one).                         X Data Space for W8 and W9, and Y Data Space for

                                                                    W10 and W11.

In  summary,        the  following  addressing     modes       are      Note:      Register     Indirect  with  Register        Offset

supported by move and accumulator instructions:                                    Addressing mode is available only for W9

•   Register Direct                                                                (in X space) and W11 (in Y space).

•   Register Indirect                                               In   summary,   the    following      addressing    modes   are

•   Register Indirect Post-Modified                                 supported by the MAC class of instructions:

•   Register Indirect Pre-Modified                                  •   Register Indirect

•   Register Indirect with Register Offset (Indexed)                •   Register Indirect Post-Modified by 2

•   Register Indirect with Literal Offset                           •   Register Indirect Post-Modified by 4

•   8-Bit Literal                                                   •   Register Indirect Post-Modified by 6

•   16-Bit Literal                                                  •   Register Indirect with Register Offset (Indexed)

    Note:      Not   all   instructions    support    all      the

               addressing modes given above. Individual             3.2.6.5         Other Instructions

               instructions may support different subsets           Besides    the  addressing  modes     outlined         previously,

               of these addressing modes.                           some instructions use literal constants of various sizes.

                                                                    For  example,   BRA      (branch)     instructions     use  16-bit

                                                                    signed literals to specify the branch destination directly,

                                                                    whereas the DISI instruction uses a 14-bit unsigned

                                                                    literal field. In some instructions, such as ULNK, the

                                                                    source of an operand or result is implied by the opcode

                                                                    itself. Certain operations, such as a NOP, do not have

                                                                    any operands.

 2017-2018 Microchip Technology Inc.                                                                     DS70005319B-page 71
dsPIC33CH128MP508 FAMILY

3.2.7          MODULO ADDRESSING                                            3.2.7.1        Start and End Address

Modulo Addressing mode is a method of providing an                          The    Modulo     Addressing      scheme      requires  that      a

automated means to support circular data buffers using                      starting and ending address be specified and loaded

hardware.     The    objective  is  to  remove  the    need    for          into   the   16-bit  Modulo       Buffer   Address     registers:

software   to   perform  data   address     boundary      checks            XMODSRT, XMODEND, YMODSRT and YMODEND

when executing tightly looped code, as is typical in                        (see Table 3-4).

many DSP algorithms.                                                           Note:     Y space Modulo Addressing EA calcula-

Modulo    Addressing     can    operate    in  either  Data    or                        tions   assume       word-sized   data    (LSb   of

Program Space (since the Data Pointer mechanism is                                       every EA is always clear).

essentially the same for both). One circular buffer can be                  The length of a circular buffer is not directly specified. It is

supported in each of the X (which also provides the point-                  determined by the difference between the corresponding

ers into Program Space) and Y Data Spaces. Modulo                           start and end addresses. The maximum possible length of

Addressing can operate on any W Register Pointer. How-                      the circular buffer is 32K words (64 Kbytes).

ever, it is not advisable to use W14 or W15 for Modulo

Addressing since these two registers are used as the                        3.2.7.2        W Address Register Selection

Stack Frame Pointer and Stack Pointer, respectively.

In general, any particular circular buffer can be config-                   The    Modulo     and  Bit-Reversed        Addressing   Control

ured to operate in only one direction, as there are certain                 register, MODCON<15:0>, contains enable flags, as well

restrictions on the buffer start address (for incrementing                  as a W register field to specify the W Address registers.

buffers)  or    end  address    (for    decrementing   buffers),            The    XWM   and     YWM     fields  select  the   registers  that

based upon the direction of the buffer.                                     operate with Modulo Addressing:

The  only  exception     to  the    usage   restrictions   is  for          •  If XWM = 1111, X RAGU and X WAGU Modulo

buffers   that  have  a  power-of-two       length.    As  these               Addressing is disabled

buffers satisfy the start and end address criteria, they                    •  If YWM = 1111, Y AGU Modulo Addressing is

can operate in a Bidirectional mode (that is, address                          disabled

boundary checks are performed on both the lower and                         The X Address Space Pointer W (XWM) register, to

upper address boundaries).                                                  which Modulo Addressing is to be applied, is stored in

                                                                            MODCON<3:0> (see Table 3.2.1). Modulo Addressing

                                                                            is enabled for X Data Space when XWM is set to any

                                                                            value other than ‘1111’ and the XMODEN bit is set

                                                                            (MODCON<15>).

                                                                            The Y Address Space Pointer W (YWM) register, to

                                                                            which Modulo Addressing is to be applied, is stored in

                                                                            MODCON<7:4>.         Modulo       Addressing   is  enabled        for

                                                                            Y Data Space when YWM is set to any value other than

                                                                            ‘1111’ and the YMODEN bit (MODCON<14>) is set.

FIGURE 3-10:             MODULO ADDRESSING OPERATION EXAMPLE

           Byte                                        MOV          #0x1100,   W0

          Address                                      MOV          W0,  XMODSRT         ;set    modulo    start   address

          0x1100                                       MOV          #0x1163,   W0

                                                       MOV          W0,  MODEND          ;set    modulo    end   address

                                                       MOV          #0x8001,   W0

                                                       MOV          W0,  MODCON          ;enable   W1,     X  AGU  for   modulo

                                                       MOV          #0x0000,   W0        ;W0   holds   buffer      fill  value

                                                       MOV          #0x1110,   W1        ;point    W1  to     buffer

          0x1163

                                                       DO           AGAIN,     #0x31     ;fill   the   50     buffer   locations

                                                       MOV          W0,  [W1++]          ;fill   the   next      location

                     Start Addr = 0x1100               AGAIN:       INC  W0,   W0        ;increment      the     fill  value

                     End Addr = 0x1163

                     Length = 0x0032 words

DS70005319B-page 72                                                                                 2017-2018 Microchip Technology Inc.
                                                       dsPIC33CH128MP508 FAMILY

3.2.7.3        Modulo Addressing Applicability                    3.2.8.1    Bit-Reversed Addressing

Modulo     Addressing     can  be   applied  to  the   Effective             Implementation

Address     (EA)   calculation     associated    with  any    W   Bit-Reversed Addressing mode is enabled in any of

register.   Address    boundaries   check       for   addresses   these situations:

equal to:                                                         •  BWMx bits (W register selection) in the MODCON

•  The upper boundary addresses for incrementing                     register are any value other than ‘1111’ (the stack

   buffers                                                           cannot be accessed using Bit-Reversed

•  The lower boundary addresses for decrementing                     Addressing)

   buffers                                                        •  The BREN bit is set in the XBREV register

It is important to realize that the address boundaries            •  The addressing mode used is Register Indirect

check for addresses less than, or greater than, the                  with Pre-Increment or Post-Increment

upper (for incrementing buffers) and lower (for decre-            If the length of a bit-reversed buffer is M = 2N bytes,

menting buffers) boundary addresses (not just equal               the last ‘N’ bits of the data buffer start address must

to).  Address  changes    can,      therefore,   jump  beyond     be zeros.

boundaries and still be adjusted correctly.                       XB<14:0> is the Bit-Reversed Addressing modifier, or

   Note:    The modulo corrected Effective Address                ‘pivot point’, which is typically a constant. In the case of

            is written back to the register only when             an FFT computation, its value is equal to half of the FFT

            Pre-Modify    or    Post-Modify      Addressing       data buffer size.

            mode     is   used  to  compute      the  Effective      Note:   All bit-reversed EA calculations assume

            Address. When an address offset (such as                         word-sized        data  (LSb      of   every    EA    is

            [W7 + W2]) is used, Modulo Addressing                            always       clear).  The     XB  value     is  scaled

            correction is performed, but the contents of                     accordingly to generate compatible (byte)

            the register remain unchanged.                                   addresses.

3.2.8       BIT-REVERSED ADDRESSING                               When enabled, Bit-Reversed Addressing is executed

Bit-Reversed Addressing mode is intended to simplify              only for Register Indirect with Pre-Increment or Post-

data   reordering    for  radix-2   FFT      algorithms.  It  is  Increment Addressing and word-sized data writes. It

supported by the X AGU for data writes only.                      does not function for any other addressing mode or for

The modifier, which can be a constant value or register           byte-sized data and normal addresses are generated

contents, is regarded as having its bit order reversed.           instead. When Bit-Reversed Addressing is active, the

The address source and destination are kept in normal             W Address Pointer is always added to the address

order. Thus, the only operand requiring reversal is the           modifier   (XB)    and  the      offset  associated        with  the

modifier.                                                         Register   Indirect  Addressing          mode     is  ignored.   In

                                                                  addition, as word-sized data is a requirement, the LSb

                                                                  of the EA is ignored (and always clear).

                                                                     Note:   Modulo       Addressing          and   Bit-Reversed

                                                                             Addressing can be enabled simultaneously

                                                                             using     the  same           W  register,  but       Bit-

                                                                             Reversed Addressing operation will always

                                                                             take      precedence    for      data  writes    when

                                                                             enabled.

                                                                  If Bit-Reversed Addressing has already been enabled

                                                                  by setting the BREN (XBREV<15>) bit, a write to the

                                                                  XBREV register should not be immediately followed by

                                                                  an indirect read operation using the W register that has

                                                                  been designated as the Bit-Reversed Pointer.

 2017-2018 Microchip Technology Inc.                                                                      DS70005319B-page 73
dsPIC33CH128MP508 FAMILY

FIGURE 3-11:         BIT-REVERSED ADDRESSING EXAMPLE

                                                               Sequential Address

b15 b14 b13   b12    b11 b10      b9  b8  b7  b6   b5  b4      b3  b2  b1  0

                                                                              Bit Locations Swapped Left-to-Right

                                                                              Around Center of Binary Value

b15 b14 b13   b12       b11  b10  b9  b8  b7  b6   b5  b1      b2  b3  b4  0

                                                               Bit-Reversed Address

                                                  Pivot Point      XB = 0x0008 for a 16-Word Bit-Reversed Buffer

TABLE  3-21:  BIT-REVERSED ADDRESSING                  SEQUENCE        (16-ENTRY)

              Normal Address                                                  Bit-Reversed  Address

A3     A2            A1      A0           Decimal              A3      A2     A1     A0              Decimal

0      0             0       0                0                0       0      0      0               0

0      0             0       1                1                1       0      0      0               8

0      0             1       0                2                0       1      0      0               4

0      0             1       1                3                1       1      0      0               12

0      1             0       0                4                0       0      1      0               2

0      1             0       1                5                1       0      1      0               10

0      1             1       0                6                0       1      1      0               6

0      1             1       1                7                1       1      1      0               14

1      0             0       0                8                0       0      0      1               1

1      0             0       1                9                1       0      0      1               9

1      0             1       0                10               0       1      0      1               5

1      0             1       1                11               1       1      0      1               13

1      1             0       0                12               0       0      1      1               3

1      1             0       1                13               1       0      1      1               11

1      1             1       0                14               0       1      1      1               7

1      1             1       1                15               1       1      1      1               15

DS70005319B-page 74                                                                 2017-2018 Microchip Technology Inc.
                                                     dsPIC33CH128MP508 FAMILY

3.2.9        INTERFACING PROGRAM AND                                    Table instructions allow an application to read or write

             DATA MEMORY SPACES                                         to small areas of the program memory. This capability

The dsPIC33CH128MP508 family architecture uses a                        makes the method ideal for accessing data tables that

24-bit wide Program Space (PS) and a 16-bit wide Data                   need to be updated periodically. It also allows access

Space    (DS).  The     architecture  is    also  a  modified           to  all  bytes    of  the  program  word.   The     remapping

Harvard    scheme,     meaning  that    data  can    also  be           method allows an application to access a large block of

present in the Program Space. To use this data suc-                     data on a read-only basis, which is ideal for look-ups

cessfully, it must be accessed in a way that preserves                  from a large table of static data. The application can

the alignment of information in both spaces.                            only access the least significant word of the program

                                                                        word.

Aside  from     normal  execution,     the  architecture   of

the  dsPIC33CH128MP508          family    devices    provides

two    methods  by     which  Program       Space    can   be

accessed during operation:

•  Using table instructions to access individual bytes

   or words anywhere in the Program Space

•  Remapping a portion of the Program Space into

   the Data Space (Program Space Visibility)

TABLE 3-22:          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)                                                0xxx        xxxx     xxxx       xxxx     xxxx   xxx0

   TBLRD/TBLWT                  User                              TBLPAG<7:0>                            Data EA<15:0>

   (Byte/Word Read/Write)                                         0xxx  xxxx                       xxxx  xxxx  xxxx    xxxx

                                Configuration                     TBLPAG<7:0>                            Data EA<15:0>

                                                                  1xxx  xxxx                       xxxx  xxxx  xxxx    xxxx

FIGURE 3-12:            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

                                      User/Configuration                                                       Byte Select

                                       Space Select

     Note  1:   The Least Significant bit (LSb) of Program Space addresses is always fixed as ‘0’ to maintain

                word alignment of data in the Program and Data Spaces.

           2:   Table operations are not required to be word-aligned. Table Read operations are permitted in the

                configuration memory space.

 2017-2018 Microchip Technology Inc.                                                                          DS70005319B-page 75
dsPIC33CH128MP508 FAMILY

3.2.9.1       Data Access from Program Memory                     •  TBLRDH              (Table Read High):

              Using Table Instructions                               -   In Word mode, this instruction maps the entire

The TBLRDL and TBLWTL instructions offer a direct                        upper word of a program address (P<23:16>)

method of reading or writing the lower word of any                       to a data address. The ‘phantom’ byte

address  within  the  Program        Space   without  going              (D<15:8>) is always ‘0’.

through  Data    Space.    The       TBLRDH     and  TBLWTH          -   In Byte mode, this instruction maps the upper

instructions are the only method to read or write the                    or lower byte of the program word to D<7:0>

upper 8 bits of a Program Space word as data.                            of the data address in the TBLRDL            instruc-

The PC is incremented by two for each successive                         tion. The data is always ‘0’ when the upper

24-bit  program  word.     This  allows  program     memory              ‘phantom’ byte is selected (Byte Select = 1).

addresses to directly map to Data Space addresses.                In a similar fashion, two table instructions, TBLWTH

Program memory can thus be regarded as two 16-bit                 and    TBLWTL,             are  used  to  write  individual  bytes  or

wide word address spaces, residing side by side, each             words to a Program Space address. The details of

with the same address range. TBLRDL and TBLWTL                    their operation are explained in Section 3.3 “Master

access   the  space  that  contains     the  least   significant  Flash Program Memory”.

data word. TBLRDH and TBLWTH access the space that                For all table operations, the area of program memory

contains the upper data byte.                                     space to be accessed is determined by the Table Page

Two table instructions are provided to move byte or               register (TBLPAG). TBLPAG covers the entire program

word-sized (16-bit) data to and from Program Space.               memory space of the device, including user application

Both function as either byte or word operations.                  and configuration spaces. When TBLPAG<7> = 0, the

•  TBLRDL (Table Read Low):                                       table page is located in the user memory space. When

   -  In Word mode, this instruction maps the lower               TBLPAG<7> = 1, the page is located in configuration

      word of the Program Space location (P<15:0>)                space.

      to a data address (D<15:0>)

   -  In Byte mode, either the upper or lower byte

      of the lower program word is mapped to the

      lower byte of a data address. The upper byte

      is selected when Byte Select is ‘1’; the lower

      byte is selected when it is ‘0’.

FIGURE 3-13:            ACCESSING            PROGRAM MEMORY WITH TABLE                       INSTRUCTIONS

      TBLPAG                                              Program Space

         02

                 23              15          0  0x000000                                 23       16               8           0

                                                                     00000000

                                                                     00000000

                                                0x020000             00000000

                                                0x030000             00000000

                                                                  ‘Phantom’ Byte

                                                                  TBLRDH.B  (Wn<0> = 0)

                                                                  TBLRDL.B  (Wn<0> = 1)

                                                                  TBLRDL.B  (Wn<0> = 0)

                                                                  TBLRDL.W

                                                                  The address for the table operation is determined by the data EA

                                                                  within the page defined by the TBLPAG register.

                                                0x800000          Only read operations are shown; write operations are also valid in

                                                                  the user memory area.

DS70005319B-page 76                                                                                2017-2018 Microchip Technology Inc.
                                                              dsPIC33CH128MP508 FAMILY

3.3       Master Flash Program Memory                                    RTSP allows the Master Flash user application code to

                                                                         update itself during run time. The feature is capable of

   Note   1:    This data sheet summarizes the features                  writing a single program memory word (two instructions)

                of the dsPIC33CH128MP508 family of                       or an entire row as needed.

                devices.    It  is   not      intended    to   be  a

                comprehensive        reference        source.      To    3.3.1     FLASH PROGRAMMING

                complement the information in this data                            OPERATIONS

                sheet,   refer   to  “Flash      Programming”            For ICSP and RTSP programming of the Master Flash,

                (DS70609) in the “dsPIC33/PIC24 Family                   TBLWTL and TBLWTH instructions are used to write to

                Reference       Manual”,      which   is  available      the NVM write latches. An NVM write operation then

                from      the       Microchip         web         site   writes the contents of both latches to the Flash, starting

                (www.microchip.com).                                     at the address defined by the contents of TBLPAG, and

          2:    This section refers to the “Dual Partition               the NVMADR and NVMADRU registers.

                Flash Program Memory” (DS70005156)                       Programmers     can   program   two  adjacent        words

                in the “dsPIC33/PIC24 Family Reference                   (24 bits x 2) of Program Flash Memory at a time on

                Manual”,    but     the  Dual    Partition    is   not   every    other  word  address   boundary      (0x000002,

                implemented in the Master Flash.                         0x000006, 0x00000A, etc.). To do this, it is necessary

The    dsPIC33CH128MP508             family      devices      contain    to erase the page that contains the desired address of

internal  Flash     program         memory       for  storing      and   the location the user wants to change. For protection

executing application code. The memory is readable,                      against   accidental  operations,   the   write      initiate

writable and erasable during normal operation over the                   sequence  for   NVMKEY    must  be  used  to        allow  any

entire VDD range.                                                        erase or program operation to proceed. After the pro-

Flash memory can be programmed in three ways:                            gramming  command     has    been   executed,       the    user

•  In-Circuit Serial Programming™ (ICSP™)                                application must wait for the programming time until

   programming capability                                                programming is complete.

•  Enhanced In-Circuit Serial Programming                                Regardless of the method used to program the Flash,

   (Enhanced ICSP)                                                       a few basic requirements should be met:

•  Run-Time Self-Programming (RTSP)                                      •  A full 48-bit double instruction word should always

ICSP allows for a dsPIC33CH128MP508 family device                           be programmed to a Flash location. Either

to be serially programmed while in the end application                      instruction may simply be a NOP to fulfill this

circuit. This is done with a Programming Clock and Pro-                     requirement. This ensures a valid ECC value is

gramming      Data    (PGCx/PGDx)         line,  and    three     other     generated for each pair of instructions written.

lines for power (VDD), ground (VSS) and Master Clear                     •  Assuming the above step is followed, the last

(MCLR). This allows customers to manufacture boards                         24-bit location in implemented program space

with  unprogrammed          devices      and  then    program      the      should never be executed. The penultimate

device    just  before    shipping       the  product.    This    also      instruction must contain a program flow change

allows the most recent firmware or a custom firmware                        instruction, such as a RETURN or BRA instruction.

to be programmed.

Enhanced        In-Circuit  Serial   Programming            uses   an

on-board bootloader, known as the Program Executive,

to manage the programming process. Using an SPI data

frame     format,   the     Program      Executive      can    erase,

program and verify program memory. For more informa-

tion on Enhanced ICSP, see the device programming

specification.

 2017-2018 Microchip Technology Inc.                                                                       DS70005319B-page 77
dsPIC33CH128MP508 FAMILY

FIGURE 3-14:         ADDRESSING FOR TABLE REGISTERS

                                                   24 Bits

              Using               0                Program Counter              0

              Program Counter

                                                            Working Reg EA

              Using               1/0  TBLPAG Reg

              Table Instruction

                                       8 Bits                       16 Bits

              User/Configuration                                                           Byte

              Space Select                         24-Bit EA                               Select

DS70005319B-page 78                                                            2017-2018  Microchip  Technology  Inc.
                                                          dsPIC33CH128MP508 FAMILY

3.3.2        RTSP OPERATION                                                 through Figure 3-4 for write latch addresses. Then, the

RTSP    allows  the      user  application   to     program   one           WR bit in the NVMCON register is set to initiate the

double  instruction      word     or  one  row   at  a  time.The            write  process.  The   processor  stalls     (waits)  until  the

double instruction word write blocks and single row                         programming      operation    is  finished.  The  WR  bit    is

write blocks are edge-aligned, from the beginning of                        automatically cleared when the operation is finished.

program      memory,      on   boundaries       of   one   double           Double instruction word writes are performed by man-

instruction  word     and     64  double   instruction     words,           ually  loading   both  write  latches,  using  TBLWTL        and

respectively.                                                               TBLWTH instructions, and then initiating the NVM write

The basic sequence for RTSP programming is to first                         while the NVMOPx bits are set to ‘0x1’. The program

load two 24-bit instructions into the NVM write latches                     space destination address is defined by the NVMADR/U

found in configuration memory space. Refer to Figure 3-3                    registers.

EXAMPLE 3-1:               FLASH WRITE/READ

/////////Flash           write    ////////////////////////

//Sample       code   for     writing     0x123456   to    address   locations     0x10000   /     10002

       NVMCON   =     0x4001;

       TBLPAG   =     0xFA;                               //  write  latch  upper    address

       NVMADR   =     0x0000;                             //  set   target  write  address    of   general    segment

       NVMADRU     =  0x0001;

       __builtin_tblwtl(0,            0x3456);            //  load   write  latches

       __builtin_tblwth           (0,0x12);

       __builtin_tblwtl(2,            0x3456);            //  load   write  latches

       __builtin_tblwth           (2,0x12);

       asm volatile       ("disi      #5");

       __builtin_write_NVM();

       while(_WR      ==  1    )  ;

////////////Flash             Read///////////////

//Sample       code   to   read      the  Flash     content   of  address   0x10000

//  readDataL/        readDataH       variables      need    to   defined

       TBLPAG   =     0x0001;

       readDataL      =   __builtin_tblrdl(0x0000);

       readDataH      =   __builtin_tblrdh(0x0000);

 2017-2018 Microchip Technology Inc.                                                                               DS70005319B-page 79
dsPIC33CH128MP508 FAMILY

Row              programming              is  performed        by    first  loading    3.3.3            ERROR CORRECTING CODE (ECC)

128 instructions into data RAM and then loading the                                    In order to improve program memory performance and

address                   of  the  first  instruction  in   that     row    into  the  durability,  the  devices      include  Error    Correcting      Code

NVMSRCADRL/H registers. Once the write has been                                        functionality    (ECC)     as    an  integral   part  of  the    Flash

initiated, the device will automatically load two instruc-                             memory controller. ECC can determine the presence of

tions            into         the  write  latches   and     write    them   to    the  single bit errors in program data, including which bit is in

program                   space    destination      address    defined      by    the  error, and correct the data automatically without user

NVMADR/U registers.                                                                    intervention. ECC cannot be disabled.

The operation will increment the NVMSRCADRL/H and                                      When data is written to program memory, ECC gener-

the  NVMADR/U                      registers    until  all  double   instruction       ates a 7-bit Hamming code parity value for every two

words have been programmed.                                                            (24-bit) instruction words. The data is stored in blocks of

The RPDF bit (NVMCON<9>) selects the format of the                                     48 data bits and 7 parity bits; parity data is not memory-

stored data in RAM to be either compressed or uncom-                                   mapped and is inaccessible. When the data is read

pressed.                      See  Figure 3-15         for     data  formatting.       back, the ECC calculates the parity on it and compares

Compressed                         data  helps  to  reduce     the   amount       of   it  to  the  previously    stored       parity  value.    If  a  parity

required RAM by using the upper byte of the second                                     mismatch occurs, there are two possible outcomes:

word for the MSB of the second instruction.                                            •   Single bit error has occurred and has been

All erase and program operations may optionally use                                        automatically corrected on readback.

the NVM interrupt to signal the successful completion                                  •   Double-bit error has occurred and the read data is

of the operation.                                                                          not changed.

FIGURE 3-15:                              UNCOMPRESSED/                                Single bit error occurrence can be identified by the state

                                          COMPRESSED FORMAT                            of the ECCSBEIF (IFS0<13>) bit. An interrupt can be

                                                                                       generated when the corresponding interrupt enable bit is

                          15              7                 0                          set, ECCSBEIE (IEC0<13>). The ECCSTATL register

                                         LSW1                        Even Byte         contains the parity information for single bit errors. The

                                                                     Address           SECOUT<7:0> bit field contains the expected calculated

     IncreasingAddress        0x00              MSB1                                   SEC     parity   and     SECIN<7:0>     bits    contain   the    actual

                                                                                       value from a Flash read operation. The SECSYNDx bits

                                         LSW2                                          (ECCSTATH<7:0>) indicate the bit position of the single

                              0x00              MSB2                                   bit error within the 48-bit pair of instruction words. When

                                                                                       no  error    is  present,  SECINx       equals   SECOUTx             and

                 UNCOMPRESSED FORMAT (RPDF = 0)                                        SECSYNDx is zero.

                                                                                       Double-bit       errors  result  in  a  generic  hard         trap.  The

                                                                                       ECCDBE bit (INTCON4<1>) will be set to identify the

                          15              7                 0                          source of the hard trap. If no Interrupt Service Routine is

                                                                     Even Byte         implemented for the hard trap, a device Reset will also

     Increasing  Address                 LSW1                        Address           occur. The ECCSTATH register contains double-bit error

                              MSB2              MSB1                                   status information. The DEDOUT bit is the expected

                                                                                       calculated DED parity and DEDIN is the actual value

                                         LSW2                                          from a Flash read operation. When no error is present,

                                                                                       DEDIN equals DEDOUT.

                        COMPRESSED FORMAT (RPDF = 1)

DS70005319B-page 80                                                                                              2017-2018 Microchip Technology Inc.
                                                   dsPIC33CH128MP508 FAMILY

3.3.3.1        ECC Fault Injection                           3.3.4      CONTROL REGISTERS

To test Fault handling, an EEC error can be generated.       Five SFRs are used to write and erase the Program

Both single and double-bit errors can be generated in        Flash    Memory:      NVMCON,             NVMKEY,       NVMADR,

both the read and write data paths. Read path Fault          NVMADRU and NVMSRCADRL/H.

injection first reads the Flash data and then modifies it    The    NVMCON         register  (Register 3-4)     selects     the

prior to entering the ECC logic. Write path Fault injection  operation  to    be   performed     (page     erase,    word/row

modifies the actual data prior to it being written into the  program,   Inactive      Partition  erase)    and  initiates   the

target Flash and will cause an EEC error on subsequent       program or erase cycle.

Flash read. The following procedure is used to inject a      NVMKEY (Register 3-7) is a write-only register that is

Fault:                                                       used for write protection. To start a programming or erase

1.  Load Flash target address into the ECCADDR               sequence, the user application must consecutively write

    register.                                                0x55 and 0xAA to the NVMKEY register.

2.  Select 1st Fault bit determined by FLT1PTRx              There are two NVM Address registers: NVMADR and

    (ECCCONH<7:0>). The target bit is inverted to            NVMADRU. These two registers, when concatenated,

    create the Fault.                                        form the 24-bit Effective Address (EA) of the selected

3.  If a double Fault is desired, select the 2nd Fault bit   word/row for programming operations, or the selected

    determined    by   FLT2PTRx    (ECCCONH<15:8>),          page for erase operations. The NVMADRU register is

    otherwise set to all ‘1’s.                               used   to  hold  the  upper     8   bits  of  the  EA,  while  the

4.  Write the NVMKEY unlock sequence.                        NVMADR register is used to hold the lower 16 bits of

5.  Enable the ECC Fault injection logic by setting          the EA.

    the FLTINJ bit (ECCCONL<0>)                              For row programming operation, data to be written to

6.  Perform    a  read  or  write  to  the  Flash  target    Program Flash Memory is written into data memory

    address.                                                 space      (RAM)     at  an     address       defined   by     the

                                                             NVMSRCADRL/H register (location of first element in

                                                             row programming data).

 2017-2018 Microchip Technology Inc.                                                                  DS70005319B-page 81
dsPIC33CH128MP508 FAMILY

3.3.5        NVM CONTROL REGISTERS

REGISTER 3-4:        NVMCON: NONVOLATILE MEMORY (NVM) CONTROL REGISTER

R/SO-0(1)          R/W-0(1)       R/W-0(1)           R/W-0       U-0                  U-0           R/W-0           R/C-0

       WR          WREN           WRERR             NVMSIDL(2)   —                    —             RPDF            URERR

bit 15                                                                                                                      bit 8

       U-0           U-0          U-0                U-0        R/W-0(1)              R/W-0(1)      R/W-0(1)    R/W-0(1)

        —            —            —                  —          NVMOP3(3,4)  NVMOP2(3,4)        NVMOP1(3,4)     NVMOP0(3,4)

bit 7                                                                                                                       bit 0

Legend:                           C = Clearable bit             SO = Settable Only bit

R = Readable bit                  W = Writable bit              U = Unimplemented bit, read as ‘0’

-n = Value at POR                 ‘1’ = Bit is set              ‘0’ = Bit is cleared            x = Bit is unknown

bit 15       WR: Write Control bit(1)

             1=      Initiates a  Flash memory program or erase  operation; the operation is        self-timed  and the     bit is

                     cleared by hardware once the operation is complete

             0=      Program or erase operation is complete and inactive

bit 14       WREN: Write Enable bit(1)

             1=      Enables Flash program/erase operations

             0=      Inhibits Flash program/erase operations

bit 13       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

bit 12       NVMSIDL: NVM Stop in Idle Control bit(2)

             1=      Flash voltage regulator goes into Standby mode during Idle mode

             0=      Flash voltage regulator is active during Idle mode

bit 11-10    Unimplemented: Read as ‘0’

bit 9        RPDF: Row Programming Data Format bit

             1=      Row data to be stored in RAM is in compressed format

             0=      Row data to be stored in RAM is in uncompressed format

bit 8        URERR: Row Programming Data Underrun Error bit

             1=      Indicates row programming operation has been terminated

             0=      No data underrun error is detected

bit 7-4      Unimplemented: Read as ‘0’

Note     1:  These bits can only be reset on a POR.

         2:  If this bit is set, there will be minimal power savings (IIDLE), and upon exiting Idle mode, there is a delay

             (TVREG) before Flash memory becomes operational.

         3:  All other combinations of NVMOP<3:0> are unimplemented.

         4:  Execution of the PWRSAV instruction is ignored while any of the NVM operations are in progress.

         5:  Two adjacent words on a 4-word boundary are programmed during execution of this operation.

DS70005319B-page 82                                                                         2017-2018 Microchip Technology Inc.
                                       dsPIC33CH128MP508 FAMILY

REGISTER 3-4:      NVMCON: NONVOLATILE MEMORY (NVM) CONTROL REGISTER (CONTINUED)

bit 3-0      NVMOP<3:0>: NVM Operation Select bits(1,3,4)

             1111  =  Reserved

             1110  =  User memory bulk erase operation

             1101  =  Reserved

             1100  =  Reserved

             1011  =  Reserved

             1010  =  Reserved

             1001  =  Reserved

             1000  =  Reserved

             0111  =  Reserved

             0101  =  Reserved

             0100  =  Reserved

             0011  =  Memory page erase operation

             0010  =  Memory row program operation
                      Memory double-word operation(5)
             0001  =

             0000  =  Reserved

Note     1:  These bits can only be reset on a POR.

         2:  If this bit is set, there will be minimal power savings (IIDLE), and upon exiting Idle mode, there is a delay

             (TVREG) before Flash memory becomes operational.

         3:  All other combinations of NVMOP<3:0> are unimplemented.

         4:  Execution of the PWRSAV instruction is ignored while any of the NVM operations are in progress.

         5:  Two adjacent words on a 4-word boundary are programmed during execution of this operation.

 2017-2018 Microchip Technology Inc.                                 DS70005319B-page 83
dsPIC33CH128MP508 FAMILY

REGISTER 3-5:        NVMADR: NONVOLATILE MEMORY LOWER ADDRESS REGISTER

R/W-x              R/W-x  R/W-x             R/W-x  R/W-x                 R/W-x         R/W-x        R/W-x

                                            NVMADR<15:8>

bit 15                                                                                                             bit 8

R/W-x              R/W-x  R/W-x             R/W-x  R/W-x                 R/W-x         R/W-x        R/W-x

                                            NVMADR<7:0>

bit 7                                                                                                              bit 0

Legend:

R = Readable bit          W = Writable bit         U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set         ‘0’ = Bit is cleared         x = Bit is unknown

bit 15-0     NVMADR<15:0>: Nonvolatile Memory Lower Write Address bits

             Selects the lower 16 bits of the location to program or erase in Program Flash Memory. This register

             may be read or written to by the user application.

REGISTER 3-6:        NVMADRU: NONVOLATILE MEMORY UPPER ADDRESS REGISTER

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

         —           —    —                 —                    —       —             —            —

bit 15                                                                                                             bit 8

R/W-x              R/W-x  R/W-x             R/W-x  R/W-x                 R/W-x         R/W-x        R/W-x

                                            NVMADRU<23:16>

bit 7                                                                                                              bit 0

Legend:

R = Readable bit          W = Writable bit         U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set         ‘0’ = Bit is cleared         x = Bit is unknown

bit 15-8     Unimplemented: Read as ‘0’

bit 7-0      NVMADRU<23:16>: Nonvolatile Memory Upper Write Address bits

             Selects the upper 8 bits of the location to program or erase in Program Flash Memory. This register

             may be read or written to by the user application.

DS70005319B-page 84                                                          2017-2018 Microchip Technology Inc.
                                              dsPIC33CH128MP508 FAMILY

REGISTER 3-7:      NVMKEY: NONVOLATILE MEMORY KEY REGISTER

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

         —         —                   —      —      —                     —              —            —

bit 15                                                                                                        bit  8

       W-0         W-0                 W-0    W-0    W-0                   W-0           W-0           W-0

                                              NVMKEY<7:0>

bit 7                                                                                                         bit  0

Legend:

R = Readable bit           W = Writable bit          U = Unimplemented bit, read  as ‘0’

-n = Value at POR          ‘1’ = Bit is set          ‘0’ = Bit is cleared         x = Bit is  unknown

bit 15-8     Unimplemented: Read as ‘0’

bit 7-0      NVMKEY<7:0>: NVM Key Register bits (write-only)

REGISTER 3-8:      NVMSRCADR: NVM SOURCE DATA ADDRESS REGISTER

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

                                              NVMSRCADR<15:8>

bit 15                                                                                                        bit 8

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

                                              NVMSRCADR<7:0>

bit 7                                                                                                         bit 0

Legend:

R = Readable bit           W = Writable bit          U = Unimplemented bit, read as ‘0’

-n = Value at POR          ‘1’ = Bit is set          ‘0’ = Bit is cleared         x = Bit is unknown

bit 15-0     NVMSRCADR<15:0>: NVM Source Data Address bits

             The RAM address of the data to be programmed into Flash when the NVMOP<3:0> bits are set to row

             programming.

 2017-2018 Microchip Technology Inc.                                                     DS70005319B-page 85
dsPIC33CH128MP508 FAMILY

3.3.6       ECC CONTROL REGISTERS

REGISTER 3-9:        ECCCONL: ECC FAULT INJECTION CONFIGURATION                           REGISTER LOW

       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     U-0                  U-0                 U-0         R/W-0

        —            —         —                 —           —                —                   —    FLTINMJ

bit 7                                                                                                              bit  0

Legend:

R = Readable bit               W = Writable bit         U = Unimplemented bit, read       as ‘0’

-n = Value at POR              ‘1’ = Bit is set         ‘0’ = Bit is cleared              x = Bit is unknown

bit 15-1    Unimplemented: Read as ‘0’

bit 0       FLTINJ: Fault Injection Sequence Enable bit

            1=       Enabled

            0=       Disabled

REGISTER 3-10:       ECCCONH: ECC FAULT INJECTION CONFIGURATION REGISTER HIGH

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

                                                 FLT2PTR<7:0>

bit 15                                                                                                             bit 8

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

                                                 FLT1PTR<7:0>

bit 7                                                                                                              bit 0

Legend:

R = Readable bit               W = Writable bit         U = Unimplemented bit, read as ‘0’

-n = Value at POR              ‘1’ = Bit is set         ‘0’ = Bit is cleared              x = Bit is unknown

bit 15-8    FLT2PTR<7:0>: ECC Fault Injection Bit Pointer 2

            11111111-00111000 = No Fault injection occurs

            00110111 = Fault injection (bit inversion) occurs on bit 55 of ECC bit order

            ...

            00000001 = Fault injection (bit inversion) occurs on bit 1 of ECC bit order

            00000000 = Fault injection (bit inversion) occurs on bit 0 of ECC bit order

bit 7-0     FLT1PTR<7:0>: ECC Fault Injection Bit Pointer 1

            11111111-00111000 = No Fault injection occurs

            00110111 = Fault injection occurs on bit 55 of ECC bit order

            ...

            00000001 = Fault injection occurs on bit 1 of ECC bit order

            00000000 = Fault injection occurs on bit 0 of ECC bit order

DS70005319B-page 86                                                                 2017-2018 Microchip Technology Inc.
                                            dsPIC33CH128MP508 FAMILY

REGISTER 3-11:     ECCADDRL: ECC FAULT INJECT ADDRESS COMPARE REGISTER LOW

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

                                            ECCADDR<15:8>

bit 15                                                                                              bit 8

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

                                            ECCADDR<7:0>

bit 7                                                                                               bit 0

Legend:

R = Readable bit          W = Writable bit         U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set         ‘0’ = Bit is cleared         x = Bit is unknown

bit 15-0  ECCADDR<15:0>: ECC Fault Injection NVM Address Match Compare bits

REGISTER 3-12:     ECCADDRH: ECC FAULT INJECT ADDRESS COMPARE REGISTER HIGH

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

                                            ECCADDR<31:24>

bit 15                                                                                              bit 8

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

                                            ECCADDR<23:16>

bit 7                                                                                               bit 0

Legend:

R = Readable bit          W = Writable bit         U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set         ‘0’ = Bit is cleared         x = Bit is unknown

bit 15-0  ECCADDR<31:16>: ECC Fault Injection NVM Address Match Compare bits

 2017-2018 Microchip Technology Inc.                                                  DS70005319B-page 87
dsPIC33CH128MP508 FAMILY

REGISTER 3-13:       ECCSTATL: ECC SYSTEM STATUS DISPLAY REGISTER LOW

       R-0           R-0  R-0               R-0                  R-0     R-0         R-0              R-0

                                            SECOUT<7:0>

bit 15                                                                                                     bit 8

       R-0           R-0  R-0               R-0                  R-0     R-0         R-0              R-0

                                                 SECIN<7:0

bit 7                                                                                                      bit 0

Legend:

R = Readable bit          W = Writable bit       U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set       ‘0’ = Bit is cleared             x = Bit is unknown

bit 15-8    SECOUT<7:0>: Calculated Single Error Correction Parity Value bits

bit 7-0     SECIN<7:0>: Read Single Error Correction Parity Value bits

            Bits are the actual parity value of a Flash read operation.

REGISTER 3-14:       ECCSTATH: ECC SYSTEM STATUS DISPLAY REGISTER HIGH

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

        —            —    —                 —                    —             —  DEDOUT              DEDIN

bit 15                                                                                                     bit 8

       R-0           R-0  R-0               R-0                  R-0     R-0         R-0              R-0

                                            SECSYND<7:0>

bit 7                                                                                                      bit 0

Legend:

R = Readable bit          W = Writable bit       U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set       ‘0’ = Bit is cleared             x = Bit is unknown

bit 15-10   Unimplemented: Read as ‘0’

bit 9       DEDOUT: Calculated Dual Bit Error Detection Parity bit

bit 8       DEDIN: Read Dual Bit Error Detection Parity bit

bit 7-0     SECSYND<7:0>: Calculated ECC Syndrome Value bits

            Indicates the bit location that contains the error.

DS70005319B-page 88                                                             2017-2018 Microchip Technology Inc.
                                                      dsPIC33CH128MP508 FAMILY

3.4   Master Resets                                                  Any active source of Reset will make the SYSRST

                                                                     signal active. On system Reset, some of the registers

      Note 1:  This data sheet summarizes the features               associated with the CPU and peripherals are forced to

               of the dsPIC33CH128MP508 family of                    a known Reset state, and some are unaffected.

               devices.  It  is  not    intended  to      be     a   Note:         Refer to the specific peripheral section

               comprehensive     reference       source.      To                   or Section 3.2 “Master Memory Organi-

               complement the information in this data                             zation”  of    this  data     sheet  for  register

               sheet, refer to “Reset” (DS70602) in the                            Reset states.

               “dsPIC33/PIC24 Family Reference Man-

               ual”, which is available from the Microchip           All types of device Reset set a corresponding status bit

               web site (www.microchip.com).                         in the RCON register to indicate the type of Reset (see

The Reset module combines all Reset sources and                      Register 3-15).

controls the device Master Reset Signal, SYSRST. The                 A POR clears all the bits, except for the BOR and POR

following is a list of device Reset sources:                         bits (RCON<1:0>) that are set. The user application

•  POR: Power-on Reset                                               can  set  or  clear  any     bit,  at  any  time,  during  code

•  BOR: Brown-out Reset                                              execution. The RCON bits only serve as status bits.

•  MCLR: Master Clear Pin Reset                                      Setting a particular Reset status bit in software does

                                                                     not cause a device Reset to occur.

•  SWR: RESET Instruction                                            The RCON register also has other bits associated with

•  WDTO: Watchdog Timer Time-out Reset                               the Watchdog Timer and device power-saving states.

•  CM: Configuration Mismatch Reset                                  The function of these bits is discussed in other sections

•  TRAPR: Trap Conflict Reset                                        of this data sheet.

•  IOPUWR: Illegal Condition Device Reset                            Note:         The    status  bits      in  the  RCON    register

   -  Illegal Opcode Reset                                                         should be cleared after they are read so

   -  Uninitialized W Register Reset                                               that the next RCON register value after a

   -  Security Reset                                                               device Reset is meaningful.

A  simplified  block  diagram    of   the  Reset  module         is  For all Resets, the default clock source is determined

shown in Figure 3-16.                                                by the FNOSC<2:0> bits in the FOSCSEL Configura-

                                                                     tion register. The value of the FNOSCx bits is loaded

                                                                     into the NOSC<2:0> (OSCCON<10:8>) bits on Reset,

                                                                     which in turn, initializes the system clock.

FIGURE 3-16:             MASTER RESET SYSTEM BLOCK DIAGRAM

                             RESET Instruction

                                                  Glitch Filter

               MCLR

                                 WDT
                                 Module

                                 Sleep or Idle

                             Internal                         BOR

               VDD           Regulator                                                                      SYSRST

                                                VDD Rise      POR

                                                 Detect

                                 Trap Conflict

                                 Illegal Opcode

                      Uninitialized W Register

                                 Security Reset

                      Configuration Mismatch

 2017-2018 Microchip Technology Inc.                                                                           DS70005319B-page 89
dsPIC33CH128MP508 FAMILY

3.4.1  RESET RESOURCES                                     3.4.1.1      Key Resources

Many   useful  resources  are  provided     on  the  main  •  “Reset” (DS70602) in the “dsPIC33/PIC24 Family

product page of the Microchip web site for the devices        Reference Manual”

listed in this data sheet. This product page contains the  •  Code Samples

latest updates and additional information.                 •  Application Notes

                                                           •  Software Libraries

                                                           •  Webinars

                                                           •  All Related “dsPIC33/PIC24 Family Reference

                                                              Manual” Sections

                                                           •  Development Tools

DS70005319B-page 90                                                          2017-2018 Microchip Technology Inc.
                                             dsPIC33CH128MP508 FAMILY

3.4.2        RESET CONTROL REGISTER

REGISTER 3-15:     RCON: RESET CONTROL REGISTER(1)

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

     TRAPR         IOPUWR              —        —              —                   —             CM           VREGS

bit 15                                                                                                                       bit 8

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

       EXTR        SWR                 —       WDTO           SLEEP                IDLE          BOR          POR

bit 7                                                                                                                        bit 0

Legend:

R = Readable bit           W = Writable bit                  U = Unimplemented bit, read as ‘0’

-n = Value at POR          ‘1’ = Bit is set                  ‘0’ = Bit is cleared         x = Bit is unknown

bit 15       TRAPR: Trap Reset Flag bit

             1 = A Trap Conflict Reset has occurred

             0 = A Trap Conflict Reset has not occurred

bit 14       IOPUWR: Illegal Opcode or Uninitialized W Register Access Reset Flag bit

             1=    An illegal opcode detection, an illegal address mode or Uninitialized         W  register  used  as       an

                   Address Pointer caused a Reset

             0=    An illegal opcode or Uninitialized W Register Reset has not occurred

bit  13-10   Unimplemented: Read as ‘0’

bit  9       CM: Configuration Mismatch Flag bit

             1 = A Configuration Mismatch Reset has occurred.

             0 = A Configuration Mismatch Reset has not occurred

bit  8       VREGS: Voltage Regulator Standby During Sleep bit

             1=    Voltage regulator is active during Sleep

             0=    Voltage regulator goes into Standby mode during Sleep

bit  7       EXTR: External Reset (MCLR) Pin bit

             1 = A Master Clear (pin) Reset has occurred

             0 = A Master Clear (pin) Reset has not occurred

bit  6       SWR: Software RESET (Instruction) Flag bit

             1 = A RESET instruction has been executed

             0 = A RESET instruction has not been executed

bit  5       Unimplemented: Read as ‘0’

bit  4       WDTO: Watchdog Timer Time-out Flag bit

             1 = WDT time-out has occurred

             0 = WDT time-out has not occurred

bit  3       SLEEP: Wake-up from Sleep Flag bit

             1 = Device has been in Sleep mode

             0 = Device has not been in Sleep mode

bit  2       IDLE: Wake-up from Idle Flag bit

             1 = Device has been in Idle mode

             0 = Device has not been in Idle mode

bit  1       BOR: Brown-out Reset Flag bit

             1 = A Brown-out Reset has occurred

             0 = A Brown-out Reset has not occurred

Note    1:   All of the Reset status bits can be set or cleared in software. Setting one of these bits in software does not

             cause a device Reset.

 2017-2018 Microchip Technology Inc.                                                               DS70005319B-page 91
dsPIC33CH128MP508 FAMILY

REGISTER 3-15:       RCON: RESET CONTROL REGISTER(1) (CONTINUED)

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 can be set or cleared in software. Setting one of these bits in software does not

           cause a device Reset.

DS70005319B-page 92                                2017-2018 Microchip Technology Inc.
                                                          dsPIC33CH128MP508 FAMILY

3.5       Master Interrupt Controller                               3.5.1.1           Alternate Interrupt Vector Table

   Note 1:     This data sheet summarizes the features              The Alternate Interrupt Vector Table (AIVT), shown in

               of  the     dsPIC33CH128MP508         family   of    Figure 3-18, is available only when the Boot Segment

               devices.     It  is  not  intended    to   be  a     (BS) is defined and the AIVT has been enabled. To

               comprehensive reference source. To com-              enable the Alternate Interrupt Vector Table, the Config-

               plement the information in this data sheet,          uration  bit,   AIVTDIS     in   the   FSEC      register,       must   be

               refer to “Interrupts” (DS70000600) in the            programmed        and     the    AIVTEN          bit      must     be   set

               “dsPIC33/PIC24 Family Reference Man-                 (INTCON2<8>         =  1).  When      the      AIVT   is  enabled,      all

               ual”, which is available from the Microchip          interrupt and exception processes use the alternate

               web site (www.microchip.com).                        vectors instead of the default vectors. The AIVT begins

                                                                    at  the  start  of   the  last   page      of    the  Boot    Segment,

The dsPIC33CH128MP508 family interrupt controller                   defined by BSLIM<12:0>. The second half of the page

reduces   the    numerous       peripheral    interrupt   request   is no longer usable space. The Boot Segment must be

signals   to  a    single  interrupt  request     signal  to  the   at least two pages to enable the AIVT.

dsPIC33CH128MP508 family CPU.                                           Note:       Although     the      Boot     Segment        must      be

The interrupt controller has the following features:                                enabled     in   order     to    enable       the   AIVT,

•  Six Processor Exceptions and Software Traps                                      application     code    does         not  need      to  be

•  Seven User-Selectable Priority Levels                                            present inside of the Boot Segment. The

•  Interrupt Vector Table (IVT) with a Unique Vector                                AIVT   (and      IVT)      will  inherit      the   Boot

   for each Interrupt or Exception Source                                           Segment code protection.

•  Fixed Priority within a Specified User Priority Level            The AIVT supports debugging by providing a means to

•  Fixed Interrupt Entry and Return Latencies                       switch between an application and a support environ-

•  Alternate Interrupt Vector Table (AIVT) for Debug                ment     without    requiring    the    interrupt     vectors       to  be

   Support                                                          reprogrammed.        This   feature     also     enables        switching

                                                                    between    applications          for   evaluation         of     different

3.5.1         INTERRUPT VECTOR TABLE                                software algorithms at run time.

The    dsPIC33CH128MP508              family  Interrupt   Vector    3.5.2           RESET SEQUENCE

Table (IVT), shown in Figure 3-17, resides in program               A device Reset is not a true exception because the

memory, starting at location, 000004h. The IVT contains             interrupt controller is not involved in the Reset process.

six non-maskable trap vectors and up to 246 sources of              The dsPIC33CH128MP508 family devices clear their

interrupts. In general, each interrupt source has its own           registers in response to a Reset, which forces the PC

vector.  Each    interrupt  vector    contains    a  24-bit   wide  to zero. The device then begins program execution at

address.    The    value   programmed       into  each   interrupt  location, 0x000000. A GOTO instruction at the Reset

vector location is the starting address of the associated           address    can      redirect     program         execution         to   the

Interrupt Service Routine (ISR).                                    appropriate start-up routine.

Interrupt vectors are prioritized in terms of their natural             Note:       Any    unimplemented             or   unused       vector

priority. This priority is linked to their position in the                          locations    in   the      IVT       should     be      pro-

vector table. Lower addresses generally have a higher                               grammed      with     the   address       of  a    default

natural priority. For example, the interrupt associated                             interrupt handler routine that contains a

with Vector 0 takes priority over interrupts at any other                           RESET instruction.

vector address.

 2017-2018 Microchip Technology Inc.                                                                           DS70005319B-page 93
dsPIC33CH128MP508 FAMILY

FIGURE 3-17:                            dsPIC33CH128MP508 FAMILY     MASTER INTERRUPT  VECTOR TABLE

Decreasing Natural Order Priority       Reset – GOTO Instruction     0x000000

                                        Reset – GOTO Address         0x000002

                                        Oscillator Fail Trap Vector  0x000004

                                        Address Error Trap Vector    0x000006

                                        Generic Hard Trap Vector     0x000008

                                        Stack Error Trap Vector      0x00000A

                                        Math Error Trap Vector       0x00000C

                                        Reserved                     0x00000E

                                        Generic Soft Trap Vector     0x000010

                                        Reserved                     0x000012

                                        Interrupt Vector 0           0x000014

                                        Interrupt Vector 1           0x000016

                                        :                            :

                                        :                            :

                                        :                            :

                                   IVT  Interrupt Vector 52          0x00007C

                                        Interrupt Vector 53          0x00007E

                                        Interrupt Vector 54          0x000080          See Table 3-19 for

                                        :                            :                 Interrupt Vector Details

                                        :                            :

                                        :                            :

                                        Interrupt Vector 116         0x0000FC

                                        Interrupt Vector 117         0x0000FE

                                        Interrupt Vector 118         0x000100

                                        Interrupt Vector 119         0x000102

                                        Interrupt Vector 120         0x000104

                                        :                            :

                                        :                            :

                                        :                            :

                                        Interrupt Vector 244         0x0001FC

                                        Interrupt Vector 245         0x0001FE

                                        START OF CODE                0x000200

Note:                              In Dual Partition modes, each partition has a dedicated Interrupt Vector Table.

DS70005319B-page 94                                                             2017-2018 Microchip Technology     Inc.
                                                                  dsPIC33CH128MP508 FAMILY

FIGURE 3-18:                             dsPIC33CH128MP508 ALTERNATE MASTER INTERRUPT VECTOR TABLE(2)

Decreasing Natural Order Priority                   Reserved          BSLIM<12:0>(1)  +  0x000000

                                                    Reserved          BSLIM<12:0>(1)  +  0x000002

                                         Oscillator Fail Trap Vector  BSLIM<12:0>(1)  +  0x000004

                                         Address Error Trap Vector    BSLIM<12:0>(1)  +  0x000006

                                         Generic Hard Trap Vector     BSLIM<12:0>(1)  +  0x000008

                                         Stack Error Trap Vector      BSLIM<12:0>(1)  +  0x00000A

                                         Math Error Trap Vector       BSLIM<12:0>(1)  +  0x00000C

                                                    Reserved          BSLIM<12:0>(1)  +  0x00000E

                                         Generic Soft Trap Vector     BSLIM<12:0>(1)  +  0x000010

                                                    Reserved          BSLIM<12:0>(1)  +  0x000012

                                         Interrupt Vector 0           BSLIM<12:0>(1)  +  0x000014

                                         Interrupt Vector 1           BSLIM<12:0>(1)  +  0x000016

                                                    :                           :

                                                    :                           :

                                   AIVT             :                           :

                                         Interrupt Vector 52          BSLIM<12:0>(1)  +  0x00007C

                                         Interrupt Vector 53          BSLIM<12:0>(1)  +  0x00007E

                                         Interrupt Vector 54          BSLIM<12:0>(1)  +  0x000080  See Table 3-19 for

                                                    :                           :                  Interrupt Vector Details

                                                    :                           :

                                                    :                           :

                                         Interrupt Vector 116         BSLIM<12:0>(1)  +  0x0000FC

                                         Interrupt Vector 117         BSLIM<12:0>(1)  +  0x0000FE

                                         Interrupt Vector 118         BSLIM<12:0>(1)  +  0x000100

                                         Interrupt Vector 119         BSLIM<12:0>(1)  +  0x000102

                                         Interrupt Vector 120         BSLIM<12:0>(1)  +  0x000104

                                                    :                           :

                                                    :                           :

                                                    :                           :

                                         Interrupt Vector 244         BSLIM<12:0>(1)  +  0x0001FC

                                         Interrupt Vector 245         BSLIM<12:0>(1)  +  0x0001FE

Note                               1:    The address depends on the size of the Boot Segment defined by BSLIM<12:0>:

                                         [(BSLIM<12:0> – 1) x 0x800] + Offset.

                                   2:    In Dual Partition modes, each partition has a dedicated Alternate Interrupt Vector Table (if

                                         enabled).

 2017-2018 Microchip Technology Inc.                                                                                 DS70005319B-page 95
dsPIC33CH128MP508 FAMILY

TABLE 3-23:        MASTER INTERRUPT VECTOR             DETAILS

                                        Vector  IRQ                                 Interrupt Bit Location

             Interrupt Source           #       #      IVT Address        Flag      Enable    Priority

INT0 – External Interrupt 0             8       0      0x000014           IFS0<0>   IEC0<0>   IPC0<2:0>

T1 – Timer1                             9       1      0x000016           IFS0<1>   IEC0<1>   IPC0<6:4>

CNA – Change Notice Interrupt A         10      2      0x000018           IFS0<2>   IEC0<2>   IPC0<10:8>

CNB – Change Notice Interrupt B         11      3      0x00001A           IFS0<3>   IEC0<3>   IPC0<14:12>

DMA0 – DMA Channel 0                    12      4      0x00001C           IFS0<4>   IEC0<4>   IPC1<2:0>

Reserved                                13      5      0x00001E           —         —                       —

CCP1 – Input Capture/Output Compare  1  14      6      0x000020           IFS0<6>   IEC0<6>   IPC1<10:8>

CCT1 – CCP1 Timer                       15      7      0x000022           IFS0<7>   IEC0<7>   IPC1<14:12>

DMA1 – DMA Channel 1                    16      8      0x000024           IFS0<8>   IEC0<8>   IPC2<2:0>

SPI1RX – SPI1 Receiver                  17      9      0x000026           IFS0<9>   IEC0<9>   IPC2<6:4>

SPI1TX – SPI1 Transmitter               18      10     0x000028           IFS0<10>  IEC0<10>  IPC2<10:8>

U1RX – UART1 Receiver                   19      11     0x00002A           IFS0<11>  IEC0<11>  IPC2<14:12>

U1TX – UART1 Transmitter                20      12     0x00002C           IFS0<12>  IEC0<12>  IPC3<2:0>

ECCSBE – ECC Single Bit Error           21      13     0x00002E           IFS0<13>  IEC0<13>  IPC3<6:4>

NVM – NVM Write Complete                22      14     0x000030           IFS0<14>  IEC0<14>  IPC3<10:8>

INT1 – External Interrupt 1             23      15     0x000032           IFS0<15>  IEC0<15>  IPC3<14:12>

SI2C1 – I2C1 Slave Event                24      16     0x000034           IFS1<0>   IEC1<0>   IPC4<2:0>

MI2C1 – I2C1 Master Event               25      17     0x000036           IFS1<1>   IEC1<1>   IPC4<6:4>

DMA2 – DMA Channel 2                    26      18     0x000038           IFS1<2>   IEC1<2>   IPC4<10:8>

CNC – Change Notice Interrupt C         27      19     0x00003A           IFS1<3>   IEC1<3>   IPC4<14:12>

INT2 – External Interrupt 2             28      20     0x00003C           IFS1<4>   IEC1<4>   IPC5<2:0>

DMA3 – DMA Channel 3                    29      21     0x00003E           IFS1<5>   IEC1<5>   IPC5<6:4>

DMA4 – DMA Channel 4                    30      22     0x000040           IFS1<6>   IEC1<6>   IPC5<10:8>

CCP2 – Input Capture/Output Compare  2  31      23     0x000042           IFS1<7>   IEC1<7>   IPC5<14:12>

CCT2 – CCP2 Timer                       32      24     0x000044           IFS1<8>   IEC1<8>   IPC6<2:0>

CAN1 – CAN1 Combined Error              33      25     0x000046           IFS1<9>   IEC1<9>   IPC6<6:4>

INT3 – External Interrupt 3             34      26     0x000048           IFS1<10>  IEC1<10>  IPC6<10:8>

U2RX – UART2 Receiver                   35      27     0x00004A           IFS1<11>  IEC1<11>  IPC6<14:12>

U2TX – UART2 Transmitter                36      28     0x00004C           IFS1<12>  IEC1<12>  IPC7<2:0>

SPI2RX – SPI2 Receiver                  37      29     0x00004E           IFS1<13>  IEC1<13>  IPC7<6:4>

SPI2TX – SPI2 Transmitter               38      30     0x000050           IFS1<14>  IEC1<14>  IPC7<10:8>

C1RX – CAN1 RX Data Ready               39      31     0x000052           IFS1<15>  IEC1<15>  IPC7<14:12>

Reserved                                40-41   32-33  0x000054-0x000056  —         —                       —

DMA5 – DMA Channel 5                    42      34     0x000058           IFS2<2>   IEC2<2>   IPC8<10:8>

CCP3 – Input Capture/Output Compare  3  43      35     0x00005A           IFS2<3>   IEC2<3>   IPC8<14:12>

CCT3 – CCP3 Timer                       44      36     0x00005C           IFS2<4>   IEC2<4>   IPC9<2:0>

SI2C2 – I2C2 Slave Event                45      37     0x00005E           IFS2<5>   IEC2<5>   IPC9<6:4>

MI2C2 – I2C2 Master Event               46      38     0x000060           IFS2<6>   IEC2<6>   IPC9<10:8>

Reserved                                47      39     0x000062           —         —                       —

CCP4 – Input Capture/Output Compare  4  48      40     0x000064           IFS2<8>   IEC2<8>   IPC10<2:0>

CCT4 – CCP4 Timer                       49      41     0x000066           IFS2<9>   IEC2<9>   IPC10<6:4>

Reserved                                50      42     0x000068           —         —                       —

CCP5 – Input Capture/Output Compare  5  51      43     0x00006A           IFS2<11>  IEC2<11>  IPC10<14:12>

CCT5 – CCP5 Timer                       52      44     0x00006C           IFS2<12>  IEC2<12>  IPC11<2:0>

DMT – Deadman Timer                     53      45     0x00006E           IFS2<13>  IEC2<13>  IPC11<6:4>

CCP6 – Input Capture/Output Compare  6  54      46     0x000070           IFS2<14>  IEC2<14>  IPC11<10:8>

CCT6 – CCP6 Timer                       55      47     0x000072           IFS2<15>  IEC2<15>  IPC11<14:12>

DS70005319B-page 96                                                        2017-2018 Microchip Technology Inc.
                                               dsPIC33CH128MP508 FAMILY

TABLE 3-23:        MASTER INTERRUPT VECTOR            DETAILS (CONTINUED)

                                       Vector  IRQ                                 Interrupt Bit Location

          Interrupt Source             #       #      IVT Address          Flag    Enable    Priority

QEI1 – QEI Position Counter Compare    56      48     0x000074           IFS3<0>   IEC3<0>   IPC12<2:0>

U1E – UART1 Error                      57      49     0x000076           IFS3<1>   IEC3<1>   IPC12<6:4>

U2E – UART2 Error                      58      50     0x000078           IFS3<2>   IEC3<2>   IPC12<10:8>

CRC – CRC Generator                    59      51     0x00007A           IFS3<3>   IEC3<3>   IPC12<14:12>

C1TX – CAN1 TX Data Request            60      52     0x00007C           IFS3<4>   IEC3<4>   IPC13<2:0>

Reserved                               61-68   53-68  0x00007E-0x00008C    —       —                       —

ICD – In-Circuit Debugger              69      61     0x00008E           IFS3<13>  IEC3<13>  IPC15<6:4>

JTAG – JTAG Programming                70      62     0x000090           IFS3<14>  IEC3<14>  IPC15<10:8>

PTGSTEP – PTG Step                     71      63     0x000092           IFS3<15>  IEC3<15>  IPC15<14:12>

I2C1BC – I2C1 Bus Collision            72      64     0x000094           IFS4<0>   IEC4<0>   IPC16<2:0>

I2C2BC – I2C2 Bus Collision            73      65     0x000096           IFS4<1>   IEC4<1>   IPC16<6:4>

Reserved                               74      66     0x000098             —       —                       —

PWM1 – PWM Generator 1                 75      67     0x00009A           IFS4<3>   IEC4<3>   IPC16<14:12>

PWM2 – PWM Generator 2                 76      68     0x00009C           IFS4<4>   IEC4<4>   IPC17<2:0>

PWM3 – PWM Generator 3                 77      69     0x00009E           IFS4<5>   IEC4<5>   IPC17<6:4>

PWM4 – PWM Generator 4                 78      70     0x0000A0           IFS4<6>   IEC4<6>   IPC17<10:8>

Reserved                               79-82   71-74  0x0000A2             —       —                       —

CND – Change Notice D                  83      75     0x0000AA           IFS4<11>  IEC4<11>  IPC18<14:12>

CNE – Change Notice E                  84      76     0x0000AC           IFS4<12>  IEC4<12>  IPC19<2:0>

CMP1 – Comparator 1                    85      77     0x0000AE           IFS4<13>  IEC4<13>  IPC19<6:4>

Reserved                               86-88   78-80  0x0000B0-0x0000B4    —       —                       —

PTGWDT – PTG Watchdog Timer Time-out   89      81     0x0000B6           IFS5<1>   IEC5<1>   IPC20<6:4>

PTG0 – PTG Trigger 0                   90      82     0x0000B8           IFS5<2>   IEC5<2>   IPC20<10:8>

PTG1 – PTG Trigger 1                   91      83     0x0000BA           IFS5<3>   IEC5<3>   IPC20<14:12>

PTG2 – PTG Trigger 2                   92      84     0x0000BC           IFS5<4>   IEC5<4>   IPC21<2:0>

PTG3 – PTG Trigger 3                   93      85     0x0000BE           IFS5<5>   IEC5<6>   IPC21<6:4>

SENT1 – SENT1 TX/RX                    94      86     0x0000C0           IFS5<6>   IEC5<6>   IPC21<10:8>

SENT1E – SENT1 Error                   95      87     0x0000C2           IFS5<7>   IEC5<7>   IPC21<14:12>

SENT2 – SENT2 TX/RX                    96      88     0x0000C4           IFS5<8>   IEC5<8>   IPC22<2:0>

SENT2E – SENT2 Error                   97      89     0x0000C6           IFS5<9>   IEC5<9>   IPC22<6:4>

ADC – ADC Global Interrupt             98      90     0x0000C8           IFS5<10>  IEC5<10>  IPC22<10:8>

ADCAN0 – ADC AN0 Interrupt             99      91     0x0000CA           IFS5<11>  IEC5<11>  IPC22<14:12>

ADCAN1 – ADC AN1 Interrupt             100     92     0x0000CC           IFS5<12>  IEC5<12>  IPC23<2:0>

ADCAN2 – ADC AN2 Interrupt             101     93     0x0000CE           IFS5<13>  IEC5<13>  IPC23<6:4>

ADCAN3 – ADC AN3 Interrupt             102     94     0x0000D0           IFS5<14>  IEC5<14>  IPC23<10:8>

ADCAN4 – ADC AN4 Interrupt             103     95     0x0000D2           IFS5<15>  IEC5<15>  IPC23<14:12>

ADCAN5 – ADC AN5 Interrupt             104     96     0x0000D4           IFS6<0>   IEC6<0>   IPC24<2:0>

ADCAN6 – ADC AN6 Interrupt             105     97     0x0000D6           IFS6<1>   IEC6<1>   IPC24<6:4>

ADCAN7 – ADC AN7 Interrupt             106     98     0x0000D8           IFS6<2>   IEC6<2>   IPC24<10:8>

ADCAN8 – ADC AN8 Interrupt             107     99     0x0000DA           IFS6<3>   IEC6<3>   IPC24<14:12>

ADCAN9 – ADC AN9 Interrupt             108     100    0x0000DC           IFS6<4>   IEC6<4>   IPC25<2:0>

ADCAN10 – ADC AN10 Interrupt           109     101    0x0000DE           IFS6<5>   IEC6<5>   IPC25<6:4>

ADCAN11 – ADC AN11 Interrupt           110     102    0x0000E0           IFS6<6>   IEC6<6>   IPC25<10:8>

ADCAN12 – ADC AN12 Interrupt           111     103    0x0000E2           IFS6<7>   IEC6<7>   IPC25<14:12>

ADCAN13 – ADC AN13 Interrupt           112     104    0x0000E4           IFS6<8>   IEC6<8>   IPC26<2:0>

ADCAN14 – ADC AN14 Interrupt           113     105    0x0000E6           IFS6<9>   IEC6<9>   IPC26<6:4>

ADCAN15 – ADC AN15 Interrupt           114     106    0x0000E8           IFS6<10>  IEC6<10>  IPC26<10:8>

 2017-2018 Microchip Technology Inc.                                              DS70005319B-page 97
dsPIC33CH128MP508 FAMILY

TABLE 3-23:         MASTER INTERRUPT VECTOR DETAILS (CONTINUED)

                                       Vector   IRQ                                   Interrupt Bit Location

          Interrupt Source             #        #        IVT Address        Flag      Enable    Priority

ADCAN16 – ADC AN16 Interrupt           115      107      0x0000EA           IFS6<11>  IEC6<11>  IPC26<14:12>

ADCAN17 – ADC AN17 Interrupt           116      108      0x0000EC           IFS6<12>  IEC6<12>  IPC27<2:0>

ADCAN18 – ADC AN18 Interrupt           117      109      0x0000EE           IFS6<13>  IEC6<13>  IPC27<6:4>

ADCAN19 – ADC AN19 Interrupt           118      110      0x0000F0           IFS6<14>  IEC6<14>  IPC27<10:8>

ADCAN20 – ADC AN20 Interrupt           119      111      0x0000F2           IFS6<15>  IEC6<15>  IPC27<14:12>

Reserved                               120-122  112-114  0x0000F4-0x0000F8  —         —                       —

ADFLT – ADC Fault                      123      115      0x0000FA           IFS7<3>   IEC7<3>   IPC28<14:12>

ADCMP0 – ADC Digital Comparator 0      124      116      0x0000FC           IFS7<4>   IEC7<4>   IPC29<2:0>

ADCMP1 – ADC Digital Comparator 1      125      117      0x0000FE           IFS7<5>   IEC7<5>   IPC29<6:4>

ADCMP2 – ADC Digital Comparator 2      126      118      0x000100           IFS7<6>   IEC7<6>   IPC29<10:8>

ADCMP3 – ADC Digital Comparator 3      127      119      0x000102           IFS7<7>   IEC7<7>   IPC29<14:12>

ADFLTR0 – ADC Oversample Filter 0      128      120      0x000104           IFS7<8>   IEC7<8>   IPC30<2:0>

ADFLTR1 – ADC Oversample Filter 1      129      121      0x000106           IFS7<9>   IEC7<9>   IPC30<6:4>

ADFLTR2 – ADC Oversample Filter 2      130      122      0x000108           IFS7<10>  IEC7<10>  IPC30<10:8>

ADFLTR3 – ADC Oversample Filter 3      131      123      0x00010A           IFS7<11>  IEC7<11>  IPC30<14:12>

CLC1P – CLC1 Positive Edge             132      124      0x00010C           IFS7<12>  IEC7<12>  IPC31<2:0>

CLC2P – CLC2 Positive Edge             133      125      0x00010E           IFS7<13>  IEC7<13>  IPC31<6:4>

SPI1G – SPI1 Error                     134      126      0x000110           IFS7<14>  IEC7<14>  IPC31<10:8>

SPI2G – SPI2 Error                     135      127      0x000112           IFS7<15>  IEC7<15>  IPC31<14:12>

Reserved                               136      128      0x000114           —         —                       —

MSIS1 – MSI Slave Initiated Interrupt  137      129      0x000116           IFS8<1>   IEC8<1>   IPC32<6:4>

MSIA – MSI Protocol A                  138      130      0x000118           IFS8<2>   IEC8<2>   IPC32<10:8>

MSIB – MSI Protocol B                  139      131      0x00011A           IFS8<3>   IEC8<3>   IPC32<14:12>

MSIC – MSI Protocol C                  140      132      0x00011C           IFS8<4>   IEC8<4>   IPC33<2:0>

MSID – MSI Protocol D                  141      133      0x00011E           IFS8<5>   IEC8<5>   IPC33<6:4>

MSIE – MSI Protocol E                  142      134      0x000120           IFS8<6>   IEC8<6>   IPC33<10:8>

MSIF – MSI Protocol F                  143      135      0x000122           IFS8<7>   IEC8<7>   IPC33<14:12>

MSIG – MSI Protocol G                  144      136      0x000124           IFS8<8>   IEC8<8>   IPC34<2:0>

MSIH – MSI Protocol H                  145      137      0x000126           IFS8<9>   IEC8<9>   IPC34<6:4>

MSIDT – Master Read FIFO Data Ready    146      138      0x000128           IFS8<10>  IEC8<10>  IPC34<10:8>

MSIWFE – Master Write FIFO Empty       147      139      0x00012A           IFS8<11>  IEC8<11>  IPC34<14:12>

MSIFLT – Read or Write FIFO Fault      148      140      0x00012C           IFS8<12>  IEC8<12>  IPC35<2:0>

(Over/Underflow)

S1SRST – MSI Slave Reset               149      141      0x00012E           IFS8<13>  IEC8<13>  IPC35<6:4>

Reserved                               150-153  142-145  0x000130-0x000136  —         —                       —

S1BRK – Slave Break                    154      146      0x000138           IFS9<2>   IEC9<2>   IPC36<10:8>

Reserved                               155-156  147-148  0x00013A-0x00013C  —         —                       —

CCP7 – Input Capture/Output Compare 7  157      149      0x00013E           IFS9<5>   IEC9<5>   IPC37<6:4>

CCT7 – CCP7 Timer                      158      150      0x000140           IFS9<6>   IEC9<6>   IPC37<10:8>

Reserved                               159      151      0x000142           —         —                       —

CCP8 – Input Capture/Output Compare 8  160      152      0x000144           IFS9<8>   IEC9<8>   IPC38<2:0>

CCT8 – CCP8 Timer                      161      153      0x000146           IFS9<9>   IEC9<9>   IPC38<6:4>

Reserved                               162-164  154-156  0x000148-0x00014C  —         —                       —

S1CLKF – Slave Clock Fail              165      157      0x00014E           IFS9<13>  IEC9<13>  IPC39<6:4>

Reserved                               166-175  158-167  0x000150-0x000162  —         —                       —

ADFIFO – ADC FIFO Ready                176      168      0x000164           IFS10<8>  IEC10<8>  IPC42<2:0>

DS70005319B-page 98                                                          2017-2018 Microchip Technology Inc.
                                               dsPIC33CH128MP508 FAMILY

TABLE 3-23:  MASTER         INTERRUPT VECTOR DETAILS (CONTINUED)

                                       Vector   IRQ                                 Interrupt Bit Location

          Interrupt Source             #        #        IVT Address      Flag       Enable      Priority

PEVTA – PWM Event A                    177      169      0x000166         IFS10<9>   IEC10<9>    IPC42<6:4>

PEVTB – PWM Event B                    178      170      0x000168         IFS10<10>  IEC10<10>   IPC42<10:8>

PEVTC – PWM Event C                    179      171      0x00016A         IFS10<11>  IEC10<11>   IPC42<14:12>

PEVTD – PWM Event D                    180      172      0x00016C         IFS10<12>  IEC10<12>   IPC43<2:0>

PEVTE – PWM Event E                    181      173      0x00016E         IFS10<13>  IEC10<13>   IPC43<6:4>

PEVTF – PWM Event F                    182      174      0x000170         IFS10<14>  IEC10<14>   IPC43<10:8>

CLC3P – CLC3 Positive Edge             183      175      0x000172         IFS10<15>  IEC10<15>   IPC43<14:12>

CLC4P – CLC4 Positive Edge             184      176      0x000174         IFS11<0>   IEC11<0     IPC44<2:0>

CLC1N – CLC1 Negative Edge             185      177      0x000176         IFS11<1>   IEC11<1     IPC44<6:4>

CLC2N – CLC2 Negative Edge             186      178      0x000178         IFS11<2>   IEC11<2     IPC44<10:8>

CLC3N – CLC3 Negative Edge             187      179      0x00017A         IFS11<3>   IEC11<3     IPC44<14:>12>

CLC4N – CLC4 Negative Edge             188      180      0x00017C         IFS11<4>   IEC11<4     IPC45<2:0>

Reserved                               189-196  181-188  0x0017E-0x0018C  —          —                      —

U1EVT – UART1 Event                    197      189      0x00018E         IFS11<13>  IF2C11<13>  IPC47<6:4>

U2EVT – UART2 Event                    198      190      0x000190         IFS11<14>  IF2C11<14>  IPC47<12:8>

 2017-2018 Microchip Technology Inc.                                                DS70005319B-page 99
DS70005319B-page 100                   TABLE 3-24:        MASTER INTERRUPT FLAG REGISTERS                                                                                                                                            dsPIC33CH128MP508

                                       Register  Address  Bit 15     Bit14      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

                                       IFS0      800h     INT1IF     NVMIF      ECCSBEIF   U1TXIF     U1RXIF     SPI1TXIF   SPI1RXIF   DMA1IF     CCT1IF     CCP1IF     —          DMA0IF    CNBIF     CNAIF     T1IF      INT0IF

                                       IFS1      802h     C1RXIF     SPI2TXIF   SPI2RXIF   U2TXIF     U2RXIF     INT3IF     C1IF       CCT2IF     CCP2IF     DMA4IF     DMA3IF     INT2IF    CNCIF     DMA2IF    MI2C1IF   SI2C1IF

                                       IFS2      804h     CCT6IF     CCP6IF     DMTIF      CCT5IF     CCP5IF     —          CCT4IF     CCP4IF     —          MI2C2IF    SI2C2IF    CCT3IF    CCP3IF    DMA5IF    —         —

                                       IFS3      806h     PTGSTEPIF  JTAGIF     ICDIF      —          —          —          —          —          —          —          —          C1TXIF    CRCIF     U2EIF     U1EIF     QEI1IF

                                       IFS4      808h     —          —          CMP1IF     CNEIF      CNDIF      —          —          —          —          PWM4IF     PWM3IF     PWM2IF    PWM1IF    —         I2C2BCIF  I2C1BCIF

                                       IFS5      80Ah     ADCAN4IF   ADCAN3IF   ADCAN2IF   ADCAN1IF   ADCAN0IF   ADCIF      SENT2EIF   SENT2IF    SENT1EIF   SENT1IF    PTG3IF     PTG2IF    PTG1IF    PTG0IF    PTGWDTIF  —

                                       IFS6      80Ch     ADCAN20IF  ADCAN19IF  ADCAN18IF  ADCAN17IF  ADCAN16IF  ADCAN15IF  ADCAN14IF  ADCAN13IF  ADCAN12IF  ADCAN11IF  ADCAN10IF  ADCAN9IF  ADCAN8IF  ADCAN7IF  ADCAN6IF  ADCAN5IF

                                       IFS7      80Eh     SPI2GIF    SPI1GIF    CLC2PIF    CLC1PIF    ADFLTR3IF  ADFLTR2IF  ADFLTR1IF  ADFLTR0IF  ADCMP3IF   ADCMP2IF   ADCMP1IF   ADCMP0IF  ADFLTIF   —         —         —

                                       IFS8      810h     —          —          S1SRSTIF   MSIFLTIF   MSIWFEIF   MSIDTIF    MSIHIF     MSIGIF     MSIFIF     MSIEIF     MSIDIF     MSICIF    MSIBIF    MSIAIF    MSIS1IF   —

                                       IFS9      812h     —          —          S1CLKFIF   —          —          —          CCT8IF     CCP8IF     —          CCT7IF     CCP7IF     —         —         S1BRKIF   —         —

                                       IFS10     814h     CLC3PIF    PEVTFIF    PEVTEIF    PEVTDIF    PEVTCIF    PEVTBIF    PEVTAIF    ADFIFOIF   —          —          —          —         —         —         —         —

                                       IFS11     816h     —          U2EVTIF    U1EVTIF    —          —          —          —          —          —          —          —          CLC4NIF   CLC3NIF   CLC2NPIF  CLC1NIF   CLC4PIF

                                       Legend:   — = Unimplemented.

                                       TABLE 3-25:        MASTER INTERRUPT ENABLE REGISTERS                                                                                                                                          FAMILY

                                       Register  Address  Bit 15     Bit14      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

                                       IEC0      820h     INT1IE     NVMIE      ECCSBEIE   U1TXIE     U1RXIE     SPI1TXIE   SPI1RXIE   DMA1IE     CCT1IE     CCP1IE     —          DMA0IE    CNBIE     CNAIE     T1IE      INT0IE

                                       IEC1      822h     C1RXIE     SPI2TXIE   SPI2RXIE   U2TXIE     U2RXIE     INT3IE     C1IE       CCT2IE     CCP2IE     DMA4IE     DMA3IE     INT2IE    CNCIE     DMA2IE    MI2C1IE   SI2C1IE

                                       IEC2      824h     CCT6IE     CCP6IE     DMTIE      CCT5IE     CCP5IE     —          CCT4IE     CCP4IE     —          MI2C2IE    SI2C2IE    CCT3IE    CCP3IE    DMA5IE    —         —

                                       IEC3      826h     PTGSTEPIE  JTAGIE     ICDIE      —          —          —          —          —          —          —          —          C1TXIE    CRCIE     U2EIE     U1EIE     QEI1IE

                                       IEC4      828h     —          —          CMP1IE     CNEIE      CNDIE      —          —          —          —          PWM4IE     PWM3IE     PWM2IE    PWM1IE    —         I2C2BCIE  I2C1BCIE

                                       IEC5      82Ah     ADCAN4IE   ADCAN3IE   ADCAN2IE   ADCAN1IE   ADCAN0IE   ADCIE      SENT2EIE   SENT2IE    SENT1EIE   SENT1IE    PTG3IE     PTG2IE    PTG1IE    PTG0IE    PTGWDTIE  —

 2017-2018 Microchip Technology Inc.  IEC6      82Ch     ADCAN20IE  ADCAN19IE  ADCAN18IE  ADCAN17IE  ADCAN16IE  ADCAN15IE  ADCAN14IE  ADCAN13IE  ADCAN12IE  ADCAN11IE  ADCAN10IE  ADCAN9IE  ADCAN8IE  ADCAN7IE  ADCAN6IE  ADCAN5IE

                                       IEC7      82Eh     SPI2GIE    SPI1GIE    CLC2PIE    CLC1PIE    ADFLTR3IE  ADFLTR2IE  ADFLTR1IE  ADFLTR0IE  ADCMP3IE   ADCMP2IE   ADCMP1IE   ADCMP0IE  ADFLTIE   —         —         —

                                       IEC8      830h     —          —          S1SRSTIE   MSIFLTIE   MSIWFEIE   MSIDTIE    MSIHIE     MSIGIE     MSIFIE     MSIEIE     MSIDIE     MSICIE    MSIBIE    MSIAIE    MSIS1IE   —

                                       IEC9      832h     —          —          S1CLKFIE   —          —          —          CCT8IE     CCP8IE     —          CCT7IE     CCP7IE     —         —         S1BRKIE   —         —

                                       IEC10     834h     CLC3PIE    PEVTFIE    PEVTEIE    PEVTDIE    PEVTCIE    PEVTBIE    PEVTAIE    ADFIFOIE   —          —          —          —         —         —         —         —

                                       IEC11     836h     —          U2EVTIE    U1EVTIE    —          —          —          —          —          —          —          —          CLC4NIE   CLC3NIE   CLC2NIE   CLC1NIE   CLC4PIE

                                       Legend:   — = Unimplemented.
 2017-2018 Microchip Technology Inc.  TABLE 3-26:        MASTER INTERRUPT PRIORITY REGISTERS

                                       Register  Address  Bit 15     Bit14    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

                                       IPC0      840h     —       CNBIP2      CNBIP1      CNBIP0      —       CNAIP2      CNAIP1      CNAIP0      —      T1IP2       T1IP1       T1IP0       —      INT0IP2     INT0IP1     INT0IP0

                                       IPC1      842h     —       CCT1IP2     CCT1IP1     CCT1IP0     —       CCP1IP2     CCP1IP1     CCP1IP0     —      —           —           —           —      DMA0IP2     DMA0IP1     DMA0IP0

                                       IPC2      844h     —       U1RXIP2     U1RXIP1     U1RXIP0     —       SPI1TXIP2   SPI1TXIP1   SPI1TXIP0   —      SPI1RXIP2   SPI1RXIP1   SPI1RXIP0   —      DMA1IP2     DMA1IP1     DMA1IP0

                                       IPC3      846h     —       INT1IP2     INT1IP1     INT1IP0     —       NVMIP2      NVMIP1      NVMIP0      —      ECCSBEIP2   ECCSBEIP1   ECCSBEIP0   —      U1TXIP2     U1TXIP1     U1TXIP0

                                       IPC4      848h     —       CNCIP2      CNCIP1      CNCIP0      —       DMA2IP2     DMA2IP1     DMA2IP0     —      MI2C1IP2    MI2C1IP1    MI2C1IP0    —      SI2C1IP2    SI2C1IP1    SI2C1IP0

                                       IPC5      84Ah     —       CCP2IP2     CCP2IP1     CCP2IP0     —       DMA4IP2     DMA4IP1     DMA4IP0     —      DMA3IP2     DMA3IP1     DMA3IP20    —      INT2IP2     INT2IP1     INT2IP0

                                       IPC6      84Ch     —       U2RXIP2     U2RXIP1     U2RXIP0     —       INT3IP2     INT3IP1     INT3IP0     —      CAN1IP2     CAN1IP1     CAN1IP0     —      CCT2IP2     CCT2IP1     CCT2IP0

                                       IPC7      84Eh     —       C1RXIP2     C1RXIP1     C1RXIP0     —       SPI2TXIP2   SPI2TXIP1   SPI2TXIP0   —      SPI2RXIP2   SPI2RXIP1   SPI2RXIP0   —      U2TXIP2     U2TXIP1     U2TXIP0

                                       IPC8      850h     —       CCP3IP2     CCP3IP1     CCP3IP0     —       DMA5IP2     DMA5IP1     DMA5IP0     —      —           —           —           —      —           —           —

                                       IPC9      852h     —          —        —           —           —       MI2C2IP2    MI2C2IP1    MI2C2IP0    —      SI2C2IP2    SI2C2IP1    SI2C2IP0    —      CCT3IP2     CCT3IP1     CCT3IP0

                                       IPC10     854h     —       CCP5IP2     CCP5IP1     CCP5IP0     —       —           —           —           —      CCT4IP2     CCT4IP1     CCT4IP0     —      CCP4IP2     CCP4IP1     CCP4IP0

                                       IPC11     856h     —       CCT6IP2     CCT6IP1     CCT6IP0     —       CCP6IP2     CCP6IP1     CCP6IP0     —      DMTIP2      DMTIP1      DMTIP0      —      CCT5IP2     CCT5IP1     CCT5IP0

                                       IPC12     858h     —       CRCIP2      CRCIP1      CRCIP0      —       U2EIP2      U2EIP1      U2EIP0      —      U1EIP2      U1EIP1      U1EIP0      —      QEI1IP2     QEI1IP1     QEI1IP0     dsPIC33CH128MP508 FAMILY

                                       IPC13     85Ah     —          —        —           —           —       —           —           —           —      —           —           —           —      C1TXIP2     C1TXIP1     C1TXIP0

                                       IPC14     85Ch     —          —        —           —           —       —           —           —           —      —           —           —           —

                                       IPC15     85Eh     —       PTGSTEPIP2  PTGSTEPIP1  PTGSTEPIP0  —       JTAGIP2     JTAGIP1     JTAGIP0     —      ICDIP2      ICDIP1      ICDIP0      —      —           —           —

                                       IPC16     860h     —       PWM1IP2     PWM1IP1     PWM1IP0     —       —           —           —           —      I2C2BCIP2   I2C2BCIP1   I2C2BCIP0   —      I2C1BCIP2   I2C1BCIP1   I2C1BCIP0

                                       IPC17     862h     —          —