Fiche De DonnéesTable des matièresLCD Driver and Keypad Interface Features:3Low-Power Features:3Flexible Oscillator Structure:3Peripheral Highlights:3Special Microcontroller Features:3Special Microcontroller Features (Continued):4Pin Diagrams – PIC18F6XJ905Pin Diagrams – PIC18F8XJ906Table of Contents7Most Current Data Sheet8Errata8Customer Notification System81.0 Device Overview91.1 Core Features91.1.1 nanoWatt Technology91.1.2 Oscillator Options and Features91.1.3 Memory Options91.1.4 Extended Instruction Set91.1.5 Easy Migration91.2 LCD Driver101.3 Other Special Features101.4 Details on Individual Family Members10TABLE 1-1: Device Features for the PIC18F6XJ90 (64-pin Devices)11TABLE 1-2: Device Features for the PIC18F8XJ90 (80-pin Devices)11FIGURE 1-1: PIC18F6XJ90 (64-pin) Block Diagram12FIGURE 1-2: PIC18F8XJ90 (80-pin) Block Diagram13TABLE 1-3: PIC18F6XJ90 Pinout I/O Descriptions14TABLE 1-4: PIC18F8XJ90 Pinout I/O Descriptions212.0 Guidelines for Getting Started with PIC18FJ Microcontrollers312.1 Basic Connection Requirements31FIGURE 2-1: Recommended Minimum connections312.2 Power Supply Pins322.3 Master Clear (MCLR) Pin32FIGURE 2-2: Example of MCLR Pin Connections322.4 Voltage Regulator Pins (ENVREG and Vcap/Vddcore)33FIGURE 2-3: Frequency vs. ESR Performance for Suggested Vcap332.5 ICSP Pins332.6 External Oscillator Pins342.7 Unused I/Os34FIGURE 2-4: Suggested Placement of the Oscillator Circuit343.0 Oscillator Configurations353.1 Oscillator Types35FIGURE 3-1: PIC18F87J90 Family Clock Diagram353.2 Control Registers36Register 3-1: OSCCON: Oscillator Control Register36Register 3-2: OSCTUNE: Oscillator Tuning Register373.3 Clock Sources and Oscillator Switching373.3.1 Clock Source Selection383.3.2 Oscillator Transitions383.4 External Oscillator Modes393.4.1 Crystal Oscillator/Ceramic Resonators (HS Modes)39TABLE 3-1: Capacitor Selection for Ceramic Resonators39TABLE 3-2: Capacitor Selection for Crystal Oscillator39FIGURE 3-2: Crystal/Ceramic Resonator Operation (HS or HSPLL Configuration)393.4.2 External Clock Input (EC Modes)40FIGURE 3-3: External Clock Input Operation (EC Configuration)40FIGURE 3-4: External Clock Input Operation (HS OSC Configuration)403.4.3 PLL Frequency Multiplier40FIGURE 3-5: PLL Block Diagram403.5 Internal Oscillator Block413.5.1 INTIO Modes41FIGURE 3-6: INTIO1 Oscillator Mode41FIGURE 3-7: INTIO2 Oscillator Mode413.5.2 INTPLL Modes413.5.3 Internal Oscillator Output Frequency and Tuning423.5.4 INTOSC Frequency Drift423.6 Effects of Power-Managed Modes on the Various Clock Sources433.7 Power-up Delays43TABLE 3-3: OSC1 and OSC2 Pin States in Sleep Mode434.0 Power-Managed Modes454.1 Selecting Power-Managed Modes454.1.1 Clock Sources454.1.2 Entering Power-Managed Modes45TABLE 4-1: Power-Managed Modes454.1.3 Clock Transitions and Status Indicators464.1.4 Multiple Sleep Commands464.2 Run Modes464.2.1 PRI_RUN Mode464.2.2 SEC_RUN Mode46FIGURE 4-1: Transition Timing for Entry to SEC_RUN Mode47FIGURE 4-2: Transition Timing From SEC_RUN Mode to PRI_RUN Mode (HSPLL)474.2.3 RC_RUN Mode48FIGURE 4-3: Transition Timing to RC_RUN Mode48FIGURE 4-4: Transition Timing From RC_RUN Mode to PRI_RUN Mode484.3 Sleep Mode494.4 Idle Modes49FIGURE 4-5: Transition Timing for Entry to Sleep Mode49FIGURE 4-6: Transition Timing for Wake From Sleep (HSPLL)494.4.1 PRI_IDLE Mode504.4.2 SEC_IDLE Mode50FIGURE 4-7: Transition Timing for Entry to Idle Mode50FIGURE 4-8: Transition Timing for Wake From Idle to Run Mode504.4.3 RC_IDLE Mode514.5 Exiting Idle and Sleep Modes514.5.1 Exit By Interrupt514.5.2 Exit By WDT Time-out514.5.3 Exit By Reset514.5.4 Exit Without an Oscillator Start-up Delay515.0 Reset535.1 RCON Register53FIGURE 5-1: Simplified Block Diagram of On-Chip Reset Circuit53Register 5-1: RCON: Reset Control Register545.2 Master Clear (MCLR)555.3 Power-on Reset (POR)555.4 Brown-out Reset (BOR)55FIGURE 5-2: External Power-on Reset Circuit (for Slow Vdd Power-up)555.4.1 Detecting BOR555.5 Configuration Mismatch (CM)555.6 Power-up Timer (PWRT)565.6.1 Time-out Sequence56FIGURE 5-3: Time-out Sequence on Power-up (MCLR Tied to Vdd, Vdd Rise < Tpwrt)56FIGURE 5-4: Time-out Sequence on Power-up (MCLR Not Tied to Vdd): Case 156FIGURE 5-5: Time-out Sequence on Power-up (MCLR Not Tied to Vdd): Case 257FIGURE 5-6: Slow Rise Time (MCLR Tied to Vdd, Vdd Rise > Tpwrt)575.7 Reset State of Registers58TABLE 5-1: Status Bits, Their Significance and the Initialization Condition for RCON Register58TABLE 5-2: Initialization Conditions for All Registers596.0 Memory Organization656.1 Program Memory Organization65FIGURE 6-1: Memory Maps for PIC18F87J90 Family Devices656.1.1 Hard Memory Vectors66FIGURE 6-2: Hard Vector and Configuration Word Locations for PIC18F87J90 Family Family Devices666.1.2 Flash Configuration Words66TABLE 6-1: Flash Configuration Word for PIC18F87J90 Family Devices666.1.3 Program Counter676.1.4 Return Address Stack67FIGURE 6-3: Return Address Stack and Associated Registers67Register 6-1: STKPTR: Stack Pointer Register686.1.5 Fast Register Stack69EXAMPLE 6-1: Fast Register Stack Code Example696.1.6 Look-up Tables in Program Memory69EXAMPLE 6-2: Computed GOTO Using an Offset Value696.2 PIC18 Instruction Cycle706.2.1 Clocking Scheme706.2.2 Instruction Flow/Pipelining70FIGURE 6-4: Clock/ Instruction Cycle70EXAMPLE 6-3: Instruction Pipeline Flow706.2.3 Instructions in Program Memory71FIGURE 6-5: Instructions in Program Memory716.2.4 Two-Word Instructions71EXAMPLE 6-4: Two-Word Instructions716.3 Data Memory Organization726.3.1 Bank Select Register72FIGURE 6-6: Data Memory Map for PIC18FX6J90 and PIC18FX7J90 Devices73FIGURE 6-7: Use of the Bank Select Register (Direct Addressing)746.3.2 Access Bank746.3.3 General Purpose Register File746.3.4 Special Function Registers75TABLE 6-2: Special Function Register Map for PIC18F87J90 Family Devices75TABLE 6-3: PIC18F87J90 Family Register File Summary766.3.5 STATUS Register81Register 6-2: Status Register816.4 Data Addressing Modes826.4.1 Inherent and Literal Addressing826.4.2 Direct Addressing826.4.3 Indirect Addressing82EXAMPLE 6-5: How to Clear RAM (Bank 1) Using Indirect Addressing82FIGURE 6-8: Indirect Addressing836.5 Program Memory and the Extended Instruction Set846.6 Data Memory and the Extended Instruction Set856.6.1 Indexed Addressing with Literal Offset856.6.2 Instructions Affected By Indexed Literal Offset Mode85FIGURE 6-9: Comparing Addressing Options for Bit-Oriented and Byte-Oriented Instructions (Extended Instruction Set Enabled)866.6.3 Mapping the Access Bank in Indexed Literal Offset Mode876.6.4 BSR in Indexed Literal Offset Mode87FIGURE 6-10: Remapping the Access Bank with Indexed Literal Offset Addressing877.0 Flash Program Memory897.1 Table Reads and Table Writes89FIGURE 7-1: TABLE READ Operation89FIGURE 7-2: Table Write Operation907.2 Control Registers907.2.1 EECON1 and EECON2 Registers90Register 7-1: EECON1: EEPROM Control Register 1917.2.2 Table Latch Register (TABLAT)927.2.3 Table Pointer Register (TBLPTR)927.2.4 Table Pointer Boundaries92TABLE 7-1: Table Pointer Operations with TBLRD and TBLWT Instructions92FIGURE 7-3: Table Pointer Boundaries Based on Operation927.3 Reading the Flash Program Memory93FIGURE 7-4: Reads from Flash Program Memory93EXAMPLE 7-1: Reading a Flash Program Memory Word937.4 Erasing Flash Program Memory947.4.1 Flash Program Memory Erase Sequence94EXAMPLE 7-2: Erasing Flash Program Memory947.5 Writing to Flash Program Memory95FIGURE 7-5: Table Writes to Flash Program Memory957.5.1 Flash Program Memory Write Sequence95EXAMPLE 7-3: Writing to Flash Program Memory967.5.2 FLASH PROGRAM MEMORY WRITE SEQUENCE (WORD PROGRAMMING).97EXAMPLE 7-4: SINGLE-WORD WRITE TO FLASH PROGRAM MEMORY977.5.3 Write Verify987.5.4 Unexpected Termination of Write Operation987.6 Flash Program Operation During Code Protection98TABLE 7-2: Registers Associated with Program Flash Memory988.0 8 X 8 Hardware Multiplier998.1 Introduction998.2 Operation99EXAMPLE 8-1: 8 x 8 Unsigned Multiply Routine99EXAMPLE 8-2: 8 x 8 Signed Multiply Routine99TABLE 8-1: Performance Comparison for Various Multiply Operations99EQUATION 8-1: 16 x 16 Unsigned Multiplication Algorithm100EXAMPLE 8-3: 16 x 16 Unsigned Multiply Routine100EQUATION 8-2: 16 x 16 Signed Multiplication Algorithm100EXAMPLE 8-4: 16 x 16 Signed Multiply Routine1009.0 Interrupts101FIGURE 9-1: PIC18F87J90 Family Interrupt Logic1029.1 INTCON Registers103Register 9-1: INTCON: Interrupt Control Register103Register 9-2: INTCON2: Interrupt Control Register 2104Register 9-3: INTCON3: Interrupt Control Register 31059.2 PIR Registers106Register 9-4: PIR1: Peripheral Interrupt Request (Flag) Register 1106Register 9-5: PIR2: Peripheral Interrupt Request (Flag) Register 2107Register 9-6: PIR3: Peripheral Interrupt Request (Flag) Register 31089.3 PIE Registers109Register 9-7: PIE1: Peripheral Interrupt Enable Register 1109Register 9-8: PIE2: Peripheral Interrupt Enable Register 2110Register 9-9: PIE3: Peripheral Interrupt Enable Register 31119.4 IPR Registers112Register 9-10: IPR1: Peripheral Interrupt Priority Register 1112Register 9-11: IPR2: Peripheral Interrupt Priority Register 2113Register 9-12: IPR3: Peripheral Interrupt Priority Register 31149.5 RCON Register115Register 9-13: RCON: Reset Control Register1159.6 INTx Pin Interrupts1169.7 TMR0 Interrupt1169.8 PORTB Interrupt-on-Change1169.9 Context Saving During Interrupts116EXAMPLE 9-1: Saving STATUS, WREG and BSR Registers in RAM11610.0 I/O Ports117FIGURE 10-1: Generic I/O Port Operation11710.1 I/O Port Pin Capabilities11710.1.1 Input Pins and Voltage Considerations117TABLE 10-1: Input Voltage Tolerance11710.1.2 Pin Output Drive117TABLE 10-2: Output Drive Levels for Various ports11810.1.3 Pull-up Configuration11810.1.4 Open-Drain OUTPUTs118FIGURE 10-2: Using the Open-Drain Output (USART Shown as Example)11810.2 PORTA, TRISA and LATA Registers118EXAMPLE 10-1: Initializing PORTA118TABLE 10-3: PORTA Functions119TABLE 10-4: Summary of Registers Associated with PORTA11910.3 PORTB, TRISB and LATB Registers120EXAMPLE 10-2: Initializing PORTB120TABLE 10-5: PORTB Functions121TABLE 10-6: Summary of Registers Associated with PORTB12210.4 PORTC, TRISC and LATC Registers123EXAMPLE 10-3: Initializing PORTC123TABLE 10-7: PORTC Functions124TABLE 10-8: Summary of Registers Associated with PORTC12510.5 PORTD, TRISD and LATD Registers126EXAMPLE 10-4: Initializing PORTD126TABLE 10-9: PORTD Functions127TABLE 10-10: Summary of Registers Associated with PORTD12710.6 PORTE, TRISE and LATE Registers128TABLE 10-11: PORTE Pins Available in Different LCD Drive Configurations128EXAMPLE 10-5: Initializing PORTE128TABLE 10-12: PORTE Functions129TABLE 10-13: Summary of Registers Associated with PORTE12910.7 PORTF, LATF and TRISF Registers130EXAMPLE 10-6: Initializing PORTF130TABLE 10-14: PORTF Functions131TABLE 10-15: Summary of Registers Associated with PORTF13210.8 PORTG, TRISG and LATG Registers133EXAMPLE 10-7: Initializing PORTG133TABLE 10-16: PORTG Functions134TABLE 10-17: Summary of Registers Associated with PORTG13410.9 PORTH, LATH and TRISH Registers135EXAMPLE 10-8: Initializing PORTH135TABLE 10-18: PORTH Functions136TABLE 10-19: Summary of Registers Associated with PORTH13610.10 PORTJ, TRISJ and LATJ Registers137EXAMPLE 10-9: Initializing PORTJ137TABLE 10-20: PORTJ Functions138TABLE 10-21: Summary of Registers Associated with PORTJ13811.0 Timer0 Module139Register 11-1: T0CON: Timer0 Control Register13911.1 Timer0 Operation14011.2 Timer0 Reads and Writes in 16-Bit Mode140FIGURE 11-1: Timer0 Block Diagram (8-Bit Mode)140FIGURE 11-2: Timer0 Block Diagram (16-Bit Mode)14011.3 Prescaler14111.3.1 Switching Prescaler Assignment14111.4 Timer0 Interrupt141TABLE 11-1: Registers Associated with Timer014112.0 Timer1 Module143Register 12-1: T1CON: Timer1 Control Register14312.1 Timer1 Operation144FIGURE 12-1: Timer1 Block Diagram (8-Bit Mode)144FIGURE 12-2: Timer1 Block Diagram (16-Bit Read/Write Mode)14412.2 Timer1 16-Bit Read/Write Mode14512.3 Timer1 Oscillator145FIGURE 12-3: External Components for the Timer1 LP Oscillator145TABLE 12-1: Capacitor Selection for the Timer1 Oscillator(2,3,4)14512.3.1 Using Timer1 as a Clock Source14512.3.2 Timer1 Oscillator Layout Considerations146FIGURE 12-4: Oscillator Circuit with Grounded Guard Ring14612.4 Timer1 Interrupt14612.5 Resetting Timer1 Using the CCP Special Event Trigger14612.6 Using Timer1 as a Real-Time Clock146EXAMPLE 12-1: Implementing a Real-Time Clock Using a Timer1 Interrupt Service147TABLE 12-2: Registers Associated with Timer1 as a Timer/Counter14713.0 Timer2 Module14913.1 Timer2 Operation149Register 13-1: T2CON: Timer2 Control Register14913.2 Timer2 Interrupt15013.3 Timer2 Output150FIGURE 13-1: Timer2 Block Diagram150TABLE 13-1: Registers Associated with Timer2 as a Timer/Counter15014.0 Timer3 Module151Register 14-1: T3CON: Timer3 Control Register15114.1 Timer3 Operation152FIGURE 14-1: Timer3 Block Diagram (8-Bit Mode)152FIGURE 14-2: Timer3 Block Diagram (16-Bit Read/Write Mode)15214.2 Timer3 16-Bit Read/Write Mode15314.3 Using the Timer1 Oscillator as the Timer3 Clock Source15314.4 Timer3 Interrupt15314.5 Resetting Timer3 Using the CCP Special Event Trigger153TABLE 14-1: Registers Associated with Timer3 as a Timer/Counter15315.0 Real-Time Clock and Calendar (RTCC)155FIGURE 15-1: RTCC Block Diagram15515.1 RTCC Module Registers156RTCC Control Registers156RTCC Value Registers156Alarm Value Registers15615.1.1 RTCC Control Registers157Register 15-1: RTCCFG: RTCC Configuration Register(1)157Register 15-2: RTCCAL: RTCC Calibration Register158Register 15-3: PADCFG1: Pad Configuration Register158Register 15-4: ALRMCFG: Alarm Configuration Register159Register 15-5: ALRMRPT: Alarm Repeat Register16015.1.2 RTCVALH and RTCVALL Register Mappings160Register 15-6: Reserved Register160Register 15-7: Year: Year Value Register(1)160Register 15-8: MontH: Month Value Register(1)161Register 15-9: Day: Day Value Register(1)161Register 15-10: Weekday: Weekday Value Register(1)161Register 15-11: Hour: Hour Value Register(1)162Register 15-12: MINUTE: Minute Value Register162Register 15-13: SECOND: Second Value Register16215.1.3 ALRMVALH and ALRMVALL Register Mappings163Register 15-14: ALRMMNTH: Alarm Month Value Register(1)163Register 15-15: ALRMDAY: Alarm Day Value Register(1)163Register 15-16: ALRMWd: Alarm Weekday Value Register(1)163Register 15-17: ALRMHr: Alarm Hours Value Register(1)164Register 15-18: ALRMMIN: Alarm Minutes Value Register164Register 15-19: ALRMSEC: Alarm Seconds Value Register16415.1.4 RTCEN Bit Write16515.2 Operation16515.2.1 Register Interface165FIGURE 15-2: Timer Digit Format165FIGURE 15-3: Alarm Digit Format16515.2.2 Clock Source166FIGURE 15-4: Clock Source Multiplexing16615.2.3 Digit Carry Rules166TABLE 15-1: Day of Week Schedule166TABLE 15-2: Day to Month Rollover Schedule16615.2.4 Leap Year16715.2.5 General Functionality16715.2.6 Safety Window for Register Reads and Writes16715.2.7 Write Lock167EXAMPLE 15-1: Setting the RTCWREN Bit16715.2.8 Register Mapping167TABLE 15-3: RTCVALH and RTCVALL Register Mapping167TABLE 15-4: ALRMVAL Register Mapping16815.2.9 Calibration168EQUATION 15-1: Converting Error, Clock Pulses16815.3 Alarm16815.3.1 Configuring the Alarm168FIGURE 15-5: Alarm Mask Settings16915.3.2 Alarm Interrupt169FIGURE 15-6: Timer Pulse Generation17015.4 Sleep Mode17015.5 Reset17015.5.1 Device Reset17015.5.2 Power-on Reset (POR)17015.6 Register Maps171TABLE 15-5: RTCC Control Registers171TABLE 15-6: RTCC Value Registers171TABLE 15-7: Alarm Value Registers17116.0 Capture/Compare/PWM (CCP) Modules173Register 16-1: CCPxCON: CCPx Control Register (CCP1, CCP2 Modules)17316.1 CCP Module Configuration17416.1.1 CCP Modules and Timer Resources174TABLE 16-1: CCP Mode – Timer Resource17416.1.2 Open-Drain Output Option17416.1.3 CCP2 Pin Assignment174FIGURE 16-1: CCP and Timer Interconnect Configurations174TABLE 16-2: Interactions Between CCP1 and CCP2 for Timer Resources17516.2 Capture Mode17616.2.1 CCP Pin Configuration17616.2.2 Timer1/Timer3 Mode Selection17616.2.3 Software Interrupt17616.2.4 CCP Prescaler176EXAMPLE 16-1: Changing Between Capture Prescalers176FIGURE 16-2: Capture Mode Operation Block Diagram17616.3 Compare Mode17716.3.1 CCP Pin Configuration17716.3.2 Timer1/Timer3 Mode Selection17716.3.3 Software Interrupt Mode17716.3.4 Special Event Trigger177FIGURE 16-3: Compare Mode Operation Block Diagram177TABLE 16-3: Registers Associated with Capture, Compare, Timer1 and Timer317816.4 PWM Mode179FIGURE 16-4: Simplified PWM Block Diagram179FIGURE 16-5: PWM Output17916.4.1 PWM Period179EQUATION 16-1:17916.4.2 PWM Duty Cycle180EQUATION 16-2:180EQUATION 16-3:180TABLE 16-4: Example PWM Frequencies and Resolutions at 40 MHz18016.4.3 Setup for PWM Operation181TABLE 16-5: Registers Associated with PWM and Timer218117.0 Liquid Crystal Display (LCD) Driver Module183FIGURE 17-1: LCD Driver Module Block Diagram18317.1 LCD Registers18417.1.1 LCD Control Registers184Register 17-1: LCDCON: LCD Control Register184Register 17-2: LCDPS: LCD Phase Register185Register 17-3: LCDSEx: LCD Segment Enable Registers186TABLE 17-1: LCDSE Registers and Associated Segments18617.1.2 LCD Data Registers187Register 17-4: LCDDATAx: LCD Data Registers187TABLE 17-2: LCDDATA Registers and Bits for Segment and COM Combinations18717.2 LCD Clock Source18817.2.1 LCD Voltage Regulator Clock Source18817.2.2 Clock sOURCE cONSIDERATIONS188FIGURE 17-2: LCD Clock Generation18817.3 LCD Bias Generation18917.3.1 LCD Bias Types18917.3.2 LCD Voltage Regulator189Register 17-5: LCDREG: Voltage Regulator Control Register18917.3.3 Bias Configurations190FIGURE 17-3: LCD Regulator connections for M0 and M1 Configurations190FIGURE 17-4: Resistor ladder Connections for M2 configuration191FIGURE 17-5: Resistor ladder Connections for M3 configuration19217.3.4 Design Considerations for The LCD Charge Pump193EQUATION 17-1:19317.4 LCD Multiplex Types193TABLE 17-3: PORTE<6:4> Function19317.5 Segment Enables19317.6 Pixel Control19317.7 LCD Frame Frequency194TABLE 17-4: Frame Frequency Formulas194TABLE 17-5: Approximate Frame Frequency (in Hz) for LP Prescaler Settings19417.8 LCD Waveform Generation194FIGURE 17-6: Type-A/Type-B Waveforms in Static Drive195FIGURE 17-7: Type-A Waveforms in 1/2 MUX, 1/2 Bias Drive196FIGURE 17-8: Type-B Waveforms in 1/2 MUX, 1/2 Bias Drive197FIGURE 17-9: Type-A Waveforms in 1/2 MUX, 1/3 Bias Drive198FIGURE 17-10: Type-B Waveforms in 1/2 MUX, 1/3 Bias Drive199FIGURE 17-11: Type-A Waveforms in 1/3 MUX, 1/2 Bias Drive200FIGURE 17-12: Type-B Waveforms in 1/3 MUX, 1/2 Bias Drive201FIGURE 17-13: Type-A Waveforms in 1/3 MUX, 1/3 Bias Drive202FIGURE 17-14: Type-B Waveforms in 1/3 MUX, 1/3 Bias Drive203FIGURE 17-15: Type-A Waveforms in 1/4 MUX, 1/3 Bias Drive204FIGURE 17-16: Type-B Waveforms in 1/4 MUX, 1/3 Bias Drive20517.9 LCD Interrupts206FIGURE 17-17: Example Waveforms and Interrupt Timing in Quarter Duty Cycle Drive20617.10 Operation During Sleep20717.10.1 Using the LCD Regulator During Sleep207FIGURE 17-18: Sleep Entry/Exit When SLPEN = 1 or CS<1:0> = 0020717.11 Configuring the LCD Module208TABLE 17-6: Registers Associated with LCD Operation20918.0 Master Synchronous Serial Port (MSSP) Module21118.1 Master SSP (MSSP) Module Overview21118.2 Control Registers21118.3 SPI Mode211FIGURE 18-1: MSSP Block Diagram (SPI Mode)21118.3.1 Registers212Register 18-1: SSPSTAT: MSSP Status Register (SPI Mode)212Register 18-2: SSPCON1: MSSP Control Register 1 (SPI Mode)21318.3.2 Operation214EXAMPLE 18-1: Loading the SSPBUF (SSPSR) Register21418.3.3 Enabling SPI I/O21518.3.4 Open-Drain Output Option21518.3.5 Typical Connection215FIGURE 18-2: SPI Master/Slave Connection21518.3.6 Master Mode216FIGURE 18-3: SPI Mode Waveform (Master Mode)21618.3.7 Slave Mode21718.3.8 Slave Select Synchronization217FIGURE 18-4: Slave Synchronization Waveform217FIGURE 18-5: SPI Mode Waveform (Slave Mode with CKE = 0)218FIGURE 18-6: SPI Mode Waveform (Slave Mode with CKE = 1)21818.3.9 Operation in Power-Managed Modes21918.3.10 Effects of a Reset21918.3.11 Bus Mode Compatibility219TABLE 18-1: SPI Bus Modes219TABLE 18-2: Registers Associated with SPI Operation21918.4 I2C Mode220FIGURE 18-7: MSSP Block Diagram (I2C™ Mode)22018.4.1 Registers220Register 18-3: SSPSTAT: MSSP Status Register (I2C™ Mode)221Register 18-4: SSPCON1: MSSP Control Register 1 (I2C™ Mode)222Register 18-5: SSPCON2: MSSP Control Register 2 (I2C™ Master Mode)223Register 18-6: SSPCON2: MSSP Control Register 2 (I2C™ Slave Mode)22418.4.2 Operation22518.4.3 Slave Mode225EXAMPLE 18-2: Address Masking Examples226FIGURE 18-8: I2C™ Slave Mode Timing with SEN = 0 (Reception, 7-bit Addressing)228FIGURE 18-9: I2C™ Slave Mode Timing with SEN = 0 and ADMSK<5:1> = 01011 (Reception, 7-bit Addressing)229FIGURE 18-10: I2C™ Slave Mode Timing (Transmission, 7-bit Addressing)230FIGURE 18-11: I2C™ Slave Mode Timing with SEN = 0 (Reception, 10-bit Addressing)231FIGURE 18-12: I2C™ Slave Mode Timing with SEN = 0 and ADMSK<5:1> = 01001 (Reception, 10-bit Addressing)232FIGURE 18-13: I2C™ Slave Mode Timing (Transmission, 10-bit Addressing)23318.4.4 Clock Stretching234FIGURE 18-14: Clock Synchronization Timing235FIGURE 18-15: I2C™ Slave Mode Timing with SEN = 1 (Reception, 7-bit Addressing)236FIGURE 18-16: I2C™ Slave Mode Timing with SEN = 1 (Reception, 10-bit Addressing)23718.4.5 General Call Address Support238FIGURE 18-17: Slave Mode General Call Address Sequence (7 or 10-bit Addressing Mode)23818.4.6 Master Mode239FIGURE 18-18: MSSP Block Diagram (I2C™ Master Mode)23918.4.7 Baud Rate241FIGURE 18-19: Baud Rate Generator Block Diagram241TABLE 18-3: I2C™ Clock Rate w/BRG241FIGURE 18-20: Baud Rate Generator Timing with Clock Arbitration24218.4.8 I2C Master Mode Start Condition Timing243FIGURE 18-21: First Start Bit Timing24318.4.9 I2C Master Mode Repeated Start Condition Timing244FIGURE 18-22: Repeated Start Condition Waveform24418.4.10 I2C Master Mode Transmission24518.4.11 I2C Master Mode Reception245FIGURE 18-23: I2C™ Master Mode Waveform (Transmission, 7 or 10-bit Addressing)246FIGURE 18-24: I2C™ Master Mode Waveform (Reception, 7-bit Addressing)24718.4.12 Acknowledge Sequence Timing24818.4.13 Stop Condition Timing248FIGURE 18-25: Acknowledge Sequence Waveform248FIGURE 18-26: Stop Condition Receive or Transmit Mode24818.4.14 Sleep Operation24918.4.15 Effects of a Reset24918.4.16 Multi-Master Mode24918.4.17 Multi -Master Communication, Bus Collision and Bus Arbitration249FIGURE 18-27: Bus Collision Timing for Transmit and Acknowledge249FIGURE 18-28: Bus Collision During Start Condition (SDA Only)250FIGURE 18-29: Bus Collision During Start Condition (SCL = 0)251FIGURE 18-30: BRG Reset Due to SDA Arbitration During Start Condition251FIGURE 18-31: Bus Collision During a Repeated Start Condition (Case 1)252FIGURE 18-32: Bus Collision During Repeated Start Condition (Case 2)252FIGURE 18-33: Bus Collision During a Stop Condition (Case 1)253FIGURE 18-34: Bus Collision During a Stop Condition (Case 2)253TABLE 18-4: Registers Associated with I2C™ Operation25419.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART)25519.1 Control Registers255Register 19-1: TXSTA1: EUSART Transmit Status and Control Register256Register 19-2: RCSTA1: EUSART Receive Status and Control Register257Register 19-3: BAUDCON1: Baud Rate Control Register 125819.2 EUSART Baud Rate Generator (BRG)25919.2.1 Operation in Power-Managed Modes25919.2.2 Sampling259TABLE 19-1: Baud Rate Formulas259EXAMPLE 19-1: Calculating Baud Rate Error259TABLE 19-2: Registers Associated with the Baud Rate Generator259TABLE 19-3: Baud Rates For Asynchronous Modes26019.2.3 Auto-Baud Rate Detect262TABLE 19-4: BRG Counter Clock Rates262FIGURE 19-1: Automatic Baud Rate Calculation263FIGURE 19-2: BRG Overflow Sequence26319.3 EUSART Asynchronous Mode26419.3.1 EUSART Asynchronous Transmitter264FIGURE 19-3: EUSART Transmit Block Diagram264FIGURE 19-4: Asynchronous Transmission265FIGURE 19-5: Asynchronous Transmission (Back to Back)265TABLE 19-5: Registers Associated with Asynchronous Transmission26519.3.2 EUSART Asynchronous Receiver26619.3.3 Setting Up 9-bit Mode with Address Detect266FIGURE 19-6: EUSART Receive Block Diagram266FIGURE 19-7: Asynchronous Reception267TABLE 19-6: Registers Associated with Asynchronous Reception26719.3.4 Auto-Wake-up On Sync Break Character268FIGURE 19-8: Auto-Wake-up Bit (WUE) Timings During Normal Operation268FIGURE 19-9: Auto-Wake-up Bit (WUE) Timings During Sleep26819.3.5 Break Character Sequence26919.3.6 Receiving A Break Character269FIGURE 19-10: Send Break Character Sequence26919.4 EUSART Synchronous Master Mode27019.4.1 EUSART Synchronous Master Transmission270FIGURE 19-11: Synchronous Transmission270FIGURE 19-12: Synchronous Transmission (Through TXEN)271TABLE 19-7: Registers Associated with Synchronous Master Transmission27119.4.2 EUSART Synchronous Master Reception272FIGURE 19-13: Synchronous Reception (Master Mode, SREN)272TABLE 19-8: Registers Associated with Synchronous Master Reception27219.5 EUSART Synchronous Slave Mode27319.5.1 EUSART Synchronous Slave Transmit273TABLE 19-9: Registers Associated with Synchronous Slave Transmission27319.5.2 EUSART Synchronous Slave Reception274TABLE 19-10: Registers Associated with Synchronous Slave Reception27420.0 Addressable Universal Synchronous Asynchronous Receiver Transmitter (AUSART)27520.1 Control Registers275Register 20-1: TXSTA2: AUSART Transmit Status and Control Register276Register 20-2: RCSTA2: ausart Receive Status and Control Register27720.2 AUSART Baud Rate Generator (BRG)27820.2.1 Operation in Power-Managed Modes27820.2.2 Sampling278TABLE 20-1: Baud Rate Formulas278EXAMPLE 20-1: Calculating Baud Rate Error278TABLE 20-2: Registers Associated with the Baud Rate Generator278TABLE 20-3: Baud Rates for Asynchronous Modes27920.3 AUSART Asynchronous Mode28020.3.1 AUSART Asynchronous Transmitter280FIGURE 20-1: AUSART Transmit Block Diagram280FIGURE 20-2: Asynchronous Transmission281FIGURE 20-3: Asynchronous Transmission (Back to Back)281TABLE 20-4: Registers Associated with Asynchronous Transmission28120.3.2 AUSART Asynchronous Receiver28220.3.3 Setting Up 9-bit Mode with Address Detect282FIGURE 20-4: AUSART Receive Block Diagram282FIGURE 20-5: Asynchronous Reception283TABLE 20-5: Registers Associated with Asynchronous Reception28320.4 AUSART Synchronous Master Mode28420.4.1 AUSART Synchronous Master Transmission284FIGURE 20-6: Synchronous Transmission284FIGURE 20-7: Synchronous Transmission (Through Txen)285TABLE 20-6: Registers Associated with Synchronous Master Transmission28520.4.2 AUSART Synchronous Master Reception286FIGURE 20-8: Synchronous Reception (Master Mode, SREN)286TABLE 20-7: Registers Associated with Synchronous Master Reception28620.5 AUSART Synchronous Slave Mode28720.5.1 AUSART Synchronous Slave Transmit287TABLE 20-8: Registers Associated with Synchronous Slave Transmission28720.5.2 AUSART Synchronous Slave Reception288TABLE 20-9: Registers Associated with Synchronous Slave Reception28821.0 10-Bit Analog-to-Digital Converter (A/D) Module289Register 21-1: ADCON0: A/D Control Register 0289Register 21-2: ADCON1: A/D Control Register 1290Register 21-3: ADCON2: A/D Control Register 2291FIGURE 21-1: A/D Block Diagram(1,2)292FIGURE 21-2: Analog Input Model29321.1 A/D Acquisition Requirements294EQUATION 21-1: A/D Acquisition Time294EQUATION 21-2: A/D Minimum Charging Time294EQUATION 21-3: Calculating the Minimum Required Acquisition Time29421.2 Selecting and Configuring Automatic Acquisition Time29521.3 Selecting the A/D Conversion Clock295TABLE 21-1: Tad vs. Device Operating Frequencies29521.4 Configuring Analog Port Pins29521.5 A/D Conversions29621.6 Use of the CCP2 Trigger296FIGURE 21-3: A/D Conversion Tad Cycles (ACQT<2:0> = 000, Tacq = 0)296FIGURE 21-4: A/D Conversion Tad Cycles (ACQT<2:0> = 010, Tacq = 4 Tad)29621.7 A/D Converter Calibration29721.8 Operation in Power-Managed Modes297TABLE 21-2: Summary of A/D Registers29722.0 Comparator Module299Register 22-1: CMCON: Comparator Module Control Register29922.1 Comparator Configuration300FIGURE 22-1: Comparator I/O Operating Modes30022.2 Comparator Operation30122.3 Comparator Reference301FIGURE 22-2: Single Comparator30122.3.1 External Reference Signal30122.3.2 Internal Reference Signal30122.4 Comparator Response Time30122.5 Comparator Outputs301FIGURE 22-3: Comparator Output Block Diagram30222.6 Comparator Interrupts30222.7 Comparator Operation During Sleep30222.8 Effects of a Reset30222.9 Analog Input Connection Considerations303FIGURE 22-4: Comparator Analog Input Model303TABLE 22-1: Registers Associated with Comparator Module30323.0 Comparator Voltage Reference Module30523.1 Configuring the Comparator Voltage Reference305Register 23-1: CVRCON: Comparator Voltage Reference Control Register305FIGURE 23-1: Comparator Voltage Reference Block Diagram30623.2 Voltage Reference Accuracy/Error30623.3 Operation During Sleep30623.4 Effects of a Reset30623.5 Connection Considerations306FIGURE 23-2: Comparator Voltage Reference Output Buffer Example307TABLE 23-1: Registers Associated with Comparator Voltage Reference30724.0 Charge Time Measurement Unit (CTMU)309FIGURE 24-1: CTMU Block Diagram30924.1 CTMU Operation31024.1.1 Theory of Operation31024.1.2 Current Source31024.1.3 Edge Selection and Control31024.1.4 Edge Status31024.1.5 Interrupts31124.2 CTMU Module Initialization31124.3 Calibrating the CTMU Module31124.3.1 Current Source Calibration311FIGURE 24-2: CTMU Current Source Calibration Circuit312EXAMPLE 24-1: Setup for CTMU Calibration Routines313EXAMPLE 24-2: Current Calibration Routine31424.3.2 Capacitance Calibration315EXAMPLE 24-3: Capacitance Calibration Routine31624.4 Measuring Capacitance with the CTMU31724.4.1 Absolute Capacitance Measurement31724.4.2 Relative Charge Measurement317EXAMPLE 24-4: Routine for Capacitive Touch Switch31824.5 Measuring Time with the CTMU Module319FIGURE 24-3: Typical Connections and Internal Configuration for Time Measurement31924.6 Creating a Delay with the CTMU Module320FIGURE 24-4: Typical Connections and Internal Configuration for Pulse Delay Generation32024.7 Operation During Sleep/Idle Modes32024.7.1 Sleep Mode and Deep Sleep Modes32024.7.2 Idle Mode32024.8 Effects of a Reset on CTMU32024.9 Registers321Register 24-1: CTMUCONH: CTMU Control High Register321Register 24-2: CTMUCONL: CTMU Control Low Register322Register 24-3: CTMUICON: CTMU current Control Register323TABLE 24-1: Registers Associated with CTMU Module32325.0 Special Features of the CPU32525.1 Configuration Bits32525.1.1 Considerations for Configuring PIC18F87J90 Family Devices325TABLE 25-1: Mapping of the Flash Configuration Words to the Configuration Registers325TABLE 25-2: Configuration Bits and Device IDs326Register 25-1: CONFIG1L: Configuration Register 1 Low (Byte Address 300000h)327Register 25-2: CONFIG1H: Configuration Register 1 High (Byte Address 300001h)327Register 25-3: CONFIG2L: Configuration Register 2 Low (Byte Address 300002h)328Register 25-4: CONFIG2H: Configuration Register 2 High (Byte Address 300003h)329Register 25-5: CONFIG3L: Configuration Register 3 Low (Byte Address 300004h)329Register 25-6: CONFIG3H: Configuration Register 3 High (Byte Address 300005h)330Register 25-7: DEVID1: Device ID Register 1 for PIC18F87J90 Family Devices330Register 25-8: DEVID2: Device ID Register 2 for PIC18F87J90 Family Devices33025.2 Watchdog Timer (WDT)33125.2.1 Control Register331FIGURE 25-1: WDT Block Diagram331Register 25-9: WDTCON: Watchdog Timer Control Register332TABLE 25-3: Summary of Watchdog Timer Registers33225.3 On-Chip Voltage Regulator33325.3.1 VOLTAGE REGULATION AND LOW-VOLTAGE DETECTION333FIGURE 25-2: Connections for the On-chip Regulator33325.3.2 On-Chip Regulator and BOR33425.3.3 Power-up Requirements33425.3.4 OPERATION IN SLEEP MODE33425.4 Two-Speed Start-up334FIGURE 25-3: Timing Transition for Two-Speed Start-up (INTRC to HSPLL)33425.4.1 Special Considerations for Using Two-Speed Start-up33525.5 Fail-Safe Clock Monitor335FIGURE 25-4: FSCM Block Diagram33525.5.1 FSCM and the Watchdog Timer335FIGURE 25-5: FSCM Timing Diagram33625.5.2 Exiting Fail-Safe Operation33625.5.3 FSCM Interrupts in Power-Managed Modes33625.5.4 POR or Wake-up From Sleep33625.6 Program Verification and Code Protection33725.6.1 Configuration Register Protection33725.7 In-Circuit Serial Programming33725.8 In-Circuit Debugger337TABLE 25-4: Debugger Resources33726.0 Instruction Set Summary33926.1 Standard Instruction Set339TABLE 26-1: Opcode Field Descriptions340FIGURE 26-1: General Format for Instructions341TABLE 26-2: PIC18F87J90 Family Instruction Set34226.1.1 Standard Instruction Set34526.2 Extended Instruction Set38126.2.1 Extended Instruction Syntax381TABLE 26-3: Extensions to the PIC18 Instruction Set38126.2.2 Extended Instruction Set38226.2.3 Byte-Oriented and Bit-Oriented Instructions in Indexed Literal Offset Mode38626.2.4 Considerations When Enabling the Extended Instruction Set38626.2.5 Special Considerations with Microchip MPLAB® IDE Tools38827.0 Development Support38927.1 MPLAB Integrated Development Environment Software38927.2 MPLAB C Compilers for Various Device Families39027.3 HI-TECH C for Various Device Families39027.4 MPASM Assembler39027.5 MPLINK Object Linker/ MPLIB Object Librarian39027.6 MPLAB Assembler, Linker and Librarian for Various Device Families39027.7 MPLAB SIM Software Simulator39127.8 MPLAB REAL ICE In-Circuit Emulator System39127.9 MPLAB ICD 3 In-Circuit Debugger System39127.10 PICkit 3 In-Circuit Debugger/ Programmer and PICkit 3 Debug Express39127.11 PICkit 2 Development Programmer/Debugger and PICkit 2 Debug Express39227.12 MPLAB PM3 Device Programmer39227.13 Demonstration/Development Boards, Evaluation Kits, and Starter Kits39228.0 Electrical Characteristics393Absolute Maximum Ratings(†)393FIGURE 28-1: Voltage-frequency Graph, Regulator Enabled (Industrial)(1)394FIGURE 28-2: Voltage-frequency Graph, Regulator Disabled (Industrial)(1,2)39428.1 DC Characteristics: Supply Voltage PIC18F87J90 Family (Industrial)39528.2 DC Characteristics: Power-Down and Supply Current PIC18F87J90 Family (Industrial)39628.3 DC Characteristics: PIC18F87J90 Family (Industrial)40428.4 DC Characteristics: CTMU Current Source Specifications405TABLE 28-1: Memory Programming Requirements406TABLE 28-2: Comparator Specifications407TABLE 28-3: Voltage Reference Specifications407TABLE 28-4: Internal Voltage Regulator Specifications407TABLE 28-5: Internal LCD Voltage Regulator Specifications40728.5 AC (Timing) Characteristics40828.5.1 Timing Parameter Symbology40828.5.2 Timing Conditions409TABLE 28-6: Temperature and Voltage Specifications – AC409FIGURE 28-3: Load Conditions for Device Timing Specifications40928.5.3 Timing Diagrams and Specifications410FIGURE 28-4: External Clock Timing410TABLE 28-7: External Clock Timing Requirements410TABLE 28-8: PLL Clock Timing Specifications (Vdd = 2.15V to 3.6V)411TABLE 28-9: Internal RC Accuracy (INTOSC and INTRC Sources)411FIGURE 28-5: CLKO and I/O Timing412TABLE 28-10: CLKO and I/O Timing Requirements412FIGURE 28-6: Reset, Watchdog Timer, Oscillator Start-up Timer and Power-up Timer Timing413TABLE 28-11: Reset, Watchdog Timer, Oscillator Start-up Timer, Power-up Timer and Brown-out Reset Requirements413FIGURE 28-7: Timer0 and Timer1 External Clock Timings414TABLE 28-12: Timer0 and Timer1 External Clock Requirements414FIGURE 28-8: Capture/Compare/PWM Timings (CCP1, CCP2 Modules)415TABLE 28-13: Capture/Compare/PWM Requirements (CCP1, CCP2 Modules)415FIGURE 28-9: Example SPI Master Mode Timing (CKE = 0)416TABLE 28-14: Example SPI Mode Requirements (Master Mode, Cke = 0)416FIGURE 28-10: Example SPI Master Mode Timing (CKE = 1)417TABLE 28-15: Example SPI Mode Requirements (Master Mode, CKE = 1)417FIGURE 28-11: Example SPI Slave Mode Timing (CKE = 0)418TABLE 28-16: Example SPI Mode Requirements (Slave Mode Timing, CKE = 0)418FIGURE 28-12: Example SPI Slave Mode Timing (CKE = 1)419TABLE 28-17: Example SPI Slave Mode Requirements (CKE = 1)419FIGURE 28-13: I2C™ Bus Start/Stop Bits Timing420TABLE 28-18: I2C™ Bus Start/Stop Bits Requirements (Slave Mode)420FIGURE 28-14: I2C™ Bus Data Timing421TABLE 28-19: I2C™ Bus Data Requirements (Slave Mode)421FIGURE 28-15: MSSP I2C™ Bus Start/Stop Bits Timing Waveforms422TABLE 28-20: MSSP I2C™ Bus Start/Stop Bits Requirements422FIGURE 28-16: MSSP I2C™ Bus Data Timing422TABLE 28-21: MSSP I2C™ Bus Data Requirements423FIGURE 28-17: EUSART/AUSART Synchronous Transmission (Master/Slave) Timing424TABLE 28-22: EUSART/AUSART Synchronous Transmission Requirements424FIGURE 28-18: EUSART/AUSART Synchronous Receive (Master/Slave) Timing424TABLE 28-23: EUSART/AUSART Synchronous Receive Requirements424TABLE 28-24: A/D Converter Characteristics: PIC18F87J90 Family (Industrial)425FIGURE 28-19: A/D Conversion Timing426TABLE 28-25: A/D Conversion Requirements42629.0 Packaging Information42729.1 Package Marking Information42729.2 Package Details428Appendix A: Revision History433Revision A (October 2008)433Revision B (December 2008)433Revision C (February 2009)433Revision D (January 2010)433Appendix B: Migration From PIC18F85J90 to PIC18F87J90433TABLE B-1: Notable Differences Between PIC18F87J90 and PIC18F85J90 Families433INDEX435The Microchip Web Site447Customer Change Notification Service447Customer Support447Reader Response448Product Identification System449Worldwide Sales and Service450Taille: 3,6 MoPages: 450Language: EnglishOuvrir le manuel