TB026. Calculating Program Memory Checksums Using a PIC16F87X ACCESSING MEMORY INTRODUCTION. PIC16C7X vs. PIC16F87X. Microchip Technology Inc.



Similar documents
How to Implement ICSP Using PIC12C5XX OTP MCUs VDD. GP3/MCLR/VPP ICSP Connector. To application circuit Isolation circuits

Technical Brief Secure Learning RKE Systems Using KEELOQ Encoders

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

TB040. Fast Integer Square Root THE ALGORITHM INTRODUCTION SQUARE ROOT FLOW CHART

AN562. Using Endurance Predictive Software. Using the Microchip Endurance Predictive Software INTRODUCTION TOTAL ENDURANCE PREDICTIVE SOFTWARE

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

AN723. Operational Amplifier AC Specifications and Applications INTRODUCTION FREQUENCY DOMAIN SPECIFICATIONS

Operational Amplifier Topologies and DC Specifications

M Floating Point to ASCII Conversion

M Floating Point to ASCII Conversion

AN717. Building a 10-bit Bridge Sensing Circuit using the PIC16C6XX and MCP601 Operational Amplifier

AN680. Passive RFID Basics INTRODUCTION DEFINITIONS. Modulation. Reader. Tag. Carrier. Microchip Technology Inc.

TC1270/TC Pin µp Reset Monitors. Features. Package Type. General Description. Applications. Device Selection Table. Typical Operating Circuit

Interfacing Pressure Sensors to Microchip s Analog Peripherals V OUT- Silicon Substrate

AN831. Matching Small Loop Antennas to rfpic Devices INTRODUCTION CALCULATING THE LOOP RADIATION RESISTANCE AND LOSS RESISTANCE EQUATION 2:

FLASH Memory Programming Specification TABLE 1-1: PIN DESCRIPTIONS (DURING PROGRAMMING): PIC16F72

How To Program A Microcontroller With Memory On A Microchip Microcontroller

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

AN713. Controller Area Network (CAN) Basics INTRODUCTION CAN PROTOCOL BASICS CAN OVERVIEW

AN699. Anti-Aliasing, Analog Filters for Data Acquisition Systems ANALOG VERSUS DIGITAL FILTERS INTRODUCTION. Microchip Technology Inc.

AN844. Simplified Thermocouple Interfaces and PICmicro MCUs INTRODUCTION. Linearization THERMOCOUPLE CIRCUITS. Absolute Temperature Reference.

PIC16F877A. FLASH Memory Programming Specification 1.0 PROGRAMMING THE PIC16F87XA

A CAN Physical Layer Discussion

Code Hopping Decoder Using a PIC16C56

Voltage-to-Frequency/Frequency-to-Voltage Converter

EEPROM Memory Programming Specification

AN730. CRC Generating and Checking INTRODUCTION THEORY OF OPERATION EXAMPLE 1: MODULO-2 CALCULATION. Example Calculation. Microchip Technology Inc.

How To Use A Temperature Sensor On A Microchip Computer (For Microchip)

Uninstalling Incorrect USB Device Drivers

TCM V To ±10V Voltage Converter. General Description. Features. Applications. Package Type. Typical Operating Circuit

TC652/TC653. Integrated Temperature Sensor & Brushless DC Fan Controller with FanSense Detect & Over-Temperature. Features.

AN974 APPLICATION NOTE

AN734. Using the PICmicro SSP for Slave I 2 C TM Communication INTRODUCTION THE I 2 C BUS SPECIFICATION

8-bit RISC Microcontroller. Application Note. AVR236: CRC Check of Program Memory

AN685. Thermistors in Single Supply Temperature Sensing Circuits INTRODUCTION THERMISTOR OVERVIEW. Current-Over-Time Mode. Voltage-Versus-Current Mode

AN679. Temperature Sensing Technologies SO MANY TEMPERATURE SENSORS INTRODUCTION. Microchip Technology Inc.

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

