AN1687. Emulating High-Endurance Data EEPROM for PIC10 and PIC12 OVERVIEW INTRODUCTION HIGH-ENDURANCE WRITE FLOW. Microchip Technology Inc.

Similar documents
Installing and Licensing MPLAB XC C Compilers

Recommended Usage of Microchip 23X256/23X640 SPI Serial SRAM Devices RECOMMENDED CONNECTIONS FOR 23X256,23X640 SERIES DEVICES VCC 23X256/ HOLD.

TB3016. Using the PIC MCU CTMU for Temperature Measurement IMPLEMENTATION BASIC PRINCIPLE MEASUREMENT CIRCUIT

AN1303. Software Real-Time Clock and Calendar Using PIC16F1827 DATA INTERFACE INTRODUCTION IMPLEMENTATION INTERNAL REGISTER MAP

AN1286. Water-Resistant Capacitive Sensing INTRODUCTION THEORY OF OPERATION. Sensing Steps. Sensing Steps Description DESIGN

TC1047/TC1047A. Precision Temperature-to-Voltage Converter. General Description. Applications. Block Diagram. Features.

AN1325. mtouch Metal Over Cap Technology THEORY OF OPERATION INTRODUCTION CROSS SECTION OF METAL OVER CAPACITIVE (UNPRESSED)

AN1857. RGBW Color Mixing DALI Control Gear. COLOR MIXING USING RED, GREEN, BLUE AND WHITE LEDs INTRODUCTION HARDWARE

Universal Programming Module 2

AN1470. Manchester Decoder Using the CLC and NCO ABSTRACT INTRODUCTION MANCHESTER ENCODED DATA (AS PER G.E. THOMAS)

AN1142. USB Mass Storage Class on an Embedded Host INTRODUCTION. USB Mass Storage Class. Overview

AN1543. Using MRF24W with PIC32 Internal Program Flash Memory For EZ_CONFIG_STORE ALTERNATIVE LOW-COST SOLUTIONS OVERVIEW SCOPE

AN1492. Microchip Capacitive Proximity Design Guide INTRODUCTION CAPACITIVE SENSING BASICS SENSING

AN Wire Communication with PIC Microcontroller INTRODUCTION. OVERVIEW OF THE 1-Wire BUS. 1-Wire Protocol. Prerequisites

Uninstalling Incorrect USB Device Drivers

AN687. Precision Temperature-Sensing With RTD Circuits RTD OVERVIEW INTRODUCTION EQUATION 1:

AN1275. KEELOQ with Advanced Encryption Standard (AES) Receiver/Decoder KEY FEATURES OVERVIEW. Microchip Technology Inc.

AN1332. Current Sensing Circuit Concepts and Fundamentals CURRENT SENSING RESISTOR INTRODUCTION. Description. Microchip Technology Inc.

AN1156. Battery Fuel Measurement Using Delta-Sigma ADC Devices INTRODUCTION REVIEW OF BATTERY CHARGING AND DISCHARGING CHARACTERISTICS

Features, Value and Benefits of Digital Control for Power Supplies

AN1465. Digitally Addressable Lighting Interface (DALI) Communication TERMINOLOGY PHYSICAL LAYER DALI FREE-FORM LAYOUT. Topology FIGURE 1:

MPLAB Code Configurator User s Guide

TC7660. Charge Pump DC-to-DC Voltage Converter. Package Types. Features. General Description. Applications. Functional Block Diagram TC7660

MPLAB XC8 GETTING STARTED GUIDE. MPLAB XC8 Getting Started Guide

28-PIN DEMO BOARD USER S GUIDE

AN1265. KEELOQ with AES Microcontroller-Based Code Hopping Encoder INTRODUCTION DUAL ENCODER OPERATION BACKGROUND FUNCTIONAL INPUTS AND

PIC18F26K20/46K20 Rev. B2/B3/B5/B6 Silicon Errata and Data Sheet Clarification

AN905. Brushed DC Motor Fundamentals INTRODUCTION PRINCIPLES OF OPERATION. Stator. Rotor SIMPLE TWO-POLE BRUSHED DC MOTOR. Microchip Technology Inc.

