电子工程世界电子工程世界电子工程世界

型号

产品描述

搜索

PIC18F44K22-I/MV

器件型号:PIC18F44K22-I/MV
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
标准:
下载文档

器件描述

8-bit Microcontrollers - MCU 16KB FL 768b RAM8bit familynanoWatt XLP

参数

产品属性属性值
Product AttributeAttribute Value
制造商:
Manufacturer:
Microchip
产品种类:
Product Category:
8-bit Microcontrollers - MCU
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
UQFN-40
系列:
Series:
PIC18F2xK22
Core:PIC18
Data Bus Width:8 bit
Maximum Clock Frequency:64 MHz
Program Memory Size:16 kB
Data RAM Size:768 B
ADC Resolution:10 bit
Number of I/Os:36 I/O
工作电源电压:
Operating Supply Voltage:
2.3 V to 5.5 V
最小工作温度:
Minimum Operating Temperature:
- 40 C
最大工作温度:
Maximum Operating Temperature:
+ 85 C
接口类型:
Interface Type:
CCP, ECCP, EUSART, I2C, SPI
封装:
Packaging:
Tube
高度:
Height:
0.48 mm
长度:
Length:
5 mm
Program Memory Type:Flash
宽度:
Width:
5 mm
商标:
Brand:
Microchip Technology
Data RAM Type:SRAM
Data ROM Size:256 B
Data ROM Type:EEPROM
Number of ADC Channels:30
Number of Timers/Counters:7 Timer
Processor Series:PIC18
产品类型:
Product Type:
8-bit Microcontrollers - MCU
工厂包装数量:
Factory Pack Quantity:
73
子类别:
Subcategory:
Microcontrollers - MCU
电源电压-最大:
Supply Voltage - Max:
5.5 V
电源电压-最小:
Supply Voltage - Min:
2.3 V
商标名:
Tradename:
PIC

PIC18F44K22-I/MV器件文档内容

                                                      PIC18(L)F2X/4XK22

               28/40/44-Pin, Low-Power, High-Performance

               Microcontrollers with XLP Technology

High-Performance RISC CPU:                            eXtreme Low-Power Features (XLP)

•  C Compiler Optimized Architecture:                 (PIC18(L)F2X/4XK22):

   -  Optional extended instruction set designed to   •  Sleep mode: 20 nA, typical

      optimize re-entrant code                        •  Watchdog Timer: 300 nA, typical

•  Up to 1024 Bytes Data EEPROM                       •  Timer1 Oscillator: 800 nA @ 32 kHz

•  Up to 64 Kbytes Linear Program Memory              •  Peripheral Module Disable

   Addressing

•  Up to 3896 Bytes Linear Data Memory Address-       Special Microcontroller Features:

   ing

•  Up to 16 MIPS Operation                            •  2.3V to 5.5V Operation – PIC18FXXK22 devices

•  16-bit Wide Instructions, 8-bit Wide Data Path     •  1.8V to 3.6V Operation – PIC18LFXXK22 devices

•  Priority Levels for Interrupts                     •  Self-Programmable under Software Control

•  31-Level, Software Accessible Hardware Stack       •  High/Low-Voltage Detection (HLVD) module:

•  8 x 8 Single-Cycle Hardware Multiplier                -  Programmable 16-Level

Flexible Oscillator Structure:                           -  Interrupt on High/Low-Voltage Detection

                                                      •  Programmable Brown-out Reset (BOR):

•  Precision 16 MHz Internal Oscillator Block:           -  With software enable option

   -  Factory calibrated to ± 1%                         -  Configurable shutdown in Sleep

   -  Selectable frequencies, 31 kHz to 16 MHz        •  Extended Watchdog Timer (WDT):

   -  64 MHz performance available using PLL –           -  Programmable period from 4 ms to 131s

      no external components required                 •  In-Circuit Serial Programming™ (ICSP™):

•  Four Crystal modes up to 64 MHz                       -  Single-Supply 3V

•  Two External Clock modes up to 64 MHz              •  In-Circuit Debug (ICD)

•  4X Phase Lock Loop (PLL)

•  Secondary Oscillator using Timer1 @ 32 kHz         Peripheral Highlights:

•  Fail-Safe Clock Monitor:                           •  Up to 35 I/O Pins plus 1 Input-Only Pin:

   -  Allows for safe shutdown if peripheral clock       -  High-Current Sink/Source 25 mA/25 mA

      stops                                              -  Three programmable external interrupts

   -  Two-Speed Oscillator Start-up                      -  Four programmable interrupt-on-change

Analog Features:                                         -  Nine programmable weak pull-ups

                                                         -  Programmable slew rate

•  Analog-to-Digital Converter (ADC) module:          •  SR Latch:

   -  10-bit resolution, up to 30 external channels      -  Multiple Set/Reset input options

   -  Auto-acquisition capability                     •  Two Capture/Compare/PWM (CCP) modules

   -  Conversion available during Sleep               •  Three Enhanced CCP (ECCP) modules:

   -  Fixed Voltage Reference (FVR) channel              -  One, two or four PWM outputs

   -  Independent input multiplexing                     -  Selectable polarity

•  Analog Comparator module:                             -  Programmable dead time

   -  Two rail-to-rail analog comparators                -  Auto-Shutdown and Auto-Restart

   -  Independent input multiplexing                     -  PWM steering

•  Digital-to-Analog Converter (DAC) module:          •  Two Master Synchronous Serial Port (MSSP)

   -  Fixed Voltage Reference (FVR) with 1.024V,         modules:

      2.048V and 4.096V output levels                    -  3-wire SPI (supports all 4 modes)

   -  5-bit rail-to-rail resistive DAC with positive     -  I2C Master and Slave modes with address

      and negative reference selection                      mask

•  Charge Time Measurement Unit (CTMU) module:

   -  Supports capacitive touch sensing for touch

      screens and capacitive switches

 2010-2016 Microchip Technology Inc.                                                     DS40001412G-page 1
PIC18(L)F2X/4XK22

•  Two Enhanced Universal Synchronous

   Asynchronous Receiver Transmitter (EUSART)

   modules:

   -  Supports RS-485, RS-232 and LIN

   -  RS-232 operation using internal oscillator

   -  Auto-Wake-up on Break

   -  Auto-Baud Detect

TABLE 1:        PIC18(L)F2X/4XK22 FAMILY                                                             TYPES

                Program                                            Data                                                                                                         MSSP

                       Memory                                Memory                                          A/D Channels(2)                (Full-Bridge)        (Half-Bridge)                       Comparator                                        16-bit Timer

      Device    Flash  (Bytes)  # Single-Word  Instructions  SRAM  (Bytes)  EEPROM  (Bytes)  I/O(1)  10-bit                   CCP  ECCP                    ECCP                              EUSART              CTMU  BOR/LVD  SR Latch  8-bit Timer

                                                                                                                                                                                SPI  I2C

PIC18(L)F23K22  8K              4096                         512            256              25      19                       2          1                 2                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F24K22  16K             8192                         768            256              25      19                       2          1                 2                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F25K22  32K             16384                        1536           256              25      19                       2          1                 2                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F26K22  64k             32768                        3896           1024             25      19                       2          1                 2                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F43K22  8K              4096                         512            256              36      30                       2          2                 1                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F44K22  16K             8192                         768            256              36      30                       2          2                 1                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F45K22  32K             16384                        1536           256              36      30                       2          2                 1                    2    2       2       2           Y     Y        Y         3            4

PIC18(L)F46K22  64k             32768                        3896           1024             36      30                       2          2                 1                    2    2       2       2           Y     Y        Y         3            4

      Note  1:  One pin is input only.

            2:  Channel count includes internal FVR and                                              DAC                      channels.

DS40001412G-page 2                                                                                                                                                                          2010-2016           Microchip      Technology             Inc.
                                                                                                               PIC18(L)F2X/4XK22

FIGURE  1:        28-PIN  PDIP, SOIC, SSOP DIAGRAM

                                       MCLR/VPP/RE3     1                                                      28  RB7/PGD

                                       RA0              2                                                      27  RB6/PGC

                                       RA1              3                                                      26  RB5

                                       RA2              4                            PIC18(L)F2XK22            25  RB4

                                       RA3              5                                                      24  RB3

                                       RA4              6                                                      23  RB2

                                       RA5              7                                                      22  RB1

                                       VSS              8                                                      21  RB0

                                       RA7              9                                                      20  VDD

                                       RA6              10                                                     19  VSS

                                       RC0              11                                                     18  RC7

                                       RC1              12                                                     17  RC6

                                       RC2              13                                                     16  RC5

                                       RC3              14                                                     15  RC4

FIGURE  2:        28-PIN  QFN, UQFN(1) DIAGRAM

                                                        RA1  RA0  MCLR/VPP/RE3  RB7/PGD  RB6/PGC     RB5  RB4

                                                        28 27 26 25 24 23 22

                                       RA2           1                                                         21  RB3

                                       RA3           2                                                         20  RB2

                                       RA4           3  PIC18(L)F2XK22                                         19  RB1

                                       RA5/          4                                                         18  RB0

                                       VSS           5                                                         17  VDD

                                       RA7           6                                                         16  VSS

                                       RA6           7                                                         15  RC7

                                                        8    9 10 11 12 13 14

                                                        RC0  RC1  RC2           RC3      RC4         RC5  RC6

        Note  1:  The  28-pin  UQFN    package is available only for PIC18(L)F23K22 and                                 PIC18(L)F24K22.

 2010-2016 Microchip Technology Inc.                                                                                                    DS40001412G-page 3
PIC18(L)F2X/4XK22

FIGURE 3:           40-PIN  PDIP  DIAGRAM

                                  MCLR/VPP/RE3       1                                                             40  RB7/PGD

                                       RA0           2                                                             39  RB6/PGC

                                       RA1           3                                                             38  RB5

                                       RA2           4                                                             37  RB4

                                       RA3           5                                                             36  RB3

                                       RA4           6                                                             35  RB2

                                       RA5           7                                                             34  RB1

                                       RE0           8                           PIC18(L)F4XK22                    33  RB0

                                       RE1           9                                                             32  VDD

                                       RE2           10                                                            31  VSS

                                       VDD           11                                                            30  RD7

                                       VSS           12                                                            29  RD6

                                       RA7           13                                                            28  RD5

                                       RA6           14                                                            27  RD4

                                       RC0           15                                                            26  RC7

                                       RC1           16                                                            25  RC6

                                       RC2           17                                                            24  RC5

                                       RC3           18                                                            23  RC4

                                       RD0           19                                                            22  RD3

                                       RD1           20                                                            21  RD2

FIGURE 4:           40-PIN UQFN DIAGRAM

                                                RC6  RC5  RC4  RD3      RD2      RD1           RD0  RC3  RC2  RC1

                                                40   39   38   37       36       35            34   33   32   31

                                  RC7      1                                                                       30  RC0

                                  RD4      2                                                                       29  RA6

                                  RD5      3                                                                       28  RA7

                                  RD6      4                                                                       27  VSS

                                  RD7      5    PIC18(L)F4XK22                                                     26  VDD

                                  VSS      6                                                                       25  RE2

                                  VDD      7                                                                       24  RE1

                                  RB0      8                                                                       23  RE0

                                  RB1      9                                                                       22  RA5

                                  RB2      10                                                                      21  RA4

                                                11   12   13   14       15       16            17   18   19   20

                                                RB3  RB4  RB5  PGC/RB6  PGD/RB7  MCLR/VPP/RE3  RA0  RA1  RA2  RA3

DS40001412G-page 4                                                                                                               2010-2016 Microchip Technology Inc.
                                                                                                                        PIC18(L)F2X/4XK22

FIGURE  5:  44-PIN  TQFP               DIAGRAM

                                                     RC6  RC5  RC4  RD3  RD2      RD1      RD0           RC3  RC2  RC1  NC

                                                     44   43   42   41   40       39       38            37   36   35   34

                                       RC7       1                                                                           33   NC

                                       RD4       2                                                                           32   RC0

                                       RD5       3                                                                           31   RA6

                                       RD6       4                                                                           30   RA7

                                       RD7       5   PIC18(L)F4XK22                                                          29   VSS

                                       VSS       6                                                                           28   VDD

                                       VDD       7                                                                           27   RE2

                                       RB0       8                                                                           26   RE1

                                       RB1       9                                                                           25   RE0

                                       RB2       10                                                                          24   RA5

                                       RB3       11  12   13   14   15   16       17       18            19   20   21        23   RA4
                                                                                                                        22

                                                     NC   NC   RB4  RB5  PGC/RB6  PGD/RB7  MCLR/VPP/RE3  RA0  RA1  RA2  RA3

FIGURE  6:  44-PIN  QFN                DIAGRAM

                                                          RC6  RC5  RC4  RD3      RD2      RD1  RD0           RC3  RC2  RC1  RC0

                                            RC7      1    44   43   42   41   40       39       38            37   36   35   34

                                                                                                                             33   RA6

                                            RD4      2                                                                       32   RA7

                                            RD5      3                                                                       31   VSS

                                            RD6      4                                                                       30   VSS

                                            RD7      5                                                                       29   VDD
                                                     6 PIC18(L)F4XK22
                                            VSS                                                                              28   VDD

                                            VDD      7                                                                       27   RE2

                                            VDD      8                                                                       26   RE1

                                            RB0      9                                                                       25   RE0

                                            RB1      10                                                                      24   RA5

                                            RB2      11                                                                      23   RA4
                                                                                                                             22
                                                        12   13  14   15     16   17            18            19   20   21

                                                        RB3  NC  RB4     RB5  PGC/RB6  PGD/RB7  MCLR/VPP/RE3  RA0  RA1  RA2  RA3

 2010-2016 Microchip Technology Inc.                                                                                                  DS40001412G-page 5
PIC18(L)F2X/4XK22

TABLE 2:                                    PIC18(L)F2XK22 PIN SUMMARY

28-SSOP, SOIC  28-SPDIP  28-QFN, UQFN  I/O  Analog                  Comparator  CTMU   SR Latch  Reference  (E)CCP  EUSART   MSSP  Timers    Interrupts  Pull-up  Basic

2                        27            RA0  AN0     C12IN0-

3                        28            RA1  AN1     C12IN1-

4                            1         RA2  AN2                   C2IN+                          VREF-

                                                                                                 DACOUT

5                            2         RA3  AN3                   C1IN+                          VREF+

6                            3         RA4          C1OUT                              SRQ                  CCP5                   T0CKI

7                            4         RA5  AN4     C2OUT                              SRNQ      HLVDIN                      SS1

10                           7         RA6                                                                                                                        OSC2

                                                                                                                                                                  CLKO

9                            6         RA7                                                                                                                        OSC1

                                                                                                                                                                  CLKI

21                       18            RB0  AN12                                       SRI                  CCP4             SS2             INT0        Y

                                                                                                            FLT0

22                       19            RB1  AN10    C12IN3-                                                 P1C              SCK2            INT1        Y

                                                                                                                             SCL2

23                       20            RB2  AN8                                 CTED1                       P1B              SDI2            INT2        Y

                                                                                                                             SDA2

24                       21            RB3  AN9     C12IN2-                     CTED2                       CCP2             SDO2                        Y

                                                                                                            P2A(1)

25                       22            RB4  AN11                                                            P1D                    T5G       IOC         Y

26                       23            RB5  AN13                                                            CCP3                   T1G       IOC         Y

                                                                                                            P3A(4)                 T3CKI(2)

                                                                                                            P2B(3)

27                       24            RB6                                                                          TX2/CK2                  IOC         Y        PGC

28                       25            RB7                                                                          RX2/DT2                  IOC         Y        PGD

11                           8         RC0                                                                  P2B(3)                 SOSCO

                                                                                                                                   T1CKI

                                                                                                                                   T3CKI(2)

                                                                                                                                   T3G

12                           9         RC1                                                                  CCP2                   SOSCI

                                                                                                            P2A(1)

13                       10            RC2  AN14                                CTPLS                       CCP1                   T5CKI

                                                                                                            P1A

14                       11            RC3  AN15                                                                             SCK1

                                                                                                                             SCL1

15                       12            RC4  AN16                                                                             SDI1

                                                                                                                             SDA1

16                       13            RC5  AN17                                                                             SDO1

17                       14            RC6  AN18                                                            CCP3    TX1/CK1

                                                                                                            P3A(4)

18                       15            RC7  AN19                                                            P3B     RX1/DT1

1                        26            RE3                                                                                                                        MCLR

                                                                                                                                                                  VPP

8, 19                    5, 16         VSS                                                                                                                        VSS

19                       16

20                       17            VDD                                                                                                                        VDD

Note                     1:            CCP2/P2A multiplexed in fuses.

                         2:            T3CKI multiplexed in fuses.

                         3:            P2B multiplexed in fuses.

                         4:            CCP3/P3A multiplexed in fuses.

DS40001412G-page 6                                                                                                            2010-2016 Microchip       Technology Inc.
                                                                                        PIC18(L)F2X/4XK22

TABLE 3:                       PIC18(L)F4XK22 PIN SUMMARY

40-PDIP      40-UQFN  44-TQFP  44-QFN  I/O         Analog  Comparator  CTMU   SR Latch  Reference  (E)CCP   EUSART  MSSP  Timers    Interrupts  Pull-up  Basic

2        17           19       19      RA0         AN0     C12IN0-

3        18           20       20      RA1         AN1     C12IN1-

4        19           21       21      RA2         AN2     C2IN+                        VREF-

                                                                                        DACOU

                                                                                        T

5        20           22       22      RA3         AN3     C1IN+                        VREF+

6        21           23       23      RA4                 C1OUT              SRQ                                         T0CKI

7        22           24       24      RA5         AN4     C2OUT              SRNQ      HLVDIN                      SS1

14       29           31       33      RA6                                                                                                               OSC2

                                                                                                                                                         CLKO

13       28           30       32      RA7                                                                                                               OSC1

                                                                                                                                                         CLKI

33           8        8        9       RB0         AN12                       SRI                  FLT0                             INT0        Y

34           9        9        10      RB1         AN10    C12IN3-                                                                  INT1        Y

35       10           10       11      RB2         AN8                 CTED1                                                        INT2        Y

36       11           11       12      RB3         AN9     C12IN2-     CTED2                       CCP2                                         Y

                                                                                                   P2A(1)

37       12           14       14      RB4         AN11                                                                   T5G       IOC         Y

38       13           15       15      RB5         AN13                                            CCP3                   T1G       IOC         Y

                                                                                                   P3A(3)                 T3CKI(2)

39       14           16       16      RB6                                                                                          IOC         Y        PGC

40       15           17       17      RB7                                                                                          IOC         Y        PGD

15       30           32       34      RC0                                                         P2B(4)                 SOSCO

                                                                                                                          T1CKI

                                                                                                                          T3CKI(2)

                                                                                                                          T3G

16       31           35       35      RC1                                                         CCP2(1)                SOSCI

                                                                                                   P2A

17       32           36       36      RC2         AN14                CTPLS                       CCP1                   T5CKI

                                                                                                   P1A

18       33           37       37      RC3         AN15                                                             SCK1

                                                                                                                    SCL1

23       38           42       42      RC4         AN16                                                             SDI1

                                                                                                                    SDA1

24       39           43       43      RC5         AN17                                                             SDO1

25       40           44       44      RC6         AN18                                                     TX1

                                                                                                            CK1

26           1        1        1       RC7         AN19                                                     RX1

                                                                                                            DT1

19       34           38       38      RD0         AN20                                                             SCK2

                                                                                                                    SCL2

20       35           39       39      RD1         AN21                                            CCP4             SDI2

                                                                                                                    SDA2

21       36           40       40      RD2         AN22                                            P2B(4)

22       37           41       41      RD3         AN23                                            P2C              SS2

27           2        2        2       RD4         AN24                                            P2D              SD02

28           3        3        3       RD5         AN25                                            P1B

29           4        4        4       RD6         AN26                                            P1C      TX2

                                                                                                            CK2

30           5        5        5       RD7         AN27                                            P1D      RX2

                                                                                                            DT2

8        23           25       25      RE0         AN5                                             CCP3

                                                                                                   P3A(3)

Note     1:           CCP2 multiplexed in fuses.

         2:           T3CKI multiplexed in fuses.

         3:           CCP3/P3A multiplexed in fuses.

         4:           P2B multiplexed in fuses.

 2010-2016 Microchip Technology Inc.                                                                                     DS40001412G-page 7
PIC18(L)F2X/4XK22

TABLE 3:                       PIC18(L)F4XK22 PIN SUMMARY                    (CONTINUED)

40-PDIP      40-UQFN  44-TQFP  44-QFN  I/O         Analog  Comparator  CTMU  SR Latch  Reference  (E)CCP  EUSART  MSSP       Timers     Interrupts  Pull-up  Basic

9        24           26       26      RE1         AN6                                            P3B

10       25           27       27      RE2         AN7                                            CCP5

1        16           18       18      RE3                                                                                                          Y        MCLR

                                                                                                                                                             VPP

11,      7, 26        7,       7,8     VDD                                                                                                                   VDD

32                    28       28, 29

12,      6, 27        6,       6,      VSS                                                                                                                   VSS

31                    29       30, 31

—            —        12, 13   13      NC

                      33, 34

Note     1:           CCP2 multiplexed in fuses.

         2:           T3CKI multiplexed in fuses.

         3:           CCP3/P3A multiplexed in fuses.

         4:           P2B multiplexed in fuses.

DS40001412G-page 8                                                                                               2010-2016  Microchip  Technology Inc.
                                       PIC18(L)F2X/4XK22

Table of Contents

1.0   Device Overview ........................................................................................................................................................................ 11

2.0   Oscillator Module (With Fail-Safe Clock Monitor)) ....................................................................................................................                           25

3.0   Power-Managed Modes ............................................................................................................................................................                 44

4.0   Reset .........................................................................................................................................................................................  55

5.0   Memory Organization ................................................................................................................................................................             64

6.0   Flash Program Memory.............................................................................................................................................................                90

7.0   Data EEPROM Memory ............................................................................................................................................................                  99

8.0   8 x 8 Hardware Multiplier.........................................................................................................................................................               104

9.0   Interrupts .................................................................................................................................................................................     106

10.0  I/O Ports ..................................................................................................................................................................................     127

11.0  Timer0 Module ........................................................................................................................................................................           154

12.0  Timer1/3/5 Module with Gate Control......................................................................................................................................                        157

13.0  Timer2/4/6 Module ..................................................................................................................................................................             169

14.0  Capture/Compare/PWM Modules ...........................................................................................................................................                          173

15.0  Master Synchronous Serial Port (MSSP1 and MSSP2) Module .............................................................................................                                            204

16.0  Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ..............................................................                                                         259

17.0  Analog-to-Digital Converter (ADC) Module .............................................................................................................................                           288

18.0  Comparator Module.................................................................................................................................................................               302

19.0  Charge Time Measurement Unit (CTMU)................................................................................................................................. 311

20.0  SR LATCH.................................................................................................................................................................................        326

21.0  Fixed Voltage Reference (FVR) ..............................................................................................................................................                     331

22.0  Digital-to-Analog Converter (DAC) Module .............................................................................................................................                           333

23.0  High/Low-Voltage Detect (HLVD) ............................................................................................................................................                      337

24.0  Special Features of the CPU ...................................................................................................................................................                  343

25.0  Instruction Set Summary .........................................................................................................................................................                360

26.0  Development Support..............................................................................................................................................................                410

27.0  Electrical Specifications...........................................................................................................................................................             414

28.0  DC and AC Characteristics Graphs and Tables ......................................................................................................................                               453

29.0  Packaging Information.............................................................................................................................................................               509

Appendix A: Revision History............................................................................................................................................................               534

Appendix B: Device Differences........................................................................................................................................................                 535

The Microchip Web Site ....................................................................................................................................................................            536

Customer Change Notification Service .............................................................................................................................................                     536

Customer Support .............................................................................................................................................................................         536

Product Identification System ...........................................................................................................................................................              537

 2010-2016 Microchip Technology Inc.  DS40001412G-page 9
PIC18(L)F2X/4XK22

                              TO OUR VALUED CUSTOMERS

It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip

products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and

enhanced as new volumes and updates are introduced.

If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via

E-mail at docerrors@microchip.com. We welcome your feedback.

Most Current Data Sheet

To obtain the most up-to-date version of this data sheet, please register at our Worldwide Website at:

   http://www.microchip.com

You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page.

The last character of the literature number is the version number, (e.g., DS30000000A is version A of document DS30000000).

Errata

An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current

devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision

of silicon and revision of document to which it applies.

To determine if an errata sheet exists for a particular device, please check with one of the following:

•  Microchip’s Worldwide Website; http://www.microchip.com

•  Your local Microchip sales office (see last page)

When contacting a sales office, please specify which device, revision of silicon and data sheet (include literature number) you are

using.

Customer Notification System

Register on our website at www.microchip.com to receive the most current information on all of our products.

DS40001412G-page 10                                            2010-2016 Microchip Technology Inc.
                                                                         PIC18(L)F2X/4XK22

1.0     DEVICE OVERVIEW                                               1.1.2       MULTIPLE OSCILLATOR OPTIONS

This document contains device specific information for                            AND FEATURES

the following devices:                                                All of the devices in the PIC18(L)F2X/4XK22 family

                                                                      offer ten different oscillator options, allowing users a

   •  PIC18F23K22                  •  PIC18LF23K22                    wide   range   of  choices  in     developing    application

   •  PIC18F24K22                  •  PIC18LF24K22                    hardware. These include:

   •  PIC18F25K22                  •  PIC18LF25K22                    •  Four Crystal modes, using crystals or ceramic

   •  PIC18F26K22                  •  PIC18LF26K22                       resonators

   •  PIC18F43K22                  •  PIC18LF43K22                    •  Two External Clock modes, offering the option of

   •  PIC18F44K22                  •  PIC18LF44K22                       using two pins (oscillator input and a divide-by-4

                                                                         clock output) or one pin (oscillator input, with the

   •  PIC18F45K22                  •  PIC18LF45K22                       second pin reassigned as general I/O)

   •  PIC18F46K22                  •  PIC18LF46K22                    •  Two External RC Oscillator modes with the same

This   family   offers    the  advantages           of  all   PIC18      pin options as the External Clock modes

microcontrollers       –     namely,  high          computational     •  An internal oscillator block which contains a

performance at an economical price – with the addition                   16 MHz HFINTOSC oscillator and a 31 kHz

of high-endurance, Flash program memory. On top of                       LFINTOSC oscillator, which together provide eight

these   features,       the    PIC18(L)F2X/4XK22              family     user selectable clock frequencies, from 31 kHz to

introduces     design     enhancements        that  make      these      16 MHz. This option frees the two oscillator pins

microcontrollers   a      logical     choice  for       many  high-      for use as additional general purpose I/O.

performance, power sensitive applications.                            •  A Phase Lock Loop (PLL) frequency multiplier,

                                                                         available to both external and internal oscillator

1.1     New Core Features                                                modes, which allows clock speeds of up to

                                                                         64 MHz. Used with the internal oscillator, the PLL

1.1.1          XLP TECHNOLOGY                                            gives users a complete selection of clock speeds,

All of the devices in the PIC18(L)F2X/4XK22 family                       from 31 kHz to 64 MHz – all without using an

incorporate a range of features that can significantly                   external crystal or clock circuit.

reduce  power     consumption         during  operation.      Key     Besides its availability as a clock source, the internal

items include:                                                        oscillator block provides a stable reference source that

•     Alternate Run Modes: By clocking the controller                 gives  the     family  additional      features  for    robust

      from the Timer1 source or the internal oscillator               operation:

      block, power consumption during code execution                  •  Fail-Safe Clock Monitor: This option constantly

      can be reduced by as much as 90%.                                  monitors the main clock source against a

•     Multiple Idle Modes: The controller can also run                   reference signal provided by the LFINTOSC. If a

      with its CPU core disabled but the peripherals still               clock failure occurs, the controller is switched to

      active. In these states, power consumption can be                  the internal oscillator block, allowing for continued

      reduced even further, to as little as 4% of normal                 operation or a safe application shutdown.

      operation requirements.                                         •  Two-Speed Start-up: This option allows the

•     On-the-fly Mode Switching: The power-                              internal oscillator to serve as the clock source

      managed modes are invoked by user code during                      from Power-on Reset, or Wake-up from Sleep

      operation, allowing the user to incorporate power-                 mode, until the primary clock source is available.

      saving ideas into their application’s software

      design.

•     Low Consumption in Key Modules: The power

      requirements for both Timer1 and the Watchdog

      Timer are minimized. See Section 27.0

      “Electrical Specifications” for values.

 2010-2016 Microchip Technology Inc.                                                                        DS40001412G-page 11
PIC18(L)F2X/4XK22

1.2   Other Special Features                              1.3      Details on Individual Family

•  Memory Endurance: The Flash cells for both                      Members

   program memory and data EEPROM are rated to            Devices  in     the  PIC18(L)F2X/4XK22       family    are

   last for many thousands of erase/write cycles – up to  available in 28-pin and 40/44-pin packages. The block

   10K for program memory and 100K for EEPROM.            diagram for the device family is shown in Figure 1-1.

   Data retention without refresh is conservatively       The devices have the following differences:

   estimated to be greater than 40 years.

•  Self-programmability: These devices can write          1.   Flash program memory

   to their own program memory spaces under inter-        2.   Data Memory SRAM

   nal software control. By using a bootloader routine    3.   Data Memory EEPROM

   located in the protected Boot Block at the top of      4.   A/D channels

   program memory, it becomes possible to create          5.   I/O ports

   an application that can update itself in the field.    6.   ECCP modules (Full/Half Bridge)

•  Extended Instruction Set: The PIC18(L)F2X/             7.   Input Voltage Range/Power Consumption

   4XK22 family introduces an optional extension to

   the PIC18 instruction set, which adds eight new        All other features for devices in this family are identical.

   instructions and an Indexed Addressing mode.           These are summarized in Table 1-1.

   This extension, enabled as a device configuration      The pinouts for all devices are listed in the pin summary

   option, has been specifically designed to optimize     tables: Table 2 and Table 3, and I/O description tables:

   re-entrant application code originally developed in    Table 1-2 and Table 1-3.

   high-level languages, such as C.

•  Enhanced CCP module: In PWM mode, this

   module provides one, two or four modulated

   outputs for controlling half-bridge and full-bridge

   drivers. Other features include:

   -  Auto-Shutdown, for disabling PWM outputs

      on interrupt or other select conditions

   -  Auto-Restart, to reactivate outputs once the

      condition has cleared

   -  Output steering to selectively enable one or

      more of four outputs to provide the PWM

      signal.

•  Enhanced Addressable EUSART: This serial

   communication module is capable of standard

   RS-232 operation and provides support for the LIN

   bus protocol. Other enhancements include

   automatic baud rate detection and a 16-bit Baud

   Rate Generator for improved resolution. When the

   microcontroller is using the internal oscillator

   block, the EUSART provides stable operation for

   applications that talk to the outside world without

   using an external crystal (or its accompanying

   power requirement).

•  10-bit A/D Converter: This module incorporates

   programmable acquisition time, allowing for a

   channel to be selected and a conversion to be

   initiated without waiting for a sampling period and

   thus, reduce code overhead.

•  Extended Watchdog Timer (WDT): This

   enhanced version incorporates a 16-bit

   postscaler, allowing an extended time-out range

   that is stable across operating voltage and

   temperature. See Section 27.0 “Electrical

   Specifications” for time-out periods.

•  Charge Time Measurement Unit (CTMU)

•  SR Latch Output:

DS40001412G-page 12                                                             2010-2016 Microchip Technology Inc.
 2010-2016 Microchip Technology Inc.  TABLE 1-1:             DEVICE FEATURES

                                                        Features              PIC18F23K22              PIC18F24K22    PIC18F25K22     PIC18F26K22         PIC18F43K22           PIC18F44K22    PIC18F45K22    PIC18F46K22

                                                                              PIC18LF23K22             PIC18LF24K22   PIC18(L)F25K22  PIC18LF26K22        PIC18LF43K22          PIC18LF44K22   PIC18LF45K22   PIC18LF46K22

                                       Program Memory (Bytes)                 8192                     16384          32768           65536                       8192          16384          32768          65536

                                       Program Memory                         4096                     8192           16384           32768                       4096          8192           16384          32768

                                       (Instructions)

                                       Data Memory (Bytes)                    512                      768            1536            3896                        512           768            1536           3896

                                       Data EEPROM Memory (Bytes)             256                      256            256             1024                        256           256            256            1024

                                       I/O Ports                              A, B, C, E(1)            A, B, C, E(1)  A, B, C, E(1)   A, B, C, E(1)           A, B, C, D, E     A, B, C, D, E  A, B, C, D, E  A, B, C, D, E

                                       Capture/Compare/PWM Modules            2                        2              2               2                           2             2              2              2

                                       (CCP)

                                       Enhanced CCP Modules (ECCP) -          2                        2              2               2                           1             1              1              1

                                       Half Bridge

                                       Enhanced CCP Modules (ECCP) -          1                        1              1               1                           2             2              2              2

                                       Full Bridge

                                       10-bit Analog-to-Digital Module (ADC)  2 internal               2 internal     2 internal      2 internal               2 internal       2 internal     2 internal     2 internal

                                                                              17 input                 17 input       17 input        17 input                    28 input      28 input       28 input       28 input

                                       Packages                               28-pin PDIP              28-pin PDIP    28-pin PDIP     28-pin PDIP              40-pin PDIP      40-pin PDIP    40-pin PDIP    40-pin PDIP

                                                                              28-pin SOIC              28-pin SOIC    28-pin SOIC     28-pin SOIC             40-pin UQFN       40-pin UQFN    40-pin UQFN    40-pin UQFN

                                                                              28-pin SSOP              28-pin SSOP    28-pin SSOP     28-pin SSOP              44-pin QFN       44-pin QFN     44-pin QFN     44-pin QFN

                                                                              28-pin QFN               28-pin QFN     28-pin QFN      28-pin QFN              44-pin TQFP       44-pin TQFP    44-pin TQFP    44-pin TQFP

                                                                              28-pin UQFN              28-pin UQFN

                                       Interrupt Sources                                                                                             33

                                       Timers (16-bit)                                                                                               4

                                       Serial Communications                                                                                         2 MSSP,                                                                 PIC18(L)F2X/4XK22

                                                                                                                                                     2 EUSART

                                       SR Latch                                                                                                      Yes

                                       Charge Time Measurement Unit                                                                                  Yes

                                       Module (CTMU)

                                       Programmable                                                                                                  Yes

                                       High/Low-Voltage Detect (HLVD)

                                       Programmable Brown-out Reset                                                                                  Yes

                                       (BOR)

                                       Resets (and Delays)                                                                                        POR, BOR,

                                                                                                                                         RESET Instruction,

                                                                                                                                             Stack Overflow,

DS40001412G-page 13                                                                                                                          Stack Underflow

                                                                                                                                                (PWRT, OST),

                                                                                                                                                  MCLR, WDT

                                       Instruction Set                                                                                          75 Instructions;

                                                                                                                                      83 with Extended Instruction Set enabled

                                       Operating Frequency                                                                                        DC - 64 MHz

                                       Note       1:    PORTE contains the single RE3 read-only  bit.
PIC18(L)F2X/4XK22

FIGURE 1-1:                   PIC18(L)F2X/4XK22 FAMILY BLOCK DIAGRAM

                                                      Data Bus<8>

      Table Pointer<21>

                                                   8   8                       Data Latch

      inc/dec logic

                                                                               Data Memory

            21                PCLATU PCLATH

                          20                                                   Address Latch               PORTA

                                      PCU     PCH     PCL                                                  RA0:RA7

                                      Program Counter                                   12

                                                                            Data Address<12>

                                      31-Level Stack

      Address Latch                                                    4            12        4

      Program Memory                       STKPTR                      BSR     FSR0     Access

     (8/16/32/64 Kbytes)                                                       FSR1         Bank

                                                                               FSR2                        PORTB

      Data Latch                                                                              12           RB0:RB7

                          8                                                    inc/dec

                              Table Latch                                      logic

                              ROM Latch                                        Address

     Instruction Bus <16>                                                      Decode

                                                                                                           PORTC

                                      IR                                                                   RC0:RC7

                                                                                                  8

                              Instruction             State machine

                              Decode and              control signals

                                     Control                                   PRODH PRODL

                                                                                                           PORTD

                                                                        3         8 x 8 Multiply           RD0:RD7

                                                                                                        8

                                                                       BITOP        W                8

                                                                            8           8

OSC1(2)                   Internal                 Power-up

                          Oscillator                  Timer                    8                     8

OSC2(2)                       Block                                                                        PORTE

                                                   Oscillator                     ALU<8>

                          LFINTOSC            Start-up Timer                                               RE0:RE2

     SOSCI                Oscillator               Power-on                             8                  RE3(1)

                          16 MHz                      Reset

SOSCO                     Oscillator               Watchdog

                                                      Timer

                                                   Brown-out           Precision        FVR

MCLR(1)              Single-Supply                    Reset            Band Gap

                     Programming                                       Reference

                          In-Circuit               Fail-Safe

                          Debugger            Clock Monitor

            BOR               Data                             Timer1       Timer2

          HLVD               EEPROM           Timer0           Timer3       Timer4            CTMU         DAC

                                                               Timer5       Timer6

FVR   Comparators             ECCP1           CCP4             MSSP1    EUSART1                            ADC      FVR

DAC         C1/C2             ECCP2(3)        CCP5             MSSP2    EUSART2             SR Latch       10-bit

                              ECCP3

Note  1:    RE3 is only available when MCLR functionality is disabled.

      2:    OSC1/CLKIN and OSC2/CLKOUT are only available in select oscillator modes and when these pins are not being used as digital I/O.

            Refer to Section 2.0 “Oscillator Module (With Fail-Safe Clock Monitor)” for additional information.

      3:    Full-Bridge operation for PIC18(L)F4XK22, half-bridge operation for PIC18(L)F2XK22.

DS40001412G-page 14                                                                                         2010-2016 Microchip Technology Inc.
                                                              PIC18(L)F2X/4XK22

TABLE 1-2:       PIC18(L)F2XK22 PINOUT I/O DESCRIPTIONS

Pin Number

                              Pin Name          Pin   Buffer                         Description

PDIP,      QFN,                                 Type  Type

SOIC       UQFN

2          27    RA0/C12IN0-/AN0

                              RA0               I/O   TTL     Digital I/O.

                              C12IN0-           I     Analog  Comparators C1 and C2 inverting input.

                              AN0               I     Analog  Analog input 0.

3          28    RA1/C12IN1-/AN1

                              RA1               I/O   TTL     Digital I/O.

                              C12IN1-           I     Analog  Comparators C1 and C2 inverting input.

                              AN1               I     Analog  Analog input 1.

4          1     RA2/C2IN+/AN2/DACOUT/VREF-

                              RA2               I/O   TTL     Digital I/O.

                              C2IN+             I     Analog  Comparator C2 non-inverting input.

                              AN2               I     Analog  Analog input 2.

                              DACOUT            O     Analog  DAC Reference output.

                              VREF-             I     Analog  A/D reference voltage (low) input.

5          2     RA3/C1IN+/AN3/VREF+

                              RA3               I/O   TTL     Digital I/O.

                              C1IN+             I     Analog  Comparator C1 non-inverting input.

                              AN3               I     Analog  Analog input 3.

                              VREF+             I     Analog  A/D reference voltage (high) input.

6          3     RA4/CCP5/C1OUT/SRQ/T0CKI

                              RA4               I/O   ST      Digital I/O.

                              CCP5              I/O   ST      Capture 5 input/Compare 5 output/PWM 5 output.

                              C1OUT             O     CMOS    Comparator C1 output.

                              SRQ               O     TTL     SR latch Q output.

                              T0CKI             I     ST      Timer0 external clock input.

7          4     RA5/C2OUT/SRNQ/SS1/HLVDIN/AN4

                              RA5               I/O   TTL     Digital I/O.

                              C2OUT             O     CMOS    Comparator C2 output.

                              SRNQ              O     TTL     SR latch Q output.

                              SS1               I     TTL     SPI slave select input (MSSP).

                              HLVDIN            I     Analog  High/Low-Voltage Detect input.

                              AN4               I     Analog  Analog input 4.

10         7     RA6/CLKO/OSC2

                              RA6               I/O   TTL     Digital I/O.

                              CLKO              O             In RC mode, OSC2 pin outputs CLKOUT which has

                                                              1/4 the frequency of OSC1 and denotes the instruction

                                                              cycle rate.

                              OSC2              O             Oscillator crystal output. Connects to crystal or resonator

                                                              in Crystal Oscillator mode.

Legend:    TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;

           I = Input; O = Output; P = Power.

Note   1:  Default pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are set.

       2:  Alternate pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are clear.

 2010-2016 Microchip Technology Inc.                                                              DS40001412G-page 15
PIC18(L)F2X/4XK22

TABLE 1-2:       PIC18(L)F2XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Number

                              Pin Name             Pin   Buffer                         Description

PDIP,      QFN,                                    Type  Type

SOIC       UQFN

9          6     RA7/CLKI/OSC1

                                RA7                I/O   TTL     Digital I/O.

                              CLKI                 I     CMOS    External clock source input. Always associated with pin

                                                                 function OSC1.

                              OSC1                 I     ST      Oscillator crystal input or external clock source input ST

                                                                 buffer when configured in RC mode; CMOS otherwise.

21         18    RB0/INT0/CCP4/FLT0/SRI/SS2/AN12

                                RB0                I/O   TTL     Digital I/O.

                              INT0                 I     ST      External interrupt 0.

                              CCP4                 I/O   ST      Capture 4 input/Compare 4 output/PWM 4 output.

                              FLT0                 I     ST      PWM Fault input for ECCP Auto-Shutdown.

                                SRI                I     ST      SR latch input.

                                SS2                I     TTL     SPI slave select input (MSSP).

                              AN12                 I     Analog  Analog input 12.

22         19    RB1/INT1/P1C/SCK2/SCL2/C12IN3-/AN10

                                RB1                I/O   TTL     Digital I/O.

                              INT1                 I     ST      External interrupt 1.

                                P1C                O     CMOS    Enhanced CCP1 PWM output.

                              SCK2                 I/O   ST      Synchronous serial clock input/output for SPI mode

                                                                 (MSSP).

                              SCL2                 I/O   ST      Synchronous serial clock input/output for I2C mode

                                                                 (MSSP).

                              C12IN3-              I     Analog  Comparators C1 and C2 inverting input.

                              AN10                 I     Analog  Analog input 10.

23         20    RB2/INT2/CTED1/P1B/SDI2/SDA2/AN8

                                RB2                I/O   TTL     Digital I/O.

                              INT2                 I     ST      External interrupt 2.

                              CTED1                I     ST      CTMU Edge 1 input.

                                P1B                O     CMOS    Enhanced CCP1 PWM output.

                              SDI2                 I     ST      SPI data in (MSSP).

                              SDA2                 I/O   ST      I2C data I/O (MSSP).

                                AN8                I     Analog  Analog input 8.

24         21    RB3/CTED2/P2A/CCP2/SDO2/C12IN2-/AN9

                                RB3                I/O   TTL     Digital I/O.

                              CTED2                I     ST      CTMU Edge 2 input.

                                P2A                O     CMOS    Enhanced CCP2 PWM output.

                              CCP2(2)              I/O   ST      Capture 2 input/Compare 2 output/PWM 2 output.

                              SDO2                 O     —       SPI data out (MSSP).

                              C12IN2-              I     Analog  Comparators C1 and C2 inverting input.

                                AN9                I     Analog  Analog input 9.

Legend:    TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;

           I = Input; O = Output; P = Power.

Note   1:  Default pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are set.

       2:  Alternate pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are clear.

DS40001412G-page 16                                                                 2010-2016 Microchip Technology Inc.
                                                               PIC18(L)F2X/4XK22

TABLE 1-2:       PIC18(L)F2XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Number

                              Pin Name          Pin    Buffer                       Description

PDIP,      QFN,                                 Type   Type

SOIC       UQFN

25         22    RB4/IOC0/P1D/T5G/AN11

                              RB4               I/O    TTL     Digital I/O.

                              IOC0              I      TTL     Interrupt-on-change pin.

                              P1D               O      CMOS    Enhanced CCP1 PWM output.

                              T5G               I      ST      Timer5 external clock gate input.

                              AN11              I      Analog  Analog input 11.

26         23    RB5/IOC1/P2B/P3A/CCP3/T3CKI/T1G/AN13

                              RB5               I/O    TTL     Digital I/O.

                              IOC1              I      TTL     Interrupt-on-change pin.

                              P2B(1)            O      CMOS    Enhanced CCP2 PWM output.

                              P3A(1)            O      CMOS    Enhanced CCP3 PWM output.

                              CCP3(1)           I/O    ST      Capture 3 input/Compare 3 output/PWM 3 output.

                              T3CKI(2)          I      ST      Timer3 clock input.

                              T1G               I      ST      Timer1 external clock gate input.

                              AN13              I      Analog  Analog input 13.

27         24    RB6/IOC2/TX2/CK2/PGC

                              RB6               I/O    TTL     Digital I/O.

                              IOC2              I      TTL     Interrupt-on-change pin.

                              TX2               O      —       EUSART asynchronous transmit.

                              CK2               I/O    ST      EUSART synchronous clock (see related RXx/DTx).

                              PGC               I/O    ST      In-Circuit Debugger and ICSP™ programming clock pin.

28         25    RB7/IOC3/RX2/DT2/PGD

                              RB7               I/O    TTL     Digital I/O.

                              IOC3              I      TTL     Interrupt-on-change pin.

                              RX2               I      ST      EUSART asynchronous receive.

                              DT2               I/O    ST      EUSART synchronous data (see related TXx/CKx).

                              PGD               I/O    ST      In-Circuit Debugger and ICSP™ programming data pin.

11         8     RC0/P2B/T3CKI/T3G/T1CKI/SOSCO

                              RC0               I/O    ST      Digital I/O.

                              P2B(2)            O      CMOS    Enhanced CCP1 PWM output.

                              T3CKI(1)          I      ST      Timer3 clock input.

                              T3G               I      ST      Timer3 external clock gate input.

                              T1CKI             I      ST      Timer1 clock input.

                              SOSCO             O      —       Secondary oscillator output.

12         9     RC1/P2A/CCP2/SOSCI

                              RC1               I/O    ST      Digital I/O.

                              P2A               O      CMOS    Enhanced CCP2 PWM output.

                              CCP2(1)           I/O    ST      Capture 2 input/Compare 2 output/PWM 2 output.

                              SOSCI             I      Analog  Secondary oscillator input.

Legend:    TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;

           I = Input; O = Output; P = Power.

Note   1:  Default pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are set.

       2:  Alternate pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are clear.

 2010-2016 Microchip Technology Inc.                                                             DS40001412G-page 17
PIC18(L)F2X/4XK22

TABLE 1-2:       PIC18(L)F2XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Number

                              Pin Name          Pin   Buffer                        Description

PDIP,      QFN,                                 Type  Type

SOIC       UQFN

13         10    RC2/CTPLS/P1A/CCP1/T5CKI/AN14

                               RC2              I/O   ST      Digital I/O.

                              CTPLS             O     —       CTMU pulse generator output.

                               P1A              O     CMOS    Enhanced CCP1 PWM output.

                               CCP1             I/O   ST      Capture 1 input/Compare 1 output/PWM 1 output.

                              T5CKI             I     ST      Timer5 clock input.

                               AN14             I     Analog  Analog input 14.

14         11    RC3/SCK1/SCL1/AN15

                               RC3              I/O   ST      Digital I/O.

                               SCK1             I/O   ST      Synchronous serial clock input/output for SPI mode

                                                              (MSSP).

                               SCL1             I/O   ST      Synchronous serial clock input/output for I2C mode

                                                              (MSSP).

                               AN15             I     Analog  Analog input 15.

15         12    RC4/SDI1/SDA1/AN16

                               RC4              I/O   ST      Digital I/O.

                               SDI1             I     ST      SPI data in (MSSP).

                               SDA1             I/O   ST      I2C data I/O (MSSP).

                               AN16             I     Analog  Analog input 16.

16         13    RC5/SDO1/AN17

                               RC5              I/O   ST      Digital I/O.

                               SDO1             O     —       SPI data out (MSSP).

                               AN17             I     Analog  Analog input 17.

17         14    RC6/P3A/CCP3/TX1/CK1/AN18

                               RC6              I/O   ST      Digital I/O.

                              P3A(2)            O     CMOS    Enhanced CCP3 PWM output.

                              CCP3(2)           I/O   ST      Capture 3 input/Compare 3 output/PWM 3 output.

                               TX1              O     —       EUSART asynchronous transmit.

                               CK1              I/O   ST      EUSART synchronous clock (see related RXx/DTx).

                               AN18             I     Analog  Analog input 18.

18         15    RC7/P3B/RX1/DT1/AN19

                               RC7              I/O   ST      Digital I/O.

                               P3B              O     CMOS    Enhanced CCP3 PWM output.

                               RX1              I     ST      EUSART asynchronous receive.

                               DT1              I/O   ST      EUSART synchronous data (see related TXx/CKx).

                               AN19             I     Analog  Analog input 19.

1          26    RE3/VPP/MCLR

                               RE3              I     ST      Digital input.

                               VPP              P             Programming voltage input.

                              MCLR              I     ST      Active-Low Master Clear (device Reset) input.

Legend:    TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;

           I = Input; O = Output; P = Power.

Note   1:  Default pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are set.

       2:  Alternate pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

           CCP2MX are clear.

DS40001412G-page 18                                                              2010-2016 Microchip Technology Inc.
                                                                               PIC18(L)F2X/4XK22

TABLE 1-2:          PIC18(L)F2XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Number

                                   Pin Name                   Pin   Buffer                           Description

PDIP,      QFN,                                               Type  Type

SOIC       UQFN

20           17                      VDD                      P        —       Positive supply for logic and I/O pins.

8, 19        5, 16                   VSS                      P        —       Ground reference for logic and I/O pins.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;

             I = Input; O = Output; P = Power.

Note   1:    Default pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

             CCP2MX are set.

       2:    Alternate pin assignment for P2B, T3CKI, CCP3 and CCP2 when Configuration bits PB2MX, T3CMX, CCP3MX and

             CCP2MX are clear.

TABLE 1-3:          PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS

           Pin Number                                               Pin     Buffer

                                                Pin Name            Type    Type                        Description

PDIP   TQFP         QFN        UQFN

2          19       19         17    RA0/C12IN0-/AN0

                                                RA0                 I/O     TTL     Digital I/O.

                                                C12IN0-             I       Analog  Comparators C1 and C2 inverting input.

                                                AN0                 I       Analog  Analog input 0.

3          20       20         18    RA1/C12IN1-/AN1

                                                RA1                 I/O     TTL     Digital I/O.

                                                C12IN1-             I       Analog  Comparators C1 and C2 inverting input.

                                                AN1                 I       Analog  Analog input 1.

4          21       21         19    RA2/C2IN+/AN2/DACOUT/VREF-

                                                RA2                 I/O     TTL     Digital I/O.

                                                C2IN+               I       Analog  Comparator C2 non-inverting input.

                                                AN2                 I       Analog  Analog input 2.

                                                DACOUT              O       Analog  DAC Reference output.

                                                VREF-               I       Analog  A/D reference voltage (low) input.

5          22       22         20    RA3/C1IN+/AN3/VREF+

                                                RA3                 I/O     TTL     Digital I/O.

                                                C1IN+               I       Analog  Comparator C1 non-inverting input.

                                                AN3                 I       Analog  Analog input 3.

                                                VREF+               I       Analog  A/D reference voltage (high) input.

6          23       23         21    RA4/C1OUT/SRQ/T0CKI

                                                RA4                 I/O        ST   Digital I/O.

                                                C1OUT               O       CMOS    Comparator C1 output.

                                                SRQ                 O       TTL     SR latch Q output.

                                                T0CKI               I          ST   Timer0 external clock input.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;     I

             = Input; O = Output; P = Power.

Note     1:    Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

               and CCP2MX are set.

         2:    Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A    and  CCP2/P2A  when     Configuration   bits   PB2MX,  T3CMX,

               CCP3MX and CCP2MX are clear.

 2010-2016 Microchip Technology Inc.                                                                            DS40001412G-page 19
PIC18(L)F2X/4XK22

TABLE 1-3:   PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Number                                         Pin       Buffer

                                              Pin Name      Type      Type                         Description

PDIP  TQFP   QFN             UQFN

7        24  24              22    RA5/C2OUT/SRNQ/SS1/HLVDIN/AN4

                                              RA5           I/O       TTL      Digital I/O.

                                              C2OUT         O         CMOS     Comparator C2 output.

                                              SRNQ          O         TTL      SR latch Q output.

                                              SS1           I         TTL      SPI slave select input (MSSP1).

                                              HLVDIN        I         Analog   High/Low-Voltage Detect input.

                                              AN4           I         Analog   Analog input 4.

14       31  33              29    RA6/CLKO/OSC2

                                              RA6           I/O       TTL      Digital I/O.

                                              CLKO          O              —   In RC mode, OSC2 pin outputs CLKOUT which

                                                                               has 1/4 the frequency of OSC1 and denotes the

                                                                               instruction cycle rate.

                                              OSC2          O              —   Oscillator crystal output. Connects to crystal or

                                                                               resonator in Crystal Oscillator mode.

13       30  32              28    RA7/CLKI/OSC1

                                              RA7           I/O       TTL      Digital I/O.

                                              CLKI          I         CMOS     External clock source input. Always associated

                                                                               with pin function OSC1.

                                              OSC1          I              ST  Oscillator crystal input or external clock source

                                                                               input ST buffer when configured in RC mode;

                                                                               CMOS otherwise.

33       8   9               8     RB0/INT0/FLT0/SRI/AN12

                                              RB0           I/O       TTL      Digital I/O.

                                              INT0          I              ST  External interrupt 0.

                                              FLT0          I              ST  PWM Fault input for ECCP Auto-Shutdown.

                                              SRI           I              ST  SR latch input.

                                              AN12          I         Analog   Analog input 12.

34       9   10              9     RB1/INT1/C12IN3-/AN10

                                              RB1           I/O       TTL      Digital I/O.

                                              INT1          I              ST  External interrupt 1.

                                              C12IN3-       I         Analog   Comparators C1 and C2 inverting input.

                                              AN10          I         Analog   Analog input 10.

35       10  11              10    RB2/INT2/CTED1/AN8

                                              RB2           I/O       TTL      Digital I/O.

                                              INT2          I              ST  External interrupt 2.

                                              CTED1         I              ST  CTMU Edge 1 input.

                                              AN8           I         Analog   Analog input 8.

36       11  12              11    RB3/CTED2/P2A/CCP2/C12IN2-/AN9

                                              RB3           I/O       TTL      Digital I/O.

                                              CTED2         I              ST  CTMU Edge 2 input.

                                              P2A(2)        O         CMOS     Enhanced CCP2 PWM output.

                                              CCP2(2)       I/O            ST  Capture 2 input/Compare 2 output/PWM 2 output.

                                              C12IN2-       I         Analog   Comparators C1 and C2 inverting input.

                                              AN9           I         Analog   Analog input 9.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;      I

             = Input; O = Output; P = Power.

Note     1:  Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

             and CCP2MX are set.

         2:  Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A  and  CCP2/P2A  when    Configuration  bits  PB2MX,      T3CMX,

             CCP3MX and CCP2MX are clear.

DS40001412G-page 20                                                                   2010-2016 Microchip Technology Inc.
                                                                           PIC18(L)F2X/4XK22

TABLE 1-3:   PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Number                                         Pin       Buffer

                                              Pin Name      Type      Type                          Description

PDIP  TQFP   QFN             UQFN

37       14  14              12    RB4/IOC0/T5G/AN11

                                              RB4           I/O       TTL      Digital I/O.

                                              IOC0          I         TTL      Interrupt-on-change pin.

                                              T5G           I              ST  Timer5 external clock gate input.

                                              AN11          I         Analog   Analog input 11.

38       15  15              13    RB5/IOC1/P3A/CCP3/T3CKI/T1G/AN13

                                              RB5           I/O       TTL      Digital I/O.

                                              IOC1          I         TTL      Interrupt-on-change pin.

                                              P3A(1)        O         CMOS     Enhanced CCP3 PWM output.

                                              CCP3(1)       I/O            ST  Capture 3 input/Compare 3 output/PWM 3 output.

                                              T3CKI(2)      I              ST  Timer3 clock input.

                                              T1G           I              ST  Timer1 external clock gate input.

                                              AN13          I         Analog   Analog input 13.

39       16  16              14    RB6/IOC2/PGC

                                              RB6           I/O       TTL      Digital I/O.

                                              IOC2          I         TTL      Interrupt-on-change pin.

                                              PGC           I/O            ST  In-Circuit Debugger and ICSP™ programming

                                                                               clock pin.

40       17  17              15    RB7/IOC3/PGD

                                              RB7           I/O       TTL      Digital I/O.

                                              IOC3          I         TTL      Interrupt-on-change pin.

                                              PGD           I/O            ST  In-Circuit Debugger and ICSP™ programming

                                                                               data pin.

15       32  34              30    RC0/P2B/T3CKI/T3G/T1CKI/SOSCO

                                              RC0           I/O            ST  Digital I/O.

                                              P2B(2)        O         CMOS     Enhanced CCP1 PWM output.

                                              T3CKI(1)      I              ST  Timer3 clock input.

                                              T3G           I              ST  Timer3 external clock gate input.

                                              T1CKI         I              ST  Timer1 clock input.

                                              SOSCO         O              —   Secondary oscillator output.

16       35  35              31    RC1/P2A/CCP2/SOSCI

                                              RC1           I/O            ST  Digital I/O.

                                              P2A(1)        O         CMOS     Enhanced CCP2 PWM output.

                                              CCP2(1)       I/O            ST  Capture 2 input/Compare 2 output/PWM 2 output.

                                              SOSCI         I         Analog   Secondary oscillator input.

17       36  36              32    RC2/CTPLS/P1A/CCP1/T5CKI/AN14

                                              RC2           I/O            ST  Digital I/O.

                                              CTPLS         O              —   CTMU pulse generator output.

                                              P1A           O         CMOS     Enhanced CCP1 PWM output.

                                              CCP1          I/O            ST  Capture 1 input/Compare 1 output/PWM 1 output.

                                              T5CKI         I              ST  Timer5 clock input.

                                              AN14          I         Analog   Analog input 14.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;   I

             = Input; O = Output; P = Power.

Note     1:  Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

             and CCP2MX are set.

         2:  Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A  and  CCP2/P2A  when    Configuration   bits  PB2MX,     T3CMX,

             CCP3MX and CCP2MX are clear.

 2010-2016 Microchip Technology Inc.                                                                       DS40001412G-page 21
PIC18(L)F2X/4XK22

TABLE 1-3:   PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Number                                         Pin       Buffer

                                              Pin Name      Type      Type                       Description

PDIP  TQFP   QFN             UQFN

18       37  37              33    RC3/SCK1/SCL1/AN15

                                              RC3           I/O            ST  Digital I/O.

                                              SCK1          I/O            ST  Synchronous serial clock input/output for SPI

                                                                               mode (MSSP).

                                              SCL1          I/O            ST  Synchronous serial clock input/output for I2C

                                                                               mode (MSSP).

                                              AN15          I         Analog   Analog input 15.

23       42  42              38    RC4/SDI1/SDA1/AN16

                                              RC4           I/O            ST  Digital I/O.

                                              SDI1          I              ST  SPI data in (MSSP).

                                              SDA1          I/O            ST  I2C data I/O (MSSP).

                                              AN16          I         Analog   Analog input 16.

24       43  43              39    RC5/SDO1/AN17

                                              RC5           I/O            ST  Digital I/O.

                                              SDO1          O              —   SPI data out (MSSP).

                                              AN17          I         Analog   Analog input 17.

25       44  44              40    RC6/TX1/CK1/AN18

                                              RC6           I/O            ST  Digital I/O.

                                              TX1           O              —   EUSART asynchronous transmit.

                                              CK1           I/O            ST  EUSART synchronous clock (see related RXx/

                                                                               DTx).

                                              AN18          I         Analog   Analog input 18.

26       1   1               1     RC7/RX1/DT1/AN19

                                              RC7           I/O            ST  Digital I/O.

                                              RX1           I              ST  EUSART asynchronous receive.

                                              DT1           I/O            ST  EUSART synchronous data (see related TXx/

                                                                               CKx).

                                              AN19          I         Analog   Analog input 19.

19       38  38              34    RD0/SCK2/SCL2/AN20

                                              RD0           I/O            ST  Digital I/O.

                                              SCK2          I/O            ST  Synchronous serial clock input/output for SPI

                                                                               mode (MSSP).

                                              SCL2          I/O            ST  Synchronous serial clock input/output for I2C

                                                                               mode (MSSP).

                                              AN20          I         Analog   Analog input 20.

20       39  39              35    RD1/CCP4/SDI2/SDA2/AN21

                                              RD1           I/O            ST  Digital I/O.

                                              CCP4          I/O            ST  Capture 4 input/Compare 4 output/PWM 4 output.

                                              SDI2          I              ST  SPI data in (MSSP).

                                              SDA2          I/O            ST  I2C data I/O (MSSP).

                                              AN21          I         Analog   Analog input 21.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;   I

             = Input; O = Output; P = Power.

Note     1:  Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

             and CCP2MX are set.

         2:  Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A  and  CCP2/P2A   when   Configuration  bits  PB2MX,      T3CMX,

             CCP3MX and CCP2MX are clear.

DS40001412G-page 22                                                                    2010-2016 Microchip Technology Inc.
                                                                           PIC18(L)F2X/4XK22

TABLE 1-3:   PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Number                                         Pin       Buffer

                                              Pin Name      Type      Type                       Description

PDIP  TQFP   QFN             UQFN

21       40  40              36    RD2/P2B/AN22

                                              RD2           I/O            ST  Digital I/O

                                              P2B(1)        O         CMOS     Enhanced CCP2 PWM output.

                                              AN22          I         Analog   Analog input 22.

22       41  41              37    RD3/P2C/SS2/AN23

                                              RD3           I/O            ST  Digital I/O.

                                              P2C           O         CMOS     Enhanced CCP2 PWM output.

                                              SS2           I         TTL      SPI slave select input (MSSP).

                                              AN23          I         Analog   Analog input 23.

27       2   2               2     RD4/P2D/SDO2/AN24

                                              RD4           I/O            ST  Digital I/O.

                                              P2D           O         CMOS     Enhanced CCP2 PWM output.

                                              SDO2          O              —   SPI data out (MSSP).

                                              AN24          I         Analog   Analog input 24.

28       3   3               3     RD5/P1B/AN25

                                              RD5           I/O            ST  Digital I/O.

                                              P1B           O         CMOS     Enhanced CCP1 PWM output.

                                              AN25          I         Analog   Analog input 25.

29       4   4               4     RD6/P1C/TX2/CK2/AN26

                                              RD6           I/O            ST  Digital I/O.

                                              P1C           O         CMOS     Enhanced CCP1 PWM output.

                                              TX2           O              —   EUSART asynchronous transmit.

                                              CK2           I/O            ST  EUSART synchronous clock (see related RXx/

                                                                               DTx).

                                              AN26          I         Analog   Analog input 26.

30       5   5               5     RD7/P1D/RX2/DT2/AN27

                                              RD7           I/O            ST  Digital I/O.

                                              P1D           O         CMOS     Enhanced CCP1 PWM output.

                                              RX2           I              ST  EUSART asynchronous receive.

                                              DT2           I/O            ST  EUSART synchronous data (see related TXx/

                                                                               CKx).

                                              AN27          I         Analog   Analog input 27.

8        25  25              23    RE0/P3A/CCP3/AN5

                                              RE0           I/O            ST  Digital I/O.

                                              P3A(2)        O         CMOS     Enhanced CCP3 PWM output.

                                              CCP3(2)       I/O            ST  Capture 3 input/Compare 3 output/PWM 3 output.

                                              AN5           I         Analog   Analog input 5.

9        26  26              24    RE1/P3B/AN6

                                              RE1           I/O            ST  Digital I/O.

                                              P3B           O         CMOS     Enhanced CCP3 PWM output.

                                              AN6           I         Analog   Analog input 6.

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;   I

             = Input; O = Output; P = Power.

Note     1:  Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

             and CCP2MX are set.

         2:  Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A  and  CCP2/P2A   when   Configuration  bits  PB2MX,      T3CMX,

             CCP3MX and CCP2MX are clear.

 2010-2016 Microchip Technology Inc.                                                                       DS40001412G-page 23
PIC18(L)F2X/4XK22

TABLE 1-3:      PIC18(L)F4XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Number                                         Pin       Buffer

                                              Pin Name      Type      Type                      Description

PDIP   TQFP     QFN          UQFN

10       27     27           25     RE2/CCP5/AN7

                                              RE2           I/O            ST  Digital I/O.

                                              CCP5          I/O            ST  Capture 5 input/Compare 5 output/PWM 5 output

                                              AN7           I         Analog   Analog input 7.

1        18     18           16     RE3/VPP/MCLR

                                              RE3           I              ST  Digital input.

                                              VPP           P                  Programming voltage input.

                                              MCLR          I              ST  Active-low Master Clear (device Reset) input.

