Note the following details of the code protection feature on Microchip devices:
•Microchip products meet the specification contained in their particular Microchip Data Sheet.
•Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
•There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
•Microchip is willing to work with the customer who is concerned about the integrity of their code.
•Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device
applications and t he lik e is provided only for your convenience
and may be su perseded by upda t es . It is y our responsibility to
ensure that your application meets with your specifications.
MICROCHIP MAKES NO REPRESENTATIONS OR
WARRANTIES OF ANY KIND WHETHER EXPRESS OR
IMPLIED, WRITTEN OR ORAL, STATUTORY OR
OTHERWISE, RELATED TO THE INFORMATION,
INCLUDING BUT NOT LIMITED TO ITS CONDITION,
QUALITY, PERFORMANCE, MERCHANTABILITY OR
FITNESS FOR PURPOSE. Microchip disclaims all liability
arising from this information and its use. Use of Microchip
devices in life supp ort and/or safety ap plications is entir ely at
the buyer’s risk, and the buyer agrees to defend, indemnify and
hold harmless M icrochip from any and all dama ges, claims,
suits, or expenses re sulting from such use. No licens es are
conveyed, implicitly or otherwise, under any Microchip
intellectual property rights.
Trademarks
The Microchip name and logo, the Microchip logo, Accuron,
dsPIC, K
EELOQ, KEELOQ logo, MPLAB, PIC, PICmicro,
PICSTART, rfPIC, Sm artShunt and UNI/O are registered
trademarks of Microchip Technology Incorporated in the
U.S.A. and other countries.
FilterLab, Hampshire, Linear Active Thermistor, MXDEV,
MXLAB, SEEVAL, SmartSensor and The Embedded Control
Solutions Company are registered trademarks of Microchip
Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, CodeGuard,
dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,
ECONOMONITOR, FanSense, In-Circuit Serial
Programmin g , IC SP, ICEPIC, Mindi, MiW i , MPASM, MPLAB
Certified logo, MPLIB, MPLINK, mTouch, nanoWatt XLP,
PICkit, PICDEM, PICDEM.net, PICtail , PIC
32
logo, PowerCal,
PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, Select
Mode, Total Endurance, TSHARC, WiperLock and ZENA are
trademarks of Microchip Technology Incorporated in the
U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated
in the U.S.A.
All other trademarks mentioned herein are property of their
respective companies.
Microchip received ISO/TS-16949:2002 certification for its worldwide
headquarters, design and wafer fabrication facilities in Chandler and
Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
are for its PIC
devices, Serial EEPROMs, microperipherals, nonvolatile memory and
analog products. In addition, Microchip’s quality system for the design
and manufacture of development systems is ISO 9001:2000 certified.
2:Channel count includes internal Fixed Voltage Reference (FVR) and Programmable Voltage Reference (CV
3:Includes the dual port RAM used by the USB module which is shared with the data memory.
4.0Flash Progr a m Mem o ry......... .............................................................................. ....................................................................... 47
15.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 135
20.0 SR Latch................................................................................................................................................................................... 239
22.0 Universal Serial Bus (USB)...................................................................................................................................................... 245
24.0 Special Features of the CPU........................................................................... .........................................................................285
25.0 Instruction Set Summary .......................................................................................................................................................... 303
26.0 Development Support............................................................................................................................................................... 353
28.0 DC and AC Characteristics Graphs and Tables.......................................................................................................................391
Index .................................................................................................................................................................................................. 399
The Microchip Web Site.............. ....................................................................................................................................................... 409
Customer Change Notification Service .............................................................................................................................................. 409
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 c omm ents r egarding t his publication, p lease c ontact the M arket ing Communications Department via
E-mail at docerrors@mail.microchip.com or fax the Reader Response Form in the back of this data sheet to (480) 792-4150.
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 Web site 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., DS30000A is version A of document DS30000).
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 Web site; http://www.microchip.com
• Your local Microchip sales office (see last page)
• The Microchip Corporate Literature Center; U.S. FAX: (480) 792-7277
When contacting a sales office or the literature center, please specify which device, revision of silicon and data sheet (include
literature number) you are using.
Customer Notification System
Register on our web site at www.microchip.com/cn to receive the most current information on all of our products.
This document co nta i ns dev ic e spec if i c in for m at ion fo r
the following devices:
• PIC18F13K50• PIC18F14K50
• PIC18LF13K50• PIC18LF14K50
This family offers the advantages of all PIC18
microcontrollers – namely, high computational
performance at an economical price – with the addition
of high-endurance, Flash program memory. On top of
these features, the PIC18F1XK50/PIC18LF1XK50
family introduces design enhancements that make
these microcontrollers a logical choice for many highperformance, power sensitive applications.
1.1New Core Features
1.1.1nanoWatt XLP™ TECHNOLOGY
All of the devices in the PIC 18F1 XK50/PIC18L F1XK50
family incorporate a range of features that can significantly reduce power consumption during operation.
Key items include:
• Alternate Run Modes: By clocking the controller
from the Timer1 source or the internal oscillator
block, power consumption during code execution
can be reduced by as much as 90%.
• Multiple Idle Modes: The controller can also run
with its CPU core disabled but the peripherals still
active. In these st ates, powe r consumpt ion can be
reduced even further, to as little as 4% of normal
operation requirements.
• On-the-fly Mode Switching: The powermanaged modes a re invo ked b y user code durin g
operation, allowing the user to incorporate powersaving 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.
1.1.2MULTIPLE OSCILLATOR OPTIONS
AND FEATURES
All of the devices in th e PIC18F1X K50/P IC18LF1XK5 0
family offer ten different oscillator options, allowing
users a wide range o f choices i n develo ping applica tion
hardware. These include:
• Four Crystal modes, using crystals or ceramic
resonators
• External Clock mode s, offe ring the option of us ing
two pins (oscillator input and a divide-by-4 clock
output) or one pin (oscillator input, with the second pin reassigned as general I/O)
• External RC Oscillator modes with the same pin
options as the External Clock modes
• An internal oscillator block which contains a
16 MHz HFINTOSC oscillator and a 31 kHz
LFINTOSC oscillator which together provide 8
user selectable clock frequencies, from 31 kHz to
16 MHz. This option frees the two oscillator pins
for use as additional general purpose I/O.
• A Phase Lock Loop (PLL) frequency multiplier,
available to both the high-speed crystal and internal oscillator m odes, which a llows clo ck speeds o f
up to 48 MHz. Used with the internal osci llator , th e
PLL gives users a complete selection of clock
speeds, from 31 kHz to 32 MHz – all without using
an external crystal or clock circuit.
Besides its ava ilability as a cloc k source, the intern al
oscillator block pro vid es a s t ab le re ference source that
gives the family additional features for robust
operation:
• Fail-Safe Clock Monitor: This option constantly
monitors the main clock source against a reference signal provid ed by the LFINTOSC. If a c lo ck
failure occurs, the controller is switched to the
internal oscillator block, allowing for continued
operation or a safe application shutdown.
• T wo-Speed Start-up: This option allows the
internal oscillator to serve as the clock source
from Power-on Reset, or wake-up from Sleep
mode, until the primary clock source is available.
• Memory Endurance: The Flash cells for both
program memory and data EEPROM are rated to
last for many thousands of erase/write cycles – up to
1K for program memory and 100K for EEPROM.
Data retention without refresh is conservatively
estimated to be greater than 40 years.
• Self-programmability: These devices can write
to their own program memory spaces under
internal software control. Using a bootloader
routine located in the code protected Boot Block,
it is possible to create an application that can
update itself in the field.
• Extended Instruction Set: The PIC18F1XK50/
PIC18LF1XK50 family introduces an optional
extension to the PIC18 ins truction set, whic h adds
8 new instructions and an Indexed Addressing
mode. This extension has been specifically
designed to optimize re-entrant application code
originally deve loped in high -level la nguages, such
as C.
• Enhanced CCP module: In PWM mode, this
module provides 1, 2 or 4 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 4 outputs to provide the PWM signal.
• Enhanced Addressable USART: This serial
communication module is capable of standard
RS-232 operation an d provides support for th e LIN
bus protocol. Other enhancements include
automatic baud rate detection and a 16-bit Baud
Rate Generator for improved resolution.
• 10-bit A/D Converter: This module incorporates
programmable acquisition time, allowing for a
channel to be selected and a conversion to be
initiated withou t wai ting for a sampling perio d 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 operati ng vol t age and
temperature. See Section 27.0 “Electrical
Specifications” for time-out periods.
1.3Details on Individual Family
Members
Devices in the PIC18F1XK50/PIC18LF1XK50 family
are available in 20-pin packages. Block diagrams for
the two groups are shown in Figure 1-1.
The devices are differentiated from each other in the
following ways:
1.Flash program memory:
• 8 Kbytes for PIC18F13K50/PIC18LF13K50
• 16 Kbyt es for PIC18F14K50/PIC18LF14K50
2.On-chip 3.2V LDO regulator for PIC18F13K50
and PIC18F14K50.
All other features fo r device s in this family are identi cal.
These are summarized in Table1-1.
The pinouts for all devices are listed in Table 1 and I/O
description are in Table 1-2.
ST = Schmitt Trigger inputI= Input
O= Output P= Power
XTAL= Crystal Oscillator XCVR = USB Differential Transceiver
Pin
Number
19
18
13
12
11
10
Pin
Buffer
Type
4
3
2
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
Type
I
TTL
XCVR
ST
I
TTL
XCVR
ST
I
ST
I
ST
P
—
TTL
I
Analog
O
XTAL
O
CMOS
TTL
I
XTAL
I
CMOS
TTL
I
Analog
I
ST
ST
TLL
I
Analog
I
ST
ST
TLL
ST
ST
TLL
O
CMOS
ST
Digital input
USB differential plus line (input/output)
ICSP™ programming data pin
Digital input
USB differential minus line (input/output)
ICSP™ programming clock pin
Master Clear (input) or programming voltage (input)
Digital input
Active-low Master Clear with internal pull-up
High voltage programming input
Digital I/O
ADC channel 3
Oscillator crystal output. Connect to crystal or resonator
in Crystal Oscillator mode
In RC mode, OSC2 pin outputs CL KOUT whi ch
has 1/4 the frequency of OSC1 and den otes
the instruction cycle rate
Digital I/O
Oscillator crystal input or external clock input
ST buffer when configured in RC mode; analog other
wise
External clock source input. Always associated with the
pin function OSC1 (See related OSC1/CLKIN, OSC2,
CLKOUT pins
Digital I/O
ADC channel 10
SPI data in
2
C™ data I/O
I
Digital I/O
ADC channel 11
EUSART asynchronous receive
EUSART synchronous data (see related RX/TX)
Digital I/O
Synchronous serial clock input/output for SPI mode
Synchronous serial clock input/output for I
Digital I/O
EUSART asynchronous transmit
EUSART synchronous clock (see related RX/DT)
The oscillator module has a variety of clock sources
and features that allow it to be used in a wide range of
applications, maximizing performance and minimizing
power consumption. Figure 2-1 illustrates a block
diagram of the oscillator module .
Key features of the oscillator module include:
• System Clock Selection
- Primary External Oscillator
- Secondary External Oscillator
- Internal Oscillator
• Oscillator Start-up Timer
• System Clock Selection
• Clock Switching
• 4x Phase Lock Loop Frequency Multiplier
• CPU Clock Divider
• USB Operation
- Low Speed
- Full Speed
• Two-Speed Start-up Mode
• Fail-Safe Clock Monitoring
2.2System Clock Selection
The SCS bits of the OSCCON register select between
the following clock sources:
• Primary External Oscillator
• Secondary External Oscillator
• Internal Oscilla tor
Note:The frequency of the system clock will be
The default state of the SCS bits sets th e sy s tem cl oc k
to be the oscillator defined by the FOSC bits of the
CONFIG1H Configuration register. The system clock
will always be defined by the FOSC bits until the SCS
bits are modified in software.
When the Internal Oscillator is selected as the system
clock, the IRCF bits of the OSCCON register and the
INTSRC bit of the OSCTUNE register will select either
the LFINTOSC or the HFINTOSC. The LFINTOSC is
selected when the IRCF<2:0> = 000 and the INTSRC
bit is clear. All other combinations of the IRCF bits and
the INTSRC bit will select the HFINTOSC as the
system clock.
Oscillator defined by
FOSC<3:0>
OSC throughout this
2.3Primary External Oscillator
The Primary External Oscillator’s mode of operation is
selected by setting the FOSC<3:0> bits of the
CONFIG1H Co nfiguration regi ster. The oscill ator can
be set to the following modes:
• LP: Low-Power Crystal
• XT: Crystal/Ceramic Resonator
• HS: High-Speed Crystal Resonator
• RC: External RC Oscillator
• EC: External Clock
Additionally, the Primary External Oscillator may be
shut-down under firmware control to save power.
Note 1: A series resistor (RS) may be required for
quartz crystals with low drive level.
2: The value of R
F varies with the Oscillator mode
selected (typically between 2 MΩ to 10 MΩ).
C1
C2
Quartz
R
S
(1)
OSC1/CLKIN
RF
(2)
Sleep
To Internal
Logic
PIC® MCU
Crystal
OSC2/CLKOUT
2.3.1PRIMARY EXTERNAL OSCILLATOR
SHUT-DOWN
The Primary External Oscillator can be enabled or disabled via software. To enable software control of the
Primary External Oscillator, the PCLKEN bit of the
CONFIG1H Configuration register must be set. With
the PCLKEN bit set, the Primary External Oscillator is
controlled by the PRI_SD b it of the OSCCON2 register.
The Primary External Oscillator will be enabled when
the PRI_SD bit is set, and disabled when the PRI_SD
bit is clear.
Note:The Primary External Oscillator cannot be
shut down when it is selected as the
System Clock. To shut down the oscillator,
the system clock source must be either the
Secondary Oscillator or the Internal
Oscillator.
2.3.2LP, XT AND HS OSCILLATOR
MODES
The LP, XT and HS modes support the use of quartz
crystal resonators or ceramic resonators connected to
OSC1 and OSC2 (Figu re 2-2). The mode selects a low ,
medium or high gain setting of the internal inverteramplifier to support v arious resonato r types and spee d.
LP Oscillator mode selects the lowest gain setting of the
internal inverter-amplifier. LP mode current consumption
is the least of the three modes. This mode is best suited
to drive resonators with a low drive level specification, for
example, tuning fork type crystals.
XT Oscillator mode selects the intermediate gain
setting of the internal inverter-amplifier. XT mode
current consumption is the medi um of the three modes.
This mode is best suited to drive resonators with a
medium drive level specification.
HS Oscillator mode select s the highest gain setting of the
internal inverter-amplifie r. H S mode current consum ption
is the highest of the three modes. This mode is best
suited for resonators that require a high drive setting.
Figure 2-2 and Figure 2-3 show typical circuits for
quartz crystal and ceramic resonators, respectively.
FIGURE 2-2:QUARTZ CRYSTAL
OPERATION (LP, XT OR
HS MODE)
Note 1: Quartz crystal charac teristics vary a ccording
to type, package and manufacturer. The
user should consult the manu facturer data
sheets for sp ecifi catio ns an d reco mmen ded
application.
2: Always verify oscillator per form anc e ov er
DD and temperature range that is
the V
expected for the application.
3: For oscillat or design assistance, reference
the following Microchip Applications Notes:
• AN826, “Crystal Oscillator Basics and
Crystal Selection for rfPIC
Devices” (DS00826)
• AN849, “Basic PIC
(DS00849)
• AN943, “Practical PICAnalysis and Design” (DS00943)
Note 1: A series resistor (RS) may be required for
ceramic resonators with low drive level.
2: The value of R
F varies with the Oscillator mode
selected (typically between 2 MΩ to 1 0 MΩ).
3: An additional parallel feedback resistor (R
P)
may be required for proper ceramic resonator
operation.
C1
C2
Ceramic
R
S
(1)
OSC1/CLKIN
RF
(2)
Sleep
To Internal
Logic
PIC® MCU
RP
(3)
Resonator
OSC2/CLKOUT
OSC2/CLKOUT
(1)
CEXT
REXT
PIC® MCU
OSC1/CLKIN
F
OSC/4 or
Internal
Clock
VDD
VSS
Recommended values: 10 kΩ ≤ REXT ≤ 100 kΩ
C
EXT > 20 pF
Note 1:Alternate pin functions are listed in
Section 1.0 “Device Overview”.
2:Output depends upon RC or RCIO clock mod e.
I/O
(2)
FIGURE 2-3:CERAMIC RESONATOR
OPERATION
(XT OR HS MODE)
2.3.3EXTERNAL RC
The External Res istor-Capacitor (RC) mode supports
the use of an external RC circuit. This allows the
designer maximum flexibility i n frequency choice while
keeping costs to a minimum when clock accuracy is not
required. In RC mode, the RC circuit connects to OSC1,
allowing OSC2 to be configured as an IO or as
CLKOUT. The CLKOUT function is selected by the
FOSC bits of the CONFIG1H Configuration register.
When OSC2 is configured as C LKOUT, the frequency
at the pin is the frequency of the RC oscillator divided by
4. Figure 2-4 shows the external RC mode connections.
FIGURE 2-4:EXTERNAL RC MODES
The RC oscillator frequency is a function of the supply
voltage, the r esistor REXT, the capacitor CEXT and th e
operating temperature. Other factors affecting the
oscillator frequency are:
• Input threshold voltage variation
• Component tolerances
• Variation in capacitance due to packaging
2.3.4EXTERNAL CLOCK
The External Clock (EC) mode allows an externally
generated logic level clock to be used as the system’s
clock source. When operating in this mode, the
external clock source is connected to the OSC1
allowing OSC2 to be configured as an I/O or as
CLKOUT. The CLKOUT function is selected by the
FOSC bits of the CONFIG1H Configuration register.
When OSC2 is configured as CLKOUT, the frequency
at the pin is the frequency of the EC oscillator divided
by 4.
Three different power settings are available for EC
mode. The power s ettings allow fo r a reduced I
DD of the
device, if the EC clock is known to be in a specific
range. If there is an expected range of frequencies for
the EC clock, select the power mode for the highest
frequency.
The Secondary External Oscillator is designed to drive
an external 32.768 kHz crystal. This oscillator is
enabled or disabled by the T1OSC EN bit of the T1C ON
register. See Section 11.0 “Timer1 Module” for more
information.
The internal oscillator module contains two inde pendent
oscillators which are:
• LFINTOSC: Low-Frequency Internal Oscillator
• HFINTOSC: High-Frequency Internal Oscillator
When operating with either oscillator, OSC1 will be an
I/O and OSC2 will be either an I/O or CLKOUT. The
CLKOUT function is selected by the FOSC bits of the
CONFIG1H Configuration register. When OSC2 is
configured as CLKOUT, the frequency at the pin is the
frequency of the Internal Oscillator divided by 4.
2.5.1LFINTOSC
The Low-Frequency Internal Oscillator (LFINTOSC) is
a 31 kHz internal clock source. The LFINTOSC
oscillator is the clock source for:
• Power-up Timer
• Watchdog Timer
• Fail-Safe Clock Monitor
The LFINTOSC is enabled when any of the following
conditions are true:
• Power-up Timer is enabled (PWRTEN= 0)
• Watchdog Timer is enabled (WDTEN = 1)
• Watchdog Timer is enabled by software
(WDTEN = 0 and SWDTEN = 1)
• Fail-Safe Clock Monitor is enabled (FCMEM= 1)
•SCS1=1 and IRCF<2:0> = 000 and INTSRC = 0
• FOSC<3:0> selects the internal oscillator as the
primary clock and IRCF<2:0> = 000 and
INTSRC = 0
• IESO = 1 (Two-Speed Start-up) and
IRCF<2:0> = 000 and INTSRC = 0
The HFIOFS bit of the OSCCON register indicates
whether the HFINTOSC is stable.
Note 1: Selecting 31 kHz from the HFINTOSC
oscillator requires IRCF<2:0> = 000 and
the INTSRC bit of the OSCTUNE regist er
to be set. If the INTSRC bit is clear, the
system clock will come from the
LFINTOSC.
2: Additional adjustments to the frequency
of the HFINTOSC can made via the
OSCTUNE registers. See Register 2-3
for more details
The HFINTOSC is enabled if any of the following
conditions are true:
• SCS1 = 1 and IRCF<2:0> ≠ 000
• SCS1 = 1 and IRCF<2:0> = 000 and INTSRC = 1
• FOSC<3:0> selects the internal oscillator as the
primary clock and
- IRCF<2:0> ≠ 000 or
- IRCF<2:0> = 000 and INTSRC = 1
• IESO = 1 (Two-Speed Start-up) and
- IRCF<2:0> ≠ 000 or
- IRCF<2:0> = 000 and INTSRC = 1
•FCMEM=1 (Fail Safe Clock Monitoring) and
- IRCF<2:0> ≠ 000 or
- IRCF<2:0> = 000 and INTSRC = 1
2.5.2HFINTOSC
The High-Frequency Intern al Oscillat or (HFINT OSC) is
a precision oscillator that is factory-calibrated to
operate at 16 MHz. The output of the HFINTOSC
connects to a postscaler and a multiplexer (see
Figure 2-1). One of eight frequencies can be selected
using the IRCF<2:0> bits of the OSCCON register. The
following frequencies are available from the
HFINTOSC:
The Oscillator Control (OSCCON) (Register 2-1) and the
Oscillator Control 2 (OSCCON2) (Registe r 2-2) registers
control the system clock and frequency selection
options.
bit 3OSTS: Oscillator Start-up Time-out Status bit
1 = Device is running from the clock defined by FOSC<2:0> of the CONFIG1 register
0 = Device is running from the internal oscillator (HFINTOSC or LFINTOSC)
bit 2HFIOFS: HFINTOSC Frequency Stable bit
1 = HFINTOSC frequency is stable
0 = HFINTOSC frequency is not stable
The HFINTOSC is factory calibrated, but can be
adjusted in software by writing to the TUN<5:0> bits of
the OSCTUNE register (Register 2-3).
The defaul t value of the TUN<5: 0> is ‘000000’. The
value is a 6-bit two’s complement number.
When the OSCTUNE register is modified, the
HFINTOSC frequency will begin shifting to the new
frequency. Code execution continues during this shift,
while giving no indication that the shift has occurred.
OSCTUNE does not affect the LFINTOSC frequency.
The operation of features that depen d on the LFINTOSC
clock source frequency, such as the Power-up Timer
(PWRT), Watchdog T imer (WDT), Fail-Safe Clock Monitor (FSCM) and peripherals, are not affected by the
change in frequency.
The OSCTUNE register also implements the INTSRC
and SPLLEN bits, which control certain features of the
internal oscillator block.
The INTSRC bit allows users to select which internal
oscillator pr ovides the clock sourc e when the 31 kHz
frequency option is se lected . This is c overed in great er
detail in Section 2.5.1 “LFINTOSC”.
The SPLLEN bit co ntrols the operation o f the freque ncy
multiplier. For more details about the function of the
SPLLEN bit see Section 2.9 “4x Phase Lock Loop
Frequency Multiplier”
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
INTSRCSPLLENTUN5TUN4TUN3TUN2TUN1TUN0
bit 7bit 0
Legend:
R = Readable bitW = Writable bitU = Unimplemented bit, read as ‘0’
-n = Value at POR‘1’ = Bit is set‘0’ = Bit is clearedx = Bit is unknown
bit 7INTSRC: Internal Oscillator Low-Frequency Source Select bit
Note 1: Start-up time includes TOST (1024 TOSC) for external clocks, plus TPLL (approx. 2 ms) for HSPLL mode.
2.7Oscillator Start-up Timer
The Primary External Oscillator, when configured for
LP , XT or HS modes, incorporates an Oscillator Start-up
Timer (OST). The OST ensures that the oscillator starts
and provides a stable clock to the oscillator module.
The OST times out when 1024 oscillation s on OSC1
have occurred . Duri ng th e OST peri od, wi th th e syst em
clock set to t he Primary Exte rnal Oscill ator , the prog ram
counter does not increment suspending program
execution. The OST period will occur following:
• Power-o n Reset (POR )
• Brown-out Reset (BOR)
• Wake-up from Sleep
• Oscillator being enabled
• Expiration of Power-up Timer (PWRT)
In order to minimize laten cy between externa l oscillator
start-up and code execution, the Two-Speed Start-up
mode can be selec ted. See Sectio n 2.12 “Two -Spe ed
Start-up Mode” for more information.
2.8Clock Switching
The device cont ains circ uitry t o preve nt clo ck “gl itches”
due to a change of the system clock source. To
accomplish this, a short pause in the system clock
occurs during the clock switch. If the new clock source
is not stable (e.g., OST is active), the device will
continue to execute from the old clock source until the
new clock source becomes stable. The timing of a
clock switch is a s follows:
1.SCS<1:0> bits of the OSCCON register are
modified.
2.The system clock will continue to operate from
the old clock until the new clock is ready.
3.Clock switch circ uitry waits for two consecuti ve
rising edges of the old clock after the new clock
is ready.
4.The system c lock is hel d low, star ting at the next
falling edge of the old clock.
5.Clock switch cir cui try wait s for an ad diti onal two
rising edges of the new clock.
6.On the next falling edge of the new clock, the
low hold on the system clock is release and the
new clock is switched in as the system clock.
A Phase Locked Loop (PLL) circuit is provided as an
option for users who wish to use a lower-frequency
external oscillator or to operate at 32 MHz with the
HFINTOSC. The PLL is designed for an input
frequency from 4 MHz to 12 MHz. The PLL multiplies
its input frequency by a factor of four when the PLL is
enabled. This may be useful for customers who are
concerned with EMI, due to high-frequency crystals.
Two bits control the PLL: the PLLEN bit of the
CONFIG1H Configurati on reg is ter an d the SPLL EN bit
of the OSCTUNE register. The PLL is enabled when
the PLLEN bit is set and it is under software control
when the PLLEN bit is cleared.
TABLE 2-3:PLL CONFIGURATION
PLLENSPLLENPLL Status
1xPLL enabled
01PLL enabled
00PLL disabled
Note:The HFINTOSC may use the PLL when
the postscaler is set to 8 MHz and the
FOSC<3:0> bits of the CONFIG1H
Configuration register are selected for
Internal Oscillator operati on.
2.10CPU Clock Divider
2.11USB Operation
The USB module is des igned to operat e in two dif ferent
modes:
• Low Speed
• Full Sp eed
Because of timing requirements imposed by the USB
specifications, the Primary External Oscillator is
required for the USB module. The FOSC bits of the
CONFIG1H Configuratio n register must be se t to either
External Clock (EC) High-power or HS mode with a
clock frequency of 6, 12 or 48 MHz.
2.11.1LOW SPEED OPERATION
For Low Speed USB operation, a 6MHz clock is
required for the USB module. To generate the 6 MHz
clock, only 2 Oscillator modes are allowed:
• EC High-power mode
•HS mode
Table 2-4 shows the recommended Clock mode for
low-speed operation.
2.11.2FULL-SPEED OPERATION
For full-speed USB operation, a 48 MHz clock is
required for the USB module. To generate the 48 MHz
clock, only 2 Oscillator modes are allowed:
• EC High-power mode
•HS mode
T able2-5 shows the recommende d Clock mode for full-
speed operation.
The CPU Clock Divider allows the system clock to run
at a slower speed than the Low/Full Speed USB
module clock while sharing the same clock source.
Only the oscillator defin ed by the set tin gs of the FOSC
bits of the CO NFIG1H Configur ation register may be
used with the CPU Clock Divider. The CPU Clock
Divider is controlled by the CPUDIV bits of the
CONFIG1L Configuration register. Setting the CPUDIV
bits will set the system clock to:
• Equal the clock speed of the USB module
• Half the clock speed of the USB module
• One third the clock speed of the USB module
• One fourth the clock speed of the USB module
For more information on the CPU Clock Divider, see
Figure 2-1 and Register 24-1 CONFIG1L.
Two-Speed Start-up mode provides additional power
savings by minimizing the latency between external
Oscillator Start-up Timer (OST) and code execution. In
applications that make heavy use of the Sleep mode,
Two-Speed Start-up will remo ve the OST p eriod, which
can reduce the overall power consumption of the
device.
Two-Speed Start-up mode is enabled by setting the
IESO bit of the CONFIG1H Con figuration register. With
Two-Speed Start-up enabled, the device will execute
instructions using the internal oscillator during the
Primary External Oscillator OST period.
When the system clock is set to the Primary External
Oscillator and the oscillator is configured for LP, XT or
HS modes, the device wil l not ex ec ute co de du ring the
OST period. The OST will suspend program execution
until 1024 oscilla tions are counted. Tw o-Spee d S tart-up
mode minimizes the delay in code execution by
operating from the internal oscillator while the OST is
active. The sys tem clock wi ll switch back to the Pr imary
External Oscillator after the OST period has expired.
Two-speed Start-up will become active after:
• Power-o n Reset (POR )
• Power-up Timer (PWRT), if enabled
• Wake-up from Sleep
The OSTS bit of the OSCCON register reports which
oscillator the device is currently using for operation.
The device is running fro m the os cill ator defined by the
FOSC bits of the CONFIG1H Configuration register
when the OSTS bit is set. The device is running from
the internal oscillator when the OSTS bit is clear.
2.13Fail-Safe Clock Monitor
The Fail-Safe Clock Monit or (FSC M) al lows the dev ic e
to continue operat ing sh ould the external osci ll ato r fai l.
The FSCM can detect oscillator failure any time after
the Oscillator Start-up Timer (OST) has expired. The
FSCM is enabled by setting the FCMEN bit in the
CONFIG1H Configuration register. The FSCM is
applicable to all external oscillator modes (LP, XT, HS,
EC and RC).
FIGURE 2-6:FSCM BLOCK DIAGRAM
2.13.1FAIL-SAFE DETECTION
The FSCM module detects a failed oscillator by
comparing the ex terna l oscil lator t o the FSC M samp le
clock. The sample clock is generated by dividing the
LFINTOSC by 64. See Figure2-6. Inside the fail
detector block is a latch. The external clock sets the
latch on each falling edge of the external clock. The
sample clock cle ars the latch on each ris ing edge of th e
sample clock. A f ail ure is detected when an ent ire hal fcycle of the sample clock elapses before the primary
clock goes low.
2.13.2FAIL-SAFE OPERATION
When the external clock fails, the FSCM switches the
device clock to an internal cl ock sourc e and set s the bit
flag OSCFIF of t he PIR 2 r egi ste r. 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.
Note:The system clock is normally at a much higher frequency than the sample clock. The r elative frequencies in
this example have been chosen for clarity.
(Q)
Test
TestTest
Clock Monitor Output
2.13.3FAIL-SAFE CONDITION CLEARING
The Fail-Safe condition is cleared by either one of the
following:
• Any Reset
• By toggli ng the SCS1 bit of the OSCCON register
Both of these conditions restart the OST. While the
OST is running, the device continues to operate from
the INTOSC selected in OSCCON. When the OST
times out, the Fail-Safe condition is cleared and the
device automatically switches over to the external clock
source. The Fail-Safe condition need not be cleared
before the OSCFIF flag is cleared.
2.13.4RES ET OR WAKE-UP FROM SLEEP
The FSCM is designed to detect an oscillator failure
after the Oscillator Start-up Timer (OST) has expired.
The OST is used after waking up from Sleep and after
FIGURE 2-7:FSCM TIMING DIAGRAM
any type of Reset. The OST is not used with the EC or
RC Clock modes so that the FSCM will be active as
soon as the R eset or wake- up has complet ed. When
the FSCM is enabled, the Two-Speed Start-up is also
enabled. Therefore, the device will always be executing
code while the OST is operating.
Note:Due to the wide range of oscillator start-up
times, the Fail-Safe circuit is not active
during oscillator start-up (i.e., after exiting
Reset or Sleep). After an appropriate
amount of time, the user should check the
OSTS bit of the OSCCON register to verify
the oscillator start-up and that the system
clock switchover has successfully
completed.
TABLE 2-6:SUMMARY OF REGISTERS ASSOCIATED WITH CLOCK SOURCES
Legend:x = unknown, u = unchanged, – = unimplemented locations read as ‘0’. Shaded cells are not used by oscillators.
Note 1:Other (non Power -u p) R esets include MCLR
There are three types of memory in PIC18 Enhanced
microcontroller devices:
• Program Memory
• Data RAM
• Data EEPROM
As Harvard architecture dev ices, the dat a and progra m
memories use separate busses; this allows for concurrent access of the two memory spaces. The data
EEPROM, for practical purposes, can be regarded as
a peripheral device, since it is addresse d and accessed
through a set of control registers.
Additional detailed information on the operation of the
Flash program memory is provided in Section 4.0“Flash Program Memory”. Data EEPROM is
discussed s eparately in Section 5.0 “Data EEPROM
Memory”.
3.1Program Memory Organization
PIC18 microcontrollers implement a 21-bit program
counter, which is capable of addressing a 2-Mbyte
program memory sp ace. Accessi ng a loca tion betwee n
the upper boundary of the physically implemented
memory and the 2-Mbyte address will return all ‘0’s (a
NOP instruction).
This family of devices contain the following:
• PIC18F13K50: 8 Kbytes of Flash Memory, up to
4,096 single-word instructions
• PIC18F14K50: 16 Kbytes of Flash Memory, up to
8,192 single-word instructions
PIC18 devices have two interrupt vectors and one
Reset vector. The Reset vector address is at 0000h
and the interrupt vector addresses are at 0008h and
0018h.
The program memory map for PIC18F1XK50/
PIC18LF1XK50 devices is shown in Figure 3-1.
Memory block details are shown in Figure 24-2.
FIGURE 3-1:PROGRAM MEMORY MAP AND STACK FOR PIC18F1XK50/PIC18LF1XK50
The Program Counter (PC ) specifies the address of th e
instruction to fetch for execu tion. The PC is 21 bits wide
and is contained in three separate 8-bit registers. The
low byte, known as the PCL register, is both readable
and writable. The high byt e, or PCH re gister, contains
the PC<15:8> bits; i t is not directly re adable or writ able.
Updates to the PCH register are perfo rmed through the
PCLATH register. The upper byte is called PCU. This
register contains the PC<20:16> bits; it is also not
directly readable or writable. Updates to the PCU
register are performed through the PCLATU register.
The contents of PCLATH and PCLATU are transferred
to the program counter by any operation that writes
PCL. Similarly, the upper two bytes of the program
counter are transferred to P CLATH and PCLATU b y an
operation that reads PCL. This is useful for computed
offsets to the PC (see Section 3.1.4.1 “ComputedGOTO”).
The PC addresses bytes in the program memory. To
prevent the PC from becoming misaligned with word
instructions, the Least Significant bit (LSb) of PCL is
fixed to a value of ‘0’. The PC increments by 2 to
address sequential instructions in the program memory.
The CALL, RCALL, GOTO and program branch
instructions write to the program counter directly. For
these instructions, the contents of PCLATH and
PCLATU are not transferred to the program counter.
3.1.2RETURN ADDRESS STACK
The return address s tack allows any co mb ination of up
to 31 program calls and interrupts to occur. The PC is
pushed onto the stack when a CALL or RCALL
instruction is execut ed or an interrupt is Acknow ledged.
The PC value is pulled off the stack on a RETURN,RETLW or a RETFIE instruct ion. PC LATU and PCLATH
are not affected by any of the RETURN or CALL
instructions.
The stack operates as a 31-word by 21-bit RAM and a
5-bit Stack Pointer, STKPTR. The stac k space is not
part of either program or da ta sp ace. The Stack Point er
is readable and writable and the address on the top of
the stack is readable and writable through the Top-ofStack (TOS) Special File Registers. Data can also be
pushed to, or popped from the stack, using these
registers.
A CALL type instru ctio n cau ses a pu sh ont o the stack;
the Stack Pointer is first incremented and the location
pointed to by the Stack Pointer is written with the
contents of the PC (already pointing to the instruction
following the CALL). A RETURN type instruction causes
a pop from the stack; the contents of the location
pointed to by the STKPTR are transferred to the PC
and then the Stack Pointer is decremented.
The Stack Pointer is initialized to ‘00000’ after all
Resets. There is no RAM associated with the location
corresponding to a Stack Pointer value of ‘00000’; this
is only a Reset value. Stat us bit s in dic ate if the stack is
full or has overflowed or has underflowed.
3.1.2.1Top-of-Stack Access
Only the top of the return address stack (TOS) is readable
and writable. A set of three registers, TOSU:TOSH:TOSL,
hold the contents of the stack location pointed to by the
STKPTR register (Figure 3-2). This allows users to
implement a software stack if necessary. After a CALL,RCALL or interrupt, the software can read the pushed
value by reading the TOSU:TOSH:TOSL registers. These
values can be placed on a user defined software stack. At
return time, the software can return these values to
TOSU:TOSH:TOSL and do a return.
The user must disable the global interrupt enable bits
while accessing the stack to prevent inadvertent stack
corruption.
FIGURE 3-2:RETURN ADDRESS STACK AND ASSOCIATED REGISTERS
The STKPTR register (Register3-1) contains the S tac k
Pointer value, the STKFUL (stack full) bit and the
STKUNF (stack unde rflow) bits. The va lue of the Stack
Pointer can be 0 through 31. The Stack Pointer increments before values are pushed onto the stack and
decrements after values are popped off the stack. On
Reset, the Stack Pointer value will be zero. The user
may read and wri te the Stack Pointer v alue. This f eature can be used by a Real-Time Operating System
(RTOS) for return stack maintenance.
After the PC is pu sh ed ont o the s ta ck 31 time s (witho ut
popping any values off the stack), the STKFUL bit is
set. The STKFUL bit is cleared by software or by a
POR.
The action that takes place when the stack becomes
full depends on the state of the STVREN (Stack Overflow Reset Enable) Configuration bit. (Refer to
Section 24.1 “Configuration Bits” for a description of
the device Configuration bits.) If STVREN is set
(default), the 31st push will push the (PC + 2) value
onto the stack, set the STKFUL bit and reset the
device. The STKFUL bit will remain set and the Stack
Pointer will be set to zero.
If STVREN is cleared, the STKFUL bi t will be set on the
31st push and the Stack Pointer will increment to 31.
Any additional pushes will not overwrite the 31st push
and STKPTR will remain at 31.
When the stack has been popped enough times to
unload the stac k, the next pop will ret urn a value of zero
to the PC and sets the STKUNF bit, while the Stack
Pointer remains at zero. The STKUNF bit will remain
set until cleared by software or until a POR occurs.
Note:Returning a value of zero to the PC on an
3.1.2.3PUSH and POP Instructions
Since the Top-of-Stack is readable and writable, the
ability to push value s on to the st ac k an d pul l values off
the stack without disturbing normal program execution
is a desirable feature. The PIC18 instruction set
includes two instructions, PUSH and POP, that permit
the TOS to be manipulated under software control.
TOSU, TOSH and T OS L can be m odifie d to plac e dat a
or a return address on the stack.
The PUSH instruction places the current PC value onto
the stack. This increments the Stack Pointer and loads
the current PC value onto the stack.
The POP instruction discards the current TOS by decrementing the Stack Pointer. The previous value pushed
onto the stack then becomes the TOS value.
REGISTER 3-1:STKPTR: STACK POINTER REGISTER
underflow has the effect of vectoring the
program to the Reset vector, where the
stack conditions can be verified and
appropriate actions can be taken. This is
not the same as a Reset, as the contents
of the SFRs are not affected.
R/C-0 R/C-0U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
STKFUL
bit 7bit 0
Legend:
R = Readable bitW = Writable bitU = UnimplementedC = Clearable only bit
-n = Value at POR‘1’ = Bit is set‘0’ = Bit is clearedx = Bit is unknown
bit 7STKFUL: Stack Full Flag bit
bit 6STKUNF: Stack Underflow Flag bit
bit 5Unimplemented: Read as ‘0’
bit 4-0SP<4:0>: Stack Pointer Location bits
Note 1:Bit 7 and bit 6 are cleared by user software or by a POR.
(1)
STKUNF
1 = Stack became full or overflowed
0 = Stack has not become full or overflowed
1 = Stack und erfl ow occurred
0 = Stack underflow did not occur
Device Resets on stack overflow and stack underflow
conditions are enabled by setting the STVREN bit in
Configuration Register 4L. When STVREN is set, a ful l
or underflow will set the appropriate STKFUL or
STKUNF bit and then cause a device Reset. When
STVREN is cleared, a full or underflow condi tion will set
the appropriate STKFUL or STKUNF bit but not cause
a device Reset. The STKFUL or STKUNF bits are
cleared by the user software or a Power-on Reset.
3.1.3FAST REGISTER STACK
A fast register stack is provided for the Status, WREG
and BSR registers, to provide a “fast return” option for
interrupts. The stack for each register is only one level
deep and is neither readable nor writable. It is loaded
with the current value of the corresponding register
when the processor vectors for an interrupt. All interrupt sources will push values into the stack registers.
The values in the registers are then loaded back into
their associated registers if the RETFIE, FAST
instruction is used to return from the interrupt.
If both low and high priority interrupts are enabled, the
stack registers cannot be used reliably to return from
low priority interrupts. If a high priority interrupt occurs
while servicing a low priori ty interrupt, the stack register
values stored by the low priority interrupt will be
overwritten. In these cases, users must save the key
registers by software during a low priority interrupt.
If interrupt priority is not used, all interrupts ma y use the
fast register stack for returns from interrupt. If no
interrupts are used, the fast register stac k can be used
to restore the Status, WREG and BSR registers at the
end of a subroutine call. To use the fast register stack
for a subroutine call, a CALL label, FAST instruction
must be executed to save the Status, WREG and BSR
registers to the fast register stack. A RETURN, FAST
instruction is then executed to restore these registers
from the fast register stack.
Example 3-1 shows a source code example that uses
the fast register stack during a subroutine call and
return.
There may be programming situations that require the
creation of data structures, or look-up tables, in
program memory. For PIC18 devices, look-up tables
can be implemented in two ways:
• Computed GOTO
• Table Reads
3.1.4.1Computed GOTO
A computed GOTO is accompli shed by adding an offset
to the program counter. An example is shown in
Example 3-2.
A look-up table can be formed with an ADDWF PCL
instruction and a group of RETLW nn instructions. The
W register is loaded with an of fs et into the table before
executing a call to tha t t a ble . The first instruction o f th e
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 2 (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.
EXAMPLE 3-2:COMPUTED GOTO USING
AN OFFSET VALUE
3.1.4.2Table Reads and Table Writes
A better method of storing data in program memory
allows two bytes of dat a to be stored in each instruction
location.
Look-up table data may be stored two bytes per program word by using table reads and writes. The Table
Pointer (T BLPTR) register s pecifies the byt e address
and the Table Latch (TABLAT) register contains the
data that is read from or written to program memory.
Data is transferred to or from program memory one
byte at a time.
Table read and table write operations are discussed
further in Section 4.1 “Table Reads and Table
Writes”.
Loading...
+ 384 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.