Section 5. Flash Programming

Timers: Timer0 Tutorial (Part 1)

Section 15. Input Capture

AN1861. Bluetooth Smart Communication Using Microchip RN4020 Module and 16-bit PIC Microcontroller BLUETOOTH SMART COMMUNICATION INTRODUCTION

AN1353. Op Amp Rectifiers, Peak Detectors and Clamps INTRODUCTION BASIC RECTIFIERS. Choosing the Components. Positive Half-Wave Rectifier.

AN1066. Microchip MiWi Wireless Networking Protocol Stack INTRODUCTION CONSIDERATIONS TERMINOLOGY FEATURES

Peripheral Brief: Programmable Switch Mode Controller (PSMC) 1, 2, 4, 8 PSMCXTMR CLR PSMCXPR = Period. Event PSMCXPRS. Rising.

MCP73X23 Lithium Iron Phosphate (LiFePO 4 ) Battery Charger Evaluation Board User s Guide

TCM809/TCM Pin Microcontroller Reset Monitors. General Description. Features. Applications. Pin Configurations. Typical Application Circuit

PIC32 Microcontroller Families

Designing A Li-Ion Battery Charger and Load Sharing System With Microchip s Stand-Alone Li-Ion Battery Charge Management Controller

MCP2200 USB to RS-232 Demo Board User s Guide

AN1387. Using PIC32 MCUs to Develop Low-Cost Controllerless (LCC) Graphics Solutions INTRODUCTION. Basic Graphics Definitions

AN1212. Using USB Keyboard with an Embedded Host INTRODUCTION. USB Keyboard Overview. USB Keyboard with an Embedded Host USB KEYBOARD OUTPUT REPORT

Integrated Development Environment

Resistive Temperature Detector (RTD) Reference Design

AN1256. Microchip s Power MOSFET Driver Simulation Models INTRODUCTION MODEL DESCRIPTION. Using The Power MOSFET Simulation Models

Integrated Development Environment

Touch Through Metal. mtouch Metal Over Capacitive Technology Part 1

WORKSHOP-IN-A-BOX 2: LOW POWER SOLUTIONS DEMONSTRATION BOARD

MCP3021. Low Power 10-Bit A/D Converter With I 2 C Interface. Description. Features. Applications. Functional Block Diagram.

AN645. PIC16C57 Based Code Hopping Security System PINOUT OVERVIEW FEATURES BLOCK DIAGRAM RECOMMENDED READING

dspic30f3012/3013 dspic30f3012/3013 Rev. B0 Silicon Errata dspic30f3012/3013 (Rev. B0) Silicon Errata Silicon Errata Summary

MCP2515 CAN Bus Monitor Demo Board User s Guide

AN1160. Sensorless BLDC Control with Back-EMF Filtering Using a Majority Function SENSORED CONTROL VERSUS SENSORLESS CONTROL INTRODUCTION

AN1767. Solutions for Radio Frequency Electromagnetic Interference in Amplifier Circuits WHAT IS ELECTROMAGNETIC INTERFERENCE (EMI)

AN1521. Practical Guide to Implementing Solar Panel MPPT Algorithms SOLAR PANEL MPPT INTRODUCTION

AN1426. Design Tips for the MCP3911 INTRODUCTION. Addressable Devices on Single SPI Bus. Addressable SPI for Poly-phase Meter Designs.

AN1370. Smart Card Communication Using PIC MCUs INTRODUCTION SMART CARD COMMUNICATION USING PC APPLICATION

AN1307 FULL STEP MODE PHASE VOLTAGE AND PHASE CURRENT MICROSTEPPING WITH 1/4 STEP SIZE

MCP14A0151/2. 1.5A MOSFET Driver with Low Threshold Input And Enable. Features. General Description. Applications. Package Types

2K SPI Bus Serial EEPROMs with EUI-48 or EUI-64 Node Identity

MCP1701A. 2 µa Low-Dropout Positive Voltage Regulator. Features. General Description. Applications. Package Types