11,32    7, 28  7, 8,        7, 26            VDD           P              —   Positive supply for logic and I/O pins.

                28, 29

12,31    6, 29  6,30,        6, 27            VSS           P              —   Ground reference for logic and I/O pins.

                31

       12,13,   13                            NC

         33,34

Legend:      TTL = TTL compatible input CMOS = CMOS compatible input or output; ST = Schmitt Trigger input with CMOS levels;  I

             = Input; O = Output; P = Power.

Note     1:  Default pin assignment for P2B, T3CKI, CCP3/P3A and CCP2/P2A when Configuration bits PB2MX, T3CMX, CCP3MX

             and CCP2MX are set.

         2:  Alternate  pin  assignment  for  P2B,  T3CKI,  CCP3/P3A  and  CCP2/P2A  when      Configuration  bits  PB2MX,    T3CMX,

             CCP3MX and CCP2MX are clear.

DS40001412G-page 24                                                                   2010-2016 Microchip Technology Inc.
                                                                        PIC18(L)F2X/4XK22

2.0      OSCILLATOR MODULE (WITH                                    The primary clock module can be configured to provide

         FAIL-SAFE CLOCK MONITOR)                                   one of six clock sources as the primary clock.

                                                                    1.   RC          External Resistor/Capacitor

2.1      Overview                                                   2.   LP          Low-Power Crystal

The    oscillator  module   has     a  wide    variety  of  clock   3.   XT          Crystal/Resonator

sources and selection features that allow it to be used             4.   INTOSC      Internal Oscillator

in  a  wide  range      of  applications     while  maximizing      5.   HS          High-Speed Crystal/Resonator

performance        and  minimizing     power       consumption.     6.   EC          External Clock

Figure 2-1 illustrates a block diagram of the oscillator            The HS and EC oscillator circuits can be optimized for

module.                                                             power consumption and oscillator speed using settings

Clock  sources       can    be  configured     from     external    in   FOSC<3:0>.       Additional  FOSC<3:0>        selections

oscillators, quartz crystal resonators, ceramic resonators          enable RA6 to be used as I/O or CLKO (FOSC/4) for

and    Resistor-Capacitor   (RC)    circuits.  In   addition,  the  RC, EC and INTOSC Oscillator modes.

system clock source can be configured from one of three             Primary  Clock        modes    are     selectable  by  the

internal oscillators, with a choice of speeds selectable via        FOSC<3:0>       bits  of  the  CONFIG1H     Configuration

software. Additional clock features include:                        register. The primary clock operation is further defined

•   Selectable system clock source between external                 by these Configuration and register bits:

    or internal sources via software.                               1.   PRICLKEN (CONFIG1H<5>)

•   Two-Speed Start-up mode, which minimizes                        2.   PRISD (OSCCON2<2>)

    latency between external oscillator start-up and                3.   PLLCFG (CONFIG1H<4>)

    code execution.                                                 4.   PLLEN (OSCTUNE<6>)

•   Fail-Safe Clock Monitor (FSCM) designed to                      5.   HFOFST (CONFIG3H<3>)

    detect a failure of the external clock source (LP,

    XT, HS, EC or RC modes) and switch                              6.   IRCF<2:0> (OSCCON<6:4>)

    automatically to the internal oscillator.                       7.   MFIOSEL (OSCCON2<4>)

•   Oscillator Start-up Timer (OST) ensures stability               8.   INTSRC (OSCTUNE<7>)

    of crystal oscillator sources.                                  The  HFINTOSC,        MFINTOSC      and    LFINTOSC    are

                                                                    factory  calibrated   high,    medium  and  low-frequency

                                                                    oscillators, respectively, which are used as the internal

                                                                    clock sources.

 2010-2016 Microchip Technology Inc.                                                                   DS40001412G-page 25
PIC18(L)F2X/4XK22

FIGURE 2-1:              SIMPLIFIED OSCILLATOR SYSTEM                                              BLOCK DIAGRAM

Secondary Oscillator(1)

          SOSCO                                                                                                                      Low-Power Mode

                                Secondary                   SOSCOUT                                                                    Event Switch

                                Oscillator                                                                                                (SCS<1:0>)

              SOSCI               (SOSC)

                                                                                                                                              2

Primary Clock Module                                                                                                          Secondary

                      PRICLKEN                                                                                                Oscillator  01

                         PRISD                                                                             PLL_Select(3) (4)

                                    EN                        FOSC<3:0>(5)                                                                    Clock Switch MUX

              OSC2                Primary

                                Oscillator(2)   Primary Oscillator                              0          4xPLL  0           Primary

                                  ( OSC)                                                                                      Clock       00

              OSC1

                                                            INTOSC                              1                 1

                                                                                                                              INTOSC      1x

Internal  Oscillator

                         IRCF<2:0>

                         MFIOSEL

                                                INTSRC

                                             3                                                  3

                                                HF-16 MHZ

          HFINTOSC                              HF-8 MHZ

          (16 MHz)                              HF-4 MHZ            Internal Oscillator MUX(3)

                                                HF-2 MHZ

                                                HF-1 MHZ

                                    INTOSC      HF-500 kHZ

                                    Divide      HF-250 kHZ

                                    Circuit     HF-31.25 kHZ                                       INTOSC

          MFINTOSC

          (500 kHz)

                                                MF-500 kHZ

                                                MF-250 kHZ

                                                MF-31.25 kHZ

          LFINTOSC                              LF-31.25 kHz

          (31.25 kHz)

Note 1:       Details in Figure 2-4.

          2:  Details in Figure 2-2.

          3:  Details in Figure 2-3.

          4:  Details in Table 2-1.

          5:  The Primary Oscillator MUX uses the INTOSC branch when FOSC<3:0> = 100x.

DS40001412G-page 26                                                                                                            2010-2016 Microchip Technology  Inc.
                                                                           PIC18(L)F2X/4XK22

2.2       Oscillator Control                                          2.2.3       LOW FREQUENCY SELECTION

The OSCCON, OSCCON2 and OSCTUNE registers                             When     a  nominal     output   frequency  of  31.25 kHz    is

(Register 2-1 to Register 2-3) control several aspects                selected    (IRCF<2:0>       =   000),   users  may      choose

of   the  device    clock’s  operation,    both     in  full-power    which internal oscillator acts as the source. This is

operation and in power-managed modes.                                 done with the INTSRC bit of the OSCTUNE register

•   Main System Clock Selection (SCS)                                 and  MFIOSEL       bit  of  the  OSCCON2        register.  See

                                                                      Figure 2-2  and    Register 2-1     for  specific   31.25 kHz

•   Primary Oscillator Circuit Shutdown (PRISD)                       selection.  This     option     allows   users  to   select  a

•   Secondary Oscillator Enable (SOSCGO)                              31.25 kHz clock (MFINTOSC or HFINTOSC) that can

•   Primary Clock Frequency 4x multiplier (PLLEN)                     be   tuned  using    the    TUN<5:0>     bits   in  OSCTUNE

•   Internal Frequency selection bits (IRCF, INTSRC)                  register, while maintaining power savings with a very

•   Clock Status bits (OSTS, HFIOFS, MFIOFS,                          low  clock  speed.      LFINTOSC        always  remains      the

    LFIOFS. SOSCRUN, PLLRDY)                                          clock source for features such as the Watchdog Timer

                                                                      and the Fail-Safe Clock Monitor, regardless of the

•   Power management selection (IDLEN)                                setting of INTSRC and MFIOSEL bits

2.2.1         MAIN SYSTEM CLOCK SELECTION                             This option allows users to select the tunable and more

The System Clock Select bits, SCS<1:0>, select the                    precise     HFINTOSC        as   a  clock       source,    while

main clock source. The available clock sources are                    maintaining power savings with a very low clock speed.

•   Primary clock defined by the FOSC<3:0> bits of                    2.2.4       POWER MANAGEMENT

    CONFIG1H. The primary clock can be the primary                    The IDLEN bit of the OSCCON register determines

    oscillator, an external clock, or the internal                    whether the device goes into Sleep mode or one of the

    oscillator block.                                                 Idle modes when the SLEEP instruction is executed.

•   Secondary clock (secondary oscillator)

•   Internal oscillator block (HFINTOSC, MFINTOSC

    and LFINTOSC).

The clock source changes immediately after one or

more of the bits is written to, following a brief clock

transition interval. The SCS bits are cleared to select

the primary clock on all forms of Reset.

2.2.2         INTERNAL FREQUENCY

              SELECTION

The       Internal  Oscillator      Frequency       Select      bits

(IRCF<2:0>) select the frequency output of the internal

oscillator block. The choices are the LFINTOSC source

(31.25 kHz),        the  MFINTOSC          source   (31.25 kHz,

250 kHz   or  500 kHz)       and      the  HFINTOSC      source

(16 MHz) or one of the frequencies derived from the

HFINTOSC      postscaler     (31.25 kHz    to  8 MHz).      If  the

internal oscillator block is supplying the main clock,

changing the states of these bits will have an immedi-

ate  change   on       the  internal  oscillator’s  output.     On

device    Resets,   the     output  frequency  of   the  internal

oscillator is set to the default frequency of 1 MHz.

 2010-2016 Microchip Technology Inc.                                                                         DS40001412G-page 27
PIC18(L)F2X/4XK22

FIGURE 2-2:               INTERNAL OSCILLATOR              FIGURE 2-3:       PLL_SELECT BLOCK

                          MUX BLOCK DIAGRAM                                  DIAGRAM

IRCF<2:0>                                                  FOSC<3:0> = 100x

MFIOSEL                                                    PLLCFG

INTSRC

                                                3             PLLEN                   PLL_Select

HF-16 MHZ                                  111

HF-8 MHZ                                   110

HF-4 MHZ                                   101

HF-2 MHZ                                   100

HF-1 MHZ                                   011

MF-500 KHZ                   1

                                500 kHZ    010     INTOSC

HF-500 KHZ                   0

MF-250 KHZ                   1

                                250 kHZ    001

HF-250 KHZ                   0

HF-31.25 KHZ       11

MF-31.25 KHZ       10           31.25 kHZ  000

LF-31.25 KHZ       0X

TABLE 2-1:         PLL_SELECT   TRUTH TABLE

Primary Clock MUX Source                   FOSC<3:0>       PLLCFG            PLLEN    PLL_Select

FOSC (any source)                          0000-1111       0                 0        0

OSC1/OSC2 (external source)                0000-0111       1                 x        1

                                           1010-1111       0                 1        1

INTOSC (internal source)                   1000-1001       x                 0        0

                                                           x                 1        1

DS40001412G-page 28                                                           2010-2016 Microchip Technology Inc.
                                                          PIC18(L)F2X/4XK22

FIGURE  2-4:           SECONDARY OSCILLATOR AND EXTERNAL  CLOCK  INPUTS

                       SOSCEN                   SOSCGO

                                                T1SOSCEN
                                                T3SOSCEN
                                                T5SOSCEN

                                                                 To Clock Switch Module

        SOSCI          EN

                       Secondary                SOSCOUT

                       Oscillator

        SOSCO                                             1

        T1CKI

        T3G            SOSCEN                                    T1CLK_EXT_SRC

        T3CKI                                             0

                       SOSCEN                                    T1SOSCEN

                                        T3G

                       SOSCEN

                                                          1

                                             0                   T3CLK_EXT_SRC

                                                          0

        T3CKI                                1

        T1G                                                      T3SOSCEN

                                                T3CMX

                                        T1G               1

                                                                 T5CLK_EXT_SRC

        T5CKI                                             0

                                                                 T5SOSCEN

        T5G                             T5G

 2010-2016 Microchip  Technology Inc.                                   DS40001412G-page 29
PIC18(L)F2X/4XK22

2.3          Register Definitions: Oscillator Control

REGISTER 2-1:        OSCCON: OSCILLATOR CONTROL REGISTER

     R/W-0         R/W-0    R/W-1              R/W-1               R-q    R-0     R/W-0               R/W-0

     IDLEN                  IRCF<2:0>                        OSTS(1)      HFIOFS  SCS<1:0>

bit 7                                                                                                       bit 0

Legend:

R = Readable bit     W = Writable bit        U = Unimplemented bit, read as ‘0’   q = depends on condition

-n = Value at POR    ‘1’ = Bit is set        ‘0’ = Bit is cleared                 x = Bit is unknown

bit 7        IDLEN: Idle Enable bit

             1=      Device enters Idle mode on SLEEP instruction

             0=      Device enters Sleep mode on SLEEP instruction

bit 6-4      IRCF<2:0>: Internal RC Oscillator Frequency Select bits(2)

             111 =   HFINTOSC – (16 MHz)

             110 =   HFINTOSC/2 – (8 MHz)

             101 =   HFINTOSC/4 – (4 MHz)

             100 =   HFINTOSC/8 – (2 MHz)

             011 =   HFINTOSC/16 – (1 MHz)(3)

             If INTSRC =    0 and MFIOSEL = 0:

             010 =   HFINTOSC/32 – (500 kHz)

             001 =   HFINTOSC/64 – (250 kHz)

             000 =   LFINTOSC – (31.25 kHz)

             If INTSRC = 1 and MFIOSEL = 0:

             010 =   HFINTOSC/32 – (500 kHz)

             001 =   HFINTOSC/64 – (250 kHz)

             000 =   HFINTOSC/512 – (31.25 kHz)

             If INTSRC = 0  and MFIOSEL = 1:

             010 =   MFINTOSC – (500 kHz)

             001 =   MFINTOSC/2 – (250 kHz)

             000 =   LFINTOSC – (31.25 kHz)

             If INTSRC = 1 and MFIOSEL = 1:

             010 =   MFINTOSC – (500 kHz)

             001 =   MFINTOSC/2 – (250 kHz)

             000 =   MFINTOSC/16 – (31.25 kHz)

bit 3        OSTS: Oscillator Start-up Time-out Status bit

             1=      Device is running from the clock defined by FOSC<3:0> of the CONFIG1H register

             0=      Device is running from the internal oscillator (HFINTOSC, MFINTOSC or LFINTOSC)

bit 2        HFIOFS: HFINTOSC Frequency Stable bit

             1=      HFINTOSC frequency is stable

             0=      HFINTOSC frequency is not stable

bit 1-0      SCS<1:0>: System Clock Select bit

             1x = Internal oscillator block

             01 = Secondary (SOSC) oscillator

             00 = Primary clock (determined by FOSC<3:0> in CONFIG1H).

Note     1:  Reset state depends on state of the IESO Configuration bit.

         2:  INTOSC source may be determined by the INTSRC bit in OSCTUNE and the MFIOSEL bit in OSCCON2.

         3:  Default output frequency of HFINTOSC on Reset.

DS40001412G-page 30                                                               2010-2016 Microchip Technology Inc.
                                                                         PIC18(L)F2X/4XK22

REGISTER 2-2:          OSCCON2: OSCILLATOR CONTROL REGISTER 2

       R-0/0           R-0/q           U-0          R/W-0/0       R/W-0/u       R/W-1/1              R-x/u            R-0/0

PLLRDY             SOSCRUN             —            MFIOSEL       SOSCGO(1)     PRISD                MFIOFS    LFIOFS

bit 7                                                                                                                      bit  0

Legend:

R = Readable bit       W = Writable bit             U = Unimplemented bit, read as ‘0’          q = depends on condition

‘1’ = Bit is set       ‘0’ = Bit is cleared         x = Bit is unknown

-n/n = Value at POR and BOR/Value at all other Resets

bit 7              PLLRDY: PLL Run Status bit

                   1=  System clock comes from 4xPLL

                   0=  System clock comes from an oscillator, other than 4xPLL

bit 6              SOSCRUN: SOSC Run Status bit

                   1=  System clock comes from secondary SOSC

                   0=  System clock comes from an oscillator, other than SOSC

bit 5              Unimplemented: Read as ‘0’.

bit 4              MFIOSEL: MFINTOSC Select bit

                   1=  MFINTOSC is used in place of HFINTOSC frequencies of 500 kHz,            250  kHz  and  31.25  kHz

                   0=  MFINTOSC is not used

bit 3              SOSCGO(1): Secondary Oscillator Start Control bit

                   1=  Secondary oscillator is enabled.

                   0=  Secondary oscillator is shut off if no other sources are requesting it.

bit 2              PRISD: Primary Oscillator Drive Circuit Shutdown bit

                   1=  Oscillator drive circuit on

                   0=  Oscillator drive circuit off (zero power)

bit 1              MFIOFS: MFINTOSC Frequency Stable bit

                   1=  MFINTOSC is stable

                   0=  MFINTOSC is not stable

bit 0              LFIOFS: LFINTOSC Frequency Stable bit

                   1=  LFINTOSC is stable

                   0=  LFINTOSC is not stable

Note   1:     The  SOSCGO bit is only reset on a POR Reset.

 2010-2016 Microchip Technology Inc.                                                                DS40001412G-page 31
PIC18(L)F2X/4XK22

2.4        Clock Source Modes                                           2.5          External Clock Modes

Clock Source modes can be classified as external or                     2.5.1             OSCILLATOR START-UP TIMER (OST)

internal.

•  External Clock modes rely on external circuitry for                  When the oscillator module is configured for LP, XT or

   the clock source. Examples are: Clock modules                        HS modes, the Oscillator Start-up Timer (OST) counts

   (EC mode), quartz crystal resonators or ceramic                      1024 oscillations from OSC1. This occurs following a

   resonators (LP, XT and HS modes) and Resistor-                       Power-on Reset (POR) and when the Power-up Timer

   Capacitor (RC mode) circuits.                                        (PWRT) has expired (if configured), or a wake-up from

                                                                        Sleep. During this time, the program counter does not

•  Internal clock sources are contained internally                      increment and program execution is suspended. The

   within the Oscillator block. The Oscillator block                    OST ensures that the oscillator circuit, using a quartz

   has three internal oscillators: the 16 MHz High-                     crystal resonator or ceramic resonator, has started and

   Frequency Internal Oscillator (HFINTOSC),                            is  providing       a   stable  system   clock  to  the    oscillator

   500 kHz Medium-Frequency Internal Oscillator                         module.           When  switching  between      clock      sources,  a

   (MFINTOSC) and the 31.25 kHz Low-Frequency                           delay is required to allow the new clock to stabilize.

   Internal Oscillator (LFINTOSC).                                      These oscillator delays are shown in Table 2-2.

The system clock can be selected between external or                    In order to minimize latency between external oscillator

internal   clock  sources     via       the  System  Clock      Select  start-up     and    code     execution,  the  Two-Speed    Clock

(SCS<1:0>)        bits  of    the       OSCCON       register.   See    Start-up          mode  can  be    selected   (see  Section 2.12

Section 2.11          “Clock   Switching”         for      additional   “Two-Speed Clock Start-up Mode”).

information.

TABLE 2-2:              OSCILLATOR DELAY EXAMPLES

          Switch From                        Switch To                  Frequency                          Oscillator Delay

                                             LFINTOSC                   31.25 kHz

   Sleep/POR/BOR                             MFINTOSC              31.25 kHz to 500 kHz         Oscillator Start-up Delay (TIOSC_ST)

                                             HFINTOSC                  31.25 kHz to 16 MHz

   Sleep/POR/BOR                                  EC, RC                DC – 64 MHz             2 instruction cycles

   LFINTOSC (31.25 kHz)                           EC, RC                DC – 64 MHz             1 cycle of each

   Sleep/POR/BOR                             LP, XT, HS                 32 kHz to 40 MHz        1024 Clock Cycles (OST)

   Sleep/POR/BOR                                  4xPLL                 32 MHz to 64 MHz        1024 Clock Cycles (OST) + 2 ms

   LFINTOSC (31.25 kHz)                      LFINTOSC                  31.25 kHz to 16 MHz      1 s (approx.)

                                             HFINTOSC

2.5.2         EC MODE                                                   Because the PIC® MCU design is fully static, stopping

The   External    Clock       (EC)  mode     allows  an    externally   the external clock input will have the effect of halting the

generated logic level as the system clock source. When                  device while leaving all data intact. Upon restarting the

operating  in     this  mode,       an  external  clock    source  is   external clock, the device will resume operation as if no

connected to the OSC1 input and the OSC2 is available                   time had elapsed.

for  general    purpose       I/O.  Figure 2-5    shows     the    pin  FIGURE 2-5:                     EXTERNAL CLOCK (EC)

connections for EC mode.

The External Clock (EC) offers different power modes,                                                   MODE OPERATION

Low Power (ECLP), Medium Power (ECMP) and High

Power      (ECHP),      selectable      by   the  FOSC<3:0>      bits.      Clock from                     OSC1/CLKIN

Each   mode       is    best  suited    for  a    certain  range   of       Ext. System

frequencies. The ranges are:                                                                                     PIC® MCU

•  ECLP – below 500 kHz                                                                         I/O        OSC2/CLKOUT(1)

•  ECMP – between 500 kHz and 16 MHz

•  ECHP – above 16 MHz                                                      Note     1:     Alternate pin functions are listed in

The Oscillator Start-up Timer (OST) is disabled when                                        Section 1.0 “Device Overview”.

EC mode is selected. Therefore, there is no delay in

operation after a Power-on Reset (POR) or wake-up

from Sleep.

DS40001412G-page 32                                                                                2010-2016 Microchip Technology Inc.
                                                                         PIC18(L)F2X/4XK22

2.5.3        LP, XT, HS MODES                                            Note      1:     Quartz       crystal      characteristics      vary

The LP, XT and HS modes support the use of quartz                                         according       to    type,      package       and

crystal resonators or ceramic resonators connected to                                     manufacturer. The user should consult the

OSC1 and OSC2 (Figure 2-6). The mode selects a low,                                       manufacturer data sheets for specifications

medium or high gain setting of the internal inverter-                                     and recommended application.

amplifier to support various resonator types and speed.                            2:     Always verify oscillator performance over

LP Oscillator mode selects the lowest gain setting of the                                 the  VDD   and     temperature      range   that  is

internal inverter-amplifier. LP mode current consumption                                  expected for the application.

is the least of the three modes. This mode is best suited                          3:     For oscillator design assistance, refer to the

to drive resonators with a low drive level specification, for                             following Microchip Application Notes:

example, tuning fork type crystals.

XT  Oscillator    mode     selects   the    intermediate           gain                • AN826, “Crystal Oscillator Basics and

setting  of  the    internal   inverter-amplifier.    XT        mode                      Crystal Selection for rfPIC® and PIC®

current consumption is the medium of the three modes.                                     Devices” (DS00826)

This mode is best suited to drive resonators with a                                    • AN849, “Basic PIC® Oscillator Design”

medium drive level specification.                                                         (DS00849)

HS Oscillator mode offers a Medium Power (MP) and a                                    • AN943, “Practical PIC® Oscillator

High Power (HP) option selectable by the FOSC<3:0>                                        Analysis and Design” (DS00943)

bits. The MP selections are best suited for oscillator                                 • AN949, “Making Your Oscillator Work”

frequencies     between    4   MHz   and    16 MHz.          The   HP                     (DS00949)

selection has the highest gain setting of the internal

inverter-amplifier  and    is  best  suited      for  frequencies        FIGURE 2-7:                   CERAMIC RESONATOR

above 16 MHz. HS mode is best suited for resonators                                                    OPERATION

that require a high drive setting.                                                                     (XT OR HS MODE)

FIGURE 2-6:                QUARTZ CRYSTAL                                                                                  PIC® MCU

                           OPERATION (LP, XT OR

                           HS MODE)                                                                          OSC1/CLKIN

                                                                               C1                                              To Internal

                                            PIC® MCU                                                                           Logic

                               OSC1/CLKIN                                                       RP(3)               RF(2)      Sleep

         C1                                           To Internal

                                                      Logic

                Quartz               RF(2)                                     C2      Ceramic     RS(1)     OSC2/CLKOUT

                Crystal                               Sleep                            Resonator

                                                                         Note  1:      A   series  resistor   (RS)  may    be  required  for

         C2         RS(1)      OSC2/CLKOUT                                             ceramic resonators with low drive level.

                                                                               2:      The value of RF varies with the Oscillator mode

