dsPIC33FJ(06/16)GSXXX to dsPIC33EPXXGS50X Migration and Performance Enhancement Guide INTRODUCTION Note: The “dsPIC33FJ(06/16)GSXXX to dsPIC33EPXXGS50X Migration and Performance Enhancement Guide” provides an overview of considerations for migrating from the dsPIC33F “GS” devices to the dsPIC33E “GS” devices. Device data sheets and errata are available for download from the Microchip Worldwide Web site at: http://www.microchip.com. Note: This migration document details the transition to the dsPIC33EPXXGS50X devices but can also be used for migrating to the dsPIC33EPXXGS202 devices. Just note that some features may not be available. Refer to device-specific data sheet for more details. The code developed for the dsPIC33F “GS” devices can be ported to the dsPIC33E “GS” devices after making the appropriate changes, as described in this document. The dsPIC33E devices are based on a new architecture, and feature many improvements and new capabilities over dsPIC33F “GS” devices, such as: • The maximum operating frequency has increased from 40 MIPS to 60 MIPS @ +125ºC and 50 MIPS to 70 MIPS @ +85ºC • Dual Partition Flash programming supports live updates • On certain devices, the Flash has increased from 16 Kbytes on dsPIC33F “GS” devices to 64 Kbytes on dsPIC33E “GS” devices • On certain devices, the RAM has increased from 2 Kbytes on dsPIC33F “GS” devices to 8 Kbytes on dsPIC33E “GS” devices • Two sets of alternate Working registers to reduce context switching and improve throughput of control loops • New Programmable Gain Amplifiers (PGA) • New 12-bit Analog-to-Digital Converter (ADC) • New 12-bit Digital-to-Analog Converter (DAC) • Increased number of virtual pins from four to six • An enhanced I2C™ module for supporting PMBus™ communication • Improved FRC accuracy • New security features for Dual Partition Operating modes • Increased number of Pulse-Width Modulation (PWM) generators from four to five • Number of input capture and output compare modules increased from two on dsPIC33F “GS” devices to four on dsPIC33E “GS” devices • Replaced fuse-based configuration with the Flash-based device configuration • Number of Serial Peripheral Interfaces (SPIs), Universal Asynchronous Receiver Transmitters (UARTs) and I2C modules increased from one to two • Number of timers increased from three to five • Additional 10 A current source has been added 2015 Microchip Technology Inc. MIGRATION OVERVIEW This migration and performance enhancement guide discusses several enhancements, changes and application migration considerations related to the dsPIC33E “GS” devices. The following are the key migration considerations: • Operates up to 70 MIPS. The migration to less than 40 MIPS will affect the peripheral clocks and operational characteristics. • Minor pinout differences and new packages. • Minor instruction set enhancements. • Instruction pipeline differences, resulting in changes to application execution cycle counts. • New Program Space Visibility (PSV) access method. • Increased Special Function Register (SFR) space. • Increased Flash program memory size and changes to Flash access latency. • Increased Run-Time Self-Programming (RTSP) page and row sizes with changes in methodology, and changes in erase/programming times. • Changes to the Interrupt Vector Table (IVT) and Alternate Interrupt Vector Table (AIVT). • Interrupt register changes. • I/O port analog/digital selection and Change Notification Control register changes. • Device Configuration register updates. • New peripherals: - PGA - 10 A current source • Included enhanced peripherals: - I2C - Analog comparator - ADC - Input capture/output compare - SPI • More instantiations of individual peripherals. DS00001771A-page 1 Operating Range INSTRUCTION SET The operating frequency of dsPIC33E devices is up to 70 MIPS. The VCAP voltage in dsPIC33E devices is 1.8V, which is provided by an internal voltage regulator. Any read operations (including bit operations, such as BSET/BCLR/BTG) on peripheral SFRs require two instruction cycles in dsPIC33E devices instead of one instruction cycle. Packaging Migration Considerations Program flow change instructions, such as branches and subroutine calls, take four instruction cycles in dsPIC33E devices instead of two instruction cycles. The 28-pin and 44-pin variants are peripheral pin compatible with the 28-pin and 44-pin variants of the dsPIC33FJ06/16GSXXX devices. The following additional features added to the dsPIC33FJ06/16GSXXX devices may impact the code migration: • Additional ADC ANx inputs have been added which may require a clearing of the appropriate ANSELx bit to use the I/O pin as a digital I/O • The RPn pin numbering is different • The virtual RPn pins are now numbered as RP176-RP181 • Certain device pins are no longer 5V tolerant due to analog inputs • Additional I2C communication is multiplexed on certain device pins Note: The 64-pin variants are not peripheral pin compatible with the 64-pin dsPIC33FJ32/ 64GSXXX devices. CPU Architecture and Instruction Set This section includes the following topics: The RETURN, RETFIE, and RETLW instructions require up to six instruction cycles in dsPIC33E devices instead of three instruction cycles. Besides signed and unsigned multiplications, DSP multiplier-based instructions in dsPIC33E devices support mixed-sign multiplication operations. MCU multiplication (MUL) instructions in dsPIC33E devices include an option to write the 32-bit multiplication result into Accumulator A or B instead of writing the result to a pair of W registers. The instruction encoding of the Compare/Skip instructions, such as, CPSEQ, CPSNE, CPSGT and CPSLT, as well as the RCALL Wn and GOTO Wn instructions, has changed in the dsPIC33E devices. The size of the literal value specifying the loop count in DO and REPEAT instructions has been increased from 14 bits to 15 bits. The size of the variable (W register) value specifying the loop count in DO and REPEAT instructions has been increased from 14 bits to 16 bits in dsPIC33E devices. • dsPIC33E Feature Enhancements • Instruction Set • Registers The size of the literal value specifying the comparison reference value in the CP and CPB instructions has been increased from 5 bits to 8 bits in dsPIC33E devices. dsPIC33E FEATURE ENHANCEMENTS The number of DO loop nesting levels for which the CPU automatically manages register context save/ restore has been increased from one to three in dsPIC33E devices. The dsPIC33E architecture supports a faster maximum CPU execution speed of 70 MIPS. The instruction execution pipeline in dsPIC33E devices differs from the dsPIC33F devices due to a three-cycle Flash program memory access time. While migrating from a dsPIC33F user application to the dsPIC33E user application, the program execution times and cycle counts will change. For more information, refer to the instruction flow timing diagrams, that illustrate different instruction flow types, in “Section 8.0 Instruction Flow Types” in the “dsPIC33E Enhanced CPU” (DS70005158) chapter of the “dsPIC33/PIC24 Family Reference Manual”. The Program Space Visibility Page Address (PSVPAG) register has been replaced by a pair of registers (Data Space Read Page register, DSRPAG, or Data Space Write Page register, DSWPAG), which enables unified support for the new Extended Data Space (EDS) feature as well as for the existing PSV access functionality. DS00001771A-page 2 The 8-level DO loop shadow methodology in the dsPIC33F architecture has been replaced with a 4-level DO loop hardware stack in the dsPIC33E devices. Migrating an application from the dsPIC33F device family requires changes to the user software if more than four DO Loops are being used concurrently with the software. On dsPIC33E devices, the first instruction in a DO loop cannot be a PSV read or Table Read operation. To support fast literal value and register writes to the TBLPAG, DSRPAG and DSWPAG registers, the dsPIC33E architecture supports a new base instruction named MOVPAG. A base instruction, known as MULW, has been added to the dsPIC33E devices. This instruction performs a 16x16 multiplication and it generates a 16-bit result. 2015 Microchip Technology Inc. The new CALL.L instruction allows indirect subroutine calls with 24-bit offsets. New Conditional Compare/Branch instructions, such as CPBEQ, CPBNE, CPBGT and BPBLT, have been added for dsPIC33E devices. The TBLRDL/TBLRDH instructions require five instruction cycles in the dsPIC33E devices. A Context Swap instruction, CTXTSWP, has been added for manually switching between the alternate Working registers. A Boot Swap instruction, BOOTSWP, has been added for devices that feature dual Flash partitions. This instruction will swap the active and inactive Flash partitions without the need for a device Reset. This instruction must be followed by a CALL instruction. Note: For more details on the instruction set, refer to the “16-bit MCU and DSC Programmer’s Reference Manual” (DS70157). REGISTERS The PSV bit (CORCON<2>) has been replaced by the new Stack Frame Active (SFA) bit in the dsPIC33E devices. The SFA status bit, when set, indicates that a stack frame is active, and W14 and W15 will not use EDS. The US bit (CORCON<12>) has been expanded with the dsPIC33E devices to the US<1:0> bits (CORCON<13:12>). When US1 is clear, the US0 bit selections are backward-compatible. Setting the US<1:0> bits to a value of ‘10’ enables the new DSP Mixed-Sign Multiplication mode. A new bit, VAR (CORCON<15>), has been added in the dsPIC33E devices. The VAR bit determines if interrupt processing will use a fixed latency or a variable latency. The SA bit (SR<13>), SB bit (SR<12>) and SAB bit (SR<10>) need not be cleared manually in software in the dsPIC33E devices. Any subsequent instruction that affects these Status bits, that did not cause a corresponding accumulator saturation condition, will clear the bits. In addition, these bits can now be set in software, enabling efficient context state switching. The DOSTARTH and DOSTARTL registers are read-only in dsPIC33E devices. 2015 Microchip Technology Inc. DS00001771A-page 3 Flash Program Memory This section includes the following topics: • • • • • dsPIC33E Feature Enhancements Memory Size and Organization Registers Electrical Characteristics Run-Time Self-Programming dsPIC33E FEATURE ENHANCEMENTS The Flash program memory module on the dsPIC33E devices has several enhancements and new features. This section details the high-level improvements: The dsPIC33E devices differ from the dsPIC33F devices in the program memory organization, the time required to access the program memory and the mechanism for accessing constants located in program memory using PSV. The PSV mechanism to access constants stored in program memory is different in dsPIC33E devices. The PSV mechanism access utilizes the new DSRPAG register instead of the PSVPAG register for generating the read address. The PSV bit and the PSVPAG register have been removed in the dsPIC33E devices. On dsPIC33E devices, the PSV mechanism can be used to access all three bytes of a program memory word, unlike dsPIC33F devices, where the PSV can only access the lower 16 bits of a program memory word. The PSV accesses require five instruction cycles instead of two instruction cycles. For devices operating in Dual Partition Flash mode, the code execution from the active Flash partition does not stall when performing RTSP operations on the inactive Flash partition. DS00001771A-page 4 For more information on the Flash Program Memory, refer to the “dsPIC33/PIC24 Family Reference Manual”, “Dual Partition Flash Program Memory” (DS70005156). MEMORY SIZE AND ORGANIZATION The dsPIC33E devices contain up to 64 Kbytes of Flash program memory, whereas the dsPIC33F devices have up to 16 Kbytes of Flash memory. The IVT and the AIVT in the dsPIC33E devices are twice as large as the IVT and AIVT in the dsPIC33F devices. REGISTERS The dsPIC33E devices have a new NVMSIDL bit (NVMCON<12>), which can be used to discontinue the primary Flash program memory operation when the device is in Idle mode. The ERASE bit (NVMCON<6> in dsPIC33F) has been deleted in dsPIC33E devices. ELECTRICAL CHARACTERISTICS The Flash program memory erase and programming times in the dsPIC33E devices are different from the dsPIC33F devices. For Program Memory specifications, refer to the “Electrical Characteristics” chapter in the specific device data sheet. RUN-TIME SELF-PROGRAMMING The Run-Time Self-Programming (RTSP) changes between the dsPIC33F and the dsPIC33E devices are listed in Table 1. 2015 Microchip Technology Inc. TABLE 1: RTSP CHANGES BETWEEN dsPIC33F AND dsPIC33E DEVICES Parameter dsPIC33FJ06/16GSXXX dsPIC33EPXXGS50X Smallest program memory word program size One word – 1 instruction or 3 bytes An even-odd pair of words – 2 instructions or 6 bytes NVMOP<3:0> bit (NVMCON<3:0>) settings If ERASE = 1: 1111 = Memory bulk erase operation 1101 = Erase General Segment 0011 = No operation 0010 = Memory page erase operation 0001 = No operation 0000 = Erase a single Configuration register byte If ERASE = 0: 1111 = No operation 1101 = No operation 0011 = Memory word program operation 0010 = No operation 0001 = Memory row program operation 0000 = Program a single Configuration register byte 1111 = Reserved • • • 0101 = Reserved 0100 = Inactive partition memory erase operation 0011 = Memory page erase operation 0010 = Memory row program operation 0001 = Memory double-word program operation 0000 = Reserved Location of program memory latches for RTSP Same addresses as the program memory locations to be programmed Dedicated write latches located at addresses, 0xFA0000 and 0xFA0002, in configuration memory space Method of specifying the The destination address of the most program memory row/word recent Table Write instruction defines the or Configuration register to row or word to be written be written by RTSP operation 2015 Microchip Technology Inc. The NVMADR/NVMADRU registers specify the location to program in program Flash and the NVMSRCADR register specifies the RAM address of the data to be programmed into Flash for row programming DS00001771A-page 5 Interrupt Controller REGISTERS This section includes the following topics: The Interrupt Flag Status registers (IFSx), Interrupt Enable Control registers (IECx) and Interrupt Priority Control registers (IPCx) have been changed relative to the dsPIC33F devices. The locations of the interrupt flag status bits, interrupt enable control bits and interrupt priority control bits are moved across the IFSx, IECx and IPCx registers. For more information on the specifics of these bit locations, refer to the “Interrupt Controller” chapter in the specific device data sheet. • dsPIC33E Feature Enhancements • Memory Size and Organization • Registers dsPIC33E FEATURE ENHANCEMENTS The interrupt controller module on the dsPIC33E devices has several enhancements and new features. This section details the high-level improvements. Two new traps have been added in the interrupt controller, such as a generic hard trap at address, 0x000008, and a generic soft trap at address, 0x000010. Both the generic hard trap and soft trap can be triggered manually by user software, which provides software traps for debugging or task switching purposes. A new NVM write complete interrupt vector has been inserted at address, 0x000032, which was a reserved vector in the dsPIC33F devices. Several new interrupt vectors have been added in the previously reserved locations, as well as at addresses beyond 0x0000FC, reflecting the new peripheral instances and features present in dsPIC33E “GS” devices. The AIVT is only available when the Boot Segment (BS) has been defined and the AIVT has been enabled. To enable the AIVT, the Configuration bit, AIVTDIS in the FSEC register, must be programmed and the AIVTEN bit must be set (INTCON2<8> = 1). The AIVT begins at the start of the last page of the Boot Segment, defined by the BSLIM<12:0> bits. The second half of the page is no longer usable space. The Boot Segment must be at least two pages to enable the AIVT. MEMORY SIZE AND ORGANIZATION The IVT and AIVT in the dsPIC33E devices is twice as large as the IVT and AIVT in the dsPIC33F devices. The AIVT address location is defined by the BSLIM<12:0> bits and it requires a Boot Segment to be enabled. As a result of the insertion of new traps, the addresses of the stack error trap and math error trap vectors have changed to 0x00000A and 0x00000C, respectively. DS00001771A-page 6 The ADC module on the dsPIC33E devices converts individual ANx channels as compared to the dsPIC33F pair conversion. As a result, the ADC Pair Interrupt bits, ADCPxIF, ADCPxIE and ADCPxIP, are now relabeled as ADCANxIF, ADCANxIE and ADCANxIP. A new bit, VAR (CORCON<15>), has been added in dsPIC33E devices. This bit determines if interrupt processing will use a fixed latency (13 instruction cycles) or variable latency (9 to 13 instruction cycles). Note: For more information on interrupt processing, refer to “Section 3.0 Interrupt Processing Timing” in the “Interrupts” (DS70000600) chapter of the “dsPIC33/ PIC24 Family Reference Manual”. The ALTIVT bit (INTCON2<15>) has been replaced by the new Global Interrupt Enable bit (GIE), which allows the user to enable/disable all interrupts without having to explicitly raise the CPU interrupt priority in real time. A new Software Trap Enable (INTCON2<13>) has been added. (SWTRAP) bit The register, INTCON3, which contains the NVM Address Error Soft Trap (NAE), Auxiliary PLL Loss of Lock Soft Trap (APLL) and DO Stack Overflow Soft Trap (DOOVR) status bits, has been added. The register, INTCON4, which contains the Software Generated Hard Trap (SGHT) status bit, has also been added. Note: When migrating dsPIC33F software to dsPIC33E devices, ensure that your application software is using the correct device-specific linker scripts and compiler/ assembler include files. 2015 Microchip Technology Inc. I/O Ports ELECTRICAL CHARACTERISTICS This section includes the following topics: Due to the additional ADC inputs, some of the I/O pins that are 5V tolerant on the dsPIC33F devices are not 5V tolerant on the corresponding dsPIC33E devices: • • • • dsPIC33E Feature Enhancements Registers Electrical Characteristics Pinouts dsPIC33E FEATURE ENHANCEMENTS The Input/Output (I/O) module on the dsPIC33E devices has several enhancements and new features. The I/O pins in dsPIC33E devices have a Change Notification (CN) function and internal weak pull-down resistors associated with every available I/O port pin. REGISTERS The CNEN1, CNEN2, CNPU1 and CNPU2 registers have been replaced by the registers, CNENA through CNEND, CNPUA through CNPUD and CNPDA through CNPDD, to correspond with the actual port nomenclature, PORTA through PORTD. The ADPCFG register, which was used for the ANx pins, does not exist in the dsPIC33E devices. This functionality is now performed by the ANSELA through ANSELD registers, which are part of the corresponding I/O port. Several new input sources have been added to the selectable input sources for the Peripheral Pin Select (PPS) module. These include additional communication inputs, SPI and UART, and additional input capture inputs. The PWM Faults and synchronization source mapping have changed. The bit fields are extended to 8 bits to include all possible RPn pins. The output selection sources for remappable pins have changed due to the added communication, like SPI and UART, and additional output compare modules and additional PWM module. The value of the RPORx<5:0> bit field (definition) corresponding to the peripheral has changed for all functions. For more Information, refer to the specific device data sheet. 2015 Microchip Technology Inc. • 28-Pin SOIC devices: Pin 17 and Pin 18 are not 5V tolerant • 28-Pin QFN devices: Pin 14 and Pin 15 are not 5V tolerant • 44-Pin TQFP/QFN devices: Pin 1 through Pin 4 and Pin 44 are not 5V tolerant In addition, there may be changes in the VIH, VIL, VOH and VOL specifications, and other electrical characteristics of the I/O pins. Refer to the “Electrical Characteristics” chapter of the specific device data sheet for I/O pin input/output specifications. When migrating from a dsPIC33F device to a dsPIC33E device, ensure that all the supporting circuitry is compatible with the source/sink capability of the dsPIC33E device. PINOUTS The numbering of the Peripheral Pin Select (PPS) pins (RPn) has changed on the dsPIC33E devices. The Peripheral Pin Select pins are numbered from RP34 to RP63, with the virtual pins at RP176 through RP181. When migrating from the 44-pin dsPIC33F devices, the following device pins have added functionality: • Added Analog (ANx) inputs on Pins 1-4, 19, 20, 34, 43 and 44 • Added dedicated Fault inputs on Pins 14 and 15 • Added alternate I2C™ input on Pins 37 and 38 • Added second I2C input on Pins 41 and 42 When migrating from the 28-pin dsPIC33F devices, the following device pins have added functionality: • Added Analog (ANx) inputs on Pin 8 and Pins 13-15 • Added second I2C input on Pins 11 and 12 DS00001771A-page 7 Oscillator Configuration Reset This section includes the following topics: This section includes the following topics: • dsPIC33E Feature Enhancements • Electrical Characteristics • Registers • Electrical Characteristics dsPIC33E FEATURE ENHANCEMENTS REGISTERS The oscillator configuration module on the dsPIC33E devices has several enhancements and new features. A new VREGSF bit (RCON<13>) has been added in dsPIC33E devices. This bit, when set, enables the user application to power down the Flash program memory when the device is in Sleep mode. The internal Fast RC (FRC) oscillator accuracy has improved to ±0.9% from ±2% for industrial temperature devices and improved to ±2% from ±5% for extended temperature devices. The FRC oscillator tuning deviation has changed to ±1.45% from ±11.625%. ELECTRICAL CHARACTERISTICS The primary PLL FVCO output range has changed from 100 MHz-200 MHz to 120 MHz-340 MHz. The maximum system clock frequency (FOSC) permitted has changed from 80 MHz to 140 MHz, reflecting the 70 MIPS capability of the dsPIC33E device family. For more examples on setting up the Oscillator and PLL Control registers for the desired functioning oscillator, refer to the “Oscillator Configuration” chapter in the specific device data sheet. Several SFR Reset values are changed relative to the dsPIC33F devices, mainly as a result of the SFR bit changes. To determine the exact default value of each SFR used by the application, refer to the specific device data sheet. While porting application software from dsPIC33F devices, it is highly recommended to explicitly initialize every relevant SFR instead of assuming the default states. ELECTRICAL CHARACTERISTICS The Brown-out Reset (BOR) voltage limits have changed relative to dsPIC33F devices. For more information, refer to the “Electrical Characteristics” chapter in the specific device data sheet. Power-Saving Modes REGISTERS In dsPIC33E devices, the DOZE<2:0> bits can only be written to when the DOZEN bit (CLKDIV<11>) is clear. If DOZEN = 1, any writes to DOZE<2:0> are ignored. Also, the DOZEN bit cannot be set if DOZE<2:0> = 000. If DOZE<2:0> = 000, any attempt by the user software to set the DOZEN bit is ignored. Additional PMDx bits have been added, reflecting the enhanced peripheral set in the dsPIC33E devices. For more information on the SFR, refer to the specific device data sheet. DS00001771A-page 8 2015 Microchip Technology Inc. Input Capture This section includes the following topics: • dsPIC33E Feature Enhancements • Registers dsPIC33E FEATURE ENHANCEMENTS The input capture module on the dsPIC33E devices has several enhancements and new features. The dsPIC33E devices contain up to four input capture channels, unlike the maximum of two input capture channels provided by the dsPIC33F devices. Timer1 through Timer5 are used as the time base for any input capture channel. Alternatively, the system clock can be the time base for any input capture channel. The dsPIC33E devices support Cascaded mode, where an even/odd pair of Input Capture timers can be used in a concatenated 32-bit configuration. The dsPIC33E devices support Triggered mode, where any Input Capture channel can be held in its Reset state until it receives a trigger signal from any of the following peripheral modules: • • • • Timer1 through Timer5 Comparator 1 through Comparator 4 Input Capture Channels 1 to 4 Output Compare Channels 1 to 4 The dsPIC33E devices support Synchronized mode, where any Input Capture Channel can be reset when it receives a synchronizing signal from any of the following peripheral modules: • • • • Timer1 through Timer5 Comparator 1 through Comparator 4 Input Capture Channels 1 to 4 Output Compare Channels 1 to 4 REGISTERS Table 2 summarizes the dsPIC33E device-specific differences for the Input Capture registers. TABLE 2: SFR DIFFERENCES FOR dsPIC33E INPUT CAPTURE MODULE SFR Differences from dsPIC33F ICxCON1 The ICxCON register in dsPIC33F devices is renamed as ICxCON1 in dsPIC33E devices. The following bits are changed: • The ICTMR bit (ICxCON<7>) is relocated and renamed as the ICTSEL<2:0> bits (ICxCON1<12:10>) • The ICTSEL<2:0> bit selections are changed to include Timer1 through Timer5, and the system clock (TCY), as possible input capture time bases ICxCON2 The ICxCON2 register in the dsPIC33E devices contains the IC32, ICTRIG, TRIGSTAT and SYNCSEL<4:0> bits to enable and configure the new Trigger, Synchronization and Cascaded modes. Data Sheet Chapter “Input Capture” This register must be explicitly initialized, even if these new features are not being used. 2015 Microchip Technology Inc. DS00001771A-page 9 Output Compare This section includes the following topics: • dsPIC33E Feature Enhancements • Registers dsPIC33E FEATURE ENHANCEMENTS The output compare module on the dsPIC33E devices has several enhancements and new features. This section details the high-level improvements. The dsPIC33E devices contain up to four output compare channels, whereas the dsPIC33F devices have a maximum of two output compare channels. Timer1 through Timer5 can be used as the time base for any output compare channel. The system clock can also be the time base for any output compare channel. The dsPIC33E devices support Cascaded mode, where an even/odd pair of output compare timers can be used in a concatenated 32-bit configuration. The dsPIC33E devices support Triggered mode, where any output compare channel can be held in its Reset state until it receives a trigger signal from any of the following peripheral modules: • • • • The dsPIC33E devices support Synchronized mode, where any output compare channel can be reset when it receives a synchronizing signal from any of the following peripheral modules: • • • • Timer1 through Timer5 Comparator 1 through Comparator 4 Input Capture Channels 1 through 4 Output Compare Channels 1 through 4 Optional polarity inversion or tri-stating of each output compare pin is supported in the dsPIC33E devices. The dsPIC33E devices have the following additional functionalities for the Output Compare Fault pin, OCFA: • Cycle-by-Cycle and Latched Fault modes • Configurable output compare pin state on a Fault event • Optional tri-stating of PWM output on a Fault event REGISTERS Table 3 summarizes the dsPIC33E device-specific changes made to the Output Compare registers. Timer1 through Timer5 Comparator 1 through Comparator 4 Input Capture Channels 1 through 4 Output Compare Channels 1 through 4 TABLE 3: SFR DIFFERENCES FOR dsPIC33E OUTPUT COMPARE MODULE SFR Differences from dsPIC33F Data Sheet Chapter OCxCON1 The OCxCON register in dsPIC33F devices has been renamed as OCxCON1 in the “Output Compare” dsPIC33E devices and the following bits are changed: • The OCTSEL bit (OCxCON<3>) from the dsPIC33F devices has been relocated and expanded to the OCTSEL<2:0> bits (OCxCON1<12:10>) • The OCTSEL<2:0> bit selections have changed to include Timer1 through Timer5, and the system clock, as possible output compare time bases • The OCFLT bit (OCxCON<4>) from the dsPIC33F devices has been removed • New ENFLTA control bit (OCxCON1<7>) to enable individual Faults • New OCFLTA status bit (OCxCON1<4>) to indicate individual Fault conditions • New Trigger Status Mode Select (TRIGMODE) bit (OCxCON1<3>) • The mode selections for OCM<2:0>(OCxCON<2:0>) = 110 and 111 have changed in the dsPIC33E devices OCxCON2 The OCxCON2 register in the dsPIC33E devices contains the FLTMD, FLTOUT, FLTTRIEN, OCINV, OC32, OCTRIG, TRIGSTAT, OCTRIS and SYNCSEL<4:0> bits to enable and configure the new trigger, synchronization and cascaded modes, and the other new features listed previously. This register must be explicitly initialized, even if these new features are not being used. OCxRS(1) The OCxRS register is used to specify the period in PWM mode in the dsPIC33E devices, whereas in dsPIC33F devices, this register is used to specify the duty cycle in PWM mode. OCxR(1) The OCxR register is used to specify the duty cycle in PWM mode on dsPIC33E devices, whereas in dsPIC33F devices, this register is unused in PWM mode. Note 1: The OCxRS and OCxR registers are double-buffered in the dsPIC33E devices. DS00001771A-page 10 2015 Microchip Technology Inc. High-Speed PWM REGISTERS This section includes the following topics: Table 4 summarizes the dsPIC33E device-specific changes made to the PWM registers. • dsPIC33E Feature Enhancements • Registers dsPIC33E FEATURE ENHANCEMENTS The high-speed PWM module on the dsPIC33E devices has several enhancements and new features. The following lists the high-level improvements: • Additional PWM generator • Second master time base - Special event compare for secondary master time base • PWM Chop mode • Write protection for the IOCONx and FCLCONx registers (PWMLOCK, FDEVOPT0) • PWM high-resolution enable/disable bits • PWM state blanking of current-limit or Fault signal TABLE 4: SFR DIFFERENCES FOR dsPIC33E PWM MODULE SFR Differences from dsPIC33F PTCON PWM Sync source bit field has expanded (SNYNCSRC<2:0>). STCON The STCON register in the dsPIC33E devices contains the SESTAT, SEIEN, EIPU, SYNCPOL, SYNCOEN, SYNCEN, SYNCSRC<2:0> and SEVTPS<2:0> bits for the secondary master time base. STCON2 The STCON2 register in the dsPIC33E devices contains the PCLKDIV<2:0> bits, which are the clock divider bits for the secondary master time base. STPER The STPER register in the dsPIC33E devices contains the STPER<15:0> bits for the secondary master time base period value. SSEVTCMP The SSEVTCMP register in the dsPIC33E devices contains the SSEVTCMP<12:0> bits for the secondary special event compare value. CHOP The CHOP register in the dsPIC33E devices contains the CHPCLKEN and CHOPCLK<6:0> bits for the PWM CHOP feature. PWMKEY The PWMKEY register in the dsPIC33E devices, which is used to lock and unlock writes to the IOCONx and FCLCONx registers. PWMCONx The MTBS (PWMCONx3) bit has been added for selecting the master time base. IOCONx The Reset state of the PENH and PENL bits has changed to a ‘1’ to give the PWM module ownership of the I/O pins at Reset. FCLCONx The bits, CLSRC<4:0> and FLTSRC<4:0>, which handle signal source select changes in the dsPIC33E devices. The 0b00000 corresponds to a reserved location and the analog comparator inputs are added. LEBCONx State blanking bits, BCH, BCL, BPHH, BPHL, BPLH and BPLL, have been added to the LEBCONx register. LEBDLYx The LEBDLYx register in the dsPIC33E devices contains the Leading-Edge Blanking (LEB<8:0>) bits. The bit field has been expanded by two bits. AUXCONx The AUXCONx register in the dsPIC33E devices contains the HRPDIS, HRDDIS, BLANKSEL<3:0>, CHOPSEL<3:0>, CHOPHEN and CHOPLEN bits. These bits enable/disable high resolution for the PWM module, as well as selecting the state blanking and CHOP clock source, and enable/disable PWM chopping. 2015 Microchip Technology Inc. Data Sheet Chapter “High-Speed PWM” DS00001771A-page 11 High-Speed Analog Comparator REGISTERS This section includes the following topics: Table 5 summarizes the dsPIC33E device-specific changes made to the Analog Comparator registers. • dsPIC33E Feature Enhancements • Registers dsPIC33E FEATURE ENHANCEMENTS The high-speed analog comparator module on the dsPIC33E devices has several enhancements and new features. The following lists the high-level improvements: • • • • • Rail-to-rail inputs DAC increased to 12 bits Additional DACOUT pin on 64-pin devices Additional external reference input Hysteresis control TABLE 5: SFR DIFFERENCES FOR dsPIC33E ANALOG COMPARATOR MODULE SFR Differences from dsPIC33F Data Sheet Chapter CMPxCON The following bits have been added in the dsPIC33E devices: HYSSEL<1:0>, FLTREN, FCLKSEL, HYSPOL and ALTINP. These bits add control for hysteresis, selection of PGA inputs to the comparator and pulse stretcher logic. “High-Speed Analog Comparator” CMPxDAC The bit field has increased to 12 bits. DS00001771A-page 12 2015 Microchip Technology Inc. High-Speed Analog-to-Digital Converter (ADC) Inter-Integrated Circuit™ (I2C™) The high-speed Analog-to-Digital Converter (ADC) module on the dsPIC33E devices has some similarities to the dsPIC33F devices, as far as having dedicated and shared Sample-and-Hold circuits, and dedicated result buffers for every analog input. For more information, refer to the “dsPIC33/PIC24 Family Reference Manual”, “12-Bit High-Speed, Multiple SARs A/D Converter (ADC)” (DS70005213). • dsPIC33E Feature Enhancements • Registers The following lists the enhancements and the new features of the dsPIC33E devices: • Five Successive Approximation Register (SAR) ADCs with 12 bits of resolution • Reduced latency (higher throughput) • Single-Ended or Differential mode • More analog inputs • Two oversampling filters with dedicated interrupts • Two digital comparators with dedicated interrupts • External ADC trigger event • Additional trigger source selections • ADC results are no longer converted in pairs and each analog input has its own dedicated ISR Note: TABLE 6: The dedicated S&H circuits are now associated with AN0-AN3. This section includes the following topics: dsPIC33E FEATURE ENHANCEMENTS The Inter-Integrated Circuit™ (I2C™) module on the dsPIC33E devices has several enhancements and new features. The following lists the high-level improvements: • The number of I2C modules in the dsPIC33E devices is increased from one to two • Alternate inputs are added and are selected by the ALTI2C1 and ALTI2C2 bits in the FDEVOPT Configuration register • Interrupt on Start/Stop conditions • Selectable data hold time • State of port pins are readable while peripheral is enabled • Not all I2C pins are 5V tolerant REGISTERS Table 6 summarizes the dsPIC33E device-specific differences for the I2C registers. SFR DIFFERENCES FOR dsPIC33E I2C™ MODULE SFR Differences from dsPIC33F I2CxCON1 The I2CxCON register is renamed as I2CxCON1 in the dsPIC33E devices and the IPMIEN bit is renamed as STRICT. Data Sheet Chapter “Inter-Integrated Circuit (I2C)” I2CxCON2 The I2CxCON register in the dsPIC33E devices contains the bits: PCIE, SCIE, BOEN, SDAHT, SBCDE, AHEN and DHEN. These bits enable/disable interrupts on Stop/Start conditions, select the data hold time and address/data hold enable bits. I2CxSTAT New Acknowledge Time (ACKTIM) status bit has been added to the I2CxSTAT register. 2015 Microchip Technology Inc. DS00001771A-page 13 Serial Peripheral Interface • dsPIC33E Feature Enhancements • Registers The number of SPI modules in the dsPIC33E devices has increased from one to two. Each SPI module in the dsPIC33E devices supports Enhanced Buffer mode, which uses an 8-word deep, hardware transmit/receive FIFO buffer. dsPIC33E FEATURE ENHANCEMENTS REGISTERS The Serial Peripheral Interface (SPI) module on the dsPIC33E devices has several enhancements and new features. Table 7 summarizes the dsPIC33E device-specific differences for the SPI registers This section includes the following topics: TABLE 7: SFR DIFFERENCES FOR dsPIC33E SPI MODULE SFR Differences from dsPIC33F Data Sheet Chapter SPIxCON1 Do not set PPRE<1:0> and SPRE<2:0> to ‘11’ and ‘111’, respectively. “Serial Peripheral Interface (SPI)” SPIxCON2 New SPIBEN bit (SPIxCON2<0>) is used to enable/disable the Enhanced Buffer mode. SPIxSTAT SPIxSTAT SFR changes: • In Enhanced Buffer mode, the SPITBF or SPIRBF bits (SPIxCON2<1:0>) get set only when the entire transmit/ receive FIFO buffer is full • New SPIBEC<2:0> (SPIxSTAT<10:8>), SRMPT (SPIxSTAT<7>) and SRXMPT (SPIxSTAT<5>) status bits have been added specific to the Enhanced Buffer mode • New SISEL<2:0> control bits (SPIxSTAT<4:2>) to specify the Buffer Interrupt mode in Enhanced Buffer mode CodeGuard™ Security The code protection features are controlled by the Configuration registers, FSEC and FBSLIM. The FSEC register controls the code-protect level and write protection for each segment. The size of the BS and GS will depend on the BSLIM<12:0> bits setting, and if the AIVT is enabled. The BSLIM<12:0> bits define the number of pages for the BS with each page containing 512 IW. The smallest BS size is one page, which consists of the Interrupt Vector Table (IVT) and 256 IW of code protection. DS00001771A-page 14 Additional security has been added to the configuration data, called Configuration Segment (CS). This segment can be write-protected and has three different security levels. For more information, refer to the “CodeGuard™ Intermediate Security” (DS70005182) chapter of the “dsPIC33/PIC24 Family Reference Manual”. 2015 Microchip Technology Inc. PERFORMANCE ENHANCEMENT TECHNIQUES Note: In any microcontrollers, there are various techniques that can be utilized by code developers to improve the performance of an application. This section will explore how to take advantage of the dsPIC33E devices’ architectural features to enhance the performance of a user application and increase the effective bandwidth of the CPU. This section includes the following topics: • Code Constant Storage • XC16 C Compiler Optimization Options • Coding Guidelines Code Constant Storage The data constants must always be placed in RAM instead of Flash memory. FLASH VERSUS RAM VARIABLE STORAGE The PSV and the Flash data constant access can take up to five instruction cycles, compared to one for data RAM accesses. If certain Flash constants are frequently accessed, or the application has large-to-medium segments of constant tables that are being accessed, if feasible, consider placing them in RAM instead of Flash. DSP constants, such as FFT coefficients that may be placed in Flash by the user, are automatically handled by the DSP library functions. The DSP library functions, when appropriate, copy Flash data into the RAM stack space during execution, resulting in higher performance. User intervention is normally not required, although the process can be tuned by the user for maximum performance. Refer to the “Stack Guard Function” in the DSP Library Help for more information. RAM SIZE LIMITATIONS If there is insufficient RAM to hold large Flash constant value tables, consider using the REPEAT instruction with the indirect auto-increment MOV instruction to copy smaller segments of Flash data into a user-defined scratch pad RAM area for application access (see Example 1). The REPEAT copy instructions will execute two and a half times faster than normal Flash read accesses. Copying Flash data into a RAM, utilizing this technique for segments larger than approximately 20 words, will yield positive performance boosts. The larger the data segment being copied into RAM, the larger the performance gains. EXAMPLE 1: __psv__ __attribute__((space(auto_psv))) unsigned int my_constants[10]; //Flash data constants unsigned int my_scratchpad[10]; unsigned int *p = my_scratchpad; //Scratch pad ram area //Scratch pad pointer int main(void) { DSRPAG = (int) __builtin_psvpage(&my_constants); //PSVPAG = (int) __builtin_psvpage(&my_constants); //dsPIC33E family - select psv page //dsPIC33F family - select psv page //-------------------------------------------------------------------------// // Copy flash table data from "my_constants" to user scratch pad // // data ram array "my_scratchpad". // // NOTE: Memcopy function encodes a REPEAT instruction with indirect // // memory move instruction with auto post increment for both // // source and destination address. // //-------------------------------------------------------------------------// memcpy(p,(int unsigned *) __builtin_psvoffset(&my_constants),sizeof(my_scratchpad)/sizeof(char)); } 2015 Microchip Technology Inc. DS00001771A-page 15 MAPPING FLASH INTO PSV OPTIMIZATION LEVEL 03 If placing whole constants tables, or copying partial Flash data constants tables as needed into RAM, is not feasible, the PSV page method can be used to map Flash into the PSV virtual data memory space. This is done to utilize the indirect data memory access suite of instructions. Avoid using the non-PSV Table Read instructions for accessing Flash data as they are considerably slower. The XC16 C compiler optimization Level 03 turns on all optimizations specified by the Level 02 default setting and also the in-line-functions option. This boosts application performance even more, but at the cost of increasing the code size footprint. XC16 C Compiler Optimization Options Use the MPLAB® XC16 C Compiler optimization features. XC16 C COMPILER OPTIMIZATION For user-enabled, full-featured XC16 C compilers, use the Level 02 or 03 optimization settings in the MPLAB XC16. This will have a significant effect on the general performance of C code execution. Compiler optimization settings have no effect on either precompiled library files or assembly language files. OPTIMIZATION LEVEL 02 The XC16 C Compiler optimization Level 02, by default, turns on all optional optimizations with the exception of: • Loop unrolling (-funroll-loops) • Function in-lining (-finline-functions) • Strict aliasing optimizations (-fstrict-aliasing) Note: For optimized enabled versions of the XC16 C compiler, users can mix or incrementally add optimization options to any of the various compiler base default optimization levels by using C command line options. For more information, refer to the “Options for Controlling Optimizations” chapter in the “MPLAB® XC16 C Compiler User’s Guide” (DS50002071). COMPILER DATA MODEL OPTION Use the large data model with the small scalar model compiler option. Using this combination forces arrays and structures into far memory, which is acceptable since Indirect Addressing is required. However, enabling the small scalar model compiler option forces everything else into near memory. As previously mentioned, using the large data model option forces all variable accesses to use Indirect Addressing by implementing the Working Register Pointers. This may double and sometimes triple both the code size and the speed of the executable in comparison to the dsPIC33F family for reading or writing to a specific data RAM variable. For more information, refer to the “MPLAB® XC16 C Compiler User’s Guide” (DS50002071). It also turns on: • Force copy of memory operands (-fforce-mem) • Frame Pointer elimination (-fomit-frame-pointer) DS00001771A-page 16 2015 Microchip Technology Inc. Coding Guidelines SEQUENTIAL CODE GROUPING Maximize continuous, non-branching sequential code sequencing and use zero overhead hardware loops when feasible in place of software loops. Group as much sequential executable code in the largest contiguous sections possible that are undisturbed by any program flow instructions, such as branches, CALLs, GOTOs, etc. Defer or group C flow control statements, such as if, else, for and while, as much as possible in relation to straight-line code. This will insure the instruction pipeline is efficient and is disturbed as little as possible so it is not flushed and stalled while reloading. Program flow instructions always flush the instruction pipeline and add additional instruction cycles. BUILT-IN C MACROS Use the built-in C macros when possible and consider a bit complement C construct. For example, instead of: LATBbits.LATB5 = !LATBbits.LATB5; Use the built-in: __builtin_btg(&LATB,5); The bit complement built-in offers a significant code size and speed performance improvement. This means fewer instructions and no conditional branching that would flush and force a reload of the instruction fetch pipeline unit. NEAR VERSUS FAR RAM MEMORY The first 8K of data RAM space is considered “near” memory. Space above that is considered “far” memory. By default, the compiler sets all user data RAM variables and declarations to near memory as it sequentially encounters variables in the code in the order that the C file(s) are compiled. However, when near memory space is full, the compiler will generate compiler errors, indicating that it cannot allocate variable(s). This requires the user to either manually allocate the remaining variables using the far attribute or select the large data model compile option. The special significance of near versus far to the compiler is that near data memory accesses are encoded in only one instruction, using Direct Addressing, while accesses to data variables in far space require two to three instructions using Indirect Addressing. For this reason, the user must ensure that frequent or commonly used data variables are placed in near memory, while seldom or less frequently used variables are forced into far memory, if near memory is full, using the C compiler far attribute. 2015 Microchip Technology Inc. OPTIMIZING CPU INTERRUPTS Minimize the frequency of peripheral CPU interrupts for those peripherals with data buffers. Peripherals with four to eight-byte/word receive or transmit FIFO buffers allow the user to select interrupts based on the amount of data in the FIFO. Whenever possible, set the interrupt based on when the FIFO is fuller rather than on the first byte/word. This will minimize the number of interrupts, and the overhead associated with interrupt latency and suspension of the interrupted code. Interrupt latency for the dsPIC33E family of devices is nine to 13 instruction cycles and five instruction cycles for the dsPIC33F family of devices. Due to their higher MIPS rating, the instruction cycle time for dsPIC33E devices is much less than that of dsPIC33F devices. Note: The dsPIC33E family of devices can have either 13 fixed or nine to 13 variable latency (user-selectable) instruction cycles. ISR C FUNCTION CALL LIMITATIONS Do not call C functions from within an Interrupt Service Routine (ISR). Since the compiler can make no assumptions about registers that may be affected by a subroutine, called from within a hardware triggered event, it causes the compiler to save all the Working registers (plus a few others) on the stack. This adds considerably more overhead and latency to the ISRs. If absolutely necessary, consider copying the subroutine code directly into the ISR. DS00001771A-page 17 APPENDIX A: REVISION HISTORY Revision A (February 2015) This is the initial released version of this document. DS00001771A-page 18 2015 Microchip Technology Inc. Note the following details of the code protection feature on Microchip devices: • Microchip products meet the specification contained in their particular Microchip Data Sheet. • Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions. • There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property. • Microchip is willing to work with the customer who is concerned about the integrity of their code. • Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.” Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act. Information contained in this publication regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, dsPIC, FlashFlex, flexPWR, JukeBlox, KEELOQ, KEELOQ logo, Kleer, LANCheck, MediaLB, MOST, MOST logo, MPLAB, OptoLyzer, PIC, PICSTART, PIC32 logo, RightTouch, SpyNIC, SST, SST Logo, SuperFlash and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. The Embedded Control Solutions Company and mTouch are registered trademarks of Microchip Technology Incorporated in the U.S.A. Analog-for-the-Digital Age, BodyCom, chipKIT, chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net, ECAN, In-Circuit Serial Programming, ICSP, Inter-Chip Connectivity, KleerNet, KleerNet logo, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, RightTouch logo, REAL ICE, SQI, Serial Quad I/O, Total Endurance, TSHARC, USBCheck, VariSense, ViewSpan, WiperLock, Wireless DNA, and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in the U.S.A. Silicon Storage Technology is a registered trademark of Microchip Technology Inc. in other countries. GestIC is a registered trademarks of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in other countries. All other trademarks mentioned herein are property of their respective companies. © 2015, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. ISBN: 978-1-63277-050-9 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == 2015 Microchip Technology Inc. Microchip received ISO/TS-16949:2009 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified. DS00001771A-page 19 Worldwide Sales and Service AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://www.microchip.com/ support Web Address: www.microchip.com Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2943-5100 Fax: 852-2401-3431 China - Xiamen Tel: 86-592-2388138 Fax: 86-592-2388130 China - Zhuhai Tel: 86-756-3210040 Fax: 86-756-3210049 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 Germany - Dusseldorf Tel: 49-2129-3766400 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 Austin, TX Tel: 512-257-3370 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Cleveland Independence, OH Tel: 216-447-0464 Fax: 216-447-0643 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Beijing Tel: 86-10-8569-7000 Fax: 86-10-8528-2104 China - Chengdu Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 China - Chongqing Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 China - Dongguan Tel: 86-769-8702-9880 China - Hangzhou Tel: 86-571-8792-8115 Fax: 86-571-8792-8116 India - Pune Tel: 91-20-3019-1500 Japan - Osaka Tel: 81-6-6152-7160 Fax: 81-6-6152-9310 Japan - Tokyo Tel: 81-3-6880- 3770 Fax: 81-3-6880-3771 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 China - Hong Kong SAR Tel: 852-2943-5100 Fax: 852-2401-3431 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 China - Nanjing Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 Detroit Novi, MI Tel: 248-848-4000 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 Houston, TX Tel: 281-894-5983 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 China - Shenzhen Tel: 86-755-8864-2200 Fax: 86-755-8203-1760 Taiwan - Hsin Chu Tel: 886-3-5778-366 Fax: 886-3-5770-955 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 Taiwan - Kaohsiung Tel: 886-7-213-7828 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Indianapolis Noblesville, IN Tel: 317-773-8323 Fax: 317-773-5453 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 New York, NY Tel: 631-435-6000 San Jose, CA Tel: 408-735-9110 Canada - Toronto Tel: 905-673-0699 Fax: 905-673-6509 China - Xian Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Germany - Pforzheim Tel: 49-7231-424750 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Italy - Venice Tel: 39-049-7625286 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 Poland - Warsaw Tel: 48-22-3325737 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Sweden - Stockholm Tel: 46-8-5090-4654 UK - Wokingham Tel: 44-118-921-5800 Fax: 44-118-921-5820 Taiwan - Taipei Tel: 886-2-2508-8600 Fax: 886-2-2508-0102 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 01/27/15 DS00001771A-page 20 2015 Microchip Technology Inc.