Driving Power MOSFETs in High-Current, Switch Mode Regulators V GS(TH) In equation form: and. I G = Q G /t (transition) where: For example:

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

AVR1309: Using the XMEGA SPI. 8-bit Microcontrollers. Application Note. Features. 1 Introduction SCK MOSI MISO SS

Section 29. Instruction Set

Installing and Licensing MPLAB XC C Compilers

AVR317: Using the Master SPI Mode of the USART module. 8-bit Microcontrollers. Application Note. Features. Introduction

TB056. Demonstrating the Set_Report Request With a PS/2 to USB Keyboard Translator Example INTRODUCTION. The Set_Report Request.

8-bit Microcontroller. Application Note. AVR400: Low Cost A/D Converter

AN826. Crystal Oscillator Basics and Crystal Selection for rfpic TM and PICmicro Devices INTRODUCTION OSCILLATOR MODELS. Microchip Technology Inc.

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

AT89C5131A Starter Kit... Software User Guide

SSPBUF. Shift Clock SSPSR. START bit, STOP bit, Acknowledge Generate

AVR319: Using the USI module for SPI communication. 8-bit Microcontrollers. Application Note. Features. Introduction

8-bit. Application Note. Microcontrollers. AVR282: USB Firmware Upgrade for AT90USB

General Porting Considerations. Memory EEPROM XRAM

Section 14. Compare/Capture/PWM (CCP)

PIC32 Microcontroller Families

AN873. Using the MCP2515 CAN Developer s Kit INTRODUCTION. PC Node. PICmicro Node BLOCK DIAGRAM OF MCP2515 DEVELOPMENT BOARD

SPI. Overview and Use of the PICmicro Serial Peripheral Interface. Getting Started: SPI

Section 28. In-Circuit Serial Programming (ICSP )

8-bit Microcontroller. Application Note. AVR134: Real-Time Clock (RTC) using the Asynchronous Timer. Features. Theory of Operation.

Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface

AVR033: Getting Started with the CodeVisionAVR C Compiler. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Section 27. Device Configuration Bits

AVR106: C functions for reading and writing to Flash memory. 8-bit Microcontrollers. Application Note. Features. Introduction

8-bit Microcontroller. Application Note. AVR222: 8-point Moving Average Filter

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

AVR305: Half Duplex Compact Software UART. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR1510: Xplain training - XMEGA USART. 8-bit Microcontrollers. Application Note. Prerequisites. 1 Introduction

APPLICATION NOTE. Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Atmel AVR 8-bit Microcontroller. Introduction.

Chapter 13. PIC Family Microcontroller

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

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

Analog-to-Digital Converters


Selecting the MCU Memory Technology That s Right for You

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

8-bit RISC Microcontroller. Application Note. AVR182: Zero Cross Detector

etpu Host Interface by:

AN727. Credit Card Reader Using a PIC12C509 DATA ENCODING INTRODUCTION FIGURE 1: POSITION OF ISO TRACKS 1, 2 AND 3. Andrew M Errington

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

AN3354 Application note

AN880. Converting from 8051 to Microchip Assembler: A Quick Reference INTRODUCTION

Atmel AVR4920: ASF - USB Device Stack - Compliance and Performance Figures. Atmel Microcontrollers. Application Note. Features.

MT8852B Bootloader Application

SPC5-FLASHER. Flash management tool for SPC56xx family. Description. Features

AVR1922: Xplain Board Controller Firmware. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

8-bit Microcontroller. Application Note. AVR415: RC5 IR Remote Control Transmitter. Features. Introduction. Figure 1.

AT91SAM ARM-based Flash MCU. Application Note

Tag Tuning/RFID. Application Note. Tag Tuning. Introduction. Antenna Equivalent Circuit

Section 8. Interrupts

AVR32701: AVR32AP7 USB Performance. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR134: Real Time Clock (RTC) using the Asynchronous Timer. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs

Section 19. Voltage Reference

AN3265 Application note