Note     1:  A  series     resistor  (RS)   may  be   required     for                 selected (typically between 2 M to 10 M.

             quartz crystals with low drive level.                             3:      An  additional     parallel  feedback   resistor  (RP)

         2:  The value of RF varies with the Oscillator mode                           may be required for proper ceramic resonator

             selected (typically between 2 M to 10 M.                               operation.

 2010-2016 Microchip Technology Inc.                                                                               DS40001412G-page 33
PIC18(L)F2X/4XK22

2.5.4             EXTERNAL RC MODES                                     2.6       Internal Clock Modes

The external Resistor-Capacitor (RC) modes support                      The oscillator module has three independent, internal

the  use      of  an  external  RC  circuit.  This       allows    the  oscillators that can be configured or selected as the

designer maximum flexibility in frequency choice while                  system clock source.

keeping costs to a minimum when clock accuracy is not                   1.   The      HFINTOSC       (High-Frequency     Internal

required. There are two modes: RC and RCIO.                                  Oscillator) is factory calibrated and operates at

2.5.4.1           RC Mode                                                    16 MHz. The frequency of the HFINTOSC can

In RC mode, the RC circuit connects to OSC1. OSC2/                           be   user-adjusted      via     software  using      the

CLKOUT outputs the RC oscillator frequency divided                           OSCTUNE register (Register 2-3).

by four. This signal may be used to provide a clock for                 2.   The MFINTOSC (Medium-Frequency Internal

external circuitry, synchronization, calibration, test or                    Oscillator) is factory calibrated and operates

other application requirements. Figure 2-8 shows the                         at 500 kHz. The frequency of the MFINTOSC

external RC mode connections.                                                can be user-adjusted via software using the

                                                                             OSCTUNE register (Register 2-3).

FIGURE 2-8:             EXTERNAL RC MODES                               3.   The      LFINTOSC       (Low-Frequency      Internal

                                                                             Oscillator) is factory calibrated and operates at

         VDD                                                                 31.25 kHz.     The     LFINTOSC  cannot     be    user-

                                    PIC® MCU                                 adjusted,   but    is  designed  to  be   stable  over

   REXT                                                                      temperature and voltage.

                      OSC1/CLKIN                         Internal       The system clock speed can be selected via software

                                                         Clock          using    the  Internal   Oscillator   Frequency  select   bits

   CEXT                                                                 IRCF<2:0> of the OSCCON register.

   VSS                                                                  The system clock can be selected between external or

                                                                        internal clock sources via the System Clock Selection

         FOSC/4   or  OSC2/CLKOUT(1)                                    (SCS<1:0>)      bits    of   the  OSCCON       register.  See

         I/O(2)                                                         Section 2.11 “Clock Switching” for more information.

                                10 k  REXT  100 k                   2.6.1     INTOSC WITH I/O OR CLOCKOUT

   Recommended values:

                                CEXT > 20 pF                            Two of the clock modes selectable with the FOSC<3:0>

                                                                        bits of the CONFIG1H Configuration register configure

   Note   1:      Alternate pin functions are listed in                 the internal oscillator block as the primary oscillator.

                  Section 1.0 “Device Overview”.                        Mode     selection      determines    whether    the   OSC2/

          2:      Output depends upon RC or RCIO clock mode.            CLKOUT pin will be configured as general purpose I/O

                                                                        or FOSC/4 (CLKOUT). In both modes, the OSC1/CLKIN

2.5.4.2           RCIO Mode                                             pin  is   configured     as  general  purpose    I/O.     See

                                                                        Section 24.0 “Special Features of the CPU” for more

In RCIO mode, the RC circuit is connected to OSC1.                      information.

OSC2 becomes a general purpose I/O pin.                                 The CLKOUT signal may be used to provide a clock for

The RC oscillator frequency is a function of the supply                 external circuitry, synchronization, calibration, test or

voltage, the resistor (REXT) and capacitor (CEXT) values                other application requirements.

and the operating temperature. Other factors affecting

the oscillator frequency are:

•  input threshold voltage variation

•  component tolerances

•  packaging variations in capacitance

The user also needs to take into account variation due

to tolerance of external RC components used.

DS40001412G-page 34                                                                              2010-2016 Microchip Technology Inc.
                                                                        PIC18(L)F2X/4XK22

2.6.1.1        OSCTUNE Register                                     The OSCTUNE register also implements the INTSRC

The    HFINTOSC/MFINTOSC        oscillator       circuits     are   and PLLEN bits, which control certain features of the

factory calibrated but can be adjusted in software by               internal oscillator block.

writing to the TUN<5:0> bits of the OSCTUNE register                The INTSRC bit allows users to select which internal

(Register 2-3).                                                     oscillator   provides        the  clock     source    when   the

The default value of the TUN<5:0> is ‘000000’. The                  31.25 kHz frequency option is selected. This is covered

value is a 6-bit two’s complement number.                           in  greater  detail   in     Section 2.2.3     “Low  Frequency

                                                                    Selection”.

When      the  OSCTUNE          register   is  modified,      the   The PLLEN bit controls the operation of the frequency

HFINTOSC/MFINTOSC frequency will begin shifting to                  multiplier, PLL, for all primary external clock sources

the new frequency. Code execution continues during this             and  internal         oscillator  modes.  However,   the  PLL  is

shift. There is no indication that the shift has occurred.          intended     for      operation   with  clock  sources  between

The    TUN<5:0>  bits    in  OSCTUNE       do    not  affect  the   4 MHz and 16 MHz. For more details about the function

LFINTOSC       frequency.       Operation  of    features     that  of the PLLEN bit, see Section 2.8.2 “PLL in HFIN-

depend on the LFINTOSC clock source frequency, such                 TOSC Modes”

as   the  Power-up       Timer  (PWRT),    Watchdog        Timer

(WDT),        Fail-Safe  Clock  Monitor        (FSCM)         and

peripherals, are not affected by the change in frequency.

2.7           Register Definitions: Oscillator Tuning

REGISTER 2-3:            OSCTUNE: OSCILLATOR TUNING REGISTER

     R/W-0               R/W-0            R/W-0            R/W-0    R/W-0                 R/W-0             R/W-0         R/W-0

    INTSRC          PLLEN(1)                                             TUN<5:0>

bit 7                                                                                                                           bit 0

Legend:

R = Readable bit                W = Writable bit                    U = Unimplemented bit, read as ‘0’

-n = Value at POR               ‘1’ = Bit is set                    ‘0’ = Bit is cleared              x = Bit is unknown

bit 7            INTSRC: Internal Oscillator Low-Frequency Source Select bit

                 1=      31.25 kHz device clock derived from the MFINTOSC or HFINTOSC source

                 0=      31.25 kHz device clock derived directly from LFINTOSC internal oscillator

bit 6            PLLEN: Frequency Multiplier 4xPLL for HFINTOSC Enable bit(1)

                 1=      PLL enabled

                 0=      PLL disabled

bit 5-0          TUN<5:0>: Frequency Tuning bits – use to adjust MFINTOSC and HFINTOSC frequencies

                 011111 = Maximum frequency

                 011110 =

                  •••

                 000001 =

                 000000 = Oscillator module (HFINTOSC and MFINTOSC) are running at the factory calibrated

                                frequency.

                 111111 =

                  •••

                 100000 = Minimum frequency

Note      1:   The PLLEN bit is active for all the primary clock sources (internal or external) and is designed to operate

               with clock frequencies between 4 MHz and 16 MHz.

 2010-2016 Microchip Technology Inc.                                                                         DS40001412G-page 35
PIC18(L)F2X/4XK22

2.7.1         LFINTOSC                                                   2.7.3.1         Compensating with the EUSART

The Low-Frequency Internal Oscillator (LFINTOSC) is                      An adjustment may be required when the EUSART

a 31.25 kHz internal clock source. The LFINTOSC is                       begins to generate framing errors or receives data with

not     tunable,   but    is  designed     to    be  stable     across   errors while in Asynchronous mode. Framing errors

temperature           and     voltage.     See        Section 27.0       indicate that the device clock frequency is too high; to

“Electrical        Specifications”         for   the    LFINTOSC         adjust for this, decrement the value in OSCTUNE to

accuracy specifications.                                                 reduce the clock frequency. On the other hand, errors

The output of the LFINTOSC can be a clock source to                      in data may suggest that the clock speed is too low; to

the primary clock or the INTOSC clock (see Figure 2-1).                  compensate,        increment     OSCTUNE        to  increase     the

The LFINTOSC is also the clock source for the Power-                     clock frequency.

up Timer (PWRT), Watchdog Timer (WDT) and Fail-Safe                      2.7.3.2         Compensating with the Timers

Clock Monitor (FSCM).

                                                                         This technique compares device clock speed to some

2.7.2         FREQUENCY SELECT BITS (IRCF)                               reference clock. Two timers may be used; one timer is

The HFINTOSC (16 MHz) and MFINTOSC (500 MHz)                             clocked     by  the  peripheral      clock,  while  the   other  is

outputs    connect        to  a   divide   circuit   that     provides   clocked     by  a  fixed   reference       source,  such    as   the

frequencies       of  16 MHz      to  31.25 kHz.      These     divide   Timer1 oscillator.

circuit    frequencies,          along     with  the        31.25 kHz    Both timers are cleared, but the timer clocked by the

LFINTOSC output, are multiplexed to provide a single                     reference   generates         interrupts.    When   an    interrupt

INTOSC clock output (see Figure 2-1). The IRCF<2:0>                      occurs, the internally clocked timer is read and both

bits of the OSCCON register, the MFIOSEL bit of the                      timers are cleared. If the internally clocked timer value

OSCCON2           register    and     the  INTSRC       bit     of  the  is greater than expected, then the internal oscillator

OSCTUNE register, select the output frequency of the                     block is running too fast. To adjust for this, decrement

internal oscillators. One of eight frequencies can be                    the OSCTUNE register.

selected via software:

•   16 MHz                                                               2.7.3.3         Compensating with the CCP Module

•   8 MHz                                                                                in Capture Mode

•   4 MHz                                                                A CCP module can use free running Timer1, Timer3 or

•   2 MHz                                                                Timer5 clocked by the internal oscillator block and an

                                                                         external    event    with  a  known   period    (i.e.,  AC  power

•   1 MHz (default after Reset)                                          frequency). The time of the first event is captured in the

•   500 kHz (MFINTOSC or HFINTOSC)                                       CCPRxH:CCPRxL registers and is recorded for use later.

•   250 kHz (MFINTOSC or HFINTOSC)                                       When the second event causes a capture, the time of the

•   31 kHz (LFINTOSC, MFINTOSC or HFINTOSC)                              first event is subtracted from the time of the second

                                                                         event. Since the period of the external event is known,

2.7.3         INTOSC FREQUENCY DRIFT                                     the time difference between events can be calculated.

The factory calibrates the internal oscillator block outputs             If   the   measured        time  is  much    greater     than    the

(HFINTOSC/MFINTOSC) for 16 MHz/500 kHz. However,                         calculated time, the internal oscillator block is running

this frequency may drift as VDD or temperature changes.                  too  fast;  to  compensate,      decrement      the     OSCTUNE

It  is   possible     to  adjust   the     HFINTOSC/MFINTOSC             register. If the measured time is much less than the

frequency by modifying the value of the TUN<5:0> bits in                 calculated time, the internal oscillator block is running

the     OSCTUNE       register.    This    has   no   effect    on  the  too  slow;  to  compensate,          increment  the     OSCTUNE

LFINTOSC clock source frequency.                                         register.

Tuning   the      HFINTOSC/MFINTOSC              source       requires

knowing     when      to    make      the  adjustment,      in  which

direction it should be made and, in some cases, how

large a change is needed. Three possible compensation

techniques    are     discussed       in   the   following    sections.

However, other techniques may be used.

DS40001412G-page 36                                                                            2010-2016 Microchip Technology Inc.
                                                                      PIC18(L)F2X/4XK22

2.8          PLL Frequency Multiplier

A Phase-Locked Loop (PLL) circuit is provided as an

option for users who wish to use a lower frequency

oscillator circuit or to clock the device up to its highest

rated frequency from the crystal oscillator. This may be

useful for customers who are concerned with EMI due

to high-frequency crystals or users who require higher

clock speeds from an internal oscillator.

2.8.1        PLL IN EXTERNAL OSCILLATOR

             MODES

The    PLL   can   be   enabled     for  any   of   the  external

oscillator modes using the OSC1/OSC2 pins by either

setting the PLLCFG bit (CONFIG1H<4>), or setting the

PLLEN bit (OSCTUNE<6>). The PLL is designed for

input frequencies of 4 MHz up to 16 MHz. The PLL then

multiplies   the  oscillator  output     frequency  by     four  to

produce an internal clock frequency up to 64 MHz.

Oscillator frequencies below 4 MHz should not be used

with the PLL.

2.8.2        PLL IN HFINTOSC MODES

The  4x      frequency  multiplier  can  be    used      with    the

internal oscillator block to produce faster device clock

speeds   than     are   normally  possible    with  the    internal

oscillator.  When       enabled,    the  PLL   multiplies        the

HFINTOSC       by  four  to   produce    clock      rates  up    to

64 MHz.

Unlike   external      clock  modes,     when  internal    clock

modes are enabled, the PLL can only be controlled

through      software.  The   PLLEN      control    bit    of    the

OSCTUNE register is used to enable or disable the

PLL operation when the HFINTOSC is used.

The PLL is designed for input frequencies of 4 MHz up

to 16 MHz.

 2010-2016 Microchip Technology Inc.                                 DS40001412G-page 37
PIC18(L)F2X/4XK22

2.9         Effects of Power-Managed Modes                               2.10       Power-up Delays

            on the Various Clock Sources                                 Power-up delays are controlled by two timers, so that

For more information about the modes discussed in this                   no   external  Reset     circuitry   is    required  for    most

section see Section 3.0 “Power-Managed Modes”. A                         applications. The delays ensure that the device is kept

quick reference list is also available in Table 3-1.                     in Reset until the device power supply is stable under

When      PRI_IDLE    mode       is  selected,     the  designated       normal    circumstances         and  the   primary   clock   is

primary oscillator continues to run without interruption.                operating    and     stable.  For  additional  information  on

For  all  other  power-managed             modes,      the  oscillator   power-up     delays,     see  Section 4.6      “Device     Reset

using the OSC1 pin is disabled. The OSC1 pin (and                        Timers”.

OSC2 pin, if used by the oscillator) will stop oscillating.              The first timer is the Power-up Timer (PWRT), which

In   secondary        clock      modes      (SEC_RUN             and     provides a fixed delay on power-up. It is enabled by

SEC_IDLE),       the       secondary       oscillator   (SOSC)   is      clearing (= 0) the PWRTEN Configuration bit.

operating      and    providing      the    device      clock.   The     The   second   timer     is   the  Oscillator  Start-up    Timer

secondary      oscillator    may     also   run    in   all   power-     (OST), intended to keep the chip in Reset until the

managed modes if required to clock Timer1, Timer3 or                     crystal oscillator is stable (LP, XT and HS modes). The

Timer5.                                                                  OST   does     this  by  counting    1024      oscillator  cycles

In   internal    oscillator     modes      (INTOSC_RUN           and     before allowing the oscillator to clock the device.

INTOSC_IDLE), the internal oscillator block provides                     When    the    PLL   is  enabled     with  external  oscillator

the device clock source. The 31.25 kHz LFINTOSC                          modes, the device is kept in Reset for an additional

output can be used directly to provide the clock and                     2 ms, following the OST delay, so the PLL can lock to

may be enabled to support various special features,                      the incoming clock frequency.

regardless     of     the    power-managed              mode     (see    There is a delay of interval TCSD, following POR, while

Section 24.3          “Watchdog             Timer            (WDT)”,     the controller becomes ready to execute instructions.

Section 2.12 “Two-Speed Clock Start-up Mode” and                         This delay runs concurrently with any other delays.

Section 2.13     “Fail-Safe      Clock      Monitor”        for  more    This may be the only delay that occurs when any of the

information on WDT, Fail-Safe Clock Monitor and Two-                     EC, RC or INTIOSC modes are used as the primary

Speed     Start-up).  The       HFINTOSC        and     MFINTOSC         clock source.

outputs may be used directly to clock the device or may                  When the HFINTOSC is selected as the primary clock,

be divided down by the postscaler. The HFINTOSC                          the  main    system      clock  can  be    delayed   until  the

and MFINTOSC outputs are disabled when the clock is                      HFINTOSC is stable. This is user selectable by the

provided directly from the LFINTOSC output.                              HFOFST bit of the CONFIG3H Configuration register.

When the Sleep mode is selected, all clock sources are                   When the HFOFST bit is cleared, the main system

stopped.    Since     all  the  transistor  switching        currents    clock is delayed until the HFINTOSC is stable. When

have been stopped, Sleep mode achieves the lowest                        the HFOFST bit is set, the main system clock starts

current   consumption        of  the       device  (only     leakage     immediately.

currents).                                                               In either case, the HFIOFS bit of the OSCCON register

Enabling any on-chip feature that will operate during                    can be read to determine whether the HFINTOSC is

Sleep will increase the current consumed during Sleep.                   operating and stable.

The LFINTOSC is required to support WDT operation.

Other features may be operating that do not require a

device clock source (i.e., SSP slave, PSP, INTn pins

and  others).    Peripherals         that  may     add      significant

current consumption are listed in Section 27.8 “DC

Characteristics:           Input/Output         Characteristics,

PIC18(L)F2X/4XK22”.

DS40001412G-page 38                                                                             2010-2016 Microchip Technology Inc.
                                                                              PIC18(L)F2X/4XK22

TABLE 2-3:              OSC1 AND OSC2 PIN STATES IN SLEEP MODE

          OSC Mode                                        OSC1 Pin                                             OSC2 Pin

   RC, INTOSC with CLKOUT            Floating, external resistor should pull high          At logic low (clock/4 output)

   RC with IO                        Floating, external resistor should pull high          Configured as PORTA, bit 6

   INTOSC with IO                    Configured as PORTA, bit 7                            Configured as PORTA, bit 6

   EC with IO                        Floating, pulled by external clock                    Configured as PORTA, bit 6

   EC with CLKOUT                    Floating, pulled by external clock                    At logic low (clock/4 output)

   LP, XT, HS                        Feedback inverter disabled at quiescent               Feedback inverter disabled at quiescent

                                     voltage level                                         voltage level

   Note:         See Table 4-2 in Section 4.0 “Reset” for time-outs due to Sleep and MCLR Reset.

2.11      Clock Switching                                                After  a      Reset,   the  SCS<1:0>        bits     of   the  OSCCON

                                                                         register are always cleared.

The system clock source can be switched between

external and internal clock sources via software using                   Note:             Any  automatic      clock      switch,    which   may

the   System     Clock       Select  (SCS<1:0>)     bits  of     the                       occur  from    Two-Speed        Start-up     or   Fail-

OSCCON register.                                                                           Safe Clock Monitor, does not update the

PIC18(L)F2X/4XK22 devices contain circuitry to pre-                                        SCS<1:0> bits of the OSCCON register.

vent   clock     “glitches”  when    switching  between   clock                            The    user    can  monitor        the   SOSCRUN,

sources.      A  short  pause  in    the  device   clock  occurs                           MFIOFS         and  LFIOFS             bits  of     the

during the clock switch. The length of this pause is the                                   OSCCON2 register, and the HFIOFS and

sum of two cycles of the old clock source and three to                                     OSTS   bits    of   the  OSCCON           register    to

four  cycles     of  the  new  clock      source.  This   formula                          determine the current system clock source.

assumes that the new clock source is stable.                             2.11.2            OSCILLATOR START-UP TIME-OUT

Clock   transitions     are  discussed    in  greater    detail  in                        STATUS (OSTS) BIT

Section 3.1.2 “Entering Power-Managed Modes”.                            The Oscillator Start-up Time-out Status (OSTS) bit of

2.11.1           SYSTEM CLOCK SELECT                                     the  OSCCON           register   indicates       whether    the     system

                 (SCS<1:0>) BITS                                         clock     is  running    from    the  external       clock     source,  as

The    System    Clock       Select  (SCS<1:0>)     bits  of     the     defined       by  the  FOSC<3:0>           bits  in   the   CONFIG1H

OSCCON register select the system clock source that                      Configuration         register,  or   from       the      internal  clock

is used for the CPU and peripherals.                                     source. In particular, when the primary oscillator is the

                                                                         source of the primary clock, OSTS indicates that the

•  When SCS<1:0> = 00, the system clock source is                        Oscillator Start-up Timer (OST) has timed out for LP,

   determined by configuration of the FOSC<3:0>                          XT or HS modes.

   bits in the CONFIG1H Configuration register.

•  When SCS<1:0> = 10, the system clock source is

   chosen by the internal oscillator frequency

   selected by the INTSRC bit of the OSCTUNE

   register, the MFIOSEL bit of the OSCCON2

   register and the IRCF<2:0> bits of the OSCCON

   register.

•  When SCS<1:0> = 01, the system clock source is

   the 32.768 kHz secondary oscillator shared with

   Timer1, Timer3 and Timer5.

 2010-2016 Microchip Technology Inc.                                                                                 DS40001412G-page 39
PIC18(L)F2X/4XK22

2.11.3      CLOCK SWITCH TIMING                              2.12       Two-Speed Clock Start-up Mode

When switching between one oscillator and another,           Two-Speed Start-up mode provides additional power

the new oscillator may not be operating which saves          savings by minimizing the latency between external

power (see Figure 2-9). If this is the case, there is a      oscillator start-up and code execution. In applications

delay after the SCS<1:0> bits of the OSCCON register         that make heavy use of the Sleep mode, Two-Speed

are modified before the frequency change takes place.        Start-up   will    remove     the   external  oscillator     start-up

The OSTS and IOFS bits of the OSCCON register will           time from the time spent awake and can reduce the

reflect the current active status of the external and        overall power consumption of the device.

HFINTOSC    oscillators.  The     timing  of  a  frequency   This  mode       allows   the  application      to    wake-up    from

selection is as follows:                                     Sleep, perform a few instructions using the HFINTOSC

1.  SCS<1:0> bits of the OSCCON register are mod-            as  the    clock   source     and   go  back    to    Sleep  without

    ified.                                                   waiting for the primary oscillator to become stable.

2.  The old clock continues to operate until the new

    clock is ready.

3.  Clock switch circuitry waits for two consecutive             Note:      Executing a SLEEP instruction will abort

    rising edges of the old clock after the new clock                       the oscillator start-up time and will cause

    ready signal goes true.                                                 the OSTS bit of the OSCCON register to

4.  The system clock is held low starting at the next                       remain clear.

    falling edge of the old clock.                           When the oscillator module is configured for LP, XT or

5.  Clock switch circuitry waits for an additional two       HS    modes,       the  Oscillator  Start-up      Timer     (OST)  is

    rising edges of the new clock.                           enabled (see Section 2.5.1 “Oscillator Start-up Timer

6.  On the next falling edge of the new clock the low        (OST)”). The OST will suspend program execution until

    hold on the system clock is released and new             1024      oscillations   are   counted.     Two-Speed        Start-up

    clock is switched in as the system clock.                mode      minimizes      the   delay    in  code      execution    by

7.  Clock switch is complete.                                operating      from  the  internal    oscillator    as  the  OST   is

                                                             counting. When the OST count reaches 1024 and the

See Figure 2-1 for more details.                             OSTS      bit  of  the   OSCCON       register    is  set,   program

If the HFINTOSC is the source of both the old and new        execution switches to the external oscillator.

frequency, there is no start-up delay before the new

frequency is active. This is because the old and new         2.12.1         TWO-SPEED START-UP MODE

frequencies are derived from the HFINTOSC via the                           CONFIGURATION

postscaler and multiplexer.                                  Two-Speed Start-up mode is enabled when all of the

Start-up    delay    specifications  are      located    in  following settings are configured as noted:

Section 27.0 “Electrical Specifications”, under AC           •   Two-Speed Start-up mode is enabled when the

Specifications (Oscillator Module).                              IESO of the CONFIG1H Configuration register is

                                                                 set.

                                                             •   SCS<1:0> (of the OSCCON register) = 00.

                                                             •   FOSC<2:0> bits of the CONFIG1H Configuration

                                                                 register are configured for LP, XT or HS mode.

                                                             Two-Speed Start-up mode becomes active after:

                                                             •   Power-on Reset (POR) and, if enabled, after

                                                                 Power-up Timer (PWRT) has expired, or

                                                             •   Wake-up from Sleep.

DS40001412G-page 40                                                                    2010-2016 Microchip Technology Inc.
                                                             PIC18(L)F2X/4XK22

2.12.2       TWO-SPEED START-UP                              2.12.3                       CHECKING TWO-SPEED CLOCK

             SEQUENCE                                                                     STATUS

1.  Wake-up from Power-on Reset or Sleep.                    Checking the state of the OSTS bit of the OSCCON

2.  Instructions   begin  executing    by  the     internal  register               will  confirm   if  the  microcontroller  is  running

    oscillator at the frequency set in the IRCF<2:0>         from        the        external  clock         source,  as  defined  by  the

    bits of the OSCCON register.                             FOSC<2:0> bits in CONFIG1H Configuration register,

3.  OST  enabled    to    count  1024  external    clock     or the internal oscillator. OSTS = 0 when the external

    cycles.                                                  oscillator is not ready, which indicates that the system

4.  OST timed out. External clock is ready.                  is running from the internal oscillator.

5.  OSTS is set.

6.  Clock switch finishes according to Figure 2-9

FIGURE 2-9:             CLOCK SWITCH TIMING

    High Speed      Low Speed

         Old Clock

                                 Start-up Time(1)            Clock Sync                                              Running

        New Clock

    New Clk Ready

        IRCF <2:0>  Select Old             Select New

    System Clock

    Low Speed       High Speed

        Old Clock

                          Start-up     Time(1)               Clock Sync                                              Running

        New Clock

    New Clk Ready

    IRCF <2:0>      Select Old             Select  New

    System Clock

    Note 1: Start-up time includes TOST (1024 TOSC) for      external clocks, plus  TPLL  (approx.  2  ms)  for  HSPLL mode.

 2010-2016 Microchip Technology Inc.                                                                            DS40001412G-page 41
PIC18(L)F2X/4XK22

2.13       Fail-Safe Clock Monitor                                               2.13.3      FAIL-SAFE CONDITION CLEARING

The Fail-Safe Clock Monitor (FSCM) allows the device                             The Fail-Safe condition is cleared by either one of the

to continue operating should the external oscillator fail.                       following:

The FSCM can detect oscillator failure any time after                            •  Any Reset

the Oscillator Start-up Timer (OST) has expired. The                             •  By toggling the SCS1 bit of the OSCCON register

FSCM       is  enabled      by  setting   the   FCMEN            bit  in   the   Both of these conditions restart the OST. While the

CONFIG1H          Configuration      register.       The         FSCM        is  OST is running, the device continues to operate from

applicable to all external oscillator modes (LP, XT, HS,                         the  INTOSC   selected     in  OSCCON.        When    the   OST

EC, RC and RCIO).                                                                times out, the Fail-Safe condition is cleared and the

FIGURE 2-10:                    FSCM BLOCK DIAGRAM                               device automatically switches over to the external clock

                                                                                 source. The Fail-Safe condition need not be cleared

                                         Clock Monitor                           before the OSCFIF flag is cleared.

                                             Latch                               2.13.4      RESET OR WAKE-UP FROM SLEEP

        External                             S       Q

        Clock                                                                    The FSCM is designed to detect an oscillator failure

                                                                                 after the Oscillator Start-up Timer (OST) has expired.

     LFINTOSC                                                                    The OST is used after waking up from Sleep and after

     Oscillator             ÷ 64          R              Q                       any type of Reset. The OST is not used with the EC or

                                                                                 RC Clock modes so that the FSCM will be active as

        31 kHz              488 Hz                                               soon as the Reset or wake-up has completed.

     (~32 s)             (~2 ms)

           Sample Clock                                               Clock         Note:    Due to the wide range of oscillator start-up

                                                                 Failure                     times,    the  Fail-Safe  circuit     is  not  active

                                                                 Detected                    during oscillator start-up (i.e., after exiting

                                                                                             Reset     or   Sleep).  After     an      appropriate

2.13.1          FAIL-SAFE DETECTION                                                          amount of time, the user should check the

The     FSCM      module        detects   a     failed      oscillator     by                OSTS bit of the OSCCON register to verify

                                                                                             the oscillator start-up and that the system

comparing the external oscillator to the FSCM sample                                         clock     switchover         has      successfully

clock. The sample clock is generated by dividing the                                         completed.

LFINTOSC          by  64    (see    Figure 2-10).        Inside       the  fail

detector block is a latch. The external clock sets the

latch on each falling edge of the external clock. The                               Note:    When the device is configured for Fail-

sample clock clears the latch on each rising edge of the                                     Safe clock monitoring in either HS, XT, or

sample clock. A failure is detected when an entire half-                                     LS Oscillator modes then the IESO config-

cycle of the sample clock elapses before the primary                                         uration bit should also be set so that the

clock goes low.                                                                              clock   will   automatically   switch     from  the

2.13.2          FAIL-SAFE OPERATION                                                          internal  clock    to   the  external     oscillator

                                                                                             when the OST times out.

When the external clock fails, the FSCM switches the

device clock to an internal clock source and sets the bit

flag OSCFIF of the PIR2 register. The OSCFIF flag will

generate an interrupt if the OSCFIE bit of the PIE2

register is also set. The device firmware can then take

steps to mitigate the problems that may arise from a

failed  clock.       The    system   clock     will  continue         to   be

sourced from the internal clock source until the device

firmware       successfully     restarts  the     external       oscillator

and switches back to external operation. An automatic

transition back to the failed clock source will not occur.

The     internal     clock  source   chosen       by        the  FSCM        is

determined        by  the   IRCF<2:0>       bits     of  the     OSCCON

register.      This   allows    the  internal        oscillator       to   be

configured before a failure occurs.

DS40001412G-page 42                                                                                   2010-2016 Microchip Technology Inc.
                                                                      PIC18(L)F2X/4XK22

FIGURE 2-11:             FSCM TIMING DIAGRAM

      Sample Clock

            System                                                           Oscillator

               Clock                                                         Failure

               Output

Clock Monitor Output

               (Q)

                                                                                                     Failure

                                                                                                     Detected

            OSCFIF

                                       Test                              Test                          Test

        Note:  The system clock is normally at a much higher      frequency than the sample  clock.  The relative frequencies  in

               this example have been chosen for clarity.

TABLE 2-4:     REGISTERS ASSOCIATED WITH CLOCK SOURCES

Name           Bit 7     Bit 6         Bit 5               Bit 4      Bit 3           Bit 2  Bit 1             Bit 0  Register

                                                                                                                      on Page

INTCON      GIE/GIEH     PEIE/GIEL     TMR0IE     INT0IE              RBIE      TMR0IF       INT0IF            RBIF   109

IPR2           OSCFIP    C1IP          C2IP                EEIP   BCL1IP        HLVDIP       TMR3IP    CCP2IP         122

OSCCON         IDLEN                   IRCF<2:0>                  OSTS          HFIOFS               SCS<1:0>         30

OSCCON2        PLLRDY    SOSCRUN       —          MFIOSEL         SOSCGO        PRISD        MFIOFS    LFIOFS         31

OSCTUNE        INTSRC    PLLEN                                        TUN<5:0>                                        35

PIE2           OSCFIE    C1IE          C2IE                EEIE   BCL1IE        HLVDIE       TMR3IE    CCP2IE         118

PIR2           OSCFIF    C1IF          C2IF                EEIF   BCL1IF        HLVDIF       TMR3IF    CCP2IF         113

Legend:   — = unimplemented locations, read as    ‘0’. Shaded     bits are not used by clock sources.

TABLE 2-5:     CONFIGURATION REGISTERS ASSOCIATED WITH CLOCK SOURCES

Name           Bit 7     Bit 6         Bit 5      Bit 4           Bit 3        Bit 2         Bit 1     Bit 0          Register

                                                                                                                      on Page

CONFIG1H       IESO      FCMEN         PRICLKEN   PLLCFG                        FOSC<3:0>                             345

CONFIG2L              —  —             —                   BORV<1:0>           BOREN<1:0>              PWRTEN         346

CONFIG3H       MCLRE     —             P2BMX      T3CMX           HFOFST     CCP3MX          PBADEN    CCP2MX         348

Legend:   — = unimplemented locations, read as ‘0’. Shaded bits are not used for clock sources.

 2010-2016 Microchip Technology Inc.                                                                  DS40001412G-page 43
PIC18(L)F2X/4XK22

3.0           POWER-MANAGED MODES                                          3.1.1           CLOCK SOURCES

PIC18(L)F2X/4XK22             devices  offer  a  total   of   seven        The SCS<1:0> bits allow the selection of one of three

operating         modes       for  more       efficient       power        clock sources for power-managed modes. They are:

management.        These      modes    provide   a      variety  of        •   the primary clock, as defined by the FOSC<3:0>

options for selective power conservation in applications                       Configuration bits

where resources may be limited (i.e., battery-powered                      •   the secondary clock (the SOSC oscillator)

devices).                                                                  •   the internal oscillator block

There are three categories of power-managed modes:

•  Run modes                                                               3.1.2           ENTERING POWER-MANAGED

•  Idle modes                                                                              MODES

•  Sleep mode                                                              Switching from one power-managed mode to another

                                                                           begins      by  loading       the  OSCCON          register.   The

These categories define which portions of the device                       SCS<1:0> bits select the clock source and determine

are clocked and sometimes, what speed. The Run and                         which Run or Idle mode is to be used. Changing these

Idle modes may use any of the three available clock                        bits    causes  an   immediate     switch      to  the  new    clock

sources       (primary,  secondary       or   internal   oscillator        source, assuming that it is running. The switch may

block). The Sleep mode does not use a clock source.                        also    be  subject  to  clock     transition  delays.  Refer  to

The  power-managed            modes    include   several     power-        Section 2.11 “Clock Switching” for more information.

saving features offered on previous PIC® microcontroller                   Entry to the power-managed Idle or Sleep modes is

devices. One of the clock switching features allows the                    triggered by the execution of a SLEEP instruction. The

controller    to   use   the  secondary  oscillator     (SOSC)   in        actual mode that results depends on the status of the

place of the primary oscillator. Also included is the Sleep                IDLEN bit.

mode, offered by all PIC microcontroller devices, where                    Depending on the current mode and the mode being

all device clocks are stopped.                                             switched to, a change to a power-managed mode does

3.1           Selecting Power-Managed Modes                                not     always  require  setting   all  of     these    bits.  Many

                                                                           transitions may be done by changing the oscillator select

Selecting     a    power-managed         mode    requires        two       bits, or changing the IDLEN bit, prior to issuing a SLEEP

decisions:                                                                 instruction.    If  the  IDLEN     bit  is  already     configured

•  Whether or not the CPU is to be clocked                                 correctly, it may only be necessary to perform a SLEEP

                                                                           instruction to switch to the desired mode.

•  The selection of a clock source

The IDLEN bit (OSCCON<7>) controls CPU clocking,

while the SCS<1:0> bits (OSCCON<1:0>) select the

clock source. The individual modes, bit settings, clock

sources       and  affected   modules      are   summarized      in

Table 3-1.

TABLE 3-1:               POWER-MANAGED MODES

                         OSCCON Bits                     Module Clocking

     Mode          IDLEN(1)                                                            Available Clock and Oscillator Source

                                   SCS<1:0>             CPU           Peripherals

   Sleep                 0             N/A               Off          Off          None – All clocks are disabled

   PRI_RUN               N/A           00            Clocked          Clocked      Primary – LP, XT, HS, RC, EC and Internal

                                                                                   Oscillator Block(2).

                                                                                   This is the normal full-power execution mode.

   SEC_RUN               N/A           01            Clocked          Clocked      Secondary – SOSC Oscillator

   RC_RUN                N/A           1x            Clocked          Clocked      Internal Oscillator Block(2)

   PRI_IDLE              1             00                Off          Clocked      Primary – LP, XT, HS, HSPLL, RC, EC

   SEC_IDLE              1             01                Off          Clocked      Secondary – SOSC Oscillator

   RC_IDLE               1             1x                Off          Clocked      Internal Oscillator Block(2)

   Note   1:  IDLEN reflects its value when the SLEEP instruction is executed.

          2:  Includes HFINTOSC and HFINTOSC postscaler, as well as the LFINTOSC source.

DS40001412G-page 44                                                                                  2010-2016 Microchip Technology Inc.
                                                                                 PIC18(L)F2X/4XK22

3.1.3             MULTIPLE FUNCTIONS OF THE                                 Figure 3-2). When the clock switch is complete, the

                  SLEEP COMMAND                                             SOSCRUN bit is cleared, the OSTS bit is set and the

The    power-managed           mode      that   is  invoked     with  the   primary clock is providing the clock. The IDLEN and

SLEEP instruction is determined by the value of the                         SCS      bits  are  not   affected  by   the    wake-up  and    the

IDLEN bit at the time the instruction is executed. If                       SOSC oscillator continues to run.

IDLEN = 0, when SLEEP is executed, the device enters

the  Sleep        mode  and     all  clocks     stop     and  minimum       3.2.3          RC_RUN MODE

power     is   consumed.       If  IDLEN     =  1,    when    SLEEP   is    In   RC_RUN         mode,      the  CPU  and    peripherals     are

executed, the device enters the IDLE mode and the                           clocked  from       the   internal  oscillator  block  using    the

system     clock  continues          to  supply       a  clock  to    the   INTOSC multiplexer. In this mode, the primary clock is

peripherals but is disconnected from the CPU.                               shut down. When using the LFINTOSC source, this

3.2           Run Modes                                                     mode provides the best power conservation of all the

                                                                            Run modes, while still executing code. It works well for

In   the   Run    modes,       clocks    to     both     the  core    and   user applications which are not highly timing-sensitive

peripherals are active. The difference between these                        or do not require high-speed clocks at all times. If the

modes is the clock source.                                                  primary clock source is the internal oscillator block –

                                                                            either   LFINTOSC              or   INTOSC      (MFINTOSC       or

3.2.1             PRI_RUN MODE                                              HFINTOSC) – there are no distinguishable differences

                                                                            between the PRI_RUN and RC_RUN modes during

The    PRI_RUN          mode         is  the    normal,       full-power    execution.     Entering        or   exiting     RC_RUN      mode,

execution mode of the microcontroller. This is also the                     however, causes a clock switch delay. Therefore, if the

default mode upon a device Reset, unless Two-Speed                          primary clock source is the internal oscillator block,

Start-up      is  enabled      (see  Section 2.12        “Two-Speed         using RC_RUN mode is not recommended.

Clock Start-up Mode” for details). In this mode, the                        This mode is entered by setting the SCS1 bit to ‘1’. To

device     is  operated    off     the   oscillator   defined   by    the   maintain software compatibility with future devices, it is

FOSC<3:0>         bits     of  the       CONFIG1H        Configuration      recommended that the SCS0 bit also be cleared, even

register.                                                                   though the bit is ignored. When the clock source is

3.2.2             SEC_RUN MODE                                              switched to the INTOSC multiplexer (see Figure 3-1),

In   SEC_RUN      mode,        the   CPU       and    peripherals     are   the primary oscillator is shut down and the OSTS bit is

clocked from the secondary external oscillator. This                        cleared. The IRCF<2:0> bits (OSCCON<6:4>) may be

gives users the option of lower power consumption                           modified at any time to immediately change the clock

while still using a high accuracy clock source.                             speed.

SEC_RUN mode is entered by setting the SCS<1:0>                             When the IRCF bits and the INTSRC bit are all clear,

bits to ‘01’. When SEC_RUN mode is active, all of the                       the  INTOSC         output     (HFINTOSC/MFINTOSC)          is  not

following are true:                                                         enabled and the HFIOFS and MFIOFS bits will remain

                                                                            clear. There will be no indication of the current clock

•   The device clock source is switched to the SOSC                         source. The LFINTOSC source is providing the device

    oscillator (see Figure 3-1)                                             clocks.

•   The primary oscillator is shut down                                     If  the  IRCF       bits  are  changed   from   all  clear     (thus,

•   The SOSCRUN bit (OSCCON2<6>) is set                                     enabling the INTOSC output) or if INTSRC or MFIOSEL

•   The OSTS bit (OSCCON2<3>) is cleared                                    is set, then the HFIOFS or MFIOFS bit is set after the

                                                                            INTOSC         output     becomes      stable.  For  details,   see

                                                                            Table 3-2.

    Note:         The secondary external oscillator should                  Clocks to the device continue while the INTOSC source

                  already      be    running    prior    to   entering      stabilizes after an interval of TIOBST.

                  SEC_RUN mode. If the SOSCGO bit or                        If the IRCF bits were previously at a non-zero value, or

                  any of the TxSOSCEN bits are not set                      if  INTSRC     was        set  before  setting  SCS1     and    the

                  when the SCS<1:0> bits are set to ‘01’,                   INTOSC source was already stable, then the HFIOFS

                  entry to SEC_RUN mode will not occur                      or MFIOFS bit will remain set.

                  until SOSCGO bit is set and secondary

                  external oscillator is ready.

On   transitions  from         SEC_RUN          mode     to   PRI_RUN

mode, the peripherals and CPU continue to be clocked

from the SOSC oscillator, while the primary clock is

started.   When   the      primary       clock  becomes       ready,    a

clock   switch    back     to  the   primary    clock    occurs       (see

 2010-2016 Microchip Technology Inc.                                                                                DS40001412G-page 45
PIC18(L)F2X/4XK22

On transitions from RC_RUN mode to PRI_RUN mode,

the device continues to be clocked from the INTOSC

multiplexer while the primary clock is started. When the

primary clock becomes ready, a clock switch to the pri-

mary clock occurs (see Figure 3-3). When the clock

switch  is  complete,       the  HFIOFS      or       MFIOFS    bit      is

cleared, the OSTS bit is set and the primary clock is

providing the device clock. The IDLEN and SCS bits

are not affected by the switch. The LFINTOSC source

will continue to run if either the WDT or the Fail-Safe

Clock Monitor is enabled.

FIGURE 3-1:                 TRANSITION TIMING FOR ENTRY                            TO    SEC_RUN        MODE

                      Q1    Q2   Q3  Q4  Q1                                                      Q2        Q3   Q4     Q1  Q2      Q3

            SOSCI                                  1  2         3            n-1      n

            OSC1                                              Clock Transition(1)

            CPU

            Clock

        Peripheral

            Clock

            Program         PC                                               PC +  2                                           PC + 4

            Counter

        Note 1: Clock transition typically occurs     within  2-4 TOSC.

FIGURE      3-2:            TRANSITION TIMING FROM SEC_RUN MODE TO PRI_RUN MODE (HSPLL)

                                             Q1             Q2     Q3        Q4       Q1                        Q2 Q3  Q4  Q1  Q2  Q3

                     SOSC

                     OSC1

                                                   TOST(1)         TPLL(1)

            PLL Clock                                                                 1   2      n-1    n

                  Output

                                                                                          Clock

                                                                                         Transition(2)

            CPU Clock

            Peripheral

                     Clock

             Program                                  PC                                                PC + 2             PC + 4

             Counter

                       SCS<1:0> bits Changed                       OSTS bit Set

            Note 1:   TOST = 1024 TOSC; TPLL = 2 ms (approx). These intervals         are not shown to  scale.

                  2:  Clock transition typically occurs within 2-4 TOSC.

DS40001412G-page 46                                                                                              2010-2016 Microchip Technology  Inc.
                                                                              PIC18(L)F2X/4XK22

TABLE 3-2:        INTERNAL OSCILLATOR FREQUENCY STABILITY BITS

IRCF<2:0>             INTSRC                 MFIOSEL                  Selected Oscillator        Selected Oscillator Stable  when:

     000              0                             x                 LFINTOSC                               LFIOFS = 1

     000              1                             0                 HFINTOSC                               HFIOFS = 1

     000              1                             1                 MFINTOSC                               MFIOFS = 1

010  or     001       x                             0                 HFINTOSC                               HFIOFS = 1

010  or     001       x                             1                 MFINTOSC                               MFIOFS = 1

011  –    111         x                             x                 HFINTOSC                               HFIOFS = 1

FIGURE 3-3:           TRANSITION TIMING FROM RC_RUN MODE TO PRI_RUN MODE

                                       Q1           Q2  Q3            Q4   Q1                         Q2 Q3  Q4  Q1  Q2  Q3

             INTOSC

         Multiplexer

             OSC1

                                           TOST(1)      TPLL(1)

          PLL Clock                                                        1   2         n-1  n

             Output

                                                                                  Clock

         CPU Clock                                                             Transition(2)

          Peripheral

             Clock

             Program                         PC                                               PC + 2             PC + 4

             Counter

                      SCS<1:0> bits Changed             OSTS bit Set

         Note 1:  TOST = 1024 TOSC; TPLL = 2 ms (approx). These intervals  are not shown to   scale.

             2:   Clock transition typically occurs within 2-4 TOSC.

 2010-2016 Microchip Technology Inc.                                                                            DS40001412G-page 47
PIC18(L)F2X/4XK22

3.3      Sleep Mode                                                           3.4          Idle Modes

The Power-Managed Sleep mode in the PIC18(L)F2X/                              The    Idle    modes   allow      the  controller’s  CPU        to  be

4XK22 devices is identical to the legacy Sleep mode                           selectively shut down while the peripherals continue to

offered in all other PIC microcontroller devices. It is                       operate. Selecting a particular Idle mode allows users

entered  by    clearing      the   IDLEN     bit  of  the  OSCCON             to further manage power consumption.

register and executing the SLEEP instruction. This shuts                      If the IDLEN bit is set to a ‘1’ when a SLEEP instruction is

down the selected oscillator (Figure 3-4) and all clock                       executed, the peripherals will be clocked from the clock

source Status bits are cleared.                                               source selected by the SCS<1:0> bits; however, the CPU

Entering the Sleep mode from either Run or Idle mode                          will not be clocked. The clock source status bits are not

does not require a clock switch. This is because no                           affected. Setting IDLEN and executing a SLEEP instruc-

clocks   are   needed        once  the  controller    has  entered            tion provides a quick method of switching from a given

Sleep. If the WDT is selected, the LFINTOSC source                            Run mode to its corresponding Idle mode.

will  continue       to  operate.  If   the  SOSC     oscillator  is          If  the  WDT       is  selected,  the  LFINTOSC        source       will

enabled, it will also continue to run.                                        continue to operate. If the SOSC oscillator is enabled,

When a wake event occurs in Sleep mode (by interrupt,                         it will also continue to run.

Reset or WDT time-out), the device will not be clocked                        Since the CPU is not executing instructions, the only

until the clock source selected by the SCS<1:0> bits                          exits from any of the Idle modes are by interrupt, WDT

becomes ready (see Figure 3-5), or it will be clocked                         time-out, or a Reset. When a wake event occurs, CPU

from the internal oscillator block if either the Two-Speed                    execution      is  delayed  by    an   interval  of  TCSD  while    it

Start-up or the Fail-Safe Clock Monitor are enabled                           becomes        ready   to   execute    code.     When      the  CPU

(see Section 24.0 “Special Features of the CPU”). In                          begins executing code, it resumes with the same clock

either case, the OSTS bit is set when the primary clock                       source for the current Idle mode. For example, when

is providing the device clocks. The IDLEN and SCS bits                        waking   from      RC_IDLE        mode,  the     internal  oscillator

are not affected by the wake-up.                                              block    will  clock   the  CPU   and    peripherals       (in  other

                                                                              words, RC_RUN mode). The IDLEN and SCS bits are

                                                                              not affected by the wake-up.

                                                                              While in any Idle mode or the Sleep mode, a WDT

                                                                              time-out will result in a WDT wake-up to the Run mode

                                                                              currently specified by the SCS<1:0> bits.

FIGURE         3-4:          TRANSITION TIMING FOR                  ENTRY     TO SLEEP MODE

               Q1    Q2  Q3  Q4    Q1

      OSC1

        CPU

      Clock

Peripheral

      Clock

      Sleep

      Program            PC                                           PC + 2
      Counter

DS40001412G-page 48                                                                                   2010-2016 Microchip Technology Inc.
                                                                                      PIC18(L)F2X/4XK22

FIGURE 3-5:                       TRANSITION TIMING FOR WAKE FROM SLEEP                                    (HSPLL)

                                      Q1                                Q2  Q3    Q4  Q1  Q2  Q3       Q4  Q1   Q2   Q3    Q4     Q1  Q2    Q3   Q4

              OSC1

         PLL Clock                         TOST(1)       TPLL(1)

              Output

        CPU Clock

         Peripheral

              Clock

          Program                                        PC                               PC + 2                   PC + 4             PC + 6

             Counter

                               Wake Event                OSTS bit set

         Note 1:    TOST  =  1024 TOSC; TPLL = 2 ms (approx). These intervals are not shown to scale.

3.4.1         PRI_IDLE MODE                                                       3.4.2                SEC_IDLE MODE

This mode is unique among the three low-power Idle                                In  SEC_IDLE             mode,     the      CPU     is  disabled    but  the

modes, in that it does not disable the primary device                             peripherals          continue      to   be  clocked     from   the  SOSC

clock. For timing sensitive applications, this allows for                         oscillator.  This        mode      is   entered     from  SEC_RUN        by

the fastest resumption of device operation with its more                          setting     the      IDLEN         bit   and     executing     a    SLEEP

accurate primary clock source, since the clock source                             instruction. If the device is in another Run mode, set the

does not have to “warm-up” or transition from another                             IDLEN bit first, then set the SCS<1:0> bits to ‘01’ and

oscillator.                                                                       execute SLEEP. When the clock source is switched to

PRI_IDLE mode is entered from PRI_RUN mode by                                     the SOSC oscillator, the primary oscillator is shut down,

setting the IDLEN bit and executing a SLEEP instruc-                              the OSTS bit is cleared and the SOSCRUN bit is set.

tion. If the device is in another Run mode, set IDLEN                             When a wake event occurs, the peripherals continue to

first,  then  clear       the  SCS    bits   and    execute   SLEEP.              be clocked from the SOSC oscillator. After an interval

Although the CPU is disabled, the peripherals continue                            of TCSD following the wake event, the CPU begins exe-

to be clocked from the primary clock source specified                             cuting code being clocked by the SOSC oscillator. The

by the FOSC<3:0> Configuration bits. The OSTS bit                                 IDLEN and SCS bits are not affected by the wake-up;

remains set (see Figure 3-6).                                                     the SOSC oscillator continues to run (see Figure 3-7).

When a wake event occurs, the CPU is clocked from the                                 Note:            The SOSC oscillator should already be

primary      clock    source.      A  delay     of  interval  TCSD  is                                 running     prior      to  entering       SEC_IDLE

required     between         the   wake    event    and  when     code                                 mode.    At   least    one     of    the  secondary

execution starts. This is required to allow the CPU to                                                 oscillator        enable       bits       (SOSCGO,

become ready to execute instructions. After the wake-                                                  T1SOSCEN, T3SOSCEN or T5SOSCEN)

up, the OSTS bit remains set. The IDLEN and SCS bits                                                   must be set when the SLEEP instruction is

are not affected by the wake-up (see Figure 3-7).                                                      executed.     Otherwise,       the   main     system

                                                                                                       clock   will  continue         to  operate     in   the

                                                                                                       previously        selected         mode   and       the

                                                                                                       corresponding IDLE mode will be entered

                                                                                                       (i.e., PRI_IDLE or RC_IDLE).

FIGURE 3-6:                       TRANSITION TIMING FOR ENTRY TO IDLE MODE

                               Q1     Q2            Q3   Q4         Q1

              OSC1

         CPU Clock

          Peripheral

              Clock

             Program                        PC                          PC  +  2

             Counter

 2010-2016 Microchip Technology Inc.                                                                                              DS40001412G-page 49
PIC18(L)F2X/4XK22

FIGURE 3-7:              TRANSITION TIMING FOR WAKE FROM IDLE TO RUN MODE

                     Q1                                                                Q2                  Q3               Q4

           OSC1

                                               TCSD

       CPU Clock

       Peripheral

           Clock

       Program                                                   PC

       Counter

                                  Wake Event

3.4.3          RC_IDLE MODE                                      Clocks   to     the   peripherals         continue     while     the

In RC_IDLE mode, the CPU is disabled but the periph-             HFINTOSC        source     stabilizes.    The  HFIOFS            and

erals continue to be clocked from the internal oscillator        MFIOFS   bits   will  remain     set  if  the  IRCF    bits    were

block  from    the   HFINTOSC     multiplexer  output.   This    previously set at a non-zero value or if INTSRC was set

mode allows for controllable power conservation during           before the SLEEP instruction was executed and the

Idle periods.                                                    HFINTOSC source was already stable. If the IRCF bits

                                                                 and INTSRC are all clear, the HFINTOSC output will

From RC_RUN, this mode is entered by setting the                 not  be  enabled,     the  HFIOFS       and    MFIOFS      bits  will

IDLEN bit and executing a SLEEP instruction. If the              remain   clear  and   there   will  be    no   indication    of  the

device is in another Run mode, first set IDLEN, then set         current clock source.

the SCS1 bit and execute SLEEP. It is recommended                When a wake event occurs, the peripherals continue to

that   SCS0    also  be  cleared,  although    its   value  is   be   clocked  from    the  HFINTOSC           multiplexer  output.

ignored, to maintain software compatibility with future          After a delay of TCSD following the wake event, the CPU

devices. The HFINTOSC multiplexer may be used to                 begins   executing         code  being        clocked      by    the

select a higher clock frequency by modifying the IRCF            HFINTOSC multiplexer. The IDLEN and SCS bits are

bits before executing the SLEEP instruction. When the            not affected by the wake-up. The LFINTOSC source

clock source is switched to the HFINTOSC multiplexer,            will continue to run if either the WDT or the Fail-Safe

the primary oscillator is shut down and the OSTS bit is          Clock Monitor is enabled.

cleared.

If the IRCF bits are set to any non-zero value, or either

the INTSRC or MFIOSEL bits are set, the HFINTOSC

output is enabled. Either the HFIOFS or the MFIOFS

bits become set, after the HFINTOSC output stabilizes

after  an  interval  of  TIOBST.   For  information  on     the

HFIOFS and MFIOFS bits, see Table 3-2.

DS40001412G-page 50                                                                     2010-2016 Microchip Technology Inc.
                                                                     PIC18(L)F2X/4XK22

3.5        Exiting Idle and Sleep Modes                          3.5.2      EXIT BY WDT TIME-OUT

An exit from Sleep mode or any of the Idle modes is              A WDT time-out will cause different actions depending

triggered by any one of the following:                           on which power-managed mode the device is in when

•  an interrupt                                                  the time-out occurs.

•  a Reset                                                       If the device is not executing code (all Idle modes and

•  a Watchdog Time-out                                           Sleep mode), the time-out will result in an exit from the

                                                                 power-managed         mode   (see      Section 3.2      “Run

This section discusses the triggers that cause exits             Modes” and Section 3.3 “Sleep Mode”). If the device

from power-managed modes. The clocking subsystem                 is executing code (all Run modes), the time-out will

actions are discussed in each of the power-managed               result in a WDT Reset (see Section 24.3 “Watchdog

modes (see Section 3.2 “Run Modes”, Section 3.3                  Timer (WDT)”).

“Sleep Mode” and Section 3.4 “Idle Modes”).                      The WDT timer and postscaler are cleared by any one

3.5.1          EXIT BY INTERRUPT                                 of the following:

Any of the available interrupt sources can cause the             •   executing a SLEEP instruction

device to exit from an Idle mode or the Sleep mode to            •   executing a CLRWDT instruction

a Run mode. To enable this functionality, an interrupt           •   the loss of the currently selected clock source

source must be enabled by setting its enable bit in one              when the Fail-Safe Clock Monitor is enabled

of the INTCON or PIE registers. The exit sequence is             •   modifying the IRCF bits in the OSCCON register

initiated when the corresponding interrupt flag bit is set.          when the internal oscillator block is the device

The    instruction       immediately  following  the  SLEEP          clock source

instruction is executed on all exits by interrupt from Idle      3.5.3      EXIT BY RESET

or Sleep modes. Code execution then branches to the

interrupt  vector    if  the  GIE/GIEH  bit  of  the  INTCON     Exiting Sleep and Idle modes by Reset causes code

register   is  set,  otherwise  code    execution     continues  execution to restart at address ‘0’. See Section 4.0

without branching (see Section 9.0 “Interrupts”).                “Reset” for more details.

A fixed delay of interval TCSD following the wake event          The exit delay time from Reset to the start of code

is required when leaving Sleep and Idle modes. This              execution depends on both the clock sources before

delay is required for the CPU to prepare for execution.          and after the wake-up and the type of oscillator.

Instruction execution resumes on the first clock cycle

following this delay.                                            3.5.4      EXIT WITHOUT AN OSCILLATOR

                                                                            START-UP DELAY

                                                                 Certain    exits  from  power-managed     modes       do    not

                                                                 invoke the OST at all. There are two cases:

                                                                 •   PRI_IDLE mode, where the primary clock source

                                                                     is not stopped and

                                                                 •   the primary clock source is not any of the LP, XT,

                                                                     HS or HSPLL modes.

                                                                 In  these  instances,   the  primary   clock    source  either

                                                                 does not require an oscillator start-up delay since it is

                                                                 already    running  (PRI_IDLE),    or  normally      does   not

                                                                 require an oscillator start-up delay (RC, EC, INTOSC,

                                                                 and  INTOSCIO       modes).  However,  a      fixed  delay  of

                                                                 interval TCSD following the wake event is still required

                                                                 when leaving Sleep and Idle modes to allow the CPU

                                                                 to prepare for execution. Instruction execution resumes

                                                                 on the first clock cycle following this delay.

 2010-2016 Microchip Technology Inc.                                                                  DS40001412G-page 51
PIC18(L)F2X/4XK22

3.6         Selective Peripheral Module                                 Setting the PMD bit for a module disables all clock

         Control                                                        sources     to        that   module,  reducing        its  power

                                                                        consumption to an absolute minimum. In this state,

Idle mode allows users to substantially reduce power                    power to the control and status registers associated

consumption       by    stopping     the  CPU    clock.     Even  so,   with   the  peripheral       is  removed.     Writes   to  these

peripheral    modules         still  remain    clocked,     and  thus,  registers have no effect and read values are invalid.

consume     power.        There      may   be    cases   where    the   Clearing    a         set  PMD   bit  restores  power      to  the

application needs what IDLE mode does not provide:                      associated control and status registers, thereby setting

the     allocation    of      power    resources     to     the  CPU    those registers to their default values.

processing with minimal power consumption from the

peripherals.        PIC18(L)F2X/4XK22            family     devices

address     this    requirement        by    allowing       peripheral

modules     to    be      selectively     disabled,     reducing  or

eliminating their power consumption. This can be done

with    control   bits    in  the    Peripheral  Module     Disable

(PMD) registers. These bits generically named XXXMD

are located in control registers PMD0, PMD1 or PMD2.

3.7      Register Definitions: Peripheral Module Disable

REGISTER 3-1:                 PMD0: PERIPHERAL MODULE DISABLE REGISTER 0

      R/W-0               R/W-0                R/W-0             R/W-0  R/W-0                 R/W-0           R/W-0            R/W-0

UART2MD                 UART1MD              TMR6MD         TMR5MD      TMR4MD          TMR3MD                TMR2MD    TMR1MD

bit 7                                                                                                                                  bit 0

Legend:

R = Readable bit                          W = Writable bit              U = Unimplemented bit, read as ‘0’

-n = Value at POR                         ‘1’ = Bit is set              ‘0’ = Bit is cleared             x = Bit is unknown

bit  7                UART2MD: UART2 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  6                UART1MD: UART1 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  5                TMR6MD: Timer6 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  4                TMR5MD: Timer5 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  3                TMR4MD: Timer4 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  2                TMR3MD: Timer3 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  1                TMR2MD: Timer2 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

bit  0                TMR1MD: Timer1 Peripheral Module Disable Control bit

                      1=      Module is disabled, Clock Source is disconnected, module does not draw digital            power

                      0=      Module is enabled, Clock Source is connected, module draws digital power

DS40001412G-page 52                                                                                  2010-2016 Microchip Technology Inc.
                                                     PIC18(L)F2X/4XK22

REGISTER 3-2:      PMD1: PERIPHERAL MODULE DISABLE REGISTER 1

     R/W-0         R/W-0               U-0   R/W-0   R/W-0                 R/W-0             R/W-0         R/W-0

MSSP2MD           MSSP1MD              —     CCP5MD  CCP4MD       CCP3MD          CCP2MD            CCP1MD

bit 7                                                                                                      bit 0

Legend:

R = Readable bit           W = Writable bit          U = Unimplemented bit, read as ‘0’

-n = Value at POR          ‘1’ = Bit is set          ‘0’ = Bit is cleared         x = Bit is unknown

bit  7      MSSP2MD: MSSP2 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  6      MSSP1MD: MSSP1 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  5      Unimplemented: Read as ‘0’

bit  4      CCP5MD: CCP5 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  3      CCP4MD: CCP4 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  2      CCP3MD: CCP3 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  1      CCP2MD: CCP2 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

bit  0      CCP1MD: CCP1 Peripheral Module Disable Control bit

            1=     Module is disabled, Clock Source is disconnected, module does not draw digital   power

            0=     Module is enabled, Clock Source is connected, module draws digital power

 2010-2016 Microchip Technology Inc.                                                        DS40001412G-page 53
PIC18(L)F2X/4XK22

REGISTER 3-3:        PMD2: PERIPHERAL MODULE DISABLE REGISTER 2

        U-0          U-0  U-0               U-0  R/W-0                 R/W-0                   R/W-0         R/W-0

        —            —    —                 —    CTMUMD          CMP2MD       CMP1MD                  ADCMD

bit 7                                                                                                        bit 0

Legend:

R = Readable bit          W = Writable bit       U = Unimplemented bit, read as ‘0’

-n = Value at POR         ‘1’ = Bit is set       ‘0’ = Bit is cleared         x = Bit is unknown

bit  7-4     Unimplemented: Read as ‘0’

bit  3       CTMUMD: CTMU Peripheral Module Disable Control bit

             1=      Module is disabled, Clock Source is disconnected, module does not draw digital   power

             0=      Module is enabled, Clock Source is connected, module draws digital power

bit  2       CMP2MD: Comparator C2 Peripheral Module Disable Control bit

             1=      Module is disabled, Clock Source is disconnected, module does not draw digital   power

             0=      Module is enabled, Clock Source is connected, module draws digital power

bit  1       CMP1MD: Comparator C1 Peripheral Module Disable Control bit

             1=      Module is disabled, Clock Source is disconnected, module does not draw digital   power

             0=      Module is enabled, Clock Source is connected, module draws digital power

bit  0       ADCMD: ADC Peripheral Module Disable Control bit

             1=      Module is disabled, Clock Source is disconnected, module does not draw digital   power

             0=      Module is enabled, Clock Source is connected, module draws digital power

DS40001412G-page 54                                                        2010-2016 Microchip Technology Inc.
                                                                PIC18(L)F2X/4XK22

4.0        RESET                                                A simplified block diagram of the On-Chip Reset Circuit

                                                                is shown in Figure 4-1.

The PIC18(L)F2X/4XK22 devices differentiate between

various kinds of Reset:                                         4.1        RCON Register

a)   Power-on Reset (POR)                                       Device Reset events are tracked through the RCON

b)   MCLR Reset during normal operation                         register   (Register 4-1).      The     lower     five   bits  of  the