AN956. Migrating Applications to USB from RS-232 UART with Minimal Impact on PC Software OVERVIEW INTRODUCTION. Microchip Technology Inc.

Section 33. Programming and Diagnostics

Processor Extension Pak (PEP) and Debug Header Specification

TCP/IP Networking: Web-Based Status Monitoring

AN1095. Emulating Data EEPROM for PIC18 and PIC24 Microcontrollers and dspic Digital Signal Controllers INTRODUCTION THEORY OF OPERATION

MPLAB ICD 3 In-Circuit Debugger User s Guide For MPLAB X IDE

Section 15. Quadratrure Encoder Interface (QEI)

Serial EEPROM Powered for Automotive

AN709. System Level Design Considerations When Using I 2 C TM Serial EEPROM Devices INTRODUCTION INSURING BUS-FREE DURING POWER-UP

AN1305. Sensorless 3-Phase Brushless Motor Control with the PIC16FXXX TYPICAL MOTOR CONNECTION OVERVIEW DRIVE AND CONTROL CIRCUITRY

1.5A Dual MOSFET Driver with Low Threshold Input And Enable MCP14A OUT A OUT A OUT A IN A GND IN B

PIC10F200/202/204/206

PICkit 3 In-Circuit Debugger/Programmer User s Guide

dspic Digital Signal Controllers

How To Use Microchip.Com

TABLE 1: BUCK REGULATOR

LIN Serial Analyzer User s Guide Rev2.0

PDIP, MSOP, SOIC, TSSOP

AN1140. USB Embedded Host Stack INTRODUCTION USB OVERVIEW. Host vs. Embedded Host. USB Hosts and Peripheral Devices

PICkit 3 Programmer/Debugger User s Guide

Global Real Estate Outlook

M Floating Point to ASCII Conversion

MGC3130 Hillstar Development Kit User s Guide

AN1523. Sine Wave Generator Using Numerically Controlled Oscillator Module DIRECT DIGITAL SYNTHESIS (DDS) AND NCO INTRODUCTION

MCP73811/2. Simple, Miniature Single-Cell, Fully Integrated Li-Ion / Li-Polymer Charge Management Controllers. Description. Features.

AN232. Low-Frequency Magnetic Transmitter Design ABOUT THIS APPLICATION NOTE INTRODUCTION LFMC LINK COMPONENTS

How To Write To An Eeprom Memory On A Flash Memory On An Iphone Or Ipro Memory On Microsoft Flash Memory (Eeprom) On A Microsoft Microsoft Powerbook (Ai) 2.2.2

PICkit 2 Microcontroller Programmer USER S GUIDE

Bootloader for dspic30f/33f and PIC24F/24H Devices

AN990. Analog Sensor Conditioning Circuits An Overview INTRODUCTION SENSOR APPLICATIONS. Target Audience. Goals. Description.

HI-TECH C for PIC10/12/16 User s Guide

Data Movement Between Big-Endian and Little-Endian Devices

AN688. Layout Tips for 12-Bit A/D Converter Application GETTING A GOOD START INTRODUCTION. Microchip Technology Inc. / 2 MCP602

MPLAB X IDE User s Guide

MCP3004/ V 4-Channel/8-Channel 10-Bit A/D Converters with SPI Serial Interface. Features. Description. Applications.

CAN BUS Analyzer User s Guide

ZENA Wireless Network Analyzer User s Guide

MCP3204/ V 4-Channel/8-Channel 12-Bit A/D Converters with SPI Serial Interface. Features. Description. Applications.

Transcription:

