PIC18FX410/X490 Programming Specifications for PIC18FX410/X490 FLASH MCUs 1.0 DEVICE OVERVIEW 2.1 In High-Voltage ICSP mode, the PIC18FX410/X490 devices require two programmable power supplies: one for VDD and one for MCLR/VPP. Both supplies should have a minimum resolution of 0.25V. Refer to Section 6.0 “AC/DC Characteristics Timing Requirements for Program/Verify Test Mode” for additional hardware parameters. This document includes the programming specifications for the following devices: • PIC18F6410 • PIC18F8410 • PIC18F6490 • PIC18F8490 2.0 PROGRAMMING OVERVIEW OF THE PIC18FX410/X490 2.2 PIC18FX410/X490 devices can be programmed using the high-voltage In-Circuit Serial ProgrammingTM (ICSPTM) method. This can be done with the device in the user’s system. This programming specification applies to PIC18FX410/X490 devices in all package types. TABLE 2-1: Hardware Requirements Pin Diagrams The pin diagrams for the PIC18FX410/X490 family are shown in Figure 2-1 through Figure 2-4. PIN DESCRIPTIONS (DURING PROGRAMMING): PIC18FX410/X490 During Programming Pin Name Pin Name Pin Type Pin Description RG5/MCLR/VPP VPP P Programming Enable VDD(1) VDD P Power Supply VSS(1) VSS P Ground RB6/PGC PGC I Serial Clock RB7/PGD PGD I/O Serial Data Legend: I = Input, O = Output, P = Power Note 1: All power supply (VDD) and ground (VSS) must be connected. 2004 Microchip Technology Inc. DS39624A-page 1 PIC18FX410/X490 RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 VSS VDD RD0/PSP0 RE7/CCP2(1) RE6 RE5 RE4 RE3 PIC18FX410 FAMILY PIN DIAGRAM RE2/CS FIGURE 2-1: 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 RE1/WR RE0/RD RG0/CCP3 RG1/TX2/CK2 RF4/AN9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 RF3/AN8 RF2/AN7/C1OUT 15 16 RG2/RX2/DT2 RG3 RG5/MCLR/VPP RG4 VSS VDD RF7/SS RF6/AN11 RF5/AN10/CVREF 48 47 RB0/INT0/FLT0 RB1/INT1 46 45 RB2/INT2 RB3/INT3 RB4/KBI0 44 43 42 41 40 PIC18F6410 39 38 37 36 35 34 33 RB5/KBI1/PGM RB6/KBI2/PGC VSS OSC2/CLKO/RA6 OSC1/CLKI/RA7 VDD RB7/KBI3/PGD RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 DS39624A-page 2 RC7/RX1/DT1 RC6/TX1/CK1 RC0/T1OSO/T13CLKI RA4/T0CKI RC1/T1OSI/CCP2(1) VDD RA5/AN4/LVDIN VSS RA0/AN0 RA1/AN1 RA2/AN2/VREF- AVSS RA3/AN3/VREF+ AVDD RF0/AN5 RF1/AN6/C2OUT 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2004 Microchip Technology Inc. PIC18FX410/X490 RJ1/OE RJ0/ALE RD7/AD7/PSP7 RD6/AD6/PSP6 RD5/AD5/PSP5 RD4/AD4/PSP4 RD3/AD3/PSP3 RD2/AD2/PSP2 RD1/AD1/PSP1 VDD VSS RD0/AD0/PSP0 RE7/CCP2(1)/AD15 RE6/AD14 RE5/AD13 RE4/AD12 RE3/AD11 RE2/AD10/CS RH0/A16 PIC18FX410 FAMILY PIN DIAGRAM (CONTINUED) RH1/A17 FIGURE 2-2: 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 RH2/A18 RH3/A19 RE1/AD9/WR RE0/AD8/RD RG0/CCP3 RG1/TX2/CK2 RG2/RX2/DT2 RG3 RG5/MCLR/VPP RG4 VSS VDD RF7/SS RF6/AN11 RF5/AN10/CVREF RF4/AN9 RF3/AN8 RF2/AN7/C1OUT RH7 RH6 1 2 60 59 58 57 56 55 3 4 5 6 7 8 9 10 11 12 13 14 15 16 54 53 52 51 50 PIC18F8410 49 48 47 46 45 44 17 18 19 20 43 42 41 RJ2/WRL RJ3/WRH RB0/INT0/FLT0 RB1/INT1 RB2/INT2 RB3/INT3/CCP2(1) RB4/KBI0 RB5/KBI1/PGM RB6/KBI2/PGC VSS OSC2/CLKO/RA6 OSC1/CLKI/RA7 VDD RB7/KBI3/PGD RC5/SDO RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1 RJ7/UB RJ6/LB 2004 Microchip Technology Inc. RJ5/CE RJ4/BA0 RC7/RX1/DT1 RC6/TX1/CK1 RC0/T1OSO/T13CLKI RA4/T0CKI RC1/T1OSI/CCP2(1) RA5/AN4/LVDIN VDD VSS RA0/AN0 RA1/AN1 RA2/AN2/VREF- AVSS RA3/AN3/VREF+ AVDD RF0/AN5 RF1/AN6/C2OUT RH4 RH5 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 DS39624A-page 3 PIC18FX410/X490 RD7/SEG7 RD6/SEG6 RD5/SEG5 RD4/SEG4 RD3/SEG3 RD2/SEG2 RD1/SEG1 VDD VSS RD0/SEG0 RE7/CCP2(1)/SEG31 RE6/COM3 RE5/COM2 RE4/COM1 COM0 PIC18FX490 FAMILY PIN DIAGRAM LCDBIAS3 FIGURE 2-3: 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 LCDBIAS2 LCDBIAS1 RG0/SEG30 RG1/TX2/CK2/SEG29 RG2/RX2/DT2/SEG28 RG3/SEG27 RG5/MCLR/VPP RG4/SEG26 VSS VDD RF7/SS/SEG25 RF6/AN11/SEG24 RF5/AN10/CVREF/SEG23 RF4/AN9/SEG22 RF3/AN8/SEG21 RF2/AN7/C1OUT/SEG20 48 47 46 45 1 2 3 4 5 6 7 8 9 10 11 12 13 14 44 43 42 41 40 PIC18F6490 39 38 37 36 35 34 33 15 16 RB0/INT0 RB1/INT1/SEG8 RB2/INT2/SEG9 RB3/INT3/SEG10 RB4/KBI0/SEG11 RB5/KBI1/PGM RB6/KBI2/PGC VSS OSC2/CLKO/RA6 OSC1/CLKI/RA7 VDD RB7/KBI3/PGD RC5/SDO/SEG12 RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1/SEG13 DS39624A-page 4 RC7/RX1/DT1 RC6/TX1/CK1 RC0/T1OSO/T13CLKI RA4/T0CKI/SEG14 RC1/T1OSI/CCP2(1) VDD RA5/AN4/LVDIN/SEG15 VSS RA0/AN0 RA1/AN1 RA2/AN2/VREF-/SEG16 AVSS RA3/AN3/VREF+/SEG17 AVDD RF0/AN5/SEG18 RF1/AN6/C2OUT/SEG19 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2004 Microchip Technology Inc. PIC18FX410/X490 RJ1/SEG33 RJ0/SEG32 RD7/SEG7 RD6/SEG6 RD5/SEG5 RD4/SEG4 RD3/SEG3 RD2/SEG2 RD1/SEG1 VDD VSS RD0/SEG0 RE7/CCP2(1)/SEG31 RE6/COM3 RE5/COM2 RE4/COM1 COM0 RH0/SEG47 LCDBIAS3 PIC18FX490 FAMILY PIN DIAGRAM (CONTINUED) RH1/SEG46 FIGURE 2-4: 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 RH2/SEG45 RH3/SEG44 LCDBIAS2 LCDBIAS1 RG0/SEG30 RG1/TX2/CK2/SEG29 RG2/RX2/DT2/SEG28 RG3/SEG27 RG5/MCLR/VPP RG4/SEG26 VSS VDD RF7/SS/SEG25 RF6/AN11/SEG24 RF5/AN10/CVREF/SEG23 RF4/AN9/SEG22 RF3/AN8/SEG21 RF2/AN7/C1OUT/SEG20 RH7/SEG43 RH6/SEG42 1 60 2 59 58 57 56 55 3 4 5 6 7 8 9 10 11 12 13 14 15 16 54 53 52 PIC18F8490 51 50 49 48 47 46 45 44 43 42 41 17 18 19 20 RJ2/SEG34 RJ3/SEG35 RB0/INT0 RB1/INT1/SEG8 RB2/INT2/SEG9 RB3/INT3/SEG10 RB4/KBI0/SEG11 RB5/KBI1/PGM RB6/KBI2/PGC VSS OSC2/CLKO/RA6 OSC1/CLKI/RA7 VDD RB7/KBI3/PGD RC5/SDO/SEG12 RC4/SDI/SDA RC3/SCK/SCL RC2/CCP1/SEG13 RJ7/SEG36 RJ6/SEG37 2004 Microchip Technology Inc. RJ5/SEG38 RJ4/SEG39 RC7/RX1/DT1 RC6/TX1/CK1 RC0/T1OSO/T13CLKI RA4/T0CKI/SEG14 RC1/T1OSI/CCP2(1) VDD RA5/AN4/LVDIN/SEG15 VSS RA0/AN0 RA1/AN1 RA2/AN2/VREF-/SEG16 AVSS RA3/AN3/VREF+/SEG17 AVDD RF0/AN5/SEG18 RF1/AN6/C2OUT/SEG19 RH4/SEG40 RH5/SEG41 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 DS39624A-page 5 PIC18FX410/X490 2.3 Memory Map The code memory space extends from 000000h to 003FFFh (16 Kbytes) in a single block. TABLE 2-2: Device IMPLEMENTATION OF CODE MEMORY Code Memory Size (Bytes) PIC18F6410 PIC18F8410 PIC18F6490 000000h-003FFFh (16K) Locations 300000h through 30000Dh are reserved for the configuration bits. These bits select various device options and are described in Section 5.0 “Configuration Word”. These configuration bits read out normally, even after code protection. Locations 3FFFFEh and 3FFFFFh are reserved for the device ID bits. These bits are read-only bits. These bits may be used by the programmer to identify what device type is being programmed and are described in Section 5.0 “Configuration Word”. These device ID bits read out normally, even after code protection. 2.3.1 PIC18F8490 In addition to the code memory space, there are three blocks in the configuration and ID space that are accessible to the user through table reads and table writes (in ICSP mode). Their locations in the memory map are shown in Figure 2-5. Users may store identification information (user ID) in eight ID registers. These ID registers are mapped in addresses 200000h through 200007h. The ID locations read out normally, even after code protection is applied. MEMORY ADDRESS POINTER Memory in the address space 0000000h to 3FFFFFh is addressed via the Table Pointer, which is comprised of three pointer registers: • TBLPTRU, at RAM address 0FF8h • TBLPTRH, at RAM address 0FF7h • TBLPTRL, at RAM address 0FF6h TBLPTRU TBLPTRH TBLPTRL Addr[21:16] Addr[15:8] Addr[7:0] The 4-bit command, ‘0000’ (core instruction), is used to load the Table Pointer prior to using many read or write operations. FIGURE 2-5: MEMORY MAP AND THE CODE MEMORY SPACE FOR PIC18FX410/X490 DEVICES 000000h Code Memory Block 0 003FFFh Unimplemented Read as ‘0’ User ID Space 200000h 200007h Configuration Bit Space 30000Dh 300000h ID Location 1 ID Location 2 ID Location 3 ID Location 4 ID Location 5 ID Location 6 ID Location 7 ID Location 8 200000h 200001h 200002h 200003h 200004h 200005h 200006h 200007h CONFIG1L CONFIG1H CONFIG2L CONFIG2H CONFIG3L CONFIG3H CONFIG4L CONFIG4H CONFIG5L CONFIG5H CONFIG6L CONFIG6H CONFIG7L CONFIG7H 300000h 300001h 300002h 300003h 300004h 300005h 300006h 300007h 300008h 300009h 30000Ah 30000Bh 30000Ch 30000Dh Device ID1 Device ID2 3FFFFEh 3FFFFFh Device ID Space 3FFFFEh 3FFFFFh Note: Sizes of memory areas are not to scale. DS39624A-page 6 2004 Microchip Technology Inc. PIC18FX410/X490 2.4 High-Level Overview of the Programming Process 2.5 Entering High-Voltage ICSP Program/Verify Mode Figure 2-6 shows the high-level overview of the programming process. The device is first checked to see if it is blank; if it is not, a Chip Erase is performed. Next, the code memory and ID locations are programmed. These memories are then verified to ensure that programming was successful. If no errors are detected, the configuration bits are then programmed and verified. The High-Voltage ICSP Program/Verify mode is entered by holding PGC and PGD low and then raising MCLR/VPP to VIHH (high voltage). Once in this mode, the code memory, ID locations and configuration bits can be accessed and programmed in serial fashion. FIGURE 2-6: FIGURE 2-7: HIGH-LEVEL PROGRAMMING FLOW The sequence that enters the device into the Program/Verify mode places all unused I/Os in the high-impedance state. ENTERING HIGH-VOLTAGE PROGRAM/VERIFY MODE Start P13 Is Part Blank? No Yes P12 P1 Perform Chip Erase D110 MCLR/VPP VDD Program Memory PGD Program IDs PGC PGD = Input Verify Program Verify IDs Program Configuration Bits Verify Configuration Bits Done 2004 Microchip Technology Inc. DS39624A-page 7 PIC18FX410/X490 2.6 TABLE 2-3: Serial Program/Verify Operation The PGC pin is used as a clock input pin and the PGD pin is used for entering command bits and data input/output during serial operation. Commands and data are transmitted on the rising edge of PGC, latched on the falling edge of PGC and are Least Significant bit (LSb) first. COMMANDS FOR PROGRAMMING 4-Bit Command Description Core Instruction (Shift in16-bit instruction) 0000 Shift out TABLAT register 0010 Table Read 1000 All instructions are 20 bits, consisting of a leading 4-bit command, followed by a 16-bit operand, which depends on the type of command being executed. To input a command, PGC is cycled four times. The commands needed for programming and verification are shown in Table 2-3. Table Read, post-increment 1001 Table Read, post-decrement 1010 Table Read, pre-increment 1011 Table Write 1100 Table Write, post-increment by 2 1101 Depending on the 4-bit command, the 16-bit operand represents 16 bits of input data or 8 bits of input data and 8 bits of output data. Table Write, post-decrement by 2 1110 Table Write, start programming 1111 2.6.1 4-BIT COMMANDS Throughout this specification, commands and data are presented as illustrated in Table 2-4. The 4-bit command is shown MSb first. The command operand, or “Data Payload”, is shown <MSB><LSB>. Figure 2-8 demonstrates how to serially present a 20-bit command/operand to the device. 2.6.2 TABLE 2-4: SAMPLE COMMAND SEQUENCE 4-Bit Command Data Payload 1101 3C 40 Core Instruction Table Write, post-increment by 2 CORE INSTRUCTION The core instruction passes a 16-bit instruction to the CPU core for execution. This is needed to setup registers as appropriate for use with other commands. FIGURE 2-8: TABLE WRITE, POST INCREMENT TIMING (1101) P2 1 2 3 4 P2A P2B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 1 3 4 PGC P5A P5 P4 P3 PGD 1 0 1 1 0 0 0 0 4-bit Command 0 0 0 1 0 4 0 0 1 C 16-bit Data Payload 1 1 1 0 0 n n n n 3 Fetch Next 4-bit Command PGD = Input DS39624A-page 8 2004 Microchip Technology Inc. PIC18FX410/X490 3.0 DEVICE PROGRAMMING 3.1 Blank Check The term “Blank Check” means to verify that the device has no programmed memory cells. All memories must be verified: code memory, ID locations and configuration bits. The Device ID registers (3FFFFEh:3FFFFFh) should be ignored. The blank checking step involves reading the code memory space and comparing it against FFFFh. Memory reads occur a single byte at a time, so two bytes must be read to compare against FFFFh. Refer to Section 4.1 “Read Code Memory, ID Locations and Configuration Bits”. FIGURE 3-1: A ”Blank” or “Erased” memory cell will read as a ‘1’. So, “Blank Checking” a device merely means to verify that all bytes read as FFh, except the configuration bits. Unused (reserved) configuration bits will read ‘0’. Refer to Table 5-3 for blank configuration except data for the various PIC18FX410/X490 devices. If it is determined that the device is not blank, then the device should be erased (see Section 3.2 “High-Voltage ICSP Chip Erase”) before any attempt to program is made. BLANK CHECK FLOW Load Address Pointer to 200000h Start Load Address Pointer to 000000h Read Low Byte Read High Byte Read Low Byte Does Word = FFFFh? Read High Byte No Report, Device not Blank Yes Does Word = FFFFh? No Report, Device not Blank No Yes No All ID Locations Verified? Yes Load Address Pointer to 300000h All Code Memory Verified? Read Low Byte Yes Read High Byte Does Word = Erased State?(1) No Report, Device not Blank Yes No All Configuration Bits Verified? Yes Note 1: Report Device is Blank The erased state of Configuration bits are given in Table 5-2. 2004 Microchip Technology Inc. DS39624A-page 9 PIC18FX410/X490 3.2 TABLE 3-2: High-Voltage ICSP Chip Erase Erasing code is accomplished by writing an “erase option” to address 3C0004h. Code memory is erased by erasing the entire device in one action. “Chip Erase” operations will also clear any code-protect settings. Chip Erase is detailed in Table 3-1. TABLE 3-1: 4-Bit Command CHIP ERASE OPTION Description Data Chip Erase 018Ah The actual Chip Erase function is a self-timed operation. Once the erase has started (falling edge of the 4th PGC after the NOP instruction), serial execution will cease until the erase completes (parameter P11). During this time, PGC may continue to toggle, but PGD must be held low. Refer to Figure 3-3 CHIP ERASE COMMAND SEQUENCE Data Payload 0000 0000 0000 0000 0000 0000 1100 0000 0000 1100 0E 6E 0E 6E 0E 6E 01 0E 6E 01 0000 0000 00 00 3C F8 00 F7 05 F6 0A 04 F6 8A Core Instruction MOVLW 3Ch MOVWF TBLPTRU MOVLW 00h MOVWF TBLPTRH MOVLW 05h MOVWF TBLPTRL Write 01 to 3C0005h MOVLW 04h MOVWF TBLPTRL Write 8Ah TO 3C0004h to erase device. NOP Hold PGD low until erase completes. The code sequence to erase the entire device is shown in Table 3-2 and the flow chart is shown in Figure 3-2. Note: FIGURE 3-2: A Chip Erase is the only way to reprogram code-protect bits from an on-state to an off-state. CHIP ERASE FLOW Start Load Address Pointer to 3C0004h Write 018Ah To Erase Device Delay P11+P10 Time Done FIGURE 3-3: CHIP ERASE TIMING P10 1 2 3 4 1 2 15 16 1 2 3 4 1 2 15 16 1 2 3 4 1 2 n n PGC PGD 0 0 1 1 4-bit Command P5 P5A P5 0 1 0 0 16-bit Data Payload Chip Erase Instruction 0 0 0 0 4-bit Command P5A 0 0 0 0 16-bit Data Payload NOP Instruction P11 0 0 0 0 4-bit Command Erase Time 16-bit Data Payload PGD = Input DS39624A-page 10 2004 Microchip Technology Inc. PIC18FX410/X490 3.3 Code Memory Programming Programming code memory is accomplished by first loading data into the appropriate write buffers and then initiating a programming sequence. The write buffer is 16 bytes in size and can be mapped to any 16-byte area in code memory (see Figure 3-4). The actual memory write sequence takes the contents of these buffers and programs the 16-byte code memory region pointed to by the Table Pointer once the programming sequence is initiated. The programming duration is externally timed and is controlled by PGC. After a “Start Programming” command is issued (4-bit command, ‘1111’), a NOP is issued, where the 4th PGC is held high for the duration of the programming time, P9 (see Figure 3-6). FIGURE 3-4: After PGC is brought low, the programming sequence is terminated. PGC must be held low for the time specified by parameter P10 to allow high-voltage discharge of the memory array. The code sequence to program a PIC18FX410/X490 device is shown in Table 3-3. The flow chart shown in Figure 3-5 depicts the logic necessary to completely write a PIC18FX410/X490 device. The timing diagram that details the “Start Programming” command and parameter P10, is shown in Figure 3-6. Note: The TBLPTR register must contain the same offset value when initiating the programming sequence as it did when the write buffers were loaded. WRITE BOUNDARIES Offset = TBLPTR<13:4> TBLPTR<21:14> = 0 CODE MEMORY 16-byte Write Buffer TBLPTR<3:0> = 0h TBLPTR<3:0> = 1h TBLPTR<3:0> = 2h TBLPTR<3:0> = 3h TBLPTR<3:0> = 4h TBLPTR<3:0> = 5h TBLPTR<3:0> = 6h TBLPTR<3:0> = 7h TBLPTR<3:0> = 8h TBLPTR<3:0> = 9h TBLPTR<3:0> = Ah TBLPTR<3:0> = Bh TBLPTR<3:0> = Ch TBLPTR<3:0> = Dh TBLPTR<3:0> = Eh TBLPTR<3:0> = Fh 000000h 003FFFh Note: TABLE 3-3: 4-Bit Command TBLPTR = TBLPTRU:TBLPTRH:TBLPTRL. WRITE CODE MEMORY CODE SEQUENCE Data Payload Core Instruction Step 1: Direct access to code memory and enable writes. 0000 0000 9C A6 84 A6 BCF BSF EECON1, CFGS EECON1, WREN MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF Write . . Write Write NOP - <Addr[21:16]> TBLPTRU <Addr[15:8]> TBLPTRH <Addr[7:0]> TBLPTRL 2 bytes (First Word) and post-increment address by 2 Step 2: Load write buffer. 0000 0000 0000 0000 0000 0000 1101 . . 1101 1111 0000 0E <Addr[21:16]> 6E F8 0E <Addr[15:8]> 6E F7 0E <Addr[7:0]> 6E F6 <LSB><MSB> . . <LSB><MSB> <LSB><MSB> 00 00 2 bytes (Seventh Word) and post-increment address by 2 2 bytes (Eighth Word) and start programming Hold SCLK high for P9 time To continue writing data, repeat step 2, where the address pointer is incremented by 16 at each iteration of the loop. 2004 Microchip Technology Inc. DS39624A-page 11 PIC18FX410/X490 FIGURE 3-5: PROGRAM CODE MEMORY FLOW Start LoopCount = 0 Configure Device for Writes Addr = 16 x LoopCount Load 16 Bytes to Write Buffer at <Addr> Start Programming Sequence LoopCount = LoopCount + 1 Delay P9 + P10 Time (Hold PGC High for P9 Time and PGC Low for P10 Time) All Locations Done? No Yes Done FIGURE 3-6: TABLE WRITE AND START PROGRAMMING INSTRUCTION TIMING (1111) P10 1 2 3 4 1 2 3 4 5 6 15 16 1 2 3 4 PGC 2 3 P5A P5 PGD 1 P9 1 1 1 1 4-bit Command n n n n n n n n 16-bit Data Payload 0 0 0 0 4-bit Command 0 Programming Time 0 0 16-bit Data Payload PGD = Input DS39624A-page 12 2004 Microchip Technology Inc. PIC18FX410/X490 3.4 ID Location Programming Table 3-4 demonstrates the code sequence required to write the ID locations. The ID locations are programmed much like the code memory. The ID registers are mapped in addresses 200000h through 200007h. These locations read out normally, even after code protection. Note: The Table Pointer must be manually set to 200000h (base address of the ID locations). The post-increment feature of the table read 4-bit command should not be used to increment the Table Pointer to 200000h. After setting the Table Pointer to 200000h, the post-increment feature may be used to increment to 200001h, 200002h and so on. The user only needs to fill the 8-byte data buffer to program the ID locations. TABLE 3-4: 4-Bit Command WRITE ID SEQUENCE Data Payload Core Instruction Step 1: Direct access to code memory. 0000 0000 9C A6 84 A6 BCF BSF EECON1, CFGS EECON1, WREN Step 2: Load write buffer. Panel will be automatically determined by address. 0000 0000 0000 0000 0000 0000 1101 1101 1101 1111 0000 0E 20 6E F8 0E 00 6E F7 0E 00 6E F6 <LSB><MSB> <LSB><MSB> <LSB><MSB> <LSB><MSB> 00 00 2004 Microchip Technology Inc. MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF Write Write Write Write NOP 20h TBLPTRU 00h TBLPTRH 00h TBLPTRL 2 bytes 2 bytes 2 bytes 2 bytes and and and and post-increment address by 2 post-increment address by 2 post-increment address by 2 start programming DS39624A-page 13 PIC18FX410/X490 3.5 Boot Block Programming 3.6 The device PIC18FX410/X490 does not have any Boot Block segment. When the PIC18F8410 device is configured in Microprocessor with Boot Block mode, the locations from 0000h to 07FFh will be internal memory. This memory region is programmed in exactly the same manner as the code memory (see Section 3.3 “Code Memory Programming”). Configuration Bits Programming Unlike code memory, the configuration bits are programmed a byte at a time. The write operation programs only 8 bits of the 16-bit payload written. The LSB of the payload will be written to even addresses and the MSB will be written to odd addresses. The code sequence to program two consecutive configuration locations is shown in Table 3-5. The code sequence detailed in Table 3-3 should be used, except that the address data used in “Step 2” will be in the range of 000000h to 0007FFh. TABLE 3-5: SET ADDRESS POINTER TO CONFIGURATION LOCATION 4-Bit Command Data Payload Core Instruction Step 1: Direct access to config memory. 0000 0000 84 A6 8C A6 BSF BSF EECON1, WREN EECON1, CFGS Step 2: Set Table Pointer for config byte to be written. Write even addresses. 0000 0000 0000 0000 0000 0000 1111 0000 0000 1111 0000 0E 30 6E F8 0E 00 6E F7 0E 00 6E F6 <LSB><MSB ignored> 00 00 2A F6 <LSB ignored><MSB> 00 00 FIGURE 3-7: DS39624A-page 14 MOVLW 30h MOVWF TBLPTRU MOVLW 00h MOVWF TBLPRTH MOVLW 00h MOVWF TBLPTRL Load 2 bytes and start programming NOP - hold PGC high for time P9 INCF TBLPTRL Load 2 bytes and start programming NOP - hold PGC high for time P9 CONFIGURATION PROGRAMMING FLOW Start Start Load Even Configuration Address Load Odd Configuration Address Program LSB Program MSB Hold PGC High for a P9 Time Hold PGC High for a P9 Time Done Done 2004 Microchip Technology Inc. PIC18FX410/X490 4.0 READING THE DEVICE 4.1 Read Code Memory, ID Locations and Configuration Bits The 4-bit command is shifted in LSb first. The read is executed during the next 8 clocks, then shifted out on PGD during the last 8 clocks, LSb to MSb. A delay of P6 must be introduced after the falling edge of the 8th PGC of the operand to allow PGD to transition from an input to an output. During this time, PGC must be held low (see Figure 4-1). This operation also increments the Table Pointer pointer by one, pointing to the next byte in code memory for the next read. Code memory is accessed one byte at a time via the 4-bit command, ‘1001’ (Table Read, post increment). The contents of memory pointed to by the Table Pointer (TBLPTRU:TBLPTRH:TBLPTRL) is serially output on PGD. TABLE 4-1: This technique will work to read any memory in the 000000h to 3FFFFFh address space, so it also applies to the reading of the ID and Configuration registers. READ CODE MEMORY SEQUENCE 4-Bit Command Data Payload Core Instruction Step 1: Direct access to code memory. 0000 8C A6 BCF EECON1, CFGS MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF Addr[21:16] TBLPTRU <Addr[15:8]> TBLPTRH <Addr[7:0]> TBLPTRL Step 1: Set Table Pointer. 0000 0000 0000 0000 0000 0000 0E 6E 0E 6E 0E 6E <Addr[21:16]> F8 <Addr[15:8]> F7 <Addr[7:0]> F6 Step 2: Read memory into Table Latch and then shift out on PGD, LSb to MSb. 1001 00 00 FIGURE 4-1: 1 TBLRD *+ TABLE READ POST INCREMENT INSTRUCTION TIMING (1001) 2 3 4 1 2 3 4 5 6 7 9 8 10 11 12 13 14 15 1 16 2 3 4 PGC P5 P5A P6 P14 PGD 1 0 0 LSb 1 1 2 3 4 5 Shift Data Out PGD = Input 2004 Microchip Technology Inc. PGD = Output 6 MSb n n n n Fetch Next 4-bit Command PGD = Input DS39624A-page 15 PIC18FX410/X490 4.2 Verify Code Memory and ID Locations 4.3 The verify step involves reading back the code memory space and comparing it against the copy held in the programmer’s buffer. Memory reads occur a single byte at a time, so two bytes must be read to compare against the word in the programmer’s buffer. Refer to Section 4.1 “Read Code Memory, ID Locations and Configuration Bits” for implementation details of reading code memory. The Table Pointer must be manually set to 200000h (base address of the ID locations) once the code memory has been verified. The post-increment feature of the table read 4-bit command may not be used to increment the Table Pointer to 200000h. After setting the Table Pointer to 200000h, the post-increment feature may be used to increment to 200001h, 200002h and so on. FIGURE 4-2: Verify Configuration Bits A configuration address may be read and output on PGD via the 4-bit command, 1001. Configuration data is read and written in a byte-wise fashion, so it is not necessary to merge two bytes into a word prior to a compare. The result may then be immediately compared to the appropriate configuration data in the programmer’s memory for verification. Refer to Section 4.1 “Read Code Memory, ID Locations and Configuration Bits” for implementation details of reading configuration data. VERIFY CODE MEMORY AND ID LOCATIONS FLOW Start Set Pointer = 0 Set Pointer = 200000h Read Low Byte Read Low Byte Read High Byte Read High Byte Does Word = Expect Data? No Does Word = Expect Data? Failure, Report Error Yes No All Code Memory Verified? Yes No Failure, Report Error Yes No All ID Locations Verified? Yes Done DS39624A-page 16 2004 Microchip Technology Inc. PIC18FX410/X490 5.0 CONFIGURATION WORD ID be 0Fh. In doing so, if the user code inadvertently tries to execute from the ID space, the ID data will execute as a NOP. The PIC18FX410/X490 devices have several configuration words. These bits can be set or cleared to select various device configurations. All other memory areas should be programmed and verified prior to setting configuration words. These bits may be read out normally, even after read or code-protected. Table 5-2 and Table 5-3 provide information on various configuration bits. 5.1 5.2 Device ID Word The device ID word for the PIC18FX410/X490 is located at 3FFFFEh:3FFFFFh. These bits may be used by the programmer to identify what device type is being programmed and read out normally, even after code or read-protected. ID Locations A user may store identification information (ID) in eight ID locations mapped in 200000h:200007h. It is recommended that the Most Significant nibble of each TABLE 5-1: DEVICE ID VALUES Device ID Value Device Note: DEVID2 DEVID1 PIC18F6410 06h 111x xxxx PIC18F6490 06h 101x xxxx PIC18F8410 06h 110x xxxx PIC18F8490 06h 100x xxxx The ‘x’s in DEVID1 contain the device revision code. TABLE 5-2: PIC18FX410/X490 CONFIGURATION BITS AND DEVICE IDS File Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default/ Unprogrammed Value 300000h CONFIG1L — — — — — — — — ---- ---- 300001h CONFIG1H IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0 00-- 0111 300002h CONFIG2L — — — BORV1 BORV0 BOREN1 BOREN0 PWRTEN ---1 1111 300003h CONFIG2H — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN ---1 1111 WAIT (1) 300004h CONFIG3L BW — — — — PM1 PM0 11-- --11 300005h CONFIG3H MCLRE — — — — LPT1OSC — CCP2MX 1--- -0-1 300006h CONFIG4L DEBUG XINST — — — — — STVREN 10-- ---1 300008h CONFIG5L — — — — — — — CP ---- ---1 300009h CONFIG5H — — — — — — — — ---- ---- 30000Ah CONFIG6L — — — — — — — — ---- ---- 30000Bh CONFIG6H — — — — — — — — ---- ---- 30000Ch CONFIG7L — — — — — — — EBTR ---- ---1 30000Dh CONFIG7H — — — — — — — — ---- ---- 3FFFFEh DEVID1(2) DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 1xxx xxxx 3FFFFFh DEVID2(2) DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 0000 0110 Legend: x = unknown, u = unchanged, - = unimplemented, q = value depends on condition. Shaded cells are unimplemented, read as ‘0’. Unimplemented in PIC18FX490/6410 devices; maintains the default unprogrammed value. DEVIDx registers are read-only and cannot be programmed by the user. Note 1: 2: 2004 Microchip Technology Inc. DS39624A-page 17 PIC18FX410/X490 TABLE 5-3: PIC18FX410/X490 CONFIGURATION BIT DESCRIPTIONS Bit Name Configuration Words Description FOSC3:FOSC0 CONFIG1H Oscillator Selection bits 1111 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1110 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1101 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1100 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1011 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1010 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 1001 = Internal RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ and OSC1 configured as RA7 1000 = Internal RC oscillator w/ OSC2 and OSC1 configured as RA6 and RA7 0111 = External RC oscillator w/ OSC2 configured as RA6 0110 = HS oscillator w/ PLL enabled 0101 = EC w/ OSC2 configured as RA6 0100 = EC w/ OSC2 configured as ‘divide by 4 clock output’ 0011 = External RC oscillator w/ OSC2 configured as ‘divide by 4 clock output’ 0010 = HS oscillator 0001 = XT oscillator 0000 = LP oscillator FCMEN CONFIG1H Fail-Safe Clock Monitor Enable bit 1 = Fail-Safe Clock Monitor enabled 0 = Fail-Safe Clock Monitor disabled IESO CONFIG1H Internal External Switchover Mode Enable bit 1 = Internal External Switchover mode enabled 0 = Internal External Switchover mode disabled PWRTEN CONFIG2L Power-up Timer Enable bit 1 = PWRT disabled 0 = PWRT enabled BOREN1:BOREN0 CONFIG2L Brown-out Reset Enable bits 11 = Brown-out Reset enabled in hardware; RCON<SBOREN> bit disabled 10 = Brown-out Reset enabled only when device is active and disabled in Sleep; RCON<SBOREN> bit disabled 01 = Brown-out Reset is controlled with the RCON<SBOREN> bit setting 00 = Brown-out Reset disabled in hardware; RCON<SBOREN> bit disabled BORV1:BORV0 CONFIG2L Brown-out Reset Voltage bits 11 = VBOR set to 2.0V 10 = VBOR set to 2.7V 01 = VBOR set to 4.2V 00 = VBOR set to 4.5V WDTEN CONFIG2H Watchdog Timer Enable bit 1 = WDT enabled 0 = WDT disabled (control is placed on SWDTEN bit) Note 1: Unimplemented in PIC18F6410/18FX490 devices; maintain this bit set. DS39624A-page 18 2004 Microchip Technology Inc. PIC18FX410/X490 TABLE 5-3: PIC18FX410/X490 CONFIGURATION BIT DESCRIPTIONS (CONTINUED) Bit Name Configuration Words Description WDTPS3:WDTPS0 CONFIG2H Watchdog Timer Postscaler Select bits 1111 = 1:32768 1110 = 1:16384 1101 = 1:8192 1100 = 1:4096 1011 = 1:2048 1010 = 1:1024 1001 = 1:512 1000 = 1:256 0111 = 1:128 0110 = 1:64 0101 = 1:32 0100 = 1:16 0011 = 1:8 0010 = 1:4 0001 = 1:2 0000 = 1:1 PM1:PM0(1) CONFIG3L Processor Mode Select bits 11 = Microcontroller mode 10 = Microprocessor mode 01 = Microprocessor with Boot Block mode 00 = Extended Microcontroller mode BW(1) CONFIG3L Data Bus Width bit 1 = 16-bit External Bus Width mode 0 = 8-bit External Bus Width mode WAIT(1) CONFIG3L External Bus Data Wait Enable bit 1 = Wait selections unavailable 0 = Wait selections determined by WAIT1:WAIT0 bits of MEMCON register CCP2MX CONFIG3H CCP2 MUX bit 1 = CCP2 input/output is multiplexed with RC1 0 = CCP2 input/output is multiplexed with RE7 in Microcontroller mode; CCP2 input/output is multiplexed with RB3 in Microprocessor(1) mode, Extended Microcontroller mode(1) or Microprocessor w/ Boot Block mode(1) LPT1OSC CONFIG3H Low-Power Timer1 Oscillator Enable bit 1 = Timer1 oscillator configured for low-power consumption (lower noise immunity) 0 = Timer1 oscillator configured for higher power consumption (high noise immunity) MCLRE CONFIG3H MCLRE Enable bit 1 = MCLR pin enabled, RG5 disabled 0 = RG5 input pin enabled, MCLR disabled STVREN CONFIG4L Stack Overflow/Underflow Reset Enable bit 1 = Stack overflow/underflow will cause Reset 0 = Stack overflow/underflow will not cause Reset XINST CONFIG4L Enhanced CPU Enable bit 1 = Enhanced CPU enabled 0 = Enhanced CPU disabled Note 1: Unimplemented in PIC18F6410/18FX490 devices; maintain this bit set. 2004 Microchip Technology Inc. DS39624A-page 19 PIC18FX410/X490 TABLE 5-3: Bit Name PIC18FX410/X490 CONFIGURATION BIT DESCRIPTIONS (CONTINUED) Configuration Words Description DEBUG CONFIG4L Background Debugger Enable bit 1 = Background debugger disabled 0 = Background debugger enabled CP CONFIG5L Code Protection bit (code memory area 0000h-3FFFh) 1 = Code memory not code-protected 0 = Code memory code-protected EBTR CONFIG7L Table Read Protection bit (code memory area 0000h-3FFFh) 1 = Code memory not protected from table reads executed in external memory 0 = Code memory protected from table reads executed in external memory DEV10:DEV3 DEVID2 Device ID bits These bits are used with the DEV2:DEV0 bits in the DEVID1 register to identify part number. DEV2:DEV0 DEVID1 Device ID bits These bits are used with the DEV10:DEV3 bits in the DEVID2 register to identify part number. REV4:REV0 DEVID1 These bits are used to indicate the revision of the device. Note 1: Unimplemented in PIC18F6410/18FX490 devices; maintain this bit set. DS39624A-page 20 2004 Microchip Technology Inc. PIC18FX410/X490 5.3 Embedding Configuration Word Information in the HEX File To allow portability of code, a PIC18FX410/X490 device programmer is required to read the configuration word locations from the hex file. If configuration word information is not present in the hex file, then a simple warning message should be issued. Similarly, while saving a hex file, all configuration word information must be included. An option to not include the configuration word information may be provided. When embedding configuration word information in the hex file, it should start at address 300000h. Table 5-4 describes how to calculate the checksum for each device. Note: Microchip Technology Inc. feels strongly that this feature is important for the benefit of the end customer. 5.4 The checksum calculation differs depending on the code-protect setting. Since the code memory locations read out differently, depending on the code-protect setting, the table describes how to manipulate the actual code memory values to simulate the values that would be read from a protected device. When calculating a checksum by reading a device, the entire code memory can simply be read and summed. The configuration word and ID locations can always be read. Checksum Computation The checksum is calculated by summing the following: • The contents of all code memory locations • The configuration word, appropriately masked • ID locations The Least Significant 16 bits of this sum are the checksum. TABLE 5-4: Device PIC18F6410/ PIC18F8410/ PIC18F6490/ PIC18F8490 CHECKSUM COMPUTATION CodeProtect Checksum Blank Value AAh at 0 and Max Address None SUM(0000:3FFF)+(CONFIG1L & 0000)+(CONFIG1H & 00CF)+ (CONFIG2L & 001F)+(CONFIG2H & 001F)+(CONFIG3L & 00C3)+ (CONFIG3H & 0085)+(CONFIG4L & 00C1)+(CONFIG4H & 0000)+ (CONFIG5L & 0001)+(CONFIG5H & 0000)+(CONFIG6L & 0000)+ (CONFIG6H & 0000)+(CONFIG7L & 0001)+(CONFIG7H & 0000) C20C C162 All (CONFIG1L & 0000)+(CONFIG1H & 002F)+ (CONFIG2L & 000F)+(CONFIG2H & 001F)+(CONFIG3L & 0000)+ (CONFIG3H & 0083)+(CONFIG4L & 0085)+(CONFIG4H & 0000)+ (CONFIG5L & 00FF)+(CONFIG5H & 00C0)+(CONFIG6L & 00FF)+ (CONFIG6H & 00E0)+(CONFIG7L & 00FF)+(CONFIG7H & 0040)+ SUM(IDs) 0225 0220 Legend: Item CFGW = SUM[a:b] = SUM_ID = += &= Description Configuration Word Sum of locations, a to b inclusive Byte-wise sum of lower four bits of all customer ID locations Addition Bit-wise AND 2004 Microchip Technology Inc. DS39624A-page 21 PIC18FX410/X490 6.0 AC/DC CHARACTERISTICS TIMING REQUIREMENTS FOR PROGRAM/VERIFY TEST MODE Standard Operating Conditions Operating Temperature: 25°C is recommended Param No. Symbol Characteristic D110 VIHH High-Voltage Programming Voltage on MCLR/VPP D111 VDD Supply Voltage During Programming Min Max Units 10 12 V 2.00 5.50 V Normal Programming 2.75 5.50 V Chip Erase D112 IPP Programming Current on MCLR/VPP — 100 mA D113 IDDP Supply Current During Programming — 1 mA D031 VIL Input Low Voltage VSS 0.2 VDD V D041 VIH Input High Voltage 0.8 VDD VDD V D080 VOL Output Low Voltage — 0.6 V Conditions IOL = 8.5 mA @ 4.5V D090 VOH Output High Voltage VDD – 0.7 — V IOH = -3.0 mA @ 4.5V D012 CIO Capacitive Loading on I/O pin (PGD) — 50 pF To meet AC specifications P1 TR MCLR/VPP Rise Time to enter Program/Verify mode — 1.0 µs (See Note 1) P2 TPGC Serial Clock (PGC) Period P2A TPGCL Serial Clock (PGC) Low Time P2B TPGCH Serial Clock (PGC) High Time P3 TSET1 Input Data Setup Time to Serial Clock ↓ 100 — ns VDD = 5.0 V 1 — µs VDD = 2.0 V 40 — ns VDD = 5.0 V 400 — ns VDD = 2.0 V 40 — ns VDD = 5.0 V 400 — ns VDD = 2.0 V 15 — ns P4 THLD1 Input Data Hold Time from PGC ↓ 15 — ns P5 TDLY1 Delay between 4-bit Command and Command Operand 40 — ns P5A TDLY1A Delay between 4-bit Command Operand and next 4-bit Command 40 — ns P6 TDLY2 Delay between Last PGC ↓ of Command Byte to First PGC ↑ of Read of Data Word 200 — ns P9 TDLY5 PGC High Time (minimum programming time) 2 — ms P10 TDLY6 PGC Low Time after Programming (high-voltage discharge time) 120 — µs P11 TDLY7 Delay to allow Self-Timed Data Write or Chip Erase to occur 30 — ms P12 THLD2 Input Data Hold Time from MCLR/VPP ↑ 2 — µs P13 TSET2 VDD ↑ Setup Time to MCLR/VPP ↑ 100 — ns P14 TVALID Data Out Valid from PGC ↑ 10 — ns Note 1: Do not allow excess time when transitioning MCLR between VIL and VIHH; this can cause spurious program executions to occur. The maximum transition time is: 1 TCY + TPWRT (if enabled) + 1024 TOSC (for LP, HS, HS/PLL and XT modes only) + 2 ms (for HS/PLL mode only) + 1.5 µs (for EC mode only) where TCY is the Instruction Cycle Time, TPWRT is the Power-up Timer Period and TOSC is the Oscillator Period. For specific values, refer to the Electrical Characteristics section of the Device Data Sheet for the particular device. DS39624A-page 22 2004 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 intended through suggestion only and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. No 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. No licenses are conveyed, implicitly or otherwise, under any intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, Accuron, dsPIC, KEELOQ, MPLAB, PIC, PICmicro, PICSTART, PRO MATE and PowerSmart are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. AmpLab, FilterLab, microID, MXDEV, MXLAB, PICMASTER, SEEVAL, SmartShunt and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. Application Maestro, dsPICDEM, dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, Migratable Memory, MPASM, MPLIB, MPLINK, MPSIM, PICkit, PICDEM, PICDEM.net, PICtail, PowerCal, PowerInfo, PowerMate, PowerTool, rfLAB, rfPIC, Select Mode, SmartSensor, SmartTel and Total Endurance are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. Serialized Quick Turn Programming (SQTP) is a service mark of Microchip Technology Incorporated in the U.S.A. All other trademarks mentioned herein are property of their respective companies. © 2004, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. Microchip received ISO/TS-16949:2002 quality system certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona and Mountain View, California in October 2003. The Company’s quality system processes and procedures are for its PICmicro® 8-bit MCUs, 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. DS39624A-page 23 2004 Microchip Technology Inc. WORLDWIDE SALES AND SERVICE AMERICAS China - Beijing Korea Corporate Office Unit 706B Wan Tai Bei Hai Bldg. No. 6 Chaoyangmen Bei Str. Beijing, 100027, China Tel: 86-10-85282100 Fax: 86-10-85282104 168-1, Youngbo Bldg. 3 Floor Samsung-Dong, Kangnam-Ku Seoul, Korea 135-882 Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 China - Chengdu 200 Middle Road #07-02 Prime Centre Singapore, 188980 Tel: 65-6334-8870 Fax: 65-6334-8850 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: 480-792-7627 Web Address: http://www.microchip.com 3780 Mansell Road, Suite 130 Alpharetta, GA 30022 Tel: 770-640-0034 Fax: 770-640-0307 Rm. 2401-2402, 24th Floor, Ming Xing Financial Tower No. 88 TIDU Street Chengdu 610016, China Tel: 86-28-86766200 Fax: 86-28-86766599 Boston China - Fuzhou 2 Lan Drive, Suite 120 Westford, MA 01886 Tel: 978-692-3848 Fax: 978-692-3821 Unit 28F, World Trade Plaza No. 71 Wusi Road Fuzhou 350001, China Tel: 86-591-7503506 Fax: 86-591-7503521 Atlanta 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 75001 Tel: 972-818-7423 Fax: 972-818-2924 Detroit Tri-Atria Office Building 32255 Northwestern Highway, Suite 190 Farmington Hills, MI 48334 Tel: 248-538-2250 Fax: 248-538-2260 Kokomo 2767 S. Albright Road Kokomo, IN 46902 Tel: 765-864-8360 Fax: 765-864-8387 Los Angeles 18201 Von Karman, Suite 1090 Irvine, CA 92612 Tel: 949-263-1888 Fax: 949-263-1338 San Jose 1300 Terra Bella Avenue Mountain View, CA 94043 Tel: 650-215-1444 Fax: 650-961-0286 Toronto 6285 Northam Drive, Suite 108 Mississauga, Ontario L4V 1X5, Canada Tel: 905-673-0699 Fax: 905-673-6509 ASIA/PACIFIC Australia Suite 22, 41 Rawson Street Epping 2121, NSW Australia Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Hong Kong SAR Unit 901-6, Tower 2, Metroplaza 223 Hing Fong Road Kwai Fong, N.T., Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 Singapore Taiwan Kaohsiung Branch 30F - 1 No. 8 Min Chuan 2nd Road Kaohsiung 806, Taiwan Tel: 886-7-536-4818 Fax: 886-7-536-4803 Taiwan Taiwan Branch 11F-3, No. 207 Tung Hua North Road Taipei, 105, Taiwan Tel: 886-2-2717-7175 Fax: 886-2-2545-0139 EUROPE China - Shanghai Austria Room 701, Bldg. B Far East International Plaza No. 317 Xian Xia Road Shanghai, 200051 Tel: 86-21-6275-5700 Fax: 86-21-6275-5060 Durisolstrasse 2 A-4600 Wels Austria Tel: 43-7242-2244-399 Fax: 43-7242-2244-393 Denmark China - Shenzhen Regus Business Centre Lautrup hoj 1-3 Ballerup DK-2750 Denmark Tel: 45-4420-9895 Fax: 45-4420-9910 Rm. 1812, 18/F, Building A, United Plaza No. 5022 Binhe Road, Futian District Shenzhen 518033, China Tel: 86-755-82901380 Fax: 86-755-8295-1393 China - Shunde Room 401, Hongjian Building, No. 2 Fengxiangnan Road, Ronggui Town, Shunde District, Foshan City, Guangdong 528303, China Tel: 86-757-28395507 Fax: 86-757-28395571 China - Qingdao Rm. B505A, Fullhope Plaza, No. 12 Hong Kong Central Rd. Qingdao 266071, China Tel: 86-532-5027355 Fax: 86-532-5027205 India Divyasree Chambers 1 Floor, Wing A (A3/A4) No. 11, O’Shaugnessey Road Bangalore, 560 025, India Tel: 91-80-2290061 Fax: 91-80-2290062 Japan 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 France 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 Steinheilstrasse 10 D-85737 Ismaning, Germany Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Italy Via Quasimodo, 12 20025 Legnano (MI) Milan, Italy Tel: 39-0331-742611 Fax: 39-0331-466781 Netherlands P. A. De Biesbosch 14 NL-5152 SC Drunen, Netherlands Tel: 31-416-690399 Fax: 31-416-690340 United Kingdom 505 Eskdale Road Winnersh Triangle Wokingham Berkshire, England RG41 5TU Tel: 44-118-921-5869 Fax: 44-118-921-5820 01/26/04 DS39624A-page 24 2004 Microchip Technology Inc.