c)   MCLR Reset during power-managed modes                      register   indicate       that  a  specific       Reset  event     has

d)   Watchdog Timer (WDT) Reset (during                         occurred. In most cases, these bits can only be cleared

     execution)                                                 by the event and must be set by the application after

e)   Programmable Brown-out Reset (BOR)                         the event. The state of these flag bits, taken together,

f)   RESET Instruction                                          can be read to indicate the type of Reset that just

g)   Stack Full Reset                                           occurred.    This    is   described     in        more   detail    in

h)   Stack Underflow Reset                                      Section 4.7 “Reset State of Registers”.

This section discusses Resets generated by MCLR,                The RCON register also has control bits for setting

POR and BOR and covers the operation of the various             interrupt  priority  (IPEN)        and  software      control  of  the

start-up   timers.  Stack     Reset   events  are  covered  in  BOR  (SBOREN).            Interrupt     priority  is    discussed  in

Section 5.2.0.1 “Stack Full and Underflow Resets”.              Section 9.0  “Interrupts”.              BOR       is     covered   in

WDT Resets are covered in Section 24.3 “Watchdog                Section 4.5 “Brown-out Reset (BOR)”.

Timer (WDT)”.

FIGURE     4-1:              SIMPLIFIED BLOCK DIAGRAM           OF ON-CHIP RESET CIRCUIT

               RESET

           Instruction

               Stack         Stack Full/Underflow Reset

               Pointer

                              External Reset

    MCLR                       MCLRE

                    ( )_IDLE

                      Sleep

                      WDT

                    Time-out

                        VDD          POR

                      Detect

    VDD

                    Brown-out

                      Reset

                               BOREN                                                               S

               OST/PWRT

                             OST(2)   1024 Cycles                                                                     Chip_Reset

                               10-bit Ripple Counter                                                 R            Q

    OSC1

               32 s         PWRT(2)  65.5 ms

           LFINTOSC            11-bit Ripple Counter

                                                                                                                     Enable PWRT

                                                                                                                  Enable OST(1)

     Note  1:  See Table 4-2 for time-out situations.

           2:  PWRT and OST counters are reset by POR and BOR. See Sections 4.4 and 4.5.

 2010-2016 Microchip Technology Inc.                                                                   DS40001412G-page 55
PIC18(L)F2X/4XK22

4.2         Register Definitions: Reset Control

REGISTER 4-1:         RCON: RESET CONTROL REGISTER

     R/W-0/0        R/W-q/u            U-0          R/W-1/q      R-1/q           R-1/q            R/W-q/u  R/W-0/q

        IPEN      SBOREN(1)            —               RI           TO           PD               POR(2)   BOR

bit 7                                                                                                                bit 0

Legend:

R = Readable bit              W = Writable bit               U = Unimplemented bit, read as ‘0’

‘1’ = Bit is set              ‘0’ = Bit is cleared           -n/n = Value at POR and BOR/Value at all other Resets

x = Bit is unknown            u = unchanged                      q = depends on condition

bit 7             IPEN: Interrupt Priority Enable bit

                  1 = Enable priority levels on interrupts

                  0 = Disable priority levels on interrupts (PIC16CXXX Compatibility mode)

bit 6             SBOREN: BOR Software Enable bit(1)

                  If BOREN<1:0> = 01:

                  1 = BOR is enabled

                  0 = BOR is disabled

                  If BOREN<1:0> = 00, 10 or 11:

                  Bit is disabled and read as ‘0’.

bit 5             Unimplemented: Read as ‘0’

bit 4             RI: RESET Instruction Flag bit

                  1=  The RESET instruction was not executed (set by firmware or Power-on Reset)

                  0=  The RESET instruction was executed causing a device Reset (must be set in firmware             after  a

                      code-executed Reset occurs)

bit  3            TO: Watchdog Time-out Flag bit

                  1=  Set by power-up, CLRWDT instruction or SLEEP instruction

                  0=  A WDT time-out occurred

bit  2            PD: Power-down Detection Flag bit

                  1=  Set by power-up or by the CLRWDT instruction

                  0=  Set by execution of the SLEEP instruction

bit  1            POR: Power-on Reset Status bit(2)

                  1 = No Power-on Reset occurred

                  0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

bit  0            BOR: Brown-out Reset Status bit(3)

                  1=  A Brown-out Reset has not occurred (set by firmware only)

                  0=  A Brown-out Reset occurred (must be set by firmware after a POR or Brown-out Reset occurs)

Note    1:    When CONFIG2L[2:1] = 01, then the SBOREN Reset state is ‘1’; otherwise, it is ‘0’.

        2:    The actual Reset value of POR is determined by the type of device Reset. See the notes following this

              register and Section 4.7 “Reset State of Registers” for additional information.

        3:    See Table 4-1.

     Note 1:  Brown-out Reset is indicated when BOR is ‘0’ and POR is ‘1’ (assuming that both POR and BOR were set

              to ‘1’ by firmware immediately after POR).

        2:    It is recommended that the POR bit be set after a Power-on Reset has been detected so that subsequent

              Power-on Resets may be detected.

DS40001412G-page 56                                                               2010-2016 Microchip Technology Inc.
                                                                   PIC18(L)F2X/4XK22

4.3         Master Clear (MCLR)                                    FIGURE 4-2:            EXTERNAL POWER-ON

The   MCLR    pin   provides    a  method    for  triggering  an                          RESET CIRCUIT (FOR

external Reset of the device. A Reset is generated by                                     SLOW VDD POWER-UP)

holding the pin low. These devices have a noise filter in

the MCLR Reset path which detects and ignores small                      VDD      VDD

pulses. An internal weak pull-up is enabled when the                                                    PIC® MCU

pin is configured as the MCLR input.                                          D   R

The MCLR pin is not driven low by any internal Resets,                                       R1

including the WDT.                                                                                      MCLR

In PIC18(L)F2X/4XK22 devices, the MCLR input can                                       C

be disabled with the MCLRE Configuration bit. When

MCLR is disabled, the pin becomes a digital input. See

Section 10.6        “PORTE         Registers”     for  more        Note  1:   External Power-on Reset circuit is required

information.                                                                  only if the VDD power-up slope is too slow.

4.4         Power-on Reset (POR)                                              The diode D helps discharge the capacitor

                                                                              quickly when VDD powers down.

A  Power-on         Reset  pulse   is    generated     on-chip           2:   15 k < R < 40 k is recommended to make

whenever VDD rises above a certain threshold. This                            sure that the voltage drop across R does not

allows the device to start in the initialized state when                      violate the device’s electrical specification.

VDD is adequate for operation.                                           3:   R1  1 k will limit any current flowing into

                                                                              MCLR from external capacitor C, in the event

To take advantage of the POR circuitry either leave the                       of  MCLR/VPP   pin  breakdown,       due        to

pin floating, or tie the MCLR pin through a resistor to                       Electrostatic  Discharge  (ESD)  or  Electrical

VDD.   This   will   eliminate    external   RC   components                  Overstress (EOS).

usually needed to create a Power-on Reset delay. A

minimum rise rate for VDD is specified. For a slow rise

time, see Figure 4-2.

When the device starts normal operation (i.e., exits the

Reset  condition),         device  operating      parameters

(voltage, frequency, temperature, etc.) must be met to

ensure proper operation. If these conditions are not

met,   the   device  must     be   held  in  Reset  until     the

operating conditions are met.

POR events are captured by the POR bit of the RCON

register. The state of the bit is set to ‘0’ whenever a

POR occurs; it does not change for any other Reset

event. POR is not reset to ‘1’ by any hardware event.

To capture multiple events, the user must manually set

the bit to ‘1’ by software following any POR.

 2010-2016 Microchip Technology Inc.                                                             DS40001412G-page 57
PIC18(L)F2X/4XK22

4.5          Brown-out Reset (BOR)                                     4.5.2         SOFTWARE ENABLED BOR

PIC18(L)F2X/4XK22 devices implement a BOR circuit                      When BOREN<1:0> = 01, the BOR can be enabled or

that provides the user with a number of configuration and              disabled by the user in software. This is done with the

power-saving     options.   The    BOR  is       controlled  by   the  SBOREN       control      bit  of   the  RCON      register.    Setting

BORV<1:0> and BOREN<1:0> bits of the CONFIG2L                          SBOREN enables the BOR to function as previously

Configuration register. There are a total of four BOR                  described.    Clearing         SBOREN         disables       the  BOR

configurations which are summarized in Table 4-1.                      entirely. The SBOREN bit operates only in this mode;

The BOR threshold is set by the BORV<1:0> bits. If                     otherwise it is read as ‘0’.

BOR is enabled (any values of BOREN<1:0>, except                       Placing the BOR under software control gives the user

‘00’), any drop of VDD below VBOR for greater than                     the additional flexibility of tailoring the application to the

TBOR will reset the device. A Reset may or may not                     environment without having to reprogram the device to

occur if VDD falls below VBOR for less than TBOR. The                  change BOR configuration. It also allows the user to

chip  will   remain   in  Brown-out  Reset       until  VDD     rises  tailor  device    power        consumption         in      software  by

above VBOR.                                                            eliminating   the   incremental           current      that  the  BOR

If the Power-up Timer is enabled, it will be invoked after             consumes. While the BOR current is typically very small,

VDD rises above VBOR; it then will keep the chip in                    it may have some impact in low-power applications.

Reset for an additional time delay, TPWRT. If VDD drops

below VBOR while the Power-up Timer is running, the                    Note:         Even        when      BOR       is   under     software

chip   will  go  back     into  a  Brown-out     Reset       and  the                control, the BOR Reset voltage level is still

Power-up     Timer    will  be     initialized.  Once   VDD     rises                set by the BORV<1:0> Configuration bits.

above  VBOR,     the      Power-up   Timer       will  execute    the                It cannot be changed by software.

additional time delay.

BOR    and       the      Power-on   Timer       (PWRT)           are  4.5.3         DISABLING BOR IN SLEEP MODE

independently configured. Enabling BOR Reset does                      When    BOREN<1:0>             =   10,   the  BOR      remains    under

not automatically enable the PWRT.                                     hardware      control          and      operates       as    previously

The BOR circuit has an output that feeds into the POR                  described. Whenever the device enters Sleep mode,

circuit and rearms the POR within the operating range                  however, the BOR is automatically disabled. When the

of the BOR. This early rearming of the POR ensures                     device returns to any other operating mode, BOR is

that the device will remain in Reset in the event that VDD             automatically re-enabled.