AVR32138: How to optimize the ADC usage on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series. 32-bit Microcontrollers. Application Note.

Step Motor Controller. Application Note. AVR360: Step Motor Controller. Theory of Operation. Features. Introduction

Memory organization. Memory blocks: Program memory (flash-type) 16 kword (32 kbyte) (instruction 16 bit wide) Data RAM 1536 byte (1.

AN3270 Application note

TB055. PS/2 to USB Mouse Translator IMPLEMENTATION OVERVIEW. Hardware FIGURE 1: PS/2 TO USB MOUSE TRANSLATOR HARDWARE DIAGRAM (1)

Flexible Active Shutter Control Interface using the MC1323x

AN3332 Application note

Transcription:

M TB026 Calculating Program Memory Checksums Using a PIC16F87X Author: INTRODUCTION Many applications require the microcontroller to calculate a checksum on the program memory to determine if the contents have been corrupted. Until now, the only family of PICmicro microcontrollers to have the capability to read from program memory are the PIC17CXXX devices. The PIC16F87X devices are the first 14-bit core PICmicro microcontrollers that are able to access program memory in the same fashion as used with data EEPROM memory. These devices are FLASH extensions of the popular PIC16C7X family. Table 1 shows a comparison between the two PICmicro microcontroller families. TABLE 1: PIC16C7X vs. PIC16F87X Feature PIC16C7X PIC16C87X Pins 28 or 40 28 or 40 Timers 3 3 Interrupts 11 or 12 13 or 14 Communication Rodger Richey PSP, USART, SSP (SPI or I 2 C Slave) PSP, USART, SSP( SPI or I 2 C Master/Slave) Frequency 20 MHz 20 MHz A/D 8-bit 10-bit CCP 2 2 Program Mem. 4K or 8K EPROM 4K or 8K FLASH RAM 192 or 368 bytes 192 or 368 bytes Data EEPROM ne 128 or 256 bytes Other --- In-Circuit Debugger ACCESSING MEMORY The data EEPROM and FLASH Program memory are both accessed using the same method. An address and/or data value are stored in Special Function Registers (SFR) and then memory is accessed using control bits in other SFRs. There are six SFRs required to access memory: EECON1 EECON2 EEDATA EEDATH EEADR EEADRH When interfacing to data EEPROM memory, the address is stored in the EEADR register and the data is accessed using the EEDATA register. The operation is controlled using the EECON1 and EECON2 registers. The register map for EECON1 is shown in Figure 1. EECON2 is not a physical register. Reading it will result in all '0's. This register is used exclusively in the EEPROM and FLASH write sequences. When interfacing to FLASH program memory, the address is stored in the EEADRH:EEADR registers and the data is accessed using the EEDATH:EEDATA registers. Since the same set of control registers are used to access data and program memory, the EEPGD bit (EECON1<7>) is used to indicate to the microcontroller whether the operation is going to be on data memory (EEPGD = 0) or program memory (EEPGD = 1). Refer to Section 7.0 in the PIC16F87X data sheet (DS30292) for more information about using the EEPROM and FLASH memories. 1998 DS91026A-page 1

FIGURE 1: EECON1 REGISTER R/W-x U-0 U-0 U-0 R/W-x R/W-0 R/S-0 R/S-0 EEPGD WRERR WREN WR RD R = Readable bit bit7 bit0 W = Writable bit S = Settable bit U = Unimplemented bit, read as 0 - n = Value at POR reset bit 7: EEPGD: Program / Data EEPROM Select bit 1 = Accesses Program memory 0 = Accesses data memory te: This bit cannot be changed while a write operation is in progress. bit 6:4: Unimplemented: Read as '0' bit 3: WRERR: EEPROM Error Flag bit 1 = A write operation is prematurely terminated (any MCLR reset or any WDT reset during normal operation) 0 = The write operation completed bit 2: WREN: EEPROM Write Enable bit 1 = Allows write cycles 0 = Inhibits write to the EEPROM bit 1: WR: Write Control bit 1 = initiates a write cycle. (The bit is cleared by hardware once write is complete. The WR bit can only be set (not cleared) in software. 0 = Write cycle to the EEPROM is complete bit 0: RD: Read Control bit 1 = Initiates an EEPROM read (read takes one cycle. RD is cleared in hardware. The RD bit can only be set (not cleared) in software). 0 = Does not initiate an EEPROM read DS91026A-page 2 1998

HEX FILE FORMAT Development tools from Microchip support the Intel HEX Format (INHX8M), Intel Split HEX Format (INHX8S), and the Intel HEX 32 Format (INHX32). The most commonly used formats are the INHX8M and the INHX32. These are the only formats discussed in this document. Please refer to Appendix A in the MPASM User's Guide (DS33014) for more information about HEX file formats. The difference between INHX8M and INHX32 is that INHX32 supports 32-bit addresses using a linear address record. The basic format of the hex file is the same between INHX8M and INHX32 as shown below: :BBAAAATTHHHH...HHHHCC Each data record begins with a 9 character prefix and always ends with a 2 character checksum. All records begin with a ':' regardless of the format. The individual elements are described below. BB - is a two digit hexadecimal byte count representing the number of data bytes that will appear on the line. AAAA - is a four digit hexadecimal address representing the starting address of the data record. Format is high byte first followed by low byte, the address is doubled because this format only supports 8-bits (to find the real PICmicro address, simply divide the value AAAA by 2). TT - is a two digit record type that will be '00' for data records, '01' for end of file records and '04' for extended address record (INHX32 only). HHHH - is a four digit hexadecimal data word. Format is low byte followed by high byte. There will be BB/2 data words following TT. CC - is a two digit hexadecimal checksum that is the two's complement of the sum of all the preceding bytes in the line record. HEX File Preparation The checksum used to verify program memory contents is a 14-bit number calculated only on the program memory contents of a HEX file. The reason that only 14-bits is used is because the PIC16F87X has 14-bit wide program memory. The first step to obtaining the checksum is to get a complete HEX file that has all address locations specified. This can be easily accomplished in MPLAB by enabling the programmer, either PROMATE II or PICSTART PLUS, whichever one is available. Load the HEX file into MPLAB using the menus File -> Import -> Download to Memory. Then save the HEX file using File -> Export -> Save HEX File. Make sure that the Program Memory box is checked with a range of 0 to 8191 and the Configuration bits and IDs box are also checked. It is optional to check the EEPROM memory box depending on you application. This will create a complete HEX file including all program memory, configuration word, IDs, and optionally EEPROM memory. The checksum provided by a programmer, such as PROMATE II or PICSTART PLUS, is not valid because the configuration word and device ID are included in the calculation. Therefore, a different program is required to calculate the program memory checksum. Once a complete HEX file has been obtained by the previously presented method, it must be processed and modified to contain the checksum. The program CHECKSUM.EXE, which is a DOS based program, reads in the HEX file, calculates the checksum, and outputs the new HEX file with checksum included. The checksum is calculated by: 1. Adding together the memory locations 0x0000 to 0x1FFE. 2. Mask off all but the lower 14-bits. 3. Take the 2's complement of Step 2. 4. Mask off all but the lower 14-bits. 5. Save this value into the HEX file at address 0x1FFF. The program ignores all configuration word, ID, and EEPROM memory information in the HEX file and dumps it to the output file unchanged. The output file can then be programmed into the PIC16F87X device. PICmicro Code The code used by the PIC16F87X to calculate checksum uses 36 words of program memory and two data memory locations. The example code uses data memory locations 0x7E and 0x7F to store the calculated checksum. These locations are shared across all banks. The user can optionally change these locations and add banking into the routine. Figure 2 shows the flowchart for the routine. The checksum is created such that by adding up all program memory locations, a 14-bit result of 0x0000 is obtained. Since the calculation is done in 16-bits, the result will actually be 0x4000, but the upper two bits are masked off by the routine. Example 1 shows the code in MPASM to calculate the program memory checksum. If the program memory verifies, the routine returns a '1'. If a failure is detected, the routine returns a '0'. 1998 DS91026A-page 3

LISTING 1: PROGRAM MEMORY CHECKSUM ROUTINE CalcChecksum bsf STATUS,RP1 ;Go to Bank 2 bcf STATUS,RP0 clrf ChecksumL ;Clear the Checksum clrf ChecksumH ;registers clrf EEADR ;Set the Program Memory clrf EEADRH ; address to 0x0000 CLoop ;Loop for each location bsf STATUS,RP0 ; to read memory location bsf EECON1,EEPGD ;Set for program memory bsf EECON1,RD ;Set for read operation bcf STATUS,RP0 ;Go to Bank 2 nop movf EEDATA,W ;Add low byte to Checksum addwf ChecksumL,F btfsc STATUS,C ;Check for overflow incf ChecksumH,F ;, increment Checksum movf EEDATH,W ;Add high byte addwf ChecksumH,F incf EEADR,F ;Increment low address btfsc STATUS,Z ;Check for overflow incf EEADRH,F ;Increment high address movf EEADRH,F ;Check to see if btfss STATUS,Z ; address wrapped goto CLoop ; from 0x1fff to movf EEADR,F ; 0x0000 btfss STATUS,Z goto CLoop ;Checkcum calculation complete bcf ChecksumH,7 ;Clear upper 2 bits bcf ChecksumH,6 ; only 14-bit checksum movf ChecksumH,F ;Checksum should be 0 btfss STATUS,Z retlw0 ;Checksum failed movf ChecksumL,F btfss STATUS,Z retlw0 ;Checksum failed retlw1 ;Checksum passed DS91026A-page 4 1998

FIGURE 1: FLOWCHART Calculate Checksum Initialize Checksum registers to 0x00 Initialize EEADRH:EEADR registers to 0x0000 Read a word out of program memory Add EEDATA to Checksum Z = 1? Increment Checksum high byte Add EEDATH to Checksum Increment EEADR Z = 1? Increment EEADRH EEADRH: EEADR = 0? Mask off upper two bits of Checksum Checksum = 0? Return 1 in W Return 0 in W 1998 DS91026A-page 5

WORLDWIDE SALES AND SERVICE AMERICAS Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-786-7200 Fax: 480-786-7277 Technical Support: 480-786-7627 Web Address: http://www.microchip.com Atlanta 500 Sugar Mill Road, Suite 200B Atlanta, GA 30350 Tel: 770-640-0034 Fax: 770-640-0307 Boston 5 Mount Royal Avenue Marlborough, MA 01752 Tel: 508-480-9990 Fax: 508-480-8575 Chicago 333 Pierce Road, Suite 180 Itasca, IL 60143 Tel: 630-285-0071 Fax: 630-285-0075 Dallas 4570 Westgrove Drive, Suite 160 Addison, TX 75248 Tel: 972-818-7423 Fax: 972-818-2924 Dayton Two Prestige Place, Suite 150 Miamisburg, OH 45342 Tel: 937-291-1654 Fax: 937-291-9175 Detroit Tri-Atria Office Building 32255 rthwestern Highway, Suite 190 Farmington Hills, MI 48334 Tel: 248-538-2250 Fax: 248-538-2260 Los Angeles 18201 Von Karman, Suite 1090 Irvine, CA 92612 Tel: 949-263-1888 Fax: 949-263-1338 New York 150 Motor Parkway, Suite 202 Hauppauge, NY 11788 Tel: 631-273-5305 Fax: 631-273-5335 San Jose 2107 rth First Street, Suite 590 San Jose, CA 95131 Tel: 408-436-7950 Fax: 408-436-7955 AMERICAS (continued) Toronto 5925 Airport Road, Suite 200 Mississauga, Ontario L4V 1W1, Canada Tel: 905-405-6279 Fax: 905-405-6253 ASIA/PACIFIC Hong Kong Microchip Asia Pacific Unit 2101, Tower 2 Metroplaza 223 Hing Fong Road Kwai Fong, N.T., Hong Kong Tel: 852-2-401-1200 Fax: 852-2-401-3431 Beijing Microchip Technology, Beijing Unit 915, 6 Chaoyangmen Bei Dajie Dong Erhuan Road, Dongcheng District New China Hong Kong Manhattan Building Beijing 100027 PRC Tel: 86-10-85282100 Fax: 86-10-85282104 India India Liaison Office. 6, Legacy, Convent Road Bangalore 560 025, India Tel: 91-80-229-0061 Fax: 91-80-229-0062 Japan Microchip Technology Intl. Inc. Benex S-1 6F 3-18-20, Shinyokohama Kohoku-Ku, Yokohama-shi Kanagawa 222-0033 Japan Tel: 81-45-471-6166 Fax: 81-45-471-6122 Korea Microchip Technology Korea 168-1, Youngbo Bldg. 3 Floor Samsung-Dong, Kangnam-Ku Seoul, Korea Tel: 82-2-554-7200 Fax: 82-2-558-5934 Shanghai Microchip Technology RM 406 Shanghai Golden Bridge Bldg. 2077 Yan an Road West, Hong Qiao District Shanghai, PRC 200335 Tel: 86-21-6275-5700 Fax: 86 21-6275-5060 ASIA/PACIFIC (continued) Singapore Microchip Technology Singapore Pte Ltd. 200 Middle Road #07-02 Prime Centre Singapore 188980 Tel: 65-334-8870 Fax: 65-334-8850 Taiwan Microchip Technology Taiwan 10F-1C 207 Tung Hua rth Road Taipei, Taiwan Tel: 886-2-2717-7175 Fax: 886-2-2545-0139 EUROPE United Kingdom Arizona Microchip Technology Ltd. 505 Eskdale Road Winnersh Triangle Wokingham Berkshire, England RG41 5TU Tel: 44 118 921 5858 Fax: 44-118 921-5835 Denmark Microchip Technology Denmark ApS Regus Business Centre Lautrup hoj 1-3 Ballerup DK-2750 Denmark Tel: 45 4420 9895 Fax: 45 4420 9910 France Arizona Microchip Technology SARL Parc d Activite du Moulin de Massy 43 Rue du Saule Trapu Batiment A - ler Etage 91300 Massy, France Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Germany Arizona Microchip Technology GmbH Gustav-Heinemann-Ring 125 D-81739 München, Germany Tel: 49-89-627-144 0 Fax: 49-89-627-144-44 Italy Arizona Microchip Technology SRL Centro Direzionale Colleoni Palazzo Taurus 1 V. Le Colleoni 1 20041 Agrate Brianza Milan, Italy Tel: 39-039-65791-1 Fax: 39-039-6899883 11/15/99 Microchip received QS-9000 quality system certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona in July 1999. The Company s quality system processes and procedures are QS-9000 compliant for its PICmicro 8-bit MCUs, KEELOQ code hopping devices, Serial EEPROMs and microperipheral products. In addition, Microchip s quality system for the design and manufacture of development systems is ISO 9001 certified. All rights reserved. 1999 Microchip Technology Incorporated. Printed in the USA. 11/99 Printed on recycled paper. Information contained in this publication regarding device applications and the like is intended for suggestion only and may be superseded by updates. representation or warranty is given and no liability is assumed by Microchip Technology Incorporated with respect to the accuracy or use of such information, or infringement of patents or other intellectual property rights arising from such use or otherwise. Use of Microchip s products as critical components in life support systems is not authorized except with express written approval by Microchip. licenses are conveyed, implicitly or otherwise, under any intellectual property rights. The Microchip logo and name are registered trademarks of in the U.S.A. and other countries. All rights reserved. All other trademarks mentioned herein are the property of their respective companies. 1999