Emulating High-Endurance Data EEPROM for PIC10 and PIC12 AN1687 Author: INTRODUCTION Willem J. Smit Microchip Technology Inc. Given Microchip s growing portfolio of microcontrollers, it is self-evident that no two families of microcontrollers are exactly similar in features and specifications. One such feature that is available on select microcontrollers is the ability for users to internally store user data in a nonvolatile manner, such as on internal EEPROM. In order to provide a low-cost solution, some devices exclude internal EEPROM but have the capability to read and write Flash Program Memory (FPM) using self-read/write. This feature allows users to write and read user data to and from any unused portion of FPM in a nonvolatile manner. It is important to note a few things about FPM to better understand the structures set in place for erase and programming operations. First, FPM is arranged in rows that consist of a fixed number of 14-bit program memory words. For example, on the PIC10F322, the FPM is broken down into rows consisting of sixteen 14-bit words, which are accessible by an address of XX0h to XXFh. Second, the FPM can only be erased by a minimum of a row at a time. When erased, the contents are set to all 1 s. When writing, only 0 s can be written. Third, again using the PIC10F322 as an example, Microchip specifies the minimum program Flash memory cell endurance to be 10K erase and write cycles from -40 C to +85 C. Considering each memory cell as 1-bit in the 14-bit FPM word, this application note introduces software library routines, which increase the minimum program FPM cell endurance to a theoretical minimum 160K erase and write cycles, when storing user data in the FPM in rolling-page format (10K FPM cell endurance x 16 rows = 160K FPM cell endurance). Thus, the FPM is brought into the high-endurance range, which is specified as a minimum of 100K erase and write cycles. OVERVIEW The supplied software library makes use of a minimum of one row of FPM to store one 12-bit user data value, which is continually updated, requiring a minimum endurance greater than 10K erase and write cycles. The increased endurance is achieved by incrementing the location of the 12-bit user data by one FPM address location in the row each time a write takes place. Once all sixteen locations within the row have been filled and a new value written, the row is erased and the new value is written to the first 14-bit word location of the same row. FIGURE 1: Starting FPM Row Address XX0h XX1h XX2h XXDh XXEh XXFh XX0h XX1h XX2h XXDh XXEh XXFh ONE ROW OF FPM HIGH-ENDURANCE WRITE FLOW User Data 0x3CA + Write Flag (0x2000) 0x23CB 0x23CC 0x23D8 0x23D9 0x23DA 0x23DB Each time the User Data is updated and written to FPM it is written to the next location of the FPM row. Once the last 14- bit word of the FPM row has been written and the User Data is updated and written again the row is erased and the updated User Data written to the first locations of the FPM row. 2014 Microchip Technology Inc. DS00001687A-page 1

IMPLEMENTATION DETAILS The software library consists of one main function routine: uint16_t ReadWrite_HEFlash(uint8_t rw, uint16_t data, uint8_t rowstartaddr) The arguments for the above function are the following: rw designates if the function will perform a read of the FPM or a write to the FPM rw = 1 = Write to FPM rw = 0 = Read of FPM data is the 12-bit value written by the user rowstartaddr is the starting address of the FPM row being used. A row s starting address can be determined by looking at the first nibble starting with the LSB of the FPM addresses. The beginning row address always starting with the first nibble equal to 0x0. For example, 0xE0 to 0xEF is one row, with 0xE0 being the row start address. This function writes and reads 12 bits of user data to and from the FPM. A write is done by writing the next available/open FPM location (bits <11:0>). Bits <13:12> are used as flags, indicating if a FPM row location has been written or not, as follows: Bits <13:12> = 0b11 = Open Bits <13:12> = 0b10 = Written (Closed) Write example: ReadWrite_HEFlash(1, 0x3CA, 0xF0) The above function will write a value of 0x3CA to the next available/open FPM location within the row, which has a starting address of 0xF0 (see Figure 1 and Figure 2). FIGURE 2: HIGH-ENDURANCE FLASH WRITE FLOW CHART Initiate Write to FPM Inputs: FPM Row Start Address & 12-Bit User Data Search for Next Open FPM Row Location(Have all Sixteen 12-bit Locations Been Filled?) YES Erase Row NO Write 12-bit User Data to Next Open FPM Row Location End DS00001687A-page 2 2014 Microchip Technology Inc.