falls below the operating range of the BOR circuitry.                  This    mode      allows  for      applications    to  recover       from

4.5.1        DETECTING BOR                                             brown-out     situations,      while     actively  executing      code,

                                                                       when the device requires BOR protection the most. At

When BOR is enabled, the BOR bit always resets to ‘0’                  the same time, it saves additional power in Sleep mode

on any BOR or POR event. This makes it difficult to                    by eliminating the small incremental BOR current.

determine if a BOR event has occurred just by reading

the state of BOR alone. A more reliable method is to                   4.5.4         MINIMUM BOR ENABLE TIME

simultaneously check the state of both POR and BOR.                    Enabling     the  BOR     also      enables       the  Fixed    Voltage

This assumes that the POR and BOR bits are reset to                    Reference (FVR) when no other peripheral requiring the

‘1’ by software immediately after any POR event. If                    FVR is active. The BOR becomes active only after the

BOR is ‘0’ while POR is ‘1’, it can be reliably assumed                FVR stabilizes. Therefore, to ensure BOR protection,

that a BOR event has occurred.                                         the     FVR  settling     time      must      be   considered     when

                                                                       enabling     the  BOR     in   software       or  when     the  BOR  is

                                                                       automatically enabled after waking from Sleep. If the

                                                                       BOR is disabled, in software or by reentering Sleep

                                                                       before the FVR stabilizes, the BOR circuit will not sense

                                                                       a BOR condition. The FVRST bit of the VREFCON0

                                                                       register can be used to determine FVR stability.

DS40001412G-page 58                                                                               2010-2016 Microchip Technology Inc.
                                                                           PIC18(L)F2X/4XK22

TABLE 4-1:              BOR CONFIGURATIONS

   BOR Configuration            Status of

                                SBOREN                                         BOR Operation

   BOREN1        BOREN0         (RCON<6>)

     0               0          Unavailable      BOR disabled; must be enabled by reprogramming the Configuration bits.

     0               1          Available        BOR enabled by software; operation controlled by SBOREN.

     1               0          Unavailable      BOR enabled by hardware in Run and Idle modes, disabled during Sleep mode.

     1               1          Unavailable      BOR enabled by hardware; must be disabled by reprogramming the Configuration bits.

4.6         Device Reset Timers                                        4.6.3          PLL LOCK TIME-OUT

PIC18(L)F2X/4XK22               devices      incorporate      three    With the PLL enabled, the time-out sequence following a

separate on-chip timers that help regulate the Power-                  Power-on Reset is slightly different from other oscillator

on Reset process. Their main function is to ensure that                modes. A separate timer is used to provide a fixed time-

the device clock is stable before code is executed.                    out that is sufficient for the PLL to lock to the main

These timers are:                                                      oscillator     frequency.  This     PLL   lock    time-out  (TPLL)  is

•  Power-up Timer (PWRT)                                               typically 2 ms and follows the oscillator start-up time-out.

•  Oscillator Start-up Timer (OST)                                     4.6.4          TIME-OUT SEQUENCE

•  PLL Lock Time-out                                                   On power-up, the time-out sequence is as follows:

4.6.1            POWER-UP TIMER (PWRT)                                 1.   After the POR pulse has cleared, PWRT time-out

The Power-up Timer (PWRT) of PIC18(L)F2X/4XK22                              is invoked (if enabled).

devices      is  an     11-bit  counter       which     uses   the     2.   Then, the OST is activated.

LFINTOSC source as the clock input. This yields an                     The     total  time-out    will     vary  based      on     oscillator

approximate time interval of 2048 x 32 s = 65.6 ms.                   configuration and the status of the PWRT. Figure 4-3,

While   the  PWRT       is  counting,    the  device    is  held  in   Figure 4-4,    Figure 4-5,  Figure 4-6          and  Figure 4-7     all

Reset.                                                                 depict  time-out      sequences     on    power-up,         with  the

The power-up time delay depends on the LFINTOSC                        Power-up Timer enabled and the device operating in

clock and will vary from chip-to-chip due to temperature               HS   Oscillator   mode.     Figures       4-3     through   4-6   also

and process variation.                                                 apply to devices operating in XT or LP modes. For

                                                                       devices in RC mode and with the PWRT disabled, on

The    PWRT      is  enabled    by   clearing    the    PWRTEN         the other hand, there will be no time-out at all.

Configuration bit.                                                     Since the time-outs occur from the POR pulse, if MCLR

4.6.2            OSCILLATOR START-UP TIMER                             is kept low long enough, all time-outs will expire, after

                 (OST)                                                 which,      bringing  MCLR          high  will    allow     program

                                                                       execution to begin immediately (Figure 4-5). This is

The Oscillator Start-up Timer (OST) provides a 1024                    useful for testing purposes or to synchronize more than

oscillator   cycle      (from  OSC1      input)  delay  after     the  one PIC® MCU device operating in parallel.

PWRT     delay   is     over.  This  ensures     that  the  crystal

oscillator or resonator has started and stabilized.

The OST time-out is invoked only for XT, LP and HS

modes and only on Power-on Reset, or on exit from all

power-managed modes that stop the external oscillator.

 2010-2016 Microchip Technology Inc.                                                                            DS40001412G-page 59
PIC18(L)F2X/4XK22

TABLE 4-2:        TIME-OUT IN VARIOUS SITUATIONS

      Oscillator                 Power-up(2) and Brown-out                                 Exit from

Configuration                    PWRTEN = 0                       PWRTEN = 1           Power-Managed Mode

HSPLL                  66 ms(1) + 1024 TOSC + 2 ms(2)             1024 TOSC + 2 ms(2)      1024 TOSC + 2 ms(2)

HS, XT, LP             66 ms(1) + 1024 TOSC                       1024 TOSC                1024 TOSC

EC, ECIO                         66 ms(1)                               —                         —

RC, RCIO                         66 ms(1)                               —                         —

INTIO1, INTIO2                   66 ms(1)                               —                         —

Note  1:  66 ms (65.5 ms) is the nominal Power-up Timer (PWRT) delay.

      2:  2 ms is the nominal time required for the PLL to lock.

FIGURE 4-3:            TIME-OUT SEQUENCE ON POWER-UP (MCLR TIED TO                     VDD, VDD RISE < TPWRT)

                VDD

             MCLR

      INTERNAL POR

                                             TPWRT

PWRT TIME-OUT                                                     TOST

      OST TIME-OUT

INTERNAL RESET

FIGURE 4-4:            TIME-OUT  SEQUENCE    ON  POWER-UP         (MCLR    NOT TIED    TO  VDD):  CASE  1

                  VDD

             MCLR

      INTERNAL POR

                                                       TPWRT

PWRT TIME-OUT                                                                 TOST

      OST TIME-OUT

INTERNAL RESET

DS40001412G-page 60                                                            2010-2016 Microchip Technology Inc.
                                                                      PIC18(L)F2X/4XK22

FIGURE 4-5:        TIME-OUT SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD):                           CASE  2

             VDD

             MCLR

INTERNAL POR

                                                               TPWRT

PWRT TIME-OUT                                                                        TOST

OST TIME-OUT

INTERNAL RESET

FIGURE 4-6:        SLOW  RISE          TIME    (MCLR    TIED TO      VDD, VDD  RISE  > TPWRT)

                                                                      5V

                   VDD                         0V

                MCLR

       INTERNAL POR

                                                        TPWRT

       PWRT TIME-OUT

                                                                               TOST

       OST TIME-OUT

       INTERNAL RESET

FIGURE 4-7:        TIME-OUT SEQUENCE ON POR W/PLL ENABLED (MCLR TIED                           TO  VDD)

             VDD

             MCLR

INTERNAL POR

                                                        TPWRT

PWRT TIME-OUT                                                         TOST

OST TIME-OUT                                                                   TPLL

PLL TIME-OUT

INTERNAL RESET

Note:  TOST = 1024 clock cycles.

       TPLL  2 ms max. First three    stages  of  the  PWRT timer.

 2010-2016 Microchip Technology Inc.                                                          DS40001412G-page 61
PIC18(L)F2X/4XK22

4.7        Reset State of Registers                                    Table 5-2    describes  the  Reset  states  for  all  of  the

                                                                       Special     Function    Registers.  The  table   identifies

Some registers are unaffected by a Reset. Their status                 differences         between         Power-On          Reset

is  unknown      on  POR    and   unchanged       by   all  other      (POR)/Brown-Out Reset (BOR) and all other Resets,

Resets. All other registers are forced to a “Reset state”              (i.e., Master Clear, WDT Resets, STKFUL, STKUNF,

depending on the type of Reset that occurred.                          etc.). Additionally, the table identifies register bits that

Most registers are not affected by a WDT wake-up,                      are changed when the device receives a wake-up from

since  this  is  viewed     as    the  resumption     of  normal       WDT or other interrupts.

operation. Status bits from the RCON register, RI, TO,

PD, POR and BOR, are set or cleared differently in

different  Reset     situations,  as   indicated  in  Table 4-3.

These  bits  are     used   by    software  to  determine   the

nature of the Reset.

TABLE 4-3:           STATUS BITS, THEIR SIGNIFICANCE AND THE INITIALIZATION CONDITION

                     FOR RCON REGISTER

                                            Program                    RCON Register                       STKPTR Register

             Condition                      Counter

                                                            SBOREN     RI      TO   PD       POR    BOR    STKFUL       STKUNF

Power-on Reset                              0000h                 1    1        1   1          0    0      0                 0

RESET Instruction                           0000h           u(2)       0        u   u          u    u      u                 u

Brown-out Reset                             0000h           u(2)       1        1   1          u    0      u                 u

MCLR during Power-Managed                   0000h           u(2)       u        1   u          u    u      u                 u

Run Modes

MCLR during Power-Managed                   0000h           u(2)       u        1   0          u    u      u                 u

Idle Modes and Sleep Mode

WDT Time-out during Full Power              0000h           u(2)       u        0   u          u    u      u                 u

or Power-Managed Run Mode

MCLR during Full Power                      0000h           u(2)       u        u   u          u    u      u                 u

Execution

Stack Full Reset (STVREN = 1)               0000h           u(2)       u        u   u          u    u      1                 u

Stack Underflow Reset                       0000h           u(2)       u        u   u          u    u      u                 1

(STVREN = 1)

Stack Underflow Error (not an               0000h           u(2)       u        u   u          u    u      u                 1

actual Reset, STVREN = 0)

WDT Time-out during Power-                  PC + 2          u(2)       u        0   0          u    u      u                 u

Managed Idle or Sleep Modes

Interrupt Exit from Power-                  PC + 2(1)       u(2)       u        u   0          u    u      u                 u

Managed Modes

Legend:      u = unchanged

Note   1:    When the wake-up is due to an interrupt and the GIEH or GIEL bits are set, the PC is loaded with the

             interrupt vector (008h or 0018h).

       2:    Reset state is ‘1’ for SBOREN and unchanged for all other Resets when software BOR is enabled

             (BOREN<1:0> Configuration bits = 01). Otherwise, the Reset state is ‘0’.

TABLE 4-4:           REGISTERS ASSOCIATED WITH RESETS

    Name             Bit 7        Bit 6           Bit 5     Bit 4      Bit 3        Bit 2         Bit 1    Bit 0        Register

                                                                                                                        on Page

RCON                 IPEN         SBOREN           —               RI      TO       PD            POR      BOR               56

STKPTR            STKFUL          STKUNF           —                            STKPTR<4:0>                                  67

Legend:      — = unimplemented locations, read as ‘0’. Shaded bits are not used for Resets.

DS40001412G-page 62                                                                           2010-2016 Microchip Technology Inc.
                                                         PIC18(L)F2X/4XK22

TABLE 4-5:  CONFIGURATION REGISTERS ASSOCIATED WITH RESETS

Name        Bit 7  Bit 6               Bit 5  Bit 4  Bit 3   Bit 2   Bit 1                   Bit 0    Register

                                                                                                      on Page

CONFIG2L    —      —                   —      BORV<1:0>      BOREN<1:0>                      PWRTEN   346

CONFIG2H    —      —                          WDPS<3:0>                                   WDTEN<1:0>  347

CONFIG3H    MCLRE  —                   P2BMX  T3CMX  HFOFST  CCP3MX  PBADEN                  CCP2MX   348

CONFIG4L    DEBUG  XINST               —      —      —       LVP                          —  STRVEN   349

Legend:  —  = unimplemented locations, read as ‘0’. Shaded bits are not used for Resets.

 2010-2016 Microchip Technology Inc.                                                        DS40001412G-page 63
PIC18(L)F2X/4XK22

5.0     MEMORY ORGANIZATION                                   5.1       Program Memory Organization

There are three types of memory in PIC18 Enhanced             PIC18  microcontrollers    implement  a  21-bit    program

microcontroller devices:                                      counter,  which    is  capable  of  addressing  a  2-Mbyte

•  Program Memory                                             program memory space. Accessing a location between

•  Data RAM                                                   the  upper  boundary   of  the      physically  implemented

                                                              memory and the 2-Mbyte address will return all ‘0’s (a

•  Data EEPROM                                                NOP instruction).

As Harvard architecture devices, the data and program         This family of devices contain the following:

memories  use    separate      buses;    this  allows    for  •  PIC18(L)F23K22, PIC18(L)F43K22: 8 Kbytes of

concurrent access of the two memory spaces. The data             Flash Memory, up to 4,096 single-word instructions

EEPROM, for practical purposes, can be regarded as

a peripheral device, since it is addressed and accessed       •  PIC18(L)F24K22, PIC18(L)F44K22: 16 Kbytes of

through a set of control registers.                              Flash Memory, up to 8,192 single-word instructions

Additional detailed information on the operation of the       •  PIC18(L)F25K22, PIC18(L)F45K22: 32 Kbytes of

Flash   program  memory    is  provided    in  Section 6.0       Flash Memory, up to 16,384 single-word

“Flash  Program      Memory”.        Data  EEPROM        is      instructions

discussed separately in Section 7.0 “Data EEPROM              •  PIC18(L)F26K22, PIC18(L)F46K22: 64 Kbytes of

Memory”.                                                         Flash Memory, up to 37,768 single-word

                                                                 instructions

                                                              PIC18 devices have two interrupt vectors. The Reset

                                                              vector address is at 0000h and the interrupt vector

                                                              addresses are at 0008h and 0018h.

                                                              The  program     memory  map    for  PIC18(L)F2X/4XK22

                                                              devices is shown in Figure 5-1. Memory block details

                                                              are shown in Figure 20-2.

DS40001412G-page 64                                                                   2010-2016 Microchip Technology Inc.
                                                                                  PIC18(L)F2X/4XK22

FIGURE        5-1:           PROGRAM MEMORY MAP AND STACK FOR PIC18(L)F2X/4XK22 DEVICES

                                                         PC<20:0>

                 CALL,RCALL,RETURN                                                      21

                 RETFIE,RETLW

                                                         Stack Level 1

                                                              
                                                              
                                                              

                                                     Stack Level 31

                                                         Reset Vector                                             0000h

                                        High Priority Interrupt Vector                                            0008h

                                        Low Priority Interrupt Vector                                             0018h

                    On-Chip

              Program Memory            On-Chip

                              1FFFh     Program Memory

                              2000h

                                                     3FFFh              On-Chip

              PIC18(L)F23K22                         4000h       Program Memory

              PIC18(L)F43K22                                                                  On-Chip                            User Memory Space

                                        PIC18(L)F24K22                                  Program Memory

                                        PIC18(L)F44K22                           7FFFh

                                                                                 8000h

                                                                 PIC18(L)F25K22

                                                                 PIC18(L)F45K22

                                                                                                           FFFFh

                    Read ‘0’            Read ‘0’                        Read ‘0’                       10000h

                                                                                        PIC18(L)F26K22

                                                                                        PIC18(L)F46K22

                                                                                              Read ‘0’            1FFFFFh

                                                                                                                  200000h

5.1.1         PROGRAM COUNTER                                           The       PC    increments         by   two   to   address                  sequential

The Program Counter (PC) specifies the address of the                   instructions in the program memory.

instruction to fetch for execution. The PC is 21 bits wide              The       CALL,       RCALL,       GOTO       and    program                    branch

and is contained in three separate 8-bit registers. The                 instructions write to the program counter directly. For

low byte, known as the PCL register, is both readable                   these           instructions,      the  contents     of                     PCLATH  and

and writable. The high byte, or PCH register, contains                  PCLATU are not transferred to the program counter.

the PC<15:8> bits; it is not directly readable or writable.

Updates to the PCH register are performed through the                   5.1.2            RETURN ADDRESS STACK

PCLATH register. The upper byte is called PCU. This                     The return address stack allows any combination of up

register  contains      the  PC<20:16>  bits;    it  is  also    not    to 31 program calls and interrupts to occur. The PC is

directly  readable      or   writable.  Updates      to  the  PCU       pushed          onto  the      stack    when      a  CALL                   or  RCALL

register are performed through the PCLATU register.                     instruction is executed or an interrupt is Acknowledged.

The contents of PCLATH and PCLATU are transferred                       The PC value is pulled off the stack on a RETURN,

to the program counter by any operation that writes                     RETLW or a RETFIE instruction. PCLATU and PCLATH

PCL. Similarly, the upper two bytes of the program                      are       not   affected       by  any    of  the    RETURN                 or      CALL

counter are transferred to PCLATH and PCLATU by an                      instructions.

operation that reads PCL. This is useful for computed                   The stack operates as a 31-word by 21-bit RAM and a

offsets   to  the   PC  (see  Section 5.2.2.1        “Computed          5-bit Stack Pointer, STKPTR. The stack space is not

GOTO”).                                                                 part of either program or data space.

The PC addresses bytes in the program memory. To

prevent the PC from becoming misaligned with word

instructions, the Least Significant bit of PCL is fixed to

a value of ‘0’.

 2010-2016 Microchip Technology Inc.                                                                                 DS40001412G-page 65
PIC18(L)F2X/4XK22

The   Stack   Pointer   is  readable     and  writable   and    the  5.1.2.1         Top-of-Stack Access

address on the top of the stack is readable and writable             Only the top of the return address stack (TOS) is readable

through the Top-of-Stack (TOS) Special File Registers.               and writable. A set of three registers, TOSU:TOSH:TOSL,

Data can also be pushed to, or popped from the stack,                hold the contents of the stack location pointed to by the

using these registers.                                               STKPTR        register  (Figure 5-2).  This    allows   users   to

A CALL type instruction causes a push onto the stack;                implement a software stack if necessary. After a CALL,

the Stack Pointer is first incremented and the location              RCALL or interrupt, the software can read the pushed

pointed  to   by  the   Stack  Pointer   is   written    with   the  value by reading the TOSU:TOSH:TOSL registers. These

contents of the PC (already pointing to the instruction              values can be placed on a user defined software stack. At

following the CALL). A RETURN type instruction causes                return   time,  the     software  can  return    these  values  to

a  pop   from  the  stack;  the  contents     of    the  location    TOSU:TOSH:TOSL and do a return.

pointed to by the STKPTR are transferred to the PC                   The user must disable the Global Interrupt Enable (GIE)

and then the Stack Pointer is decremented.                           bits while accessing the stack to prevent inadvertent

The   Stack    Pointer  is  initialized  to   ‘00000’    after  all  stack corruption.

Resets. There is no RAM associated with the location

corresponding to a Stack Pointer value of ‘00000’; this

is only a Reset value. Status bits indicate if the stack is

full or has overflowed or has underflowed.

FIGURE   5-2:               RETURN ADDRESS STACK AND ASSOCIATED REGISTERS

                                                                Return Address Stack <20:0>

                                                                                   11111

                        Top-of-Stack Registers                                     11110               Stack Pointer

                                                                                   11101

               TOSU              TOSH               TOSL                                               STKPTR<4:0>

                  00h            1Ah                34h                                                     00010

                                                                                   00011

                                                       Top-of-Stack  001A34h       00010

                                                                     000D58h       00001

                                                                                   00000

5.1.2.2        Return Stack Pointer (STKPTR)                         onto     the  stack,    set  the  STKFUL    bit  and    reset   the

The STKPTR register (Register 5-1) contains the Stack                device. The STKFUL bit will remain set and the Stack

Pointer value, the STKFUL (stack full) Status bit and                Pointer will be set to zero.

the STKUNF (Stack Underflow) Status bits. The value                  If STVREN is cleared, the STKFUL bit will be set on the

of the Stack Pointer can be 0 through 31. The Stack                  31st push and the Stack Pointer will increment to 31.

Pointer increments before values are pushed onto the                 Any additional pushes will not overwrite the 31st push

stack and decrements after values are popped off the                 and STKPTR will remain at 31.

stack. On Reset, the Stack Pointer value will be zero.               When the stack has been popped enough times to

The user may read and write the Stack Pointer value.                 unload the stack, the next pop will return a value of zero

This feature can be used by a Real-Time Operating                    to the PC and sets the STKUNF bit, while the Stack

System (RTOS) for return stack maintenance.                          Pointer remains at zero. The STKUNF bit will remain

After the PC is pushed onto the stack 31 times (without              set until cleared by software or until a POR occurs.

popping any values off the stack), the STKFUL bit is

set. The STKFUL bit is cleared by software or by a

POR.                                                                 Note:           Returning a value of zero to the PC on an

The action that takes place when the stack becomes                                   underflow has the effect of vectoring the

full depends on the state of the STVREN (Stack Over-                                 program to the Reset vector, where the

flow  Reset    Enable)      Configuration     bit.  (Refer      to                   stack   conditions     can  be   verified  and

Section 24.1 “Configuration Bits” for a description of                               appropriate actions can be taken. This is

the   device   Configuration     bits.)  If   STVREN      is    set                  not the same as a Reset, as the contents

(default), the 31st push will push the (PC + 2) value                                of the SFRs are not affected.

DS40001412G-page 66                                                                           2010-2016 Microchip Technology Inc.
                                                                                PIC18(L)F2X/4XK22

5.1.2.3           PUSH and POP Instructions                                The PUSH instruction places the current PC value onto

Since the Top-of-Stack is readable and writable, the                       the stack. This increments the Stack Pointer and loads

ability to push values onto the stack and pull values off                  the current PC value onto the stack.

the stack without disturbing normal program execution                      The   POP   instruction        discards  the      current    TOS   by

is   a  desirable     feature.    The     PIC18     instruction   set      decrementing the Stack Pointer. The previous value

includes two instructions, PUSH and POP, that permit                       pushed onto the stack then becomes the TOS value.

the  TOS      to  be  manipulated      under      software  control.

TOSU, TOSH and TOSL can be modified to place data

or a return address on the stack.

5.2          Register Definitions: Stack Pointer

REGISTER 5-1:                    STKPTR: STACK POINTER REGISTER

        R/C-0              R/C-0               U-0               R/W-0     R/W-0               R/W-0            R/W-0          R/W-0

    STKFUL(1)         STKUNF(1)                —                                       STKPTR<4:0>

bit 7                                                                                                                                    bit 0

Legend:

R = Readable bit                          W = Writable bit              U = Unimplemented                  C = Clearable only bit

-n = Value at POR                         ‘1’ = Bit is set              ‘0’ = Bit is cleared               x = Bit is unknown

bit 7                 STKFUL: Stack Full Flag bit(1)

                      1 = Stack became full or overflowed

                      0 = Stack has not become full or overflowed

bit 6                 STKUNF: Stack Underflow Flag bit(1)

                      1 = Stack Underflow occurred

                      0 = Stack Underflow did not occur

bit 5                 Unimplemented: Read as ‘0’

bit 4-0               STKPTR<4:0>: Stack Pointer Location bits

Note     1:    Bit  7 and bit 6 are cleared by user software or by      a  POR.

5.2.0.1           Stack Full and Underflow Resets                          If both low and high priority interrupts are enabled, the

Device Resets on Stack Overflow and Stack Underflow                        stack registers cannot be used reliably to return from

conditions are enabled by setting the STVREN bit in                        low priority interrupts. If a high priority interrupt occurs

Configuration Register 4L. When STVREN is set, a full                      while servicing a low priority interrupt, the stack register

or   underflow      will   set   the   appropriate  STKFUL        or       values      stored  by    the   low  priority     interrupt  will  be

STKUNF bit and then cause a device Reset. When                             overwritten. In these cases, users must save the key

STVREN is cleared, a full or underflow condition will set                  registers by software during a low priority interrupt.

the appropriate STKFUL or STKUNF bit but not cause                         If interrupt priority is not used, all interrupts may use the

a   device    Reset.  The        STKFUL   or   STKUNF       bits  are      fast  register     stack   for  returns     from  interrupt.  If   no

cleared by the user software or a Power-on Reset.                          interrupts are used, the fast register stack can be used

                                                                           to restore the Status, WREG and BSR registers at the

5.2.1          FAST REGISTER STACK                                         end of a subroutine call. To use the fast register stack

A fast register stack is provided for the Status, WREG                     for a subroutine call, a CALL label,              FAST instruction

and BSR registers, to provide a “fast return” option for                   must be executed to save the Status, WREG and BSR

interrupts. The stack for each register is only one level                  registers to the fast register stack. A RETURN,               FAST

deep and is neither readable nor writable. It is loaded                    instruction is then executed to restore these registers

with the current value of the corresponding register                       from the fast register stack.

when     the      processor      vectors  for  an   interrupt.    All      Example 5-1 shows a source code example that uses

interrupt    sources       will  push     values  into      the  stack     the   fast  register  stack     during   a  subroutine       call  and

registers. The values in the registers are then loaded                     return.

back     into       their    associated        registers    if    the

RETFIE,FAST instruction is used to return from the

interrupt.

 2010-2016 Microchip Technology Inc.                                                                               DS40001412G-page 67
PIC18(L)F2X/4XK22

EXAMPLE 5-1:              FAST REGISTER STACK                      EXAMPLE 5-2:                COMPUTED GOTO USING

                          CODE EXAMPLE                                                         AN OFFSET VALUE

CALL     SUB1,  FAST      ;STATUS,       WREG,    BSR                             MOVF       OFFSET,  W

                          ;SAVED     IN  FAST     REGISTER                        CALL       TABLE

                          ;STACK                                   ORG            nn00h

                                                                  TABLE          ADDWF      PCL

                                                                                 RETLW      nnh

                                                                                  RETLW      nnh

SUB1                                                                             RETLW      nnh

                                                                                 .

      RETURN,    FAST     ;RESTORE       VALUES   SAVED                           .

                          ;IN   FAST     REGISTER      STACK                      .

5.2.2           LOOK-UP TABLES IN PROGRAM                          5.2.2.2           Table Reads and Table Writes

                MEMORY                                             A better method of storing data in program memory

There may be programming situations that require the               allows two bytes of data to be stored in each instruction

creation   of   data  structures,    or  look-up      tables,  in  location.

program memory. For PIC18 devices, look-up tables                  Look-up    table      data  may    be  stored    two    bytes  per

can be implemented in two ways:                                    program word by using table reads and writes. The

•   Computed GOTO                                                  Table    Pointer     (TBLPTR)      register  specifies  the    byte

•   Table Reads                                                    address    and       the    Table  Latch     (TABLAT)      register

                                                                   contains the data that is read from or written to program

5.2.2.1         Computed GOTO                                      memory.        Data   is  transferred    to  or  from   program

A computed GOTO is accomplished by adding an offset                memory one byte at a time.

to  the   program     counter.  An   example      is  shown    in  Table read and table write operations are discussed

Example 5-2.                                                       further    in     Section 6.1    “Table      Reads    and    Table

A look-up table can be formed with an ADDWF                PCL     Writes”.

instruction and a group of RETLW         nn instructions. The

W register is loaded with an offset into the table before

executing a call to that table. The first instruction of the

called routine is the ADDWF         PCL instruction. The next

instruction     executed  will  be  one  of  the  RETLW        nn

instructions that returns the value ‘nn’ to the calling

function.

The offset value (in WREG) specifies the number of

bytes that the program counter should advance and

should be multiples of two (LSb = 0).

In this method, only one data byte may be stored in

each     instruction  location  and   room    on      the  return

address stack is required.

DS40001412G-page 68                                                                           2010-2016 Microchip Technology Inc.
                                                                                  PIC18(L)F2X/4XK22

5.3        PIC18 Instruction Cycle                                         5.3.2                INSTRUCTION FLOW/PIPELINING

5.3.1         CLOCKING SCHEME                                              An “Instruction Cycle” consists of four Q cycles: Q1

                                                                           through          Q4.     The   instruction  fetch      and  execute    are

The    microcontroller    clock    input,     whether     from     an      pipelined            in  such  a  manner    that    a   fetch  takes   one

internal or external source, is internally divided by four                 instruction cycle, while the decode and execute take

to  generate  four   non-overlapping          quadrature  clocks           another          instruction      cycle.    However,        due    to  the

(Q1, Q2, Q3 and Q4). Internally, the program counter is                    pipelining, each instruction effectively executes in one

incremented on every Q1; the instruction is fetched                        cycle. If an instruction causes the program counter to

from   the   program    memory     and        latched     into    the      change (e.g., GOTO), then two cycles are required to

instruction   register  during     Q4.     The       instruction   is      complete the instruction (Example 5-3).

decoded and executed during the following Q1 through                       A fetch cycle begins with the Program Counter (PC)

Q4.   The    clocks  and     instruction   execution      flow    are      incrementing in Q1.

shown in Figure 5-3.

                                                                           In the execution cycle, the fetched instruction is latched

                                                                           into   the       Instruction      Register    (IR)  in  cycle    Q1.   This

                                                                           instruction is then decoded and executed during the

                                                                           Q2, Q3 and Q4 cycles. Data memory is read during Q2

                                                                           (operand             read)   and  written   during      Q4     (destination

                                                                           write).

FIGURE 5-3:               CLOCK/INSTRUCTION CYCLE

                          Q1       Q2         Q3      Q4        Q1     Q2  Q3               Q4      Q1       Q2      Q3        Q4

              OSC1

              Q1

              Q2                                                                                                                       Internal

              Q3                                                                                                                       Phase

                                                                                                                                       Clock

              Q4

              PC                          PC                           PC + 2                                PC + 4

     OSC2/CLKOUT

       (RC mode)

                              Execute     INST (PC –  2)

                                   Fetch  INST (PC)                    Execute INST (PC)

                                                                       Fetch INST (PC + 2)              Execute INST (PC + 2)

                                                                                                          Fetch INST (PC + 4)

EXAMPLE 5-3:              INSTRUCTION PIPELINE FLOW

                                          TCY0            TCY1         TCY2                 TCY3             TCY4                  TCY5

1.    MOVLW   55h                  Fetch 1            Execute 1

2.    MOVWF   PORTB                                       Fetch 2      Execute 2

3.    BRA     SUB_1                                                    Fetch 3              Execute 3

4.    BSF     PORTA,         BIT3  (Forced        NOP)                                      Fetch 4          Flush (NOP)

5.    Instruction         @  address       SUB_1                                                          Fetch SUB_1          Execute SUB_1

      Note:   All instructions are single cycle, except for any program branches. These take two cycles since the

              fetch instruction is “flushed” from the pipeline while the new instruction is being fetched and then

              executed.

 2010-2016 Microchip Technology Inc.                                                                                     DS40001412G-page 69
PIC18(L)F2X/4XK22

5.3.3          INSTRUCTIONS IN PROGRAM                                 The   CALL    and     GOTO  instructions   have   the  absolute

               MEMORY                                                  program       memory    address       embedded         into  the

The    program       memory      is  addressed       in  bytes.        instruction. Since instructions are always stored on word

Instructions are stored as either two bytes or four bytes              boundaries, the data contained in the instruction is a

in program memory. The Least Significant Byte of an                    word address. The word address is written to PC<20:1>,

instruction word is always stored in a program memory                  which accesses the desired byte address in program

location with an even address (LSb = 0). To maintain                   memory. Instruction #2 in Figure 5-4 shows how the

alignment      with  instruction     boundaries,     the      PC       instruction GOTO      0006h is encoded in the program

increments in steps of two and the LSb will always read                memory. Program branch instructions, which encode a

‘0’ (see Section 5.1.1 “Program Counter”).                             relative address offset, operate in the same manner. The

                                                                       offset value stored in a branch instruction represents the

Figure 5-4 shows an example of how instruction words                   number of single-word instructions that the PC will be

are stored in the program memory.                                      offset  by.   Section 25.0  “Instruction       Set   Summary”

                                                                       provides further details of the instruction set.

FIGURE     5-4:            INSTRUCTIONS IN PROGRAM MEMORY

                                                                                             Word Address

                                                                    LSB = 1         LSB = 0            

                                     Program Memory                                                000000h

                                     Byte Locations                                              000002h

                                                                                                   000004h

                                                                                                   000006h

                 Instruction 1:      MOVLW       055h               0Fh              55h           000008h

                 Instruction 2:      GOTO        0006h              EFh              03h           00000Ah

                                                                    F0h              00h           00000Ch

                 Instruction 3:      MOVFF       123h,    456h      C1h              23h           00000Eh

                                                                    F4h              56h           000010h

                                                                                                   000012h

                                                                                                   000014h