Read example: buffer = ReadWrite_HEFlash(0, 0x000, 0xF0) The above function will return the last 12-bits value of user data written to the selected FPM row and place the value in buffer. In the case of a read, the data field is a don t care and will be ignored. If a read is performed and no user data has been written to the FPM, a value of 0xFFF will be returned (see Figure 3 and Figure 4). FIGURE 3: ONE ROW OF FPM HIGH-ENDURANCE READ FLOW Starting FPM Row Address XX0h XX1h XX2h XXDh XXEh XXFh User Data 0x3CA + Write Flag (0x2000) 0x23CB 0x23CC 0x23D8 Each time a read is performed the row is searched for the Write Flag, starting with the bottom of the row. Once the Write Flag is found the User Data is returned (0x3D8). If no Write Flag is found a value of 0xFFF will be returned. FIGURE 4: HIGH-ENDURANCE FLASH READ FLOW CHART Initiate Read of FPM Inputs: FPM Row Start Address Search for Last FPM Row Location Written (Has The FPM Been Written?) NO Return 0xFFF YES Return 12-bit User Data from FPM End 2014 Microchip Technology Inc. DS00001687A-page 3

Selecting a Row When selecting a row or rows to write, a few things should be noted: 1. Never attempt to write to a section of FPM occupied by the firmware itself. In addition, areas where the Reset vector and Interrupt vector reside should always be avoided; these are usually located between FPM address 0x0000 and 0x0004. 2. The best way to select an applicable row or rows is to look at the program memory map in MPLAB X after doing a compile. Preserving FPM During Programming Cycles During program cycles, via MPLAB X by default, the whole FPM on the device is erased. If a user requires user data already written to FPM to be preserved during the programming cycle in MPLAB X, this can be done in the following way: Open Project Properties Select the programmer being used in the left hand column (e.g., PICkit 3, REAL ICE, ICD3) Check the Preserve Program Memory box Enter the range of the rows selected for High-Endurance Flash Emulation in the Preserve Program Memory Start and Stop box Figure 5 shows how to preserve FPM location 0x0F through 0xFF. FIGURE 5: MPLAB X FPM PRESERVATION DS00001687A-page 4 2014 Microchip Technology Inc.