5.3.4          TWO-WORD INSTRUCTIONS                                   If the first word is skipped for some reason and the

The standard PIC18 instruction set has four two-word                   second word is executed by itself, a NOP is executed

instructions:  CALL,   MOVFF,        GOTO   and  LSFR.    In  all      instead. This is necessary for cases when the two-word

cases, the second word of the instruction always has                   instruction is preceded by a conditional instruction that

‘1111’ as its four Most Significant bits; the other 12 bits            changes the PC. Example 5-4 shows how this works.

are literal data, usually a data memory address.

The  use   of  ‘1111’  in  the   4   MSbs   of   an  instruction           Note:     See     Section 5.8     “PIC18      Instruction

specifies a special form of NOP. If the instruction is                               Execution         and        the       Extended

executed in proper sequence – immediately after the                                  Instruction       Set”  for      information   on

first word – the data in the second word is accessed                                 two-word      instructions   in   the  extended

and used by the instruction sequence.                                                instruction set.

EXAMPLE 5-4:               TWO-WORD INSTRUCTIONS

CASE 1:

Object Code                          Source Code

0110      0110   0000  0000          TSTFSZ          REG1           ;  is    RAM  location     0?

1100      0001   0010  0011          MOVFF           REG1,    REG2  ;  No,     skip  this    word

1111      0100   0101  0110                                         ;  Execute       this    word  as     a  NOP

0010      0100   0000  0000          ADDWF           REG3           ;  continue      code

CASE 2:

Object Code                          Source Code

0110      0110   0000  0000          TSTFSZ          REG1           ;  is    RAM  location     0?

1100      0001   0010  0011          MOVFF           REG1,    REG2  ;  Yes,    execute       this  word

1111      0100   0101  0110                                         ;  2nd     word  of    instruction

0010      0100   0000  0000          ADDWF           REG3           ;  continue      code

DS40001412G-page 70                                                                           2010-2016 Microchip Technology Inc.
                                                                           PIC18(L)F2X/4XK22

5.4       Data Memory Organization                                     5.4.1          BANK SELECT REGISTER (BSR)

                                                                       Large    areas       of  data       memory     require      an    efficient

                                                                       addressing       scheme       to    make      rapid    access     to    any

Note:          The operation of some aspects of data                   address      possible.      Ideally,    this  means    that     an    entire

               memory        are  changed       when    the  PIC18     address does not need to be provided for each read or

               extended instruction set is enabled. See                write  operation.        For  PIC18     devices,       this  is   accom-

               Section 5.7        “Data       Memory    and      the   plished with a RAM banking scheme. This divides the

               Extended      Instruction        Set”    for  more      memory space into 16 contiguous banks of 256 bytes.

               information.                                            Depending on the instruction, each location can be

The data memory in PIC18 devices is implemented as                     addressed directly by its full 12-bit address, or an 8-bit

static RAM. Each register in the data memory has a                     low-order address and a 4-bit Bank Pointer.

12-bit  address,    allowing      up      to  4096  bytes    of  data  Most instructions in the PIC18 instruction set make use

memory. The memory space is divided into as many as                    of the Bank Pointer, known as the Bank Select Register

16 banks      that  contain  256  bytes         each.   Figures   5-5  (BSR). This SFR holds the 4 Most Significant bits of a

through 5-7 show the data memory organization for the                  location’s     address;     the     instruction   itself    includes    the

PIC18(L)F2X/4XK22 devices.                                             8 Least Significant bits. Only the four lower bits of the

The data memory contains Special Function Registers                    BSR are implemented (BSR<3:0>). The upper four bits

(SFRs) and General Purpose Registers (GPRs). The                       are unused; they will always read ‘0’ and cannot be

SFRs are used for control and status of the controller                 written to. The BSR can be loaded directly by using the

and peripheral functions, while GPRs are used for data                 MOVLB instruction.

storage   and       scratchpad    operations        in  the  user’s    The    value     of  the    BSR     indicates     the     bank    in    data

application. Any read of an unimplemented location will                memory;        the   eight    bits  in  the   instruction    show       the

read as ‘0’s.                                                          location in the bank and can be thought of as an offset

The instruction set and architecture allow operations                  from    the    bank’s     lower     boundary.         The    relationship

across   all  banks.  The         entire  data  memory       may  be   between the BSR’s value and the bank division in data

accessed      by    Direct,  Indirect     or  Indexed   Addressing     memory is shown in Figures 5-5 through 5-7.

modes. Addressing modes are discussed later in this                    Since up to 16 registers may share the same low-order

subsection.                                                            address, the user must always be careful to ensure that

To ensure that commonly used registers (SFRs and                       the proper bank is selected before performing a data

select GPRs) can be accessed in a single cycle, PIC18                  read   or  write.    For    example,       writing    what   should     be

devices implement an Access Bank. This is a 256-byte                   program data to an 8-bit address of F9h while the BSR

memory space that provides fast access to SFRs and                     is 0Fh will end up resetting the program counter.

the lower portion of GPR Bank 0 without using the Bank                 While any bank can be selected, only those banks that

Select Register (BSR). Section 5.4.2 “Access Bank”                     are actually implemented can be read or written to.

provides a detailed description of the Access RAM.                     Writes     to  unimplemented            banks     are  ignored,       while

                                                                       reads from unimplemented banks will return ‘0’s. Even

                                                                       so, the STATUS register will still be affected as if the

                                                                       operation was successful. The data memory maps in

                                                                       Figures     5-5     through    5-7      indicate    which    banks      are

                                                                       implemented.

                                                                       In  the    core     PIC18     instruction     set,    only   the    MOVFF

                                                                       instruction    fully     specifies    the     12-bit   address      of  the

                                                                       source and target registers. This instruction ignores the

                                                                       BSR completely when it executes. All other instructions

                                                                       include only the low-order address as an operand and

                                                                       must use either the BSR or the Access Bank to locate

                                                                       their target registers.

 2010-2016 Microchip Technology Inc.                                                                                DS40001412G-page 71
PIC18(L)F2X/4XK22

FIGURE 5-5:          DATA MEMORY MAP FOR PIC18(L)F23K22    AND   PIC18(L)F43K22 DEVICES

BSR<3:0>                            Data Memory Map              When ‘a’ = 0:

                                                                     The BSR is ignored and the

                               00h  Access RAM       000h            Access Bank is used.

= 0000               Bank  0                         05Fh            The first 96 bytes are

                                    GPR              060h            general purpose RAM

                               FFh                   0FFh

= 0001                         00h                   100h            (from Bank 0).

                     Bank  1        GPR                              The   second       160  bytes   are

                               FFh                   1FFh            Special    Function       Registers

= 0010                         00h                   200h            (from Bank 15).

                     Bank  2

                               FFh                   2FFh        When ‘a’ = 1:

= 0011                         00h                   300h            The BSR specifies the Bank

                     Bank  3

                               FFh                   3FFh            used by the instruction.

= 0100                         00h                   400h

                     Bank  4

                               FFh                   4FFh

= 0101                         00h                   500h

                     Bank  5

                               FFh                   5FFh

= 0110                         00h                   600h

                     Bank  6

                               FFh                   6FFh                  Access Bank

= 0111                         00h                   700h                                            00h

                     Bank  7                                               Access RAM Low           5Fh

                               FFh                   7FFh                  Access RAM High           60h

= 1000                         00h                   800h                        (SFRs)             FFh

                     Bank  8

                               FFh                   8FFh

= 1001                         00h  Unused           900h

                     Bank  9        Read 00h

                               FFh                   9FFh

= 1010                         00h                   A00h

                     Bank  10

                               FFh                   AFFh

= 1011                         00h                   B00h

                     Bank  11

                               FFh                   BFFh

= 1100                         00h                   C00h

                     Bank  12

                               FFh                   CFFh

= 1101                         00h                   D00h

                     Bank  13

                               FFh                   DFFh

= 1110                         00h                   E00h

                     Bank  14

                               FFh                   EFFh

= 1111                         00h  Unused           F00h

                     Bank  15                        F37h

                                    SFR(1)           F38h  Note  1:  Addresses F38h through F5Fh are

                                                     F5Fh            also  used     by  SFRs,  but  are   not

                                                     F60h            part  of  the  Access     RAM.  Users

                                    SFR                              must  always       use  the  complete

                                                                     address or load the proper BSR

                               FFh                   FFFh            value to access these registers.

DS40001412G-page 72                                                 2010-2016 Microchip Technology Inc.
                                                               PIC18(L)F2X/4XK22

FIGURE 5-6:            DATA  MEMORY MAP FOR PIC18(L)F24K22     AND   PIC18(L)F44K22 DEVICES

BSR<3:0>                                Data Memory Map              When ‘a’ = 0:

                                                                         The BSR is ignored and the

                                 00h    Access RAM       000h            Access Bank is used.

= 0000                 Bank  0                           05Fh            The first 96 bytes are

                                        GPR              060h            general purpose RAM

                                 FFh                     0FFh

= 0001                           00h                     100h            (from Bank 0).

                       Bank  1          GPR                              The   second       160    bytes  are

                                 FFh                     1FFh            Special     Function      Registers

= 0010                           00h                     200h            (from Bank 15).

                       Bank  2          GPR

                                 FFh                     2FFh        When ‘a’ = 1:

= 0011                           00h                     300h            The BSR specifies the Bank

                       Bank  3

                                 FFh                     3FFh            used by the instruction.

= 0100                           00h                     400h

                       Bank  4

                                 FFh                     4FFh

= 0101                           00h                     500h

                       Bank  5

                                 FFh                     5FFh

= 0110                           00h                     600h

                       Bank  6

                                 FFh                     6FFh                      Access Bank

= 0111                           00h                     700h                                             00h

                       Bank  7                                                 Access RAM Low             5Fh

                                 FFh                     7FFh                  Access RAM High            60h

= 1000                           00h                     800h                           (SFRs)           FFh

                       Bank  8

                                 FFh                     8FFh

= 1001                           00h    Unused           900h

                       Bank  9          Read 00h

                                 FFh                     9FFh

= 1010                           00h                     A00h

                       Bank  10

                                 FFh                     AFFh

= 1011                           00h                     B00h

                       Bank  11

                                 FFh                     BFFh

= 1100                           00h                     C00h

                       Bank  12

                                 FFh                     CFFh

= 1101                           00h                     D00h

                       Bank  13

                                 FFh                     DFFh

= 1110                           00h                     E00h

                       Bank  14

                                 FFh                     EFFh

= 1111                           00h    Unused           F00h

                       Bank  15                          F37h

                                        SFR(1)           F38h  Note  1:  Addresses F38h through F5Fh are

                                                         F5Fh            also  used     by  SFRs,  but  are  not

                                                         F60h            part  of  the  Access     RAM.   Users

                                        SFR                              must  always       use  the  complete

                                                                         address or load the proper BSR

                                 FFh                     FFFh            value to access these registers.

 2010-2016 Microchip  Technology Inc.                                                  DS40001412G-page 73
PIC18(L)F2X/4XK22

FIGURE 5-7:          DATA  MEMORY MAP FOR PIC18(L)F25K22   AND   PIC18(L)F45K22 DEVICES

BSR<3:0>                            Data Memory Map              When ‘a’ = 0:

                                                                     The BSR is ignored and the

                               00h  Access RAM       000h            Access Bank is used.

= 0000               Bank  0                         05Fh            The first 96 bytes are

                                    GPR              060h            general purpose RAM

                               FFh                   0FFh

= 0001                         00h                   100h            (from Bank 0).

                     Bank  1        GPR                              The       second   160    bytes     are

                               FFh                   1FFh            Special        Function      Registers

= 0010                         00h                   200h            (from Bank 15).

                     Bank  2        GPR

                               FFh                   2FFh        When ‘a’ = 1:

= 0011                         00h                   300h            The BSR specifies the Bank

                     Bank  3        GPR

                               FFh                   3FFh            used by the instruction.

= 0100                         00h                   400h

                     Bank  4        GPR

                               FFh                   4FFh

= 0101                         00h                   500h

                     Bank  5        GPR

                               FFh                   5FFh

= 0110                         00h                   600h

                     Bank  6

                               FFh                   6FFh                      Access Bank

= 0111                         00h                   700h                                             00h

                     Bank  7                                               Access RAM Low             5Fh

                               FFh                   7FFh                  Access RAM High            60h

= 1000                         00h                   800h                           (SFRs)           FFh

                     Bank  8

                               FFh                   8FFh

= 1001                         00h                   900h

                     Bank  9

                               FFh                   9FFh

= 1010                         00h  Unused           A00h

                     Bank  10       Read 00h

                               FFh                   AFFh

= 1011                         00h                   B00h

                     Bank  11

                               FFh                   BFFh

= 1100                         00h                   C00h

                     Bank  12

                               FFh                   CFFh

= 1101                         00h                   D00h

                     Bank  13

                               FFh                   DFFh

= 1110                         00h                   E00h

                     Bank  14

                               FFh                   EFFh

= 1111                         00h  Unused           F00h

                     Bank  15                        F37h

                                    SFR(1)           F38h  Note  1:  Addresses F38h through F5Fh are

                                                     F5Fh            also  used     by  SFRs,  but  are  not

                                                     F60h            part  of  the  Access     RAM.  Users

                                    SFR                              must  always       use  the  complete

                                                                     address or load the proper BSR

                                                                     value to access these registers.

                               FFh                   FFFh

DS40001412G-page 74                                                   2010-2016 Microchip Technology Inc.
                                                               PIC18(L)F2X/4XK22

FIGURE 5-8:            DATA  MEMORY MAP FOR PIC18(L)F26K22     AND   PIC18(L)F46K22 DEVICES

BSR<3:0>                                Data Memory Map              When ‘a’ = 0:

                                                                         The BSR is ignored and the

                                 00h    Access RAM       000h            Access Bank is used.

= 0000                 Bank  0                           05Fh            The first 96 bytes are

                                        GPR              060h            general purpose RAM

                                 FFh                     0FFh

= 0001                           00h                     100h            (from Bank 0).

                       Bank  1          GPR                              The   second       160    bytes  are

                                 FFh                     1FFh            Special     Function      Registers

= 0010                           00h                     200h            (from Bank 15).

                       Bank  2          GPR

                                 FFh                     2FFh        When ‘a’ = 1:

= 0011                           00h                     300h            The BSR specifies the Bank

                       Bank  3          GPR

                                 FFh                     3FFh            used by the instruction.

= 0100                           00h                     400h

                       Bank  4          GPR

                                 FFh                     4FFh

= 0101                           00h                     500h

                       Bank  5          GPR

                                 FFh                     5FFh

= 0110                           00h                     600h

                       Bank  6          GPR

                                 FFh                     6FFh                      Access Bank

= 0111                           00h                     700h                                             00h

                       Bank  7          GPR                                    Access RAM Low             5Fh

                                 FFh                     7FFh                  Access RAM High            60h

= 1000                           00h                     800h                           (SFRs)           FFh

                       Bank  8          GPR

                                 FFh                     8FFh

= 1001                           00h                     900h

                       Bank  9          GPR

                                 FFh                     9FFh

= 1010                           00h                     A00h

                       Bank  10         GPR

                                 FFh                     AFFh

= 1011                           00h                     B00h

                       Bank  11         GPR

                                 FFh                     BFFh

= 1100                           00h                     C00h

                       Bank  12         GPR

                                 FFh                     CFFh

= 1101                           00h                     D00h

                       Bank  13         GPR

                                 FFh                     DFFh

= 1110                           00h                     E00h

                       Bank  14         GPR

                                 FFh                     F00h
                                 00h
= 1111                                  GPR
                                                         F37h
                       Bank  15
                                        SFR(1)           F38h
                                                               Note  1:  Addresses F38h through F5Fh are
                                                         F5Fh
                                                                         also  used     by  SFRs,  but  are  not
                                                         F60h

                                                                         part  of  the  Access     RAM.   Users

                                        SFR                              must  always       use  the  complete

                                                                         address or load the proper BSR

                                 FFh                     FFFh            value to access these registers.

 2010-2016 Microchip  Technology Inc.                                                  DS40001412G-page 75
PIC18(L)F2X/4XK22

FIGURE 5-9:             USE  OF  THE BANK SELECT REGISTER (DIRECT ADDRESSING)

                     BSR(1)                     Data Memory                                       From Opcode(2)

7                                   0  000h                  00h  7                                                  0

0     0      0       0  0    0   1  1           Bank 0       FFh  1                            1  1  1  1  1      1  1

                                       100h                  00h

                                                Bank 1

Bank Select(2)                         200h                  FFh

                                                             00h

                                                Bank 2       FFh

                                       300h

                                                             00h

                                                Bank 3

                                                through

                                                Bank 13

                                       E00h                  FFh

                                                             00h

                                                Bank 14      FFh

                                       F00h                  00h

                                                Bank 15

                                       FFFh                  FFh

Note  1:     The Access RAM bit of the instruction can be used to force an override of the selected bank (BSR<3:0>)     to

             the registers of the Access Bank.

      2:     The     MOVFF   instruction embeds the entire 12-bit address in the instruction.

DS40001412G-page 76                                                                             2010-2016 Microchip Technology  Inc.
                                                                      PIC18(L)F2X/4XK22

5.4.2         ACCESS BANK                                             5.4.3          GENERAL PURPOSE REGISTER

While   the   use  of  the  BSR    with     an  embedded     8-bit                   FILE

address allows users to address the entire range of                   PIC18 devices may have banked memory in the GPR

data memory, it also means that the user must always                  area. This is data RAM, which is available for use by all

ensure that the correct bank is selected. Otherwise,                  instructions.  GPRs      start  at   the  bottom    of     Bank    0

data may be read from or written to the wrong location.               (address 000h) and grow upwards towards the bottom of

This can be disastrous if a GPR is the intended target                the SFR area. GPRs are not initialized by a Power-on

of  an  operation,     but  an  SFR     is  written    to  instead.   Reset and are unchanged on all other Resets.

Verifying and/or changing the BSR for each read or

write to data memory can become very inefficient.                     5.4.4          SPECIAL FUNCTION REGISTERS

To streamline access for the most commonly used data                  The Special Function Registers (SFRs) are registers

memory locations, the data memory is configured with                  used by the CPU and peripheral modules for controlling

an  Access    Bank,    which    allows      users  to  access    a    the desired operation of the device. These registers are

mapped block of memory without specifying a BSR.                      implemented as static RAM. SFRs start at the top of

The Access Bank consists of the first 96 bytes of mem-                data memory (FFFh) and extend downward to occupy

ory (00h-5Fh) in Bank 0 and the last 160 bytes of mem-                the top portion of Bank 15 (F38h to FFFh). A list of

ory (60h-FFh) in Block 15. The lower half is known as                 these registers is given in Table 5-1 and Table 5-2.

the “Access RAM” and is composed of GPRs. This                        The    SFRs    can   be  classified     into   two  sets:  those

upper   half  is   also     where  the      device’s   SFRs      are  associated with the “core” device functionality (ALU,

mapped. These two areas are mapped contiguously in                    Resets    and  interrupts)      and     those  related     to      the

the Access Bank and can be addressed in a linear                      peripheral functions. The Reset and interrupt registers

fashion by an 8-bit address (Figures 5-5 through 5-7).                are described in their respective chapters, while the

The Access Bank is used by core PIC18 instructions                    ALU’s     STATUS     register   is   described      later  in  this

that include the Access RAM bit (the ‘a’ parameter in                 section.  Registers      related    to    the  operation       of  a

the instruction). When ‘a’ is equal to ‘1’, the instruction           peripheral feature are described in the chapter for that

uses the BSR and the 8-bit address included in the                    peripheral.

opcode for the data memory address. When ‘a’ is ‘0’,                  The    SFRs    are   typically      distributed     among          the

however, the instruction is forced to use the Access                  peripherals whose functions they control. Unused SFR

Bank address map; the current value of the BSR is                     locations are unimplemented and read as ‘0’s.

ignored entirely.

Using this “forced” addressing allows the instruction to

operate on a data address in a single cycle, without

updating the BSR first. For 8-bit addresses of 60h and

above, this means that users can evaluate and operate

on SFRs more efficiently. The Access RAM below 60h

is a good place for data values that the user might need

to access rapidly, such as immediate computational

results or common program variables. Access RAM

also allows for faster and more code efficient context

saving and switching of variables.

The mapping of the Access Bank is slightly different

when the extended instruction set is enabled (XINST

Configuration bit = 1). This is discussed in more detail

in  Section 5.7.3      “Mapping    the      Access         Bank  in

Indexed Literal Offset Mode”.

 2010-2016 Microchip Technology Inc.                                                                         DS40001412G-page 77
PIC18(L)F2X/4XK22

TABLE 5-1:  SPECIAL FUNCTION REGISTER MAP FOR                           PIC18(L)F2X/4XK22  DEVICES

Address     Name       Address              Name    Address  Name       Address  Name      Address  Name

FFFh        TOSU       FD7h                 TMR0H   FAFh     SPBRG1     F87h     —(2)      F5Fh     CCPR3H

FFEh        TOSH       FD6h                 TMR0L   FAEh     RCREG1     F86h     —(2)      F5Eh     CCPR3L

FFDh        TOSL       FD5h                 T0CON   FADh     TXREG1     F85h     —(2)      F5Dh     CCP3CON

FFCh        STKPTR     FD4h                 —(2)    FACh     TXSTA1     F84h     PORTE     F5Ch     PWM3CON

FFBh        PCLATU     FD3h     OSCCON              FABh     RCSTA1     F83h     PORTD(3)  F5Bh     ECCP3AS

FFAh        PCLATH     FD2h     OSCCON2             FAAh     EEADRH(4)  F82h     PORTC     F5Ah     PSTR3CON

FF9h        PCL        FD1h     WDTCON              FA9h     EEADR      F81h     PORTB     F59h     CCPR4H

FF8h      TBLPTRU      FD0h                 RCON    FA8h     EEDATA     F80h     PORTA     F58h     CCPR4L

FF7h      TBLPTRH      FCFh                 TMR1H   FA7h     EECON2(1)  F7Fh     IPR5      F57h     CCP4CON

FF6h      TBLPTRL      FCEh                 TMR1L   FA6h     EECON1     F7Eh     PIR5      F56h     CCPR5H

FF5h        TABLAT     FCDh                 T1CON   FA5h     IPR3       F7Dh     PIE5      F55h     CCPR5L

FF4h        PRODH      FCCh     T1GCON              FA4h     PIR3       F7Ch     IPR4      F54h     CCP5CON

FF3h        PRODL      FCBh     SSP1CON3            FA3h     PIE3       F7Bh     PIR4      F53h     TMR4

FF2h        INTCON     FCAh     SSP1MSK             FA2h     IPR2       F7Ah     PIE4      F52h     PR4

FF1h      INTCON2      FC9h     SSP1BUF             FA1h     PIR2       F79h     CM1CON0   F51h     T4CON

FF0h      INTCON3      FC8h     SSP1ADD             FA0h     PIE2       F78h     CM2CON0   F50h     TMR5H

FEFh        INDF0(1)   FC7h     SSP1STAT            F9Fh     IPR1       F77h     CM2CON1   F4Fh     TMR5L

FEEh      POSTINC0(1)  FC6h     SSP1CON1            F9Eh     PIR1       F76h     SPBRGH2   F4Eh     T5CON

FEDh      POSTDEC0(1)  FC5h     SSP1CON2            F9Dh     PIE1       F75h     SPBRG2    F4Dh     T5GCON

FECh      PREINC0(1)   FC4h     ADRESH              F9Ch     HLVDCON    F74h     RCREG2    F4Ch     TMR6

FEBh      PLUSW0(1)    FC3h     ADRESL              F9Bh     OSCTUNE    F73h     TXREG2    F4Bh     PR6

FEAh        FSR0H      FC2h     ADCON0              F9Ah     —(2)       F72h     TXSTA2    F4Ah     T6CON

FE9h        FSR0L      FC1h     ADCON1              F99h     —(2)       F71h     RCSTA2    F49h     CCPTMRS0

FE8h        WREG       FC0h     ADCON2              F98h     —(2)       F70h     BAUDCON2  F48h     CCPTMRS1

FE7h        INDF1(1)   FBFh     CCPR1H              F97h     —(2)       F6Fh     SSP2BUF   F47h     SRCON0

FE6h      POSTINC1(1)  FBEh     CCPR1L              F96h     TRISE      F6Eh     SSP2ADD   F46h     SRCON1

FE5h      POSTDEC1(1)  FBDh     CCP1CON             F95h     TRISD(3)   F6Dh     SSP2STAT  F45h     CTMUCONH

FE4h      PREINC1(1)   FBCh                 TMR2    F94h     TRISC      F6Ch     SSP2CON1  F44h     CTMUCONL

FE3h      PLUSW1(1)    FBBh                 PR2     F93h     TRISB      F6Bh     SSP2CON2  F43h     CTMUICON

FE2h        FSR1H      FBAh                 T2CON   F92h     TRISA      F6Ah     SSP2MSK   F42h     VREFCON0

FE1h        FSR1L      FB9h     PSTR1CON            F91h     —(2)       F69h     SSP2CON3  F41h     VREFCON1

FE0h        BSR        FB8h     BAUDCON1            F90h     —(2)       F68h     CCPR2H    F40h     VREFCON2

FDFh        INDF2(1)   FB7h     PWM1CON             F8Fh     —(2)       F67h     CCPR2L    F3Fh     PMD0

FDEh      POSTINC2(1)  FB6h     ECCP1AS             F8Eh     —(2)       F66h     CCP2CON   F3Eh     PMD1

FDDh      POSTDEC2(1)  FB5h                 —(2)    F8Dh     LATE(3)    F65h     PWM2CON   F3Dh     PMD2

FDCh      PREINC2(1)   FB4h     T3GCON              F8Ch     LATD(3)    F64h     ECCP2AS   F3Ch     ANSELE

FDBh      PLUSW2(1)    FB3h                 TMR3H   F8Bh     LATC       F63h     PSTR2CON  F3Bh     ANSELD

FDAh        FSR2H      FB2h                 TMR3L   F8Ah     LATB       F62h     IOCB      F3Ah     ANSELC

FD9h        FSR2L      FB1h                 T3CON   F89h     LATA       F61h     WPUB      F39h     ANSELB

FD8h        STATUS     FB0h     SPBRGH1             F88h     —(2)       F60h     SLRCON    F38h     ANSELA

Note  1:  This is not a physical register.

      2:  Unimplemented registers are read as ‘0’.

      3:  PIC18(L)F4XK22 devices only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

DS40001412G-page 78                                                               2010-2016 Microchip Technology Inc.
                                                                             PIC18(L)F2X/4XK22

TABLE     5-2:      REGISTER FILE SUMMARY FOR PIC18(L)F2X/4XK22 DEVICES

Address   Name      Bit 7               Bit 6   Bit 5            Bit 4          Bit 3             Bit 2  Bit 1          Bit 0    Value on

                                                                                                                                 POR, BOR

FFFh      TOSU      —                   —       —                        Top-of-Stack, Upper Byte (TOS<20:16>)                   ---0  0000

FFEh      TOSH                                         Top-of-Stack, High Byte (TOS<15:8>)                                       0000  0000

FFDh      TOSL                                             Top-of-Stack, Low Byte (TOS<7:0>)                                     0000  0000

FFCh      STKPTR    STKFUL    STKUNF            —                                        STKPTR<4:0>                             00-0  0000

FFBh      PCLATU    —                   —       —                               Holding Register for PC<20:16>                   ---0  0000

FFAh      PCLATH                                           Holding Register for PC<15:8>                                         0000  0000

FF9h      PCL                                              Holding Register for PC<7:0>                                          0000  0000

FF8h      TBLPTRU   —                   —                  Program Memory Table Pointer Upper Byte(TBLPTR<21:16>)                --00  0000

FF7h      TBLPTRH                               Program Memory Table Pointer High Byte(TBLPTR<15:8>)                             0000  0000

FF6h      TBLPTRL                               Program Memory Table Pointer Low Byte(TBLPTR<7:0>)                               0000  0000

FF5h      TABLAT                                           Program Memory Table Latch                                            0000  0000

FF4h      PRODH                                            Product Register, High Byte                                           xxxx  xxxx

FF3h      PRODL                                            Product Register, Low Byte                                            xxxx  xxxx

FF2h      INTCON    GIE/GIEH  PEIE/GIEL         TMR0IE           INT0IE         RBIE          TMR0IF     INT0IF         RBIF     0000  000x

FF1h      INTCON2   RBPU      INTEDG0           INTEDG1    INTEDG2              —             TMR0IP     —              RBIP     1111  -1-1

FF0h      INTCON3   INT2IP              INT1IP  —                INT2IE      INT1IE               —      INT2IF         INT1IF   11-0  0-00

FEFh      INDF0     Uses contents of FSR0 to address data memory – value of FSR0 not changed (not a physical register)           ----  ----

FEEh      POSTINC0  Uses contents of FSR0 to address data memory – value of FSR0 post-incremented (not a physical register)      ----  ----

FEDh      POSTDEC0  Uses contents of FSR0 to address data memory – value of FSR0 post-decremented (not a physical register)      ----  ----

FECh      PREINC0   Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register)       ----  ----

FEBh      PLUSW0    Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register) –     ----  ----

                                                           value of FSR0 offset by W

FEAh      FSR0H     —                   —       —                —           Indirect Data Memory Address Pointer 0, High Byte   ----  0000

FE9h      FSR0L               Indirect Data Memory Address Pointer 0, Low Byte                                                   xxxx  xxxx

FE8h      WREG                                             Working Register                                                      xxxx  xxxx

FE7h      INDF1     Uses contents of FSR1 to address data memory – value of FSR1 not changed (not a physical register)           ----  ----

FE6h      POSTINC1  Uses contents of FSR1 to address data memory – value of FSR1 post-incremented (not a physical register)      ----  ----

FE5h      POSTDEC1  Uses contents of FSR1 to address data memory – value of FSR1 post-decremented (not a physical register)      ----  ----

FE4h      PREINC1   Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented (not a physical register)       ----  ----

FE3h      PLUSW1    Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented (not a physical register) –     ----  ----

                                                           value of FSR1 offset by W

FE2h      FSR1H     —                   —       —                —           Indirect Data Memory Address Pointer 1, High Byte   ----  0000

FE1h      FSR1L                                 Indirect Data Memory Address Pointer 1, Low Byte                                 xxxx  xxxx

FE0h      BSR       —                   —       —                —                            Bank Select Register               ----  0000

FDFh      INDF2     Uses contents of FSR2 to address data memory – value of FSR2 not changed (not a physical register)           ----  ----

FDEh      POSTINC2  Uses contents of FSR2 to address data memory – value of FSR2 post-incremented (not a physical register)      ----  ----

FDDh      POSTDEC2  Uses contents of FSR2 to address data memory – value of FSR2 post-decremented (not a physical register)      ----  ----

FDCh      PREINC2   Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented (not a physical register)       ----  ----

FDBh      PLUSW2    Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented (not a physical register) –     ----  ----

                                                           value of FSR2 offset by W

FDAh      FSR2H     —                   —       —                —           Indirect Data Memory Address Pointer 2, High Byte   ----  0000

FD9h      FSR2L                                 Indirect Data Memory Address Pointer 2, Low Byte                                 xxxx  xxxx

FD8h      STATUS    —                   —       —                N              OV                Z      DC                   C  ---x  xxxx

FD7h      TMR0H                                            Timer0 Register, High Byte                                            0000  0000

FD6h      TMR0L                                            Timer0 Register, Low Byte                                             xxxx  xxxx

FD5h      T0CON     TMR0ON             T08BIT   T0CS             T0SE           PSA                      T0PS<2:0>               1111  1111

FD3h      OSCCON    IDLEN                       IRCF<2:0>                    OSTS             HFIOFS            SCS<1:0>         0011  q000

FD2h      OSCCON2   PLLRDY    SOSCRUN           —          MFIOSEL           SOSCGO           PRISD      MFIOFS         LFIOFS   00-0  01x0

Legend:   x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note  1:  PIC18(L)F4XK22 devices only.

      2:  PIC18(L)F2XK22 devices only.

      3:  PIC18(L)F23/24K22 and PIC18(L)F43/44K22 devices only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

 2010-2016 Microchip Technology Inc.                                                                               DS40001412G-page 79
PIC18(L)F2X/4XK22

TABLE 5-2:           REGISTER FILE SUMMARY FOR PIC18(L)F2X/4XK22 DEVICES (CONTINUED)