Software License Agreement The software supplied herewith by Microchip Technology Incorporated (the Company ) is intended and supplied to you, the Company s customer, for use solely and exclusively with products manufactured by the Company. The software is owned by the Company and/or its supplier, and is protected under applicable copyright laws. All rights are reserved. Any use in violation of the foregoing restrictions may subject the user to criminal sanctions under applicable laws, as well as to civil liability for the breach of the terms and conditions of this license. THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATU- TORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICU- LAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. EXAMPLE 1: PIC10_PIC12_EHEDEEPROM.C (EMULATING HIGH ENDURANCE DATA EPPROM) uint16_t ReadWrite_HEFlash(uint8_t rw, uint16_t data, uint8_t rowstartaddr) { uint8_t addr; Save_INTERRUPT(); if (rw == 1) { addr = rowstartaddr; else { addr = (rowstartaddr + 0xF); uint8_t cnt; //CHECK FOR NEXT AVAILABLE WORD LOCATION for (cnt = 0x10; cnt!= 0x0; cnt--) { Read_FLASH(addr); //Read FLASH if (rw == 1) {//SEARCH FOR NEXT OPEN LOCATION if (PMDATH == 0x3F) { //IF NEXT ROW IS AVAILABLE PMDAT = data;//place USER DATA IN PMDAT TO BE WRITTEN TO FLASH asm("bsf PMDATH, 5"); //SET FPM FREE FLAG (FPM LOCATION HAS BEEN WRITTEN) asm("bcf PMDATH, 4"); Write_FLASH(); //Write TO FLASH break; addr++; //CHECK IF THE ROW HAS EXPIRED if (cnt <= 0x1) { //THE ROW HAS EXPIRED IT WILL NOW BE ERASED PMCON1 = 0b00010100; //CLEAR PM1CON & FREE = 1, WREN = 1 PMADR = rowstartaddr; Unlock_FLASH(); //Write USER DATA PMDAT = data; //PLACE USER DATA IN PMDAT TO BE WRITTEN TO FLASH asm("bsf PMDATH, 5");//SET FPM FREE FLAG (FPM LOCATION HAS BEEN WRITTEN) asm("bcf PMDATH, 4"); Write_FLASH(); //Write TO FLASH else { //SEARCH FOR LAST WRITTEN LOCATION if ((PMDATH & 0x20) && (PMDATH!= 0x3F)) {//CHECK FPM FREE FLAG data = (PMDAT & 0xFFF); //RETURN DATA FROM LAST WRITTEN LOCATION break; 2014 Microchip Technology Inc. DS00001687A-page 5

PIC10_PIC12_EHEDEEPROM.C (EMULATING HIGH ENDURANCE DATA EPPROM) (CONTINUED) addr--; INTCON = SaveInt; return data ; void Save_INTERRUPT(void) { SaveInt = INTCON; //save interrupt status GIE = 0; //Disable ints so required sequences will execute properly void Read_FLASH(uint8_t address) { PMADR = address; PMCON1 = 0b00000001; //RD = 1 Read PROGRAM FLASH while (RD); void Unlock_FLASH(void) { PMCON2 = 0x55; //FLASH Write/ERASE Unlock SEQUENCE PMCON2 = 0xAA; WR = 1; while (WR); WREN = 0; //INHIBITS PROGRAMMING AND ERASING OF PROGRAM FLASH void Write_FLASH(void) { //PMCON1 = 0b00100100; //LOAD PROGRAM MEMORY Write LATCHES //Unlock_FLASH(); PMCON1 = 0b00000100; //Write PROGRAM Write LATCHES TO PROGRAM MEMORY Unlock_FLASH(); Interrupts Special attention should be paid if interrupts are used in the application. When interrupts are being used in the main user code, save_interrupt(); and INTCON = SaveInt; should be on uncommented in LPC_HEFlash.C. This will cause the device to disable all interrupts during read and write high-endurance FPM cycles, as well as saving the state of the INTCON register before a read or write cycle and restoring it afterwards. The interrupts are disabled to avoid an interrupt occurring during a read or write cycle and resulting in FPM data corruption. DS00001687A-page 6 2014 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. QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == Trademarks The Microchip name and logo, the Microchip logo, dspic, FlashFlex, KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART, PIC 32 logo, rfpic, SST, SST Logo, SuperFlash and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MTP, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. Silicon Storage Technology is a registered trademark of Microchip Technology Inc. in other countries. Analog-for-the-Digital Age, Application Maestro, BodyCom, chipkit, chipkit logo, CodeGuard, dspicdem, dspicdem.net, dspicworks, dsspeak, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, mtouch, Omniscient Code Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rflab, Select Mode, SQI, Serial Quad I/O, Total Endurance, TSHARC, UniWinDriver, WiperLock, ZENA and Z-Scale 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. GestIC and ULPP are 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. 2014, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. ISBN: 978-1-63276-188-0 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. 2014 Microchip Technology Inc. DS00001687A-page 7

Worldwide Sales and Service AMERICAS 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 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 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Novi, MI Tel: 248-848-4000 Houston, TX Tel: 281-894-5983 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 ASIA/PACIFIC 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 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 - Hangzhou Tel: 86-571-8792-8115 Fax: 86-571-8792-8116 China - Hong Kong SAR Tel: 852-2943-5100 Fax: 852-2401-3431 China - Nanjing Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 China - Shenzhen Tel: 86-755-8864-2200 Fax: 86-755-8203-1760 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 China - Xian Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 China - Xiamen Tel: 86-592-2388138 Fax: 86-592-2388130 China - Zhuhai Tel: 86-756-3210040 Fax: 86-756-3210049 ASIA/PACIFIC India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 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 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 Taiwan - Hsin Chu Tel: 886-3-5778-366 Fax: 886-3-5770-955 Taiwan - Kaohsiung Tel: 886-7-213-7830 Taiwan - Taipei Tel: 886-2-2508-8600 Fax: 886-2-2508-0102 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 EUROPE Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Germany - Dusseldorf Tel: 49-2129-3766400 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 03/25/14 DS00001687A-page 8 2014 Microchip Technology Inc.