Address   Name       Bit 7              Bit 6  Bit 5             Bit 4     Bit 3         Bit 2                      Bit 1  Bit 0    Value on

                                                                                                                                    POR, BOR

FD1h      WDTCON     —                  —      —                 —         —             —                          —      SWDTEN   ----  ---0

FD0h      RCON       IPEN     SBOREN           —                 RI        TO            PD                         POR    BOR      01-1  1100

FCFh      TMR1H                         Holding Register for the Most Significant Byte of the 16-bit TMR1 Register                  xxxx  xxxx

FCEh      TMR1L                                Least Significant Byte of the 16-bit TMR1 Register                                   xxxx  xxxx

FCDh      T1CON      TMR1CS<1:0>               T1CKPS<1:0>                 T1SOSCEN      T1SYNC     T1RD16                 TMR1ON   0000  0000

FCCh      T1GCON     TMR1GE   T1GPOL           T1GTM             T1GSPM    T1GGO/        T1GVAL                     T1GSS<1:0>      0000  xx00

                                                                           DONE

FCBh      SSP1CON3   ACKTIM             PCIE   SCIE              BOEN      SDAHT         SBCDE                      AHEN   DHEN     0000  0000

FCAh      SSP1MSK                                          SSP1 MASK Register bits                                                  1111  1111

FC9h      SSP1BUF                              SSP1 Receive Buffer/Transmit Register                                                xxxx  xxxx

FC8h      SSP1ADD    SSP1 Address Register in I2C Slave Mode. SSP1 Baud Rate Reload Register in I2C Master Mode                     0000  0000

FC7h      SSP1STAT   SMP                CKE    D/A               P           S           R/W                        UA     BF       0000  0000

FC6h      SSP1CON1   WCOL     SSPOV            SSPEN             CKP                               SSPM<3:0>                        0000  0000

FC5h      SSP1CON2   GCEN     ACKSTAT          ACKDT             ACKEN     RCEN          PEN                        RSEN   SEN      0000  0000

FC4h      ADRESH                                            A/D Result, High Byte                                                   xxxx  xxxx

FC3h      ADRESL                                            A/D Result, Low Byte                                                    xxxx  xxxx

FC2h      ADCON0     —                                           CHS<4:0>                           GO/DONE                ADON     --00  0000

FC1h      ADCON1     TRIGSEL            —      —                 —                PVCFG<1:0>                        NVCFG<1:0>      0---  0000

FC0h      ADCON2     ADFM               —                   ACQT<2:0>                               ADCS<2:0>                       0-00  0000

FBFh      CCPR1H                               Capture/Compare/PWM Register 1, High Byte                                            xxxx  xxxx

FBEh      CCPR1L                               Capture/Compare/PWM Register 1, Low Byte                                             xxxx  xxxx

FBDh      CCP1CON       P1M<1:0>                  DC1B<1:0>                                        CCP1M<3:0>                       0000  0000

FBCh      TMR2                                                   Timer2 Register                                                    0000  0000

FBBh      PR2                                               Timer2 Period Register                                                  1111  1111

FBAh      T2CON      —                         T2OUTPS<3:0>                              TMR2ON                     T2CKPS<1:0>     -000  0000

FB9h      PSTR1CON   —                  —      —            STR1SYNC       STR1D         STR1C                      STR1B  STR1A    ---0  0001

FB8h      BAUDCON1   ABDOVF             RCIDL  DTRXP             CKTXP     BRG16         —                          WUE    ABDEN    0100  0-00

FB7h      PWM1CON    P1RSEN                                                P1DC<6:0>                                                0000  0000

FB6h      ECCP1AS    CCP1ASE                   CCP1AS<2:0>                        PSS1AC<1:0>                       PSS1BD<1:0>     0000  0000

FB4h      T3GCON     TMR3GE   T3GPOL           T3GTM             T3GSPM    T3GGO/        T3GVAL                     T3GSS<1:0>      0000  0x00

                                                                           DONE

FB3h      TMR3H                         Holding Register for the Most Significant Byte of the 16-bit TMR3 Register                  xxxx  xxxx

FB2h      TMR3L                                Least Significant Byte of the 16-bit TMR3 Register                                   xxxx  xxxx

FB1h      T3CON      TMR3CS<1:0>               T3CKPS<1:0>                 T3SOSCEN      T3SYNC     T3RD16                 TMR3ON   0000  0000

FB0h      SPBRGH1                              EUSART1 Baud Rate Generator, High Byte                                               0000  0000

FAFh      SPBRG1                               EUSART1 Baud Rate Generator, Low Byte                                                0000  0000

FAEh      RCREG1                               EUSART1 Receive Register                                                             0000  0000

FADh      TXREG1                               EUSART1 Transmit Register                                                            0000  0000

FACh      TXSTA1     CSRC               TX9    TXEN              SYNC      SENDB         BRGH                       TRMT   TX9D     0000  0010

FABh      RCSTA1     SPEN               RX9    SREN              CREN      ADDEN         FERR                       OERR   RX9D     0000  000x

FAAh      EEADRH(5)  —                  —      —                 —         —             —                          EEADR<9:8>      ----  --00

FA9h      EEADR                                                  EEADR<7:0>                                                         0000  0000

FA8h      EEDATA                                            EEPROM Data Register                                                    0000  0000

FA7h      EECON2                               EEPROM Control Register 2 (not a physical register)                                  ----  --00

FA6h      EECON1     EEPGD              CFGS   —                 FREE      WRERR         WREN                       WR     RD       xx-0  x000

FA5h      IPR3       SSP2IP   BCL2IP           RC2IP             TX2IP     CTMUIP        TMR5GIP    TMR3GIP                TMR1GIP  0000  0000

FA4h      PIR3       SSP2IF   BCL2IF           RC2IF             TX2IF     CTMUIF        TMR5GIF    TMR3GIF                TMR1GIF  0000  0000

FA3h      PIE3       SSP2IE   BCL2IE           RC2IE             TX2IE     CTMUIE        TMR5GIE    TMR3GIE                TMR1GIE  0000  0000

Legend:   x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note  1:  PIC18(L)F4XK22 devices only.

      2:  PIC18(L)F2XK22 devices only.

      3:  PIC18(L)F23/24K22 and PIC18(L)F43/44K22 devices only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

DS40001412G-page 80                                                                                 2010-2016 Microchip Technology Inc.
                                                                         PIC18(L)F2X/4XK22

TABLE 5-2:          REGISTER FILE SUMMARY FOR PIC18(L)F2X/4XK22 DEVICES (CONTINUED)

Address   Name      Bit 7               Bit 6  Bit 5             Bit 4   Bit 3           Bit 2      Bit 1       Bit 0      Value on

                                                                                                                           POR, BOR

FA2h      IPR2      OSCFIP              C1IP   C2IP              EEIP    BCL1IP          HLVDIP     TMR3IP      CCP2IP     1111  1111

FA1h      PIR2      OSCFIF              C1IF   C2IF              EEIF    BCL1IF          HLVDIF     TMR3IF      CCP2IF     0000  0000

FA0h      PIE2      OSCFIE              C1IE   C2IE              EEIE    BCL1IE          HLVDIE     TMR3IE      CCP2IE     0000  0000

F9Fh      IPR1      —                   ADIP   RC1IP             TX1IP   SSP1IP          CCP1IP     TMR2IP      TMR1IP     -111  1111

F9Eh      PIR1      —                   ADIF   RC1IF             TX1IF   SSP1IF          CCP1IF     TMR2IF      TMR1IF     -000  0000

F9Dh      PIE1      —                   ADIE   RC1IE             TX1IE   SSP1IE          CCP1IE     TMR2IE      TMR1IE     -000  0000

F9Ch      HLVDCON   VDIRMAG            BGVST   IRVST             HLVDEN                  HLVDL<3:0>                        0000  0000

F9Bh      OSCTUNE   INTSRC              PLLEN                                TUN<5:0>                                      00xx  xxxx

F96h      TRISE     WPUE3               —      —                 —        —              TRISE2(1)  TRISE1(1)   TRISE0(1)  1---  -111

F95h      TRISD(1)  TRISD7             TRISD6  TRISD5            TRISD4  TRISD3          TRISD2     TRISD1      TRISD0     1111  1111

F94h      TRISC     TRISC7             TRISC6  TRISC5            TRISC4  TRISC3          TRISC2     TRISC1      TRISC0     1111  1111

F93h      TRISB     TRISB7             TRISB6  TRISB5            TRISB4  TRISB3          TRISB2     TRISB1      TRISB0     1111  1111

F92h      TRISA     TRISA7             TRISA6  TRISA5            TRISA4  TRISA3          TRISA2     TRISA1      TRISA0     1111  1111

F8Dh      LATE(1)   —                   —      —                 —        —              LATE2      LATE1       LATE0      ----  -xxx

F8Ch      LATD(1)   LATD7               LATD6  LATD5             LATD4   LATD3           LATD2      LATD1       LATD0      xxxx  xxxx

F8Bh      LATC      LATC7               LATC6  LATC5             LATC4   LATC3           LATC2      LATC1       LATC0      xxxx  xxxx

F8Ah      LATB      LATB7               LATB6  LATB5             LATB4   LATB3           LATB2      LATB1       LATB0      xxxx  xxxx

F89h      LATA      LATA7               LATA6  LATA5             LATA4   LATA3           LATA2      LATA1       LATA0      xxxx  xxxx

          PORTE(2)  —                   —      —                 —        RE3            —           —          —          ----  x---

F84h      PORTE(1)  —                   —      —                 —        RE3            RE2        RE1         RE0

                                                                                                                           ----  x000

F83h      PORTD(1)  RD7                 RD6    RD5               RD4     RD3             RD2        RD1         RD0        0000  0000

F82h      PORTC     RC7                 RC6    RC5               RC4     RC3             RC2        RC1         RC0        0000  00xx

F81h      PORTB     RB7                 RB6    RB5               RB4      RB3            RB2        RB1         RB0        xxx0  0000

F80h      PORTA     RA7                 RA6    RA5               RA4      RA3            RA2        RA1         RA0        xx0x  0000

F7Fh      IPR5      —                   —      —                 —        —              TMR6IP     TMR5IP      TMR4IP     ----  -111

F7Eh      PIR5      —                   —      —                 —        —              TMR6IF     TMR5IF      TMR4IF     ----  -111

F7Dh      PIE5      —                   —      —                 —        —              TMR6IE     TMR5IE      TMR4IE     ----  -000

F7Ch      IPR4      —                   —      —                 —        —              CCP5IP     CCP4IP      CCP3IP     ----  -000

F7Bh      PIR4      —                   —      —                 —        —              CCP5IF     CCP4IF      CCP3IF     ----  -000

F7Ah      PIE4      —                   —      —                 —        —              CCP5IE     CCP4IE      CCP3IE     ----  -000

F79h      CM1CON0   C1ON               C1OUT   C1OE              C1POL   C1SP            C1R         C1CH<1:0>             0000  1000

F78h      CM2CON0   C2ON               C2OUT   C2OE              C2POL   C2SP            C2R         C2CH<1:0>             0000  1000

F77h      CM2CON1   MC1OUT   MC2OUT            C1RSEL            C2RSEL  C1HYS           C2HYS      C1SYNC      C2SYNC     0000  0000

F76h      SPBRGH2                              EUSART2 Baud Rate Generator, High Byte                                      0000  0000

F75h      SPBRG2                               EUSART2 Baud Rate Generator, Low Byte                                       0000  0000

F74h      RCREG2                               EUSART2 Receive Register                                                    0000  0000

F73h      TXREG2                               EUSART2 Transmit Register                                                   0000  0000

F72h      TXSTA2    CSRC                TX9    TXEN              SYNC    SENDB           BRGH       TRMT        TX9D       0000  0010

F71h      RCSTA2    SPEN                RX9    SREN              CREN    ADDEN           FERR       OERR        RX9D       0000  000x

F70h      BAUDCON2  ABDOVF              RCIDL  DTRXP             CKTXP   BRG16           —          WUE         ABDEN      01x0  0-00

F6Fh      SSP2BUF                              SSP2 Receive Buffer/Transmit Register                                       xxxx  xxxx

F6Eh      SSP2ADD   SSP2 Address Register in I2C Slave Mode. SSP2 Baud Rate Reload Register in I2C Master Mode             0000  0000

F6Dh      SSP2STAT  SMP                 CKE    D/A               P        S              R/W         UA         BF         0000  0000

F6Ch      SSP2CON1  WCOL               SSPOV   SSPEN             CKP                     SSPM<3:0>                         0000  0000

F6Bh      SSP2CON2  GCEN     ACKSTAT           ACKDT             ACKEN   RCEN            PEN        RSEN        SEN        0000  0000

F6Ah      SSP2MSK                                          SSP1 MASK Register bits                                         1111  1111

F69h      SSP2CON3  ACKTIM              PCIE   SCIE              BOEN    SDAHT           SBCDE      AHEN        DHEN       0000  0000

Legend:   x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note  1:  PIC18(L)F4XK22 devices only.

      2:  PIC18(L)F2XK22 devices only.

      3:  PIC18(L)F23/24K22 and PIC18(L)F43/44K22 devices only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

 2010-2016 Microchip Technology Inc.                                                                          DS40001412G-page 81
PIC18(L)F2X/4XK22

TABLE 5-2:           REGISTER FILE SUMMARY FOR PIC18(L)F2X/4XK22 DEVICES (CONTINUED)

Address   Name       Bit 7              Bit 6  Bit 5             Bit 4      Bit 3         Bit 2                     Bit 1  Bit 0     Value on

                                                                                                                                     POR, BOR

F68h      CCPR2H                               Capture/Compare/PWM Register 2, High Byte                                             xxxx  xxxx

F67h      CCPR2L                               Capture/Compare/PWM Register 2, Low Byte                                              xxxx  xxxx

F66h      CCP2CON       P2M<1:0>                      DC2B<1:0>                                    CCP2M<3:0>                        0000  0000

F65h      PWM2CON    P2RSEN                                                 P2DC<6:0>                                                0000  0000

F64h      ECCP2AS    CCP2ASE                   CCP2AS<2:0>                     PSS2AC<1:0>                          PSS2BD<1:0>      0000  0000

F63h      PSTR2CON   —                  —      —            STR2SYNC        STR2D        STR2C                      STR2B  STR2A     ---0  0001

F62h      IOCB       IOCB7              IOCB6  IOCB5             IOCB4      —             —                         —             —  1111  ----

F61h      WPUB       WPUB7    WPUB6            WPUB5             WPUB4      WPUB3        WPUB2      WPUB1                  WPUB0     1111  1111

          SLRCON(2)  —                  —      —                 —          —            SLRC                       SLRB   SLRA      ----  -111

F60h      SLRCON(1)  —                  —      —                 SLRE       SLRD         SLRC                       SLRB   SLRA      ---1  1111

F5Fh      CCPR3H                               Capture/Compare/PWM Register 3, High Byte                                             xxxx  xxxx

F5Eh      CCPR3L                               Capture/Compare/PWM Register 3, Low Byte                                              xxxx  xxxx

F5Dh      CCP3CON       P3M<1:0>                      DC3B<1:0>                                    CCP3M<3:0>                        0000  0000

F5Ch      PWM3CON    P3RSEN                                                 P3DC<6:0>                                                0000  0000

F5Bh      ECCP3AS    CCP3ASE                   CCP3AS<2:0>                     PSS3AC<1:0>                          PSS3BD<1:0>      0000  0000

F5Ah      PSTR3CON   —                  —      —            STR3SYNC        STR3D        STR3C                      STR3B  STR3A     ---0  0001

F59h      CCPR4H                               Capture/Compare/PWM Register 4, High Byte                                             xxxx  xxxx

F58h      CCPR4L                               Capture/Compare/PWM Register 4, Low Byte                                              xxxx  xxxx

F57h      CCP4CON    —                  —             DC4B<1:0>                                    CCP4M<3:0>                        --00  0000

F56h      CCPR5H                               Capture/Compare/PWM Register 5, High Byte                                             xxxx  xxxx

F55h      CCPR5L                               Capture/Compare/PWM Register 5, Low Byte                                              xxxx  xxxx

F54h      CCP5CON    —                  —             DC5B<1:0>                                    CCP5M<3:0>                        --00  0000

F53h      TMR4                                                    Timer4 Register                                                    0000  0000

F52h      PR4                                                    Timer4 Period Register                                              1111  1111

F51h      T4CON      —                         T4OUTPS<3:0>                              TMR4ON                     T4CKPS<1:0>      -000  0000

F50h      TMR5H                         Holding Register for the Most Significant Byte of the 16-bit TMR5 Register                   0000  0000

F4Fh      TMR5L                                Least Significant Byte of the 16-bit TMR5 Register                                    0000  0000

F4Eh      T5CON      TMR5CS<1:0>               T5CKPS<1:0>                  T5SOSCEN     T5SYNC     T5RD16                 TMR5ON    0000  0000

F4Dh      T5GCON     TMR5GE   T5GPOL           T5GTM             T5GSPM     T5GGO/       T5GVAL                     T5GSS<1:0>       0000  0x00

                                                                            DONE

F4Ch      TMR6                                             Timer6 Register                                                           0000  0000

F4Bh      PR6                                               Timer6 Period Register                                                   1111  1111

F4Ah      T6CON      —                         T6OUTPS<3:0>                              TMR6ON                     T6CKPS<1:0>      -000  0000

F49h      CCPTMRS0   C3TSEL<1:0>               —                  C2TSEL<1:0>             —                         C1TSEL<1:0>      00-0  0-00

F48h      CCPTMRS1   —                  —      —                 —                 C5TSEL<1:0>                      C4TSEL<1:0>      ----  0000

F47h      SRCON0     SRLEN                     SRCLK<2:0>                   SRQEN        SRNQEN                     SRPS   SRPR      0000  0000

F46h      SRCON1     SRSPE    SRSCKE           SRSC2E            SRSC1E     SRRPE        SRRCKE     SRRC2E                 SRRC1E    0000  0000

F45h      CTMUCONH   CTMUEN             —      CTMUSIDL          TGEN       EDGEN        EDGSEQEN   IDISSEN                CTTRIG    0000  0000

F44h      CTMUCONL   EDG2POL            EDG2SEL<1:0>        EDG1POL            EDG1SEL<1:0>         EDG2STAT               EDG1STAT  0000  0000

F43h      CTMUICON                                    ITRIM<5:0>                                                       IRNG<1:0>     0000  0000

F42h      VREFCON0   FVREN    FVRST                   FVRS<1:0>             —             —                         —             —  0001  ----

F41h      VREFCON1   DACEN    DACLPS           DACOE             —             DACPSS<1:0>                          —      DACNSS    000-  00-0

F40h      VREFCON2   —                  —      —                                         DACR<4:0>                                   ---0  0000

F3Fh      PMD0       UART2MD  UART1MD          TMR6MD            TMR5MD     TMR4MD       TMR3MD     TMR2MD                 TMR1MD    0000  0000

F3Eh      PMD1       MSSP2MD  MSSP1MD          —                 CCP5MD     CCP4MD       CCP3MD     CCP2MD                 CCP1MD    00-0  0000

F3Dh      PMD2       —                  —      —                 —          CTMUMD       CMP2MD     CMP1MD                 ADCMD     ----  0000

F3Ch      ANSELE(1)  —                  —      —                 —          —            ANSE2                      ANSE1  ANSE0     ----  -111

F3Bh      ANSELD(1)  ANSD7    ANSD6            ANSD5             ANSD4      ANSD3        ANSD2                      ANSD1  ANSD0     1111  1111

Legend:   x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note  1:  PIC18(L)F4XK22 devices only.

      2:  PIC18(L)F2XK22 devices only.

      3:  PIC18(L)F23/24K22 and PIC18(L)F43/44K22 devices only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

DS40001412G-page 82                                                                                 2010-2016 Microchip Technology Inc.
                                                                             PIC18(L)F2X/4XK22

TABLE 5-2:        REGISTER FILE SUMMARY FOR PIC18(L)F2X/4XK22 DEVICES (CONTINUED)

Address   Name    Bit 7                 Bit 6  Bit 5        Bit 4            Bit 3         Bit 2  Bit 1  Bit 0  Value on

                                                                                                                POR, BOR

F3Ah      ANSELC  ANSC7                ANSC6   ANSC5        ANSC4            ANSC3         ANSC2  —      —      1111  11--

F39h      ANSELB  —                     —      ANSB5        ANSB4            ANSB3         ANSB2  ANSB1  ANSB0  --11  1111

F38h      ANSELA  —                     —      ANSA5               —         ANSA3         ANSA2  ANSA1  ANSA0  --1-  1111

Legend:   x = unknown, u = unchanged, — = unimplemented, q  = value depends  on condition

Note  1:  PIC18(L)F4XK22 devices only.

      2:  PIC18(L)F2XK22 devices only.

      3:  PIC18(L)F23/24K22 and PIC18(L)F43/44K22 devices   only.

      4:  PIC18(L)F26K22 and PIC18(L)F46K22 devices only.

 2010-2016 Microchip Technology Inc.                                                                    DS40001412G-page 83
PIC18(L)F2X/4XK22

5.4.5          STATUS REGISTER                                         It is recommended that only BCF, BSF, SWAPF, MOVFF

The STATUS register, shown in Register 5-2, contains                   and MOVWF instructions are used to alter the STATUS

the arithmetic status of the ALU. As with any other SFR,               register, because these instructions do not affect the Z,

it can be the operand for any instruction.                             C, DC, OV or N bits in the STATUS register.

If the STATUS register is the destination for an instruc-              For other instructions that do not affect Status bits, see

tion that affects the Z, DC, C, OV or N bits, the results              the     instruction     set  summaries      in  Section 25.2

of the instruction are not written; instead, the STATUS                “Extended Instruction Set” and Table 25-3.

register is updated according to the instruction per-                  Note:        The C and DC bits operate as the borrow

formed. Therefore, the result of an instruction with the                            and     digit   borrow  bits,  respectively,   in

STATUS register as its destination may be different                                 subtraction.

than intended. As an example, CLRF          STATUS will set

the    Z  bit  and  leave  the   remaining       Status  bits

unchanged (‘000u    u1uu’).

5.5           Register Definitions: Status

REGISTER 5-2:        STATUS: STATUS REGISTER

       U-0           U-0                    U-0          R/W-x         R/W-x           R/W-x        R/W-x               R/W-x

          —          —                      —            N             OV                   Z               DC(1)       C(1)

bit 7                                                                                                                          bit 0

Legend:

R = Readable bit                     W = Writable bit           U = Unimplemented bit, read as ‘0’

-n = Value at POR                    ‘1’ = Bit is set           ‘0’ = Bit is cleared                x = Bit is unknown

bit 7-5             Unimplemented: Read as ‘0’

bit 4               N: Negative bit

                    This bit is used for signed arithmetic (two’s complement). It indicates whether the result was negative

                    (ALU MSB = 1).

                    1 = Result was negative

                    0 = Result was positive

bit 3               OV: Overflow bit

                    This bit is used for signed arithmetic (two’s complement). It indicates an overflow of the 7-bit

                    magnitude which causes the sign bit (bit 7 of the result) to change state.

                    1 = Overflow occurred for signed arithmetic (in this arithmetic operation)

                    0 = No overflow occurred

bit 2               Z: Zero bit

                    1 = The result of an arithmetic or logic operation is zero

                    0 = The result of an arithmetic or logic operation is not zero

bit 1               DC: Digit Carry/Borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions)(1)

                    1 = A carry-out from the 4th low-order bit of the result occurred

                    0 = No carry-out from the 4th low-order bit of the result

bit 0               C: Carry/Borrow bit (ADDWF, ADDLW,         SUBLW,  SUBWF    instructions)(1)

                    1 = A carry-out from the Most Significant bit of the result occurred

                    0 = No carry-out from the Most Significant bit of the result occurred

Note      1:   For Borrow, the polarity is reversed. A subtraction is executed by adding the two’s complement of the

               second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high-order or low-order

               bit of the source register.

DS40001412G-page 84                                                                             2010-2016 Microchip Technology Inc.
                                                                         PIC18(L)F2X/4XK22

5.6          Data Addressing Modes                                       Purpose Register File”) or a location in the Access

                                                                         Bank   (Section 5.4.2     “Access  Bank”)     as   the  data

                                                                         source for the instruction.

    Note:        The execution of some instructions in the               The Access RAM bit ‘a’ determines how the address is

                 core  PIC18     instruction   set  are   changed        interpreted. When ‘a’ is ‘1’, the contents of the BSR

                 when the PIC18 extended instruction set is              (Section 5.4.1    “Bank   Select   Register   (BSR)”)    are

                 enabled. See Section 5.7 “Data Memory                   used with the address to determine the complete 12-bit

                 and the Extended Instruction Set” for                   address of the register. When ‘a’ is ‘0’, the address is

                 more information.                                       interpreted as being a register in the Access Bank.

While the program memory can be addressed in only                        Addressing that uses the Access RAM is sometimes

one way – through the program counter – information                      also known as Direct Forced Addressing mode.

in the data memory space can be addressed in several                     A few instructions, such as MOVFF, include the entire

ways. For most instructions, the addressing mode is                      12-bit address (either source or destination) in their

fixed. Other instructions may use up to three modes,                     opcodes. In these cases, the BSR is ignored entirely.

depending on which operands are used and whether or                      The destination of the operation’s results is determined

not the extended instruction set is enabled.                             by the destination bit ‘d’. When ‘d’ is ‘1’, the results are

The addressing modes are:                                                stored back in the source register, overwriting its origi-

•   Inherent                                                             nal contents. When ‘d’ is ‘0’, the results are stored in

•   Literal                                                              the W register. Instructions without the ‘d’ argument

                                                                         have a destination that is implicit in the instruction; their

•   Direct                                                               destination is either the target register being operated

•   Indirect                                                             on or the W register.

An additional addressing mode, Indexed Literal Offset,                   5.6.3      INDIRECT ADDRESSING

is  available    when       the  extended      instruction    set   is

enabled (XINST Configuration bit = 1). Its operation is                  Indirect addressing allows the user to access a location

discussed in greater detail in Section 5.7.1 “Indexed                    in data memory without giving a fixed address in the

Addressing with Literal Offset”.                                         instruction. This is done by using File Select Registers

                                                                         (FSRs) as pointers to the locations which are to be read

5.6.1            INHERENT AND LITERAL                                    or written. Since the FSRs are themselves located in

                 ADDRESSING                                              RAM    as  Special  File  Registers,  they   can   also        be

Many PIC18 control instructions do not need any argu-                    directly   manipulated    under   program    control.   This

ment at all; they either perform an operation that glob-                 makes FSRs very useful in implementing data struc-

ally affects the device or they operate implicitly on one                tures, such as tables and arrays in data memory.

register. This addressing mode is known as Inherent                      The    registers  for   indirect   addressing     are   also

Addressing. Examples include SLEEP, RESET and DAW.                       implemented with Indirect File Operands (INDFs) that

Other instructions work in a similar way but require an                  permit automatic manipulation of the pointer value with

additional       explicit  argument  in  the   opcode.        This  is   auto-incrementing,     auto-decrementing     or   offsetting

known        as  Literal    Addressing   mode       because       they   with another value. This allows for efficient code, using

require some literal value as an argument. Examples                      loops, such as the example of clearing an entire RAM

include ADDLW and MOVLW, which respectively, add or                      bank in Example 5-5.

move a literal value to the W register. Other examples                   EXAMPLE 5-5:              HOW TO CLEAR RAM

include      CALL      and  GOTO,    which     include    a   20-bit

program memory address.                                                                            (BANK 1) USING

                                                                                                   INDIRECT ADDRESSING

5.6.2            DIRECT ADDRESSING                                                  LFSR     FSR0,    100h  ;

Direct addressing specifies all or part of the source                    NEXT       CLRF     POSTINC0       ;  Clear    INDF

and/or destination address of the operation within the                                                      ;  register     then

opcode       itself.   The  options     are    specified      by    the                                     ;  inc   pointer

arguments accompanying the instruction.                                             BTFSS    FSR0H, 1       ;  All   done   with

                                                                                                            ;  Bank1?

In the core PIC18 instruction set, bit-oriented and byte-                           BRA      NEXT           ;  NO,   clear    next

oriented      instructions  use      some      version    of  direct     CONTINUE                           ;  YES,   continue

addressing by default. All of these instructions include

some   8-bit     literal   address  as  their  Least     Significant

Byte. This address specifies either a register address in

one of the banks of data RAM (Section 5.4.3 “General

 2010-2016 Microchip Technology Inc.                                                                       DS40001412G-page 85
PIC18(L)F2X/4XK22

5.6.3.1       FSR Registers and the INDF                                     5.6.3.2              FSR Registers and POSTINC,

              Operand                                                                             POSTDEC, PREINC and PLUSW

At the core of indirect addressing are three sets of reg-                    In addition to the INDF operand, each FSR register pair

isters: FSR0, FSR1 and FSR2. Each represents a pair                          also has four additional indirect operands. Like INDF,

of 8-bit registers, FSRnH and FSRnL. Each FSR pair                           these are “virtual” registers which cannot be directly

holds a 12-bit value, therefore, the four upper bits of the                  read       or  written.  Accessing     these     registers  actually

FSRnH register are not used. The 12-bit FSR value can                        accesses the location to which the associated FSR

address the entire range of the data memory in a linear                      register pair points, and also performs a specific action

fashion. The FSR register pairs, then, serve as pointers                     on the FSR value. They are:

to data memory locations.                                                    •    POSTDEC: accesses the location to which the

Indirect  addressing      is  accomplished     with   a     set  of               FSR points, then automatically decrements the

Indirect File Operands, INDF0 through INDF2. These                                FSR by 1 afterwards

can  be   thought    of   as  “virtual”   registers:  they       are         •    POSTINC: accesses the location to which the

mapped    in  the    SFR      space  but  are  not    physically                  FSR points, then automatically increments the

implemented. Reading or writing to a particular INDF                              FSR by 1 afterwards

register  actually   accesses        its  corresponding     FSR              •    PREINC: automatically increments the FSR by

register pair. A read from INDF1, for example, reads                              one, then uses the location to which the FSR

the data at the address indicated by FSR1H:FSR1L.                                 points in the operation

Instructions that use the INDF registers as operands                         •    PLUSW: adds the signed value of the W register

actually use the contents of their corresponding FSR as                           (range of -127 to 128) to that of the FSR and uses

a pointer to the instruction’s target. The INDF operand                           the location to which the result points in the

is just a convenient way of using the pointer.                                    operation.

Because indirect addressing uses a full 12-bit address,                      In this context, accessing an INDF register uses the

data RAM banking is not necessary. Thus, the current                         value in the associated FSR register without changing

contents of the BSR and the Access RAM bit have no                           it.  Similarly,      accessing  a  PLUSW      register    gives  the

effect on determining the target address.                                    FSR value an offset by that in the W register; however,

                                                                             neither        W  nor   the  FSR   is  actually  changed    in   the

                                                                             operation.        Accessing     the    other     virtual    registers

                                                                             changes the value of the FSR register.

FIGURE 5-10:              INDIRECT        ADDRESSING

                                                                                                             000h

Using an instruction with one of the                        ADDWF,        INDF1,  1                                           Bank 0

indirect addressing registers as the                                                                         100h

operand....                                                                                                                   Bank 1

                                                                                                             200h

                                                                                                                              Bank 2

                                                                 FSR1H:FSR1L                                 300h

...uses the 12-bit address stored in

the FSR pair associated with that              7                       0  7                       0

register....                                                                                                                  Bank 3

                                               x  x   x  x  1    1  1  0  1  1    0  0  1   1  0  0                        through

                                                                                                                           Bank 13

...to     determine  the  data  memory

location to be used in that operation.

In this case, the FSR1 pair contains                                                                         E00h

ECCh. This means the contents of                                                                                           Bank 14

location ECCh will be added to that                                                                          F00h

of the W register and stored back in                                                                                       Bank 15

ECCh.                                                                                                        FFFh

                                                                                                                    Data Memory

DS40001412G-page 86                                                                                    2010-2016 Microchip Technology Inc.
                                                                           PIC18(L)F2X/4XK22

Operations on the FSRs with POSTDEC, POSTINC                          5.7.1         INDEXED ADDRESSING WITH

and  PREINC      affect   the  entire     register  pair;  that  is,                LITERAL OFFSET

rollovers of the FSRnL register from FFh to 00h carry                 Enabling the PIC18 extended instruction set changes

over to the FSRnH register. On the other hand, results                the   behavior       of   indirect  addressing       using       the     FSR2

of these operations do not change the value of any                    register    pair    within    Access    RAM.         Under       the  proper

flags in the STATUS register (e.g., Z, N, OV, etc.).                  conditions, instructions that use the Access Bank – that

The PLUSW register