PIC18F to PIC24F Migration: An Overview

PIC18F to PIC24F Migration: An Overview
INTRODUCTION
The PIC24F architecture specification was created as
a powerful extension of Microchip’s existing RISC
microcontroller portfolio. By giving users an even
greater range of options for computational power and
rich peripheral sets, it allows users to grow their applications. At the same time, the architecture was tailored
to keep as much of the existing PICmicro® MCU feature
set and nomenclature as possible, making it easy for
applications to make the jump.
This migration document highlights the similarities and
differences between the PIC18F and PIC24F device
families, and shows the general principles for migrating
PIC18F applications to PIC24F devices. Throughout
this document, it is assumed that the application to be
ported is based on a member of one of the later PIC18F
device families, such as the popular PIC18F8722
family, with a complete feature set and the latest
version of nanoWatt Technology of all PIC18F devices.
The target device is assumed to be in the
PIC24FJ128GA general purpose family, which is the
first generation of PIC24F general purpose devices.
However, the general guidelines represented here can
be applied to migrating any PIC18F device-based
application to a PIC24F platform.
To present such a comprehensive overview, it was
decided to divide the material into two major sections,
each with a slightly different approach. The first section
compares and contrasts the core architectural differences between the families, highlighting the major
differences. Because the changes can greatly change
the overall structure of an application, the focus is not
on how to do specific tasks, but what larger changes
need to be considered in migration. The specific modifications required are left to the user’s professional
judgment.
The second section discusses the peripherals that
PIC18F and PIC24F architectures have in common.
Like the core, module features are compared. Here, it
is possible to also compare the steps needed to make
each module run and give task-specific information.
Only those peripheral features that are available in both
architectures are presented here.
Users are encouraged to review the PIC24F device
data sheets for information on the new modules, and
how they may be used in applications that are
candidates for migration.
© 2006 Microchip Technology Inc.
Note 1: This device has been designed to
perform to the parameters of its data
sheet. It has been tested to an electrical
specification designed to determine its
conformance with these parameters. Due
to process differences in the manufacture
of this device, this device may have different performance characteristics than its
earlier version. These differences may
cause this device to perform differently in
your application than the earlier version of
this device.
2: The user should verify that the device
oscillator starts and performs as
expected. Adjusting the loading capacitor
values and/or the oscillator mode may be
required.
Contents
PIC24F Core Architecture .......................................... 2
CPU Core............................................................ 2
Instruction Set ..................................................... 4
Memory Map and Program Memory ................... 7
Data Memory Space ......................................... 11
Resets and Start-up Timing............................... 13
Interrupt Controller ............................................ 17
Oscillator ........................................................... 19
Power-Saving Features .................................... 23
Watchdog Timer (WDT) .................................... 25
Device Integration Features.............................. 26
PIC24F Peripheral Set ............................................. 27
I/O Ports ............................................................ 27
Timers (Timer1, Timer2/3 and Timer4/5)........... 29
Capture/Compare/PWM (CCP and ECCP)....... 31
Serial Peripheral Interface (SPI) ....................... 34
Inter-Intergrated Circuit™ (I2C™)..................... 36
Universal Asynchronous
Receiver/Transmitter (UART)............................ 38
10-Bit A/D Converter......................................... 41
Comparator and Comparator Voltage
Reference Modules........................................... 43
Summary.................................................................. 45
References ............................................................... 45
Mapping PIC18F to PIC24F Instructions.................. 47
DS39764A-page 1
PIC24F CORE ARCHITECTURE
CPU Core
stack implementation and core registers are very
different from PIC18F implementations. Other hardware features have been added to enhance processing
performance. Changes are summarized in Table 1.
Aside from its 16-bit data size, the PIC24F architecture
is significantly different from the PIC18F architecture.
The instruction word size, instruction clocking scheme,
TABLE 1:
COMPARISON OF PIC18F AND PIC24F CPU CORE FEATURES
Feature
PIC18F
PIC24F
16 bits
24 bits
Instruction Clocking
TCY = FOSC/4
TCY = FOSC/2
Working Registers
1 (W, WREG)
16 (W0-W15)
One (STATUS)
Two (STATUS and CORCON)
Hardware, 31 levels
Software
Instruction Size
Status Registers
Stack
Hardware Multiplier
8x8
17 x 17
No
Hardware assisted division using DIV and REPEAT
Single bit, left or right, rotation only
Barrel shifting up to 15 bits, left or right, shift or rotate
No
Yes
Hardware Divider
Bit Shifting/Rotation
Program Space Visibility
(PSV)
INSTRUCTION SIZE
All PIC18F devices use a 16-bit (single-word) instruction. PIC24F devices use a 24-bit instruction. A more
detailed discussion on instructions is presented in the
“Instruction Set” section.
INSTRUCTION CLOCKING
PICmicro microcontrollers execute instructions at a rate
that is a simple fraction of the clock speed, designated
as TCY. For the most part, PIC18F and PIC24F devices
perform most instructions with a fetch step and an
FIGURE 1:
execution step of 1 TCY each. For PIC18F devices, each
TCY interval represents 4 clock cycles, with the PC being
incremented on falling edges. In contrast, the TCY for
PIC24F devices is 2 clock cycles, with the PC being
incremented on leading clock edges. The differences in
instruction pipelining are shown in Figure 1. This
difference in instruction execution is one of the biggest
differences between the two architectures, and needs to
be taken into consideration for any peripherals that use
the instruction clock speed as a base for their timing.
COMPARISON OF PIC18F AND PIC24F INSTRUCTION EXECUTION PIPELINES
Device Clock
PIC18F Program Counter
PIC18F Execution Pipeline
PIC24F Program Counter
PC
Execute INST (PC – 2)
Fetch INST (PC)
PC – 2
Fetch PC – 2
PIC24F Execution Pipeline
DS39764A-page 2
PC + 2
PC
Execute PC – 2
Fetch PC
Execute INST (PC)
Fetch INST (PC + 2)
PC + 2
Execute PC
Fetch PC + 2
PC + 4
PC + 4
Execute INST (PC + 2)
Fetch INST (PC + 4)
PC + 6
PC + 8
Execute PC + 2
Fetch PC + 4 Execute PC + 4
Fetch PC + 6 Execute PC + 6
Fetch PC + 8
© 2006 Microchip Technology Inc.
W REGISTERS
MULTIPLIER
All PIC18F devices have a single working register,
known as W (sometimes, WREG). W is used as an
operand in almost all instructions, and is either the
source or destination for all instructions.
Both PIC18F and PIC24F devices include a dedicated
hardware multiplier in their ALUs. The PIC18F multiplier is an 8 x 8 unit, capable of supporting signed,
unsigned and mixed-sign operations. The PIC24F
multiplier is a 17 x 17 unit and can also support signed,
unsigned and mixed-signed operations. PIC18F multipliers can perform 8-bit unsigned operations in a single
instruction cycle, while PIC24F multipliers can perform
a 16-bit by 16-bit signed or mixed operation in a single
cycle.
The PIC24F architecture increases the number of
working registers to 16, named W0 through W15. Most
instructions allow for the selection of any one of these
as source and/or destination for the operation, although
several instructions only allow the use of WREG (W0).
Several of the registers have special functions. W0 and
W1 are the working registers for the hardware-assisted
divider, and are required during divide (DIV) instructions. W2 and W3 are used by the MUL instruction as
result registers. W14 and W15 are used for a Frame
Pointer and Stack Pointer, respectively.
STATUS REGISTERS
PIC18F devices have one ALU status register, named
STATUS. It contains the normal flag bits for binary
digital math operations: Carry, Digit Carry, Zero state,
Negative state and Overflow. All flags are writable as
well as readable.
PIC24F devices use two status registers, which provide
these ALU flags as well as CPU control bits. The
STATUS register contains the standard ALU flags
already listed; it also contains the RA flag to indicate an
active Repeat loop and the IPL2:IPL0 bits to set the
CPU interrupt priority level.
In addition to STATUS, PIC24F devices also have the
CORCON register. It contains the IPL3 bit, which
effectively enables or disables peripheral interrupts and
the PSV bit, which enables the Program Space
Visibility feature (see “Data Memory Space” on
page 11 for more information).
STACK
PIC18F devices implement the program counter stack
in hardware. The stack has a total of 32 levels, with only
the top layer being accessible to software. Stack
pushes and pops are executed as instructions. An
optional, non-maskable hardware trap (Reset) can be
enabled for stack overflow and underflow events.
DIVIDER
PIC18F devices do not provide any hardware support
for division. Typical divide operations (signed 16/16 or
16/8) performed, using the standard PIC18F math
library, can take up to 38 instruction cycles to execute.
PIC24F devices do not have a hardware divider per se.
Instead, the PIC24F ALU is configured in hardware to
support a divide instruction, DIV. Together with the
REPEAT control instruction, DIV allows the ALU to
automatically execute the iterative division process as
a simple sequence instead of a long algorithm. DIV
supports several forms of 32/16 and 16/16 divides,
including fixed-point and fractional, and performs
executions in 19 instruction cycles.
BIT SHIFTS AND ROTATES
The PIC18F ALU is capable of performing single bit
position rotations, with or without carry, in either direction. Any byte operation that requires rotations of more
than one position will require an equal number of
instruction cycles to perform the operation. Word length
operations are potentially longer and more complex, as
bits need to be carried from one byte of data to another.
The PIC24F ALU is equipped with a barrel shifter that
allows data to be either rotated or shifted (without wraparound), with or without carry, in either direction. This
permits shifts of multiple bit positions in a single instruction cycle. Data can be rotated either as bytes for up to
7 bits at a time, or as words for up to 15 bits at a time.
In contrast, PIC24F devices implement a software
stack in data RAM. The stack starts at RAM address
0800h and grows towards higher addresses. W15
serves as the Stack Pointer and W14 is used as a
Frame Pointer for higher level language applications.
The upper limit of the stack is defined in software using
the SPLIM register. Stack Pointer underflow and
overflow traps are generated when the Stack Pointer is
decremented below 0800h, or above the limit set by
SPLIM.
© 2006 Microchip Technology Inc.
DS39764A-page 3
Instruction Set
The PIC24F instruction set architecture represents a
considerable extension of its PIC18F predecessor.
While barely larger in terms of base instructions, it
makes substitutions of selected instructions to
enhance the performance, while expanding the scope
TABLE 2:
of addressing modes and data type operations.
Through all of this, the PIC24F instruction set maintains
the highly orthogonal structure of previous PICmicro
architectures.
The main differences between the PIC18F and PIC24F
instruction sets are presented in Table 2.
COMPARISON OF MAJOR INSTRUCTION SET FEATURES
Feature
Instruction Size
Base Instructions
Supported Data Types
Operand Support
Addressing Modes
PIC18F
PIC24F
16 bits
24 bits
75
76
Byte
Byte, Word, Double Word
Up to binary (b = a + b)
Up to trinary (a + b = c)
Direct, Indirect (5)
Direct, Indirect (6)
Indirect Addressing Type
Uses FSR Pointer register sets; limit of
3 pointers
Uses any of the W registers as pointers with
instruction-based manipulation; limit of 16
Data Space Addressing
Short literal, limited to a single bank at
one time; full literal on few instructions
Short literal for entire Near Data Space;
indirect address for entire space
CHANGES FROM PIC18F INSTRUCTION SET
The PIC24F instruction set implements several
features that enhance performance for math operations, and extend the ability to handle high-level
languages with more complex stack and pointer
requirements. These are summarized in Table 3.
In addition, several PIC18F instructions do not have an
exact single instruction equivalent in the PIC24F architecture. Most of these instructions have either single or
pairs of PIC24F instructions that have similar effect, but
because of differences in the STATUS register, results
are not exactly equivalent. They are:
TABLE 3:
•
•
•
•
•
•
•
•
CPFSEQ
• INFSNZ
CPFSGT
• MOVSF
CPFSLT
• MOVSS
DCFSNZ
• PUSHL
DECFSZ
• SUBULNK
INCFSZ
• TSTFSZ
MOVFF (all modes except indirect to indirect)
SWAPF (all modes except with WREG)
Even with these changes, most PIC18F assembler
instructions have a single-cycle equivalent in the
PIC24F assembler. A comprehensive list is provided
in Appendix A: “Mapping PIC18F to PIC24F
Instructions”.
NEW OR SIGNIFICANTLY MODIFIED PIC24F INSTRUCTIONS
PIC24F Instruction
Description
DIV
Divide two numbers (signed or unsigned, 16/16 or 32/16)
LNK and UNLK
Link or unlink Frame Pointer (W14)
LSR and ASR
Logical or arithmetic shift right by 1 to 16 bits, by either a literal or variable value
MUL.SS, MUL.SU,
MUL.US
Specific instructions for multiplying signed and unsigned numbers
PUSH and POP
Both instructions now include source or destination arguments, allowing the stack to
store values other then the current PC
REPEAT
Repeat the next instruction a specified number of times
SL
Shift left by 1 to 16 bits by either a literal or variable value
DS39764A-page 4
© 2006 Microchip Technology Inc.
SUPPORTED DATA TYPES
PIC24F instructions are designed to be able to literally
address any register within the lowest 8 Kbytes of the
data space (also known as the Near Data Space). This
allows immediate access to all SFRs. Implemented
memory areas above the top of the Near Data Space
are accessible by indirect addressing, as described
below.
Aside from bit-oriented instructions, PIC18F
instructions operate exclusively on single byte data.
Any data that is longer than a single byte is handled by
concatenating bytes in the proper order.
As 16-bit devices, PIC24F instructions are designed to
handle data in terms of 16-bit words. In addition, most
instructions are capable of handling single byte and
double word (32-bit) data objects. Invoking this feature
is generally done by using the suffix “.b” (for bytes) or
“.d” (for double words) after the instruction mnemonic.
Data alignment within the memory space is automatically adjusted and maintained according to the data
type selected.
Indirect Addressing
PIC18F instructions perform indirect addressing
through pointers and virtual registers. Three 12-bit
pointers (FSR0 through FSR2) are loaded with
appropriate values; then, one of five virtual registers
associated with that pointer is used as an argument for
an instruction, either as an address or an offset for an
address. Depending on which of the registers is used,
the value of the pointer can also be automatically incremented or decremented. Only these three pointers and
their associated registers can be used for indirect
addressing.
OPERAND SUPPORT
The PIC18F instruction set supports both unary and
binary operations. That is to say, an instruction can
function with a single argument operating on the contents of one register (e.g., increment the WREG), or
with two arguments storing the results in one of the two
registers (e.g., adding the contents of a register to
WREG and storing the sum in WREG).
In contrast, PIC24F architecture increases the number
of options for the addressing mode. Any one of the W
registers can be used as a pointer for indirect addressing. Instead of using a virtual register name to determine
the pointer and its operation, the MPLAB® IDE
assembler language uses specific syntax conventions
to indicate when a W register is being used as a pointer
or offset, and what increment or decrement operation is
to be done to the register. The PIC24F Instruction Set
Architecture (ISA) also offers a pre-decrement option
not available with PIC18F. An additional feature of the
PIC24F increment/decrement options is how they work
with the data type specified by the instruction. If the
instruction is executed as a byte type instruction, the
register will be incremented or decremented by one.
This aligns the pointer to the next byte in memory which
is not always the next memory address. Word-oriented
instructions will increment or decrement the register by
two and maintain proper word alignment.
The PIC24F instruction set also supports trinary
operations; that is, an operation can have three arguments, specifying not only two operands but also an
independent address for the result. Trinary operations
are supported for most arithmetic and logic instructions.
ADDRESSING MODES
The biggest difference between the PIC18F and
PIC24F instruction sets is how the instructions specify
addresses in the data memory space. While the methods are equivalent, the PIC24F version allows more
options for more of its instructions.
Direct Addressing
While PIC18F instructions can directly address any
register in the data space, very few specify a full
address as part of the instruction. Instead, most use an
8-bit literal value to specify an address within one of
16 banks of 256 bytes within the space. The bank in
question is separately selected by the Bank Select
Register (BSR).
TABLE 4:
The differences between architectures in indirect
addressing modes and syntax are summarized in
Table 4. A comparison of how to use these addressing
modes is shown in Example 1.
INDIRECT ADDRESSING IN PIC18F AND PIC24F INSTRUCTION SETS
Indirect Addressing
Mode
PIC18F Virtual
Register Operand
PIC24F Equivalent
Syntax
Wn (or FSR)
After Byte
Instruction
After Word
Instruction
No Modification
INDFx
[Wn]
Wn = Wn
Wn = Wn
Pre-Increment
PREINCx
[++Wn]
Wn = Wn + 1
Wn = Wn + 2
Pre-Decrement
Post-Increment
N/A
POSTINCx
[--Wn]
[Wn++]
Wn = Wn – 1
Wn = Wn + 1
Wn = Wn – 2
Wn = Wn + 2
Post-Decrement
Register Offset
POSTDECx
PLUSWx
[Wn--]
[Wn + Wb]
Wn = Wn – 1
Wn = Wn
Wn = Wn – 2
Wn = Wn
© 2006 Microchip Technology Inc.
DS39764A-page 5
EXAMPLE 1:
COMPARISON OF INDIRECT ADDRESSING TECHNIQUES
Typical PIC18F Code Sequence:
LoopSetup
CopyLoop
MOVLW
LFSR
LFSR
MOVFF
DECFSZ
BRA
0x10, LoopCount
0, myArray0
1, myArray1
POSTINC0, POSTINC1
LoopCount, F
CopyLoop
;set up loop counter
;set up pointer 0
;set up pointer 1
;copy myArray1 to myArray0
;decrement loop counter
;loop
Equivalent PIC24F Code Sequence:
LoopSetup
CopyLoop
MOV
MOV
REPEAT
MOV
#myArray0, W0
#myArray1, W1
#15
[W1++], [W0++]
;set up pointer 0
;set up pointer 1
;loop 16 times
;copy array1 to array
generally when a register used as a destination for one
instruction is also an argument in an immediately
following instruction, and are listed in Table 5. The
PIC24F CPU core includes “look ahead” detection for
these RAW hazards, and introduces one or more stall
(NOP) cycles between instructions to avoid execution
errors.
RAW Dependencies
The increased flexibility in addressing modes creates a
few situations where Read-After-Write (or RAW)
dependencies may be created. RAW dependencies
exist when a variable needed for an instruction that is
being fetched stage has not been written back to the
register yet. These occur only in select situations,
TABLE 5:
SUMMARY OF READ-AFTER-WRITE DEPENDENCY RULES
Destination
Addressing Mode
Using Wn
Source
Addressing Mode
Using Wn
Required Stall
(CPU cycles added
to instruction time)
Direct
Direct
None
ADD.w
MOV.w
W0, W1, W2
W2, W3
Indirect
Direct
None
ADD.w
MOV.w
W0, W1, [W2]
W2, W3
Indirect
Indirect
None
ADD.w
MOV.w
W0, W1, [W2]
[W2], W3
Indirect
Indirect with
pre/post-modification
None
ADD.w
MOV.w
W0, W1, [W2]
[W2++], W3
Indirect with
pre/post-modification
Direct
None
ADD.w
MOV.w
W0, W1, [W2++]
W2, W3
Direct
Indirect
1
ADD.w
MOV.w
W0, W1, W2
[W2], W3
Direct
Indirect with
pre/post-modification
1
ADD.w
MOV.w
W0, W1, W2
[W2++], W3
Indirect
Indirect
1
ADD.w W0, W1, [W2]
MOV.w [W2], W3
; W2=04h (mapped W2)
Indirect
Indirect with
pre/post-modification
1
ADD.w W0, W1, [W2]
MOV.w [W2++], W3
; W2=04h (mapped W2)
Indirect with
pre/post-modification
Indirect
1
ADD.w
MOV.w
W0, W1, [W2++]
[W2], W3
Indirect with
pre/post-modification
Indirect with
pre/post-modification
1
ADD.w
MOV.w
W0, W1, [W2++]
[W2++], W3
DS39764A-page 6
Examples
(Wn = W2)
© 2006 Microchip Technology Inc.
Memory Map and Program Memory
The organization of the space and the location of
non-program memory features also differ somewhat,
and must be considered when porting an application.
Both PIC18F and PIC24F architectures use the same
general schema for their program memory spaces.
Aside from the self-evident differences in width,
PIC24F devices also incorporate a larger addressing
range and enhanced visibility features in data space.
TABLE 6:
The key differences between the memory organization
of PIC18F and PIC24F devices are presented in
Table 6.
COMPARISON OF PIC18F AND PIC24F PROGRAM MEMORY ARCHITECTURES
Feature
Organization
Total Addressable Range
PIC18F
PIC24F
16-bit, byte addressable
24-bit, word addressable
4 Mbytes (22-bit magnitude)
16 Mbytes (24-bit magnitude)
2 Mbytes (FFFFFh)
8 Mbytes (7FFFFFh)
Most devices
No
Maximum Available User Program Space
(upper boundary address)
Boot Block Support
Interrupt/Reset/Trap Vectors
00h, 08h, 18h
00h to 1FFh
300000h to 30000Fh
Last 2 implemented locations in
program memory
3FFFFE and 3FFFFFh
FF0000h and FF0002h
Configuration Word Locations
Device ID Locations
Since a PIC24F instruction is three bytes wide, the
Most Significant Byte of an instruction finds itself alone
in the most significant word of the instruction as it is
stored in memory. To maintain word alignment when
reading from, or writing to program memory, a
“phantom byte” of 00h is added before the MSB to give
it the proper word length (Figure 2). The value reflects
that this byte is not actually implemented in physical
program memory.
ORGANIZATION
The PIC18F program space is organized as 16-bit
words, but is addressable in terms of bytes. This
means that the upper or lower byte of any word can be
individually addressed by a pointer. To maintain word
alignment for code execution, the memory space is
aligned on the Least Significant Byte (LSB) of each
word, and the program counter increments by 2 during
normal execution.
Even with its word-aligned addressing, any single byte
within the program space can be individually read or
written. The PIC24F TBLRD and TBLWT commands are
extended to allow an individual upper or lower byte of
any word to be accessed. Keep in mind that the upper
byte of any upper word (odd address) will always be
00h, and cannot be written to, for reasons previously
discussed.
The PIC24F program space has a different, but parallel
structure. It is physically organized as 24 bits wide, but
is addressed as 16-bit words. Thus, an instruction is
considered to be two words, not 3 bytes. Each word
can be individually addressed with even addresses
representing the lower word of an instruction and odd
addresses the upper word. To maintain instruction
alignment, the memory space is aligned on even
words; the program counter increments by 2 during
normal execution.
FIGURE 2:
MSW
Address
PIC24F PROGRAM MEMORY ORGANIZATION
Most Significant Word
23
000001h
000003h
000005h
000007h
16
8
© 2006 Microchip Technology Inc.
0
000000h
000002h
000004h
000006h
00000000
00000000
00000000
00000000
Program Memory
‘Phantom’ Byte
(read as ‘0’)
PC Address
(LSW Address)
Least Significant Word
Instruction Width
DS39764A-page 7
ADDRESSABLE AND USER-AVAILABLE RANGE
Both architectures base the size of their program space
entirely on the size of the program counter. PIC18F
devices use a 22-bit program counter for a total
addressable space of 4 Mbytes. PIC24F devices use a
24-bit counter for a total range of 16 Mbytes.
In addition, both architectures reserve the upper half of
the addressable program space as “configuration
space”; this is largely unimplemented addresses, with
several implemented areas for device configuration,
identification and programming. Thus, the total maximum available space for program memory is 2 Mbytes
for PIC18F devices, and 8 Mbytes for PIC24F devices.
It is worth noting that no device in either family entirely
implements the full available range of program memory
space.
The program spaces for the two architectures are
shown in comparison in Figure 3.
COMPARISON OF PIC18F AND PIC24F PROGRAM MEMORY SPACES(1)
FIGURE 3:
PIC18F Family(2)
PIC24F Family
000000h
Reset Vector
000008h
000018h
Low/High Interrupt Vectors
GOTO Instruction
Reset Address
Interrupt Vector Table
Reserved
Alternate Vector Table
User Flash
Program Memory
000000h
000002h
000004h
0000FEh
000100h
000104h
0001FEh
000200h
User Flash
Program Memory
(up to 128K words)
(up to 128 Kbytes)
Program Memory Area
Device Config Words
(Top of PM)
Unimplemented
Unimplemented
(Read ‘0’s)
(Read ‘0’s)
(Top of PM)-4
(Top of PM)
7FFFFEh
800000h
1FFFFEh
200000h
Reserved
2FFFFFh
300000h
30000Fh
300010h
Device Configuration
Registers
Configuration Space
Reserved
Reserved
3FFFFEh
3FFFFFh
Note 1:
2:
DEVID (2)
DEVID (2)
FEFFFEh
FF0000h
FFFFFFh
Memory areas are not shown to scale. Scales differ for PIC18F and PIC24F maps.
Only the elements of program space common to all PIC18F devices are shown. Later features, such as Boot
Blocks and Flash Configuration Words (PIC18FXXJ Flash devices only) have been omitted for clarity.
DS39764A-page 8
© 2006 Microchip Technology Inc.
INTERRUPT/RESET/TRAP VECTORS
FLASH MEMORY OPERATION
In PIC18F devices, three addresses at the bottom of
program memory are reserved for hardware vectors.
Application code for these devices places destination
addresses for hardware Resets, high-level Interrupt
Service Routines (ISRs) and low-level ISRs in 00h, 08h
and 18h, respectively.
Many PIC18F and PIC24F devices use selfprogrammable Flash technologies to implement
program memory. The general schema of memory
operations and how they are performed are very
similar, such as:
In PIC24F devices, the reserved range is much larger:
from 00h to 1FFh. Location 00h is still reserved for the
hardware Reset vector. Addresses 06h through FFh
are reserved for the main interrupt vector table, which
contains 118 separate hardware address vectors
(including 8 non-maskable hardware traps). Addresses
100h through 1FFh contain an alternate interrupt vector
table, also of 118 hardware address vectors, that is
reserved for use in Emulation mode.
CONFIGURATION WORDS AND DEVICE IDS
Both PIC18F and PIC24F devices locate their factory
device IDs in the configuration space above the program
memory area. PIC18F Configuration registers are also
located in configuration space, whereas PIC24F Configuration registers are located in program memory.
PIC18F devices locate their Configuration Words at
300000h through 30000Fh, and device IDs at 3FFFFEh
and 3FFFFFh. PIC24F devices locate their Configuration Words at the last two addresses in implemented
program memory, and device IDs at FF0000h and
FF0002h.
BOOT BLOCK SUPPORT
Many PIC18F devices allow users to reserve and
independently code-protect a small area at the base of
the user program space (depending on the device,
between 1 and 4K words) for an independent
bootloader program.
As of this writing, a similar feature is not implemented
in PIC24F devices. This absence does not rule out the
use of bootloader programs; it only means that a dedicated and separately protectable block of program
memory is not available.
EXTERNAL MEMORY MAPPING
The PIC18F architecture supports the use of external
memory devices as program memory. This feature,
known as the External Memory Interface (EMI), is
actually implemented as part of the CPU core’s address
bus management system. The EMI allows the program
address bus to address and retrieve data from off-chip
devices as if they were part of the 2 Mbyte, on-chip program space. Multiple operating modes are implemented,
such as using off-chip memory exclusively as program
memory. Because of the I/O requirements, the EMI is
only available on PIC18F devices with 80 or more pins.
• the ability to self-program some or all of the Flash
memory during run time
• the ability to program or reprogram a device
already embedded in the application through a
5-wire serial interface (In-Circuit Serial
Programming™ or ICSP™), or during device
operation (Enhanced In-Circuit Serial
Programming or EICSP)
• the use of erase and write blocks of defined sizes,
and erase-before-write programming algorithms
• the self-timed write process after filling a write
buffer block, which stalls CPU execution for one
or more TCY
Only those differences that may impact the migration of
an application are noted here.
Register and Bit Nomenclature
PIC18F and PIC24F devices all use a single control
register and a single unlock register to control Flash
operations. Some register and bit names, as shown in
Table 7, change between the architectures.
TABLE 7:
FLASH CONTROL REGISTERS
AND BITS IN PIC18F AND
PIC24F ARCHITECTURES
Flash Register or Bit
Description
PIC18F
PIC24F
Flash Control Register
EECON1
NVMCON
Flash Key Register
EECON2
NVMKEY
EEPROM Data Register
EEPGD
—
PM/EEPROM Destination
Select bit
CFGS
—
Flash Operation Enable
bit
FREE
ERASE
The key Flash control bits (WR, WREN and WRERR)
have the same names and functions in both
architectures.
As of this writing, PIC24F devices do not offer this
feature. Program size is limited to that of on-chip
memory.
© 2006 Microchip Technology Inc.
DS39764A-page 9
Flash Addressing
Reading Program Memory in Run Time
In PIC18F devices, the target address of Flash operations is specified by a 22-bit Table Pointer register,
TBLPTR, that is composed of 3 single byte SFRs
(TBLPTRL, TBLPTRH and TBLPTRU). All table read
and write instructions use this pointer to address the
entire memory space; however, only table read operations are allowed when the configuration space is
addressed (TBLPTR<22> = 1).
PIC18F devices can retrieve data from the program
space using the table read command. Data is retrieved
one byte at a time.
In PIC24F devices, the target address for Flash
operations is specified by two registers: the 8-bit Table
Page register (TBLPAG) which specifies a 64 Kbyte
area of the program memory space, and one of the W
registers to specify an exact address within a designated page. The value of the two registers together
forms the Effective Address or EA. As with PIC18F
devices, only read operations are allowed when the
configuration space is addressed (TBLPAG<8> = 1).
Data Size in Table Operations
Table operations in the PIC18F architecture are all
byte-oriented. All bytes in the memory space are individually addressable, with the particular byte (high or
low) defined by an odd or even address argument.
PIC24F devices can also retrieve data with table reads,
either one word or one byte at a time. In addition, they
can also use the PSV feature to map a 32 Kbyte block
of the program space into the top half of the data space
on a read-only basis. This is further explained in the
“Data Memory Space” section on page 11.
DATA EEPROM
Many PIC18F devices offer on-chip, nonvolatile data
memory for the storage of constant or slowly changing
application data. These EEPROM areas are readable
and writable, and are controlled by the same registers
used to operate the Flash program memory.
As of this writing, PIC24F devices do not incorporate
data EEPROMs in any devices. Users requiring a place
to keep nonvolatile application data can use an unused
block of program memory for this purpose. Data can be
accessed and modified using table read and write
operations, and read using PSV mode.
As already mentioned, table operations in the PIC24F
architecture can be byte or word-oriented. In the latter,
the specific byte (high or low) is defined by the
instruction mnemonic itself (TBLRDH/TBLRDL and
TBLWTH/TBLWTL). The byte option can also be specified to specifically operate on either byte of any given
word. Keep in mind, of course, that operations on the
upper byte of the upper word will either return 00h, or
have no effect, for reasons previously described.
DS39764A-page 10
© 2006 Microchip Technology Inc.
Data Memory Space
The PIC24F data memory space is substantially
different than that found in PIC18F devices. The size,
organization and method of access have all been
changed. The key differences between the two
architectures are shown in Table 8.
TABLE 8:
COMPARISON OF MAJOR DATA MEMORY SPACE FEATURES
Feature
Addressing Range (size)
Segmentation
Special Access Areas
PIC24F
12 bits (4,096 byte maximum)
16 bits (65,536 byte maximum)
Linear range, banked addressing; linear
addressing for some instructions
Linear range, no segmentation
Access RAM (bottom of lowest bank,
top of highest bank)
Near Data Space (bottom 8K)
SFR Location
Stack
PIC18F
Top half of highest bank
Distributed throughout Near Memory
Hardware, 32 levels deep, not mapped
in memory space
Soft stack starting at 0800h, user-configurable
end of stack
Byte (direct or indirect)
Double word, word or byte (all direct or indirect)
No
Yes, into top half of data space
Data Access
Hardware PSV
ADDRESS RANGE AND SEGMENTATION
SPECIAL ACCESS AREAS
All PIC18F devices have a data memory space with a
12-bit address range. In theory, the data space has a
linear range and can be addressed directly by several
of the PIC18F instructions. For the most part, however,
the data space functions as a segmented space. Since
most PIC18F instructions can only contain the 8 lower
bits of a data address, the data space is effectively
divided into 16 banks of 256 bytes each. The exact
memory location is also determined by the Bank Select
Register (BSR) which contains the upper 4 bits of the
address. The entire range of the data space is
4 Kbytes, of which some or all, may be implemented as
data RAM.
The effective segmentation of the PIC18F data space
makes it necessary for some way of accessing SFRs
and critical application data quickly. This is done by
creating a virtual data space bank, known as the
Access RAM, which is composed of the lower half of
the lowest bank and the upper half of the upper bank.
This scheme makes certain that the SFR space is
always available, regardless of the contents of the
BSR. Use of the Access RAM is included as an argument in PIC18F assembly language and is hard-coded
in the instruction’s opcode.
In contrast, the PIC24F data space is implemented as
a single linear range of addresses. Most instructions
can directly access any address within the first
8 Kbytes of the range without the use of bank selection.
The entire data space range is 64 Kbytes. Of this, only
the first 32 Kbytes are implementable as data RAM; the
upper 32 Kbytes are a virtual memory space that is
used for PSV (see “Program Space Visibility (PSV)”
on page 11).
A comparison of the data space maps is shown in
Figure 4.
SFR LOCATIONS
In PIC18F architecture, all SFRs are located at the very
top of data memory, generally from addresses F60h to
FFh, as a more or less contiguous block.
In PIC24F architecture, SFRs reside in the lowest
2 Kbytes of the memory space, from addresses 0000h
through 07FFh.
© 2006 Microchip Technology Inc.
In the PIC24F data space, the first 8 Kbytes of data
RAM between the addresses of 0000h and 1FFFh are
referred to as the Near Data Space. Addresses in this
space, including all SFRs, are accessible directly from
all direct memory access instructions.
PROGRAM SPACE VISIBILITY (PSV)
Both PIC18F and PIC24F architectures allow for the
direct access of information stored in the program
memory space as data. For PIC18F, data from program
memory is read in the data space by use of TBLRD
commands, with access being done on a word-by-word
basis.
For PIC24F devices, program memory is also made
available through hardware-enabled Program Space
Visibility (PSV). When used, any 32 Kbyte segment of
the program space may be mapped into the upper
32 Kbyte area of the data space on a read-only basis.
PSV uses a hardware register, PSVPAG, to define which
page of program memory will be mapped. The PSV is
controlled in software by the PSV bit (CORCON<2>).
DS39764A-page 11
FIGURE 4:
COMPARISON OF PIC18F AND PIC24F DATA SPACE MAPS
PIC18F Devices
00h
Bank 0
Bank 1
Bank 2
Bank 3
Bank 4
Bank 5
Bank 6
Bank 7
Bank 8
Bank 9
Bank 10
Bank 11
Bank 12
Bank 13
Bank 14
Bank 15
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
00h
FFh
Access RAM
GPR
GPR
GPR
GPR
PIC24F Devices
000h
05Fh
060h
0FFh
100h
0000h
GPR
GPR
GPR
GPR
GPR
GPR
GPR
GPR
GPR
GPR
SFR
07FFh
0800h
1FFh
200h
1FFFh
2000h
2FFh
300h
3FFh
400h
Data RAM Area
(implementation varies
with device)
GPR
GPR
SFR Area
Near
Data
Space
4FFh
500h
5FFh
600h
6FFh
700h
7FFh
800h
Access Bank
00h
Access RAM Low 5Fh
Access RAM High 60h
(SFRs)
FFh
7FFFh
8000h
8FFh
900h
9FFh
A00h
AFFh
B00h
BFFh
C00h
PSV Space
CFFh
D00h
DFFh
E00h
EFFh
F00h
F5Fh
F60h
FFFh
FFFFh
Bank determined by Bank Select Register (BSR<3:0>)
Note:
GPR = General Purpose RAM. Memory spaces are shown at different relative scales.
PROGRAM STACK
DATA ACCESS
As discussed in the “CPU Core” on page 2, PIC18F
devices use a hardware stack for program flow
management. The stack is not memory mapped and
has a fixed size of 32 levels.
As discussed in the “Instruction Set” section on
page 4, PIC18F architecture can only work with data in
terms of bytes. In contrast, the PIC24F data space,
organized in 2-byte words, allows many instructions to
work with data as bytes, words or double words
(32 bytes). The data type is determined by the
argument used with the instruction.
PIC24F architecture uses a stack implemented entirely
in mapped data space. The stack begins at 0800h in
Near Data Memory, just outside of the SFR area, and
grows towards higher memory addresses, using the
W15 register as a dedicated pointer. The size of the
stack is entirely user-defined with the SFR register,
SPLIM, which sets the address for stack overflow traps.
DS39764A-page 12
© 2006 Microchip Technology Inc.
Resets and Start-up Timing
The PIC24F device Reset system can be thought of as
a superset of the PIC18F version. The same legacy
Resets are supported in either identical or functionally
equivalent methods:
•
•
•
•
•
•
PIC24F devices enhance the system with Resets for
additional error states, along with enhanced reporting.
The Reset states for SFRs and start-up timing from
Resets also differs slightly. The major differences are
summarized in Table 9.
Power-on Reset (POR)
Brown-out Reset (BOR)
External Master Clear Reset (MCLR)
Software Reset (RESET instruction)
Watchdog Timer (WDT) Reset
Stack Error (Overflow or Underflow)
TABLE 9:
COMPARISON BETWEEN PIC18F AND PIC24F RESETS
Feature Description
PIC18F
POR, BOR, MCLR, RESET Instruction, WDT, Stack Error
Legacy Reset Types
Additional Reset Types
BOR Configuration
Configuration Word Mismatch
(PIC18FXXJ Flash devices)
Illegal Opcode/Uninitialized W,
Configuration Word Mismatch, Trap Conflict
Configurable, software controllable in
many devices
Tied to on-chip regulator
Stack Underflow/Overflow Reset
SFR Reset States(1)
Start-up Timer
Note 1:
PIC24F
Reset
Unmaskable trap
Dependent on type of Reset
Uniform for all Reset types
Configurable
Tied to regulator configuration
Excluding RCON and OSCCON registers.
ENHANCED EVENT REPORTING
All PIC18F devices use a total of 7 flag bits to report the
most immediately past Reset event. This includes
5 bits in the RCON register and 2 stack event flags in
the STKPTR register. PIC18F devices, with later implementations of nanoWatt Technology, also include a
control bit (SBOREN), the Reset state of which can be
used as an indirect flag. In all PIC18F devices, RCON
flag bits are inverted sense: they are set in the absence
of the event and cleared when the event has occurred.
The overlap of some bits in the indication of a particular
Reset state requires that all bits be assessed to
determine which Reset event has just occurred.
In contrast, PIC24F devices use 12 flag bits; 11 are
located in the RCON register and one (STKERR) in the
INTCON1 register. Each bit is closely associated with a
particular event, so the change of state in one bit gives
a clearer idea of the event that has just occurred. In
addition, separate Sleep and Idle flag bits are now used
to indicate if the device is in one of the Power-Saving
modes. These can be used to identify exits on interrupt
from Sleep or Idle modes. All flag bits are standard
sense and become set when the corresponding event
occurs.
The differences in Reset flag bits between PIC18F and
PIC24F are summarized in Table 10. The specific bit
states and their corresponding Reset states are
compared in Table 11 and Table 12.
© 2006 Microchip Technology Inc.
TABLE 10:
COMPARISON OF RESET
FLAGS IN PIC18F AND PIC24F
ARCHITECTURES
RCON Bit Function
PIC18F
PIC24F
MCLR Reset
—
EXTR
Software Reset
RI
SWR
POR
POR
POR
BOR
BOR
BOR
WDT Reset
TO
WDTO
Trap Conflict Reset
—
TRAPR
Illegal Operation or
Uninitialized W Register
—
IOPUWR
Configuration Word
Mismatch
—
CM
Sleep Mode
PD
SLEEP
Idle Mode
PD
IDLE
Stack Overflow
STKFUL
STKERR(1)
Stack Underflow
STKUNF
STKERR(1)
Note 1:
Implemented as a hardware trap rather than
a Reset. See the “Interrupt Controller”
section on page 17 for more details.
DS39764A-page 13
Program
Counter
IOPUWR
EXTR
SWR
WDTO
SLEEP
IDLE
CM
BOR
POR
STKERR
PIC24F RESET STATUS BITS STATES
TRAPR
TABLE 11:
Power-on Reset
000000h
0
0
0
0
0
0
0
u
0
1
0
RESET Instruction
000000h
0
0
0
1
0
0
0
u
0
0
0
Brown-out Reset
000000h
0
0
0
0
0
0
0
u
1
0
0
MCLR: in Run mode
000000h
0
0
1
0
0
0
0
u
0
0
0
in Idle mode
000000h
0
0
1
0
0
0
1
u
0
0
0
in Sleep mode
000000h
0
0
1
0
0
1
0
u
0
0
0
000000h
0
0
0
0
1
0
0
u
0
0
0
PC + 2
0
0
0
0
1
0
1
u
0
0
0
0
Condition
WDT Time-out Reset: in Run mode
in Idle mode
PC + 2
0
0
0
0
1
1
0
u
0
0
Stack Overflow Reset
in Sleep mode
000000h
0
0
0
0
0
0
0
u
0
0
1
Stack Underflow Reset(1)
000000h
0
0
0
0
0
0
0
u
0
0
1
Trap Conflict Reset(1)
000000h
1
0
0
0
0
0
0
u
0
0
0
Illegal Opcode/Uninitialized WREG
000000h
0
1
0
0
0
0
0
u
0
0
0
Configuration Word Mismatch Reset
000000h
u
u
u
u
u
u
u
1
u
u
u
(2)
0
0
0
0
0
0
1
u
0
0
0
(2)
0
0
0
0
0
1
0
u
0
0
0
Idle mode (execute PWRSAV 1)
PC + 2
0
0
0
0
0
0
1
u
0
0
0
Sleep mode (execute PWRSAV 0)
PC + 2
0
0
0
0
0
1
0
u
0
0
0
Interrupt Exit: from Idle mode
from Sleep mode
Legend:
Note 1:
2:
u = unchanged
PIC24F stack events are trap events and not Resets; they are listed here for comparison purposes only. See the
“Non-Maskable Traps” section on page 17 for more information.
Program counter is loaded with PC + 2 if the interrupt’s priority is less than or equal to the CPU interrupt priority level, or
the interrupt’s hardware vector if the priority is greater than the CPU priority.
TABLE 12:
PIC18F COMPARABLE RESET STATUS BITS STATES
RI
TO
PD
POR
BOR
STKFUL
STKUNF
STKPTR
SBOREN(1)
RCON
POR
0000h
1
1
1
1
0
0
0
0
BOR
0000h
u(2)
1
1
1
u
0
u
u
RESET Instruction
0000h
u(2)
0
u
u
u
u
u
u
(2)
Condition
MCLR: in PRI_RUN mode
Program
Counter
0000h
u
u
u
u
u
u
u
u
in SEC_RUN or RC_RUN modes
0000h
u(2)
u
1
u
u
u
u
u
in Idle or Sleep modes
0000h
u(2)
u
1
0
u
u
u
u
0000h
u(2)
u
0
u
u
u
u
u
WDT Time-out: in any Run mode
PC + 2
u(2)
u
0
0
u
u
u
u
Stack Full Reset (STVREN = 1)
0000h
u(2)
u
u
u
u
u
1
u
Stack Underflow Reset or Error
(STVREN = 1 or 0)
0000h
u(2)
u
u
u
u
u
u
1
PC + 2(3)
u(2)
u
u
0
u
u
u
u
in Idle or Sleep modes
Interrupt Exit from Power-Managed modes
Legend:
Note 1:
2:
3:
u = unchanged
SBOREN is not implemented in PIC18FXXJ Flash devices, or in devices with earlier versions of nanoWatt Technology.
Reset state is ‘1’ for Power-on Reset and unchanged for all other Resets when software Brown-out Reset is enabled
(BOREN1:BOREN0 Configuration bits = 01 and SBOREN = 1); otherwise, the Reset state is ‘0’.
When the wake-up is due to an interrupt and the GIEH or GIEL bit is set, the PC is loaded with the interrupt vector
(008h or 0018h).
DS39764A-page 14
© 2006 Microchip Technology Inc.
ADDITIONAL PIC24F RESETS
SFR RESET STATES
Beyond the legacy Reset events supported by both
architectures, PIC24F supports three new hardware
Resets:
In PIC18F devices, SFRs have up two designated
Reset states: the default state on POR or BOR, and an
alternate state on all other legacy Resets. Depending
on the register’s function, the register values in the two
states are identical; but for many registers, the value
prior to the Reset is preserved.
• IOPUWR: Attempted execution of an
unrecognized or undetectable instruction opcode,
or an attempt to use an uninitialized register as an
Address Pointer
• CM: An event has caused a mismatch between
the Flash Configuration Words and their counterparts in configuration space, or the device has
detected a parity error in the Configuration Words
• TRAPR: Two trap events have occurred, with the
second taking place before the first has been
cleared
These events have no equivalent in the PIC18F
architecture.
STACK ERROR EVENTS
In PIC18F devices, a stack overflow or underflow event
causes a full device Reset when the STVREN Configuration bit is programmed. Even if a stack interrupt is
not enabled, the PC is reset to zero if an event occurs.
The STKFUL or STKUNF flag bit is set in either event
to indicate which event has occurred.
In PIC24F devices, a stack event is treated as a soft
trap and causes code execution to jump to the interrupt
vector at address 000Ah. No differentiation is made
between overflow and underflow events. PIC24F trap
events, in general, are discussed in more detail in the
“Non-Maskable Traps” section on page 17.
BOR CONFIGURATION
PIC18F devices have always provided some level of
configurability for BOR. At a minimum, the BOR can be
enabled or disabled, and the BOR threshold (VBOR) set
during device programming, by using the BOREN and
BORV1:BORV0 Configuration bits. Later PIC18F
devices with nanoWatt Technology allow the BOR to be
selectively controlled in software.
For PIC24F devices, the BOR function is incorporated
into the on-chip voltage regulator. The BOR is always
enabled when the regulator is enabled, and active while
VDD is below VBOR (2.35V to 2.6V, typically). The ability
of PIC24F devices to operate at maximum frequency
across the normal operating voltage range makes a configurable BOR unnecessary. This is in contrast to many
PIC18F devices, where maximum frequency may be
tied to VDD, as described in the specific device data
sheet. In these cases, it may be necessary to configure
a BOR set point that reflects the application’s specific
voltage and frequency requirements.
Note:
PIC18FXXJ Flash devices, such as the
PIC18F87J10, use BOR circuitry identical
to PIC24F devices.
© 2006 Microchip Technology Inc.
In PIC24F devices, there is no distinction between
POR/BOR and other Resets. All registers return to their
original default values on a device Reset, regardless of
the source. The only exceptions to this rule are the
OSCCON and RCON registers, where the Reset value
of one or more bits is dependent on device configuration
or state immediately prior to Reset.
Data sheets and other literature for PIC18F devices
often list a third Reset state: the value immediately
following a wake-up by WDT time-out or interrupt. For
almost all registers in all PIC18F devices, the value is
the same as that immediately before the wake-up
event. For PIC24F devices, all SFRs are assumed to
remain unchanged following a wake-up. Specific
exceptions will be noted in the appropriate device data
sheet.
START-UP TIMING AFTER RESETS
PIC18F devices include a fixed start-up timer that holds
the microcontroller in a Reset state. The timer’s
interval, TPWRT, allows for the memory array to
power-up and internal circuits to reach their initial
states. The power-up timer can be enabled or disabled
during device configuration by programming the PWRT
Configuration bit. Additional delays are added to
TPWRT depending on the start-up oscillator selected
and whether or not the internal PLL is being used.
For PIC24F devices, the start-up time is dependent on
the configuration of the on-chip voltage regulator when
the device exits a POR or BOR event. The total regulator delay is TSTARTUP, which is equal to TPWRT (if the
regulator is disabled) or TVREG (if it is enabled). TPWRT
is a fixed, 64 ms nominal delay and is comparable to
the PIC18F TPWRT delay; it provides time for the power
supply to stabilize. TVREG is a nominal, 10 μs delay
which permits the internal voltage regulator to stabilize.
An additional voltage regulator delay occurs if VREGS
(RCON<8>) is clear. Additional delays are also provided for oscillator start-up and PLL, if enabled, which
are consistent with PIC18F devices. See the device
data sheets for more information.
OTHER RESET FEATURES
Many PIC18F devices with later implementations of
nanoWatt Technology have a configurable MCLR pin.
For these devices, the MCLRE Configuration bit can
select if the pin functions as the device Master Clear, or
as an input only I/O port. PIC24F devices have “fixed”
MCLR pins that cannot be reconfigured.
DS39764A-page 15
MIGRATION CONSIDERATIONS
For applications that require polling of Reset events,
the method of polling will need to be changed. Although
all states that were tracked in PIC18F devices are still
trackable in PIC24F, the meaning of the legacy RCON
flag bits is more narrowly defined. It is no longer necessary to read all flags to interpret the immediately
previous event; for most cases, it will only be necessary
to see which flag bit is now set. Note that the PIC24F
RCON status bits are active-high and PIC18F RCON
bits are active-low.
Note:
The internal regulator should not be used
to power circuitry outside of the device. It is
intended for internal power consumption
only.
It is recommended for both architectures to connect
MCLR to VDD using a 1 kΩ resistor. This will limit the
current flow into the MCLR pin due to potential external
overstresses.
Be aware that the start-up time of the device increases
when the regulator is disabled to permit the application
voltage to stabilize. Enabling the regulator also enables
the BOR function.
DS39764A-page 16
© 2006 Microchip Technology Inc.
Interrupt Controller
The PIC24F interrupt controller contains many
improved interrupt options compared to the PIC18F.
These new features include, but are not limited to,
increased processor exceptions, software traps and
TABLE 13:
user-selectable priority levels. Table 13 summarizes
the differences between the PIC18F and PIC24F
interrupts.
COMPARISON BETWEEN PIC18F AND PIC24F INTERRUPT CONTROLLERS
Interrupt Features
PIC18F
PIC24F
Unique Interrupt Flag and Enable for each Source
Yes
Yes
Global Interrupt Enable
Yes
Yes
Software Clearable Interrupt Flags
Yes
Yes
Flags Set Regardless if Interrupt is Enabled or Disabled
Yes
Yes
Software can Generate any Peripheral Interrupt
Yes
Yes
Automatic Context Save/Restore
Yes
Yes
Exits Power-Managed Modes
Yes
Yes
Assignable Interrupt Priority
high or low
8 levels, user-defined
Latency for External Interrupt Events (INTx pins or the
PORTB input change interrupt)
3 or 4 TCY
5 TCY (Fixed)
Priority Exit from Sleep and Idle Modes
No
Yes
Interrupt Nesting Disable Option
No
Yes
Software Selectable Core Interrupt Priority Level
No
Yes
Trap Vectors
No
Yes (4)
Unique Interrupt/Trap Source
No
Yes
Alternate Interrupt Vector Table for Emulation
No
Yes
Natural priority Unmaskable or Non-Maskable Interrupts
No
Yes
Capable of Disabling Interrupts for Specific Number of TCY
No
Yes
NEW PIC24F INTERRUPT FEATURES
• Unique Interrupt and Trap Vectors: Each
individual interrupt source is assigned in hardware
a natural priority, allowing interrupts to be sorted
with no additional user intervention, as well as a
unique interrupt vector
• User-Assignable Priority: Users can also give
each interrupt one of eight levels of priority, which
can be used to override the natural priority
• Software Assigned Core Priority: Users can
also set a threshold priority level at which the
CPU will respond to interrupts
• Interrupt Nesting: The use of natural priority and
user-assigned priority allows multiple interrupt
events to be nested; this feature can also be
selectively disabled
• Hard and Soft Traps: Up to 8 non-maskable hard
traps with high natural priority are provided to flag
potentially serious events, such as math (divide
by 0), stack overflow/underflow, address or data
alignment and oscillator failure
© 2006 Microchip Technology Inc.
• Alternate Vector Table: Allows for a convenient
switch between support and application
environments without reprogramming
• Priority Exit From Power-Saving modes:
Allows the application to either resume normal
code execution, or jump to an ISR, depending on
the interrupt priority level
Note:
For further information on traps, refer to
the specific device data sheet.
UNSUPPORTED PIC18F FEATURES
All PIC18F interrupt controller features are supported in
the PIC24F interrupt controller.
NON-MASKABLE TRAPS
In PIC24F architecture, there are four hardware trap
events with interrupts that can never be disabled:
•
•
•
•
Address Decode Error
Oscillator Failure
Stack Error
Math (Overflow) Error
DS39764A-page 17
These errors always force an immediate jump to
specific interrupt vectors. The two most serious errors
(Address Decode and Oscillator Failure) are hard
traps; these must be cleared before the CPU execution
can continue. All traps have their own individual flag bit.
2.
3.
In addition to these unmaskable events, the PIC24F
architecture can be expanded at a future time to
include up to four additional traps.
PIC18F architecture does not have an equivalent to the
hardware trap. PIC18F stack error events are treated
as Resets.
BIT NAME CHANGES AND MAPPING
PIC24F devices maintain the same general nomenclature for interrupt bit names as PIC18F devices, with two
important differences. Both families maintain interrupt
enable, flag and priority bits that are generically named
xxxIE, xxxIF and xxxIP (where ’xxx’ is the mnemonic for
the interrupt source).
The first major difference is the presence of three interrupt priority bits for each source, instead of the one
used for PIC18F devices. These bits, generically
named xxxIP2 through xxxIP0, allow the interrupt to be
assigned one of eight relative priority levels.
The other difference is the number of interrupt sources.
While many interrupts have the same (or very similar)
name as PIC18F devices, others are new. Other interrupts have similar names but have a different meaning
from their PIC18F counterparts. Users should refer to
the appropriate PIC24F device data sheet for a
complete list of interrupts and their meanings.
SETUP AND ENABLING INTERRUPTS
To set up and enable interrupts on PIC18F devices:
Required Steps:
1.
2.
Clear the interrupt flag status bit associated with
the peripheral in the associated PIRx or
INTCONx register.
Enable the interrupt source by setting the interrupt enable control bit associated with the source
in the appropriate PIEx or INTCONx register.
Note:
The interrupt flag still needs to be cleared
prior to exiting an ISR.
Optional Step:
Select the user-assigned priority level for the interrupt
source by writing to the control bits in the RCON register;
select high priority or low priority using the priority bit in
the corresponding IPRx register. The interrupt priority
feature is enabled by setting the IPEN bit (RCON<7>).
To set up and enable interrupts on PIC24F devices:
Required Steps:
1.
Clear the interrupt flag status bit associated with
the peripheral in the associated IFSx register.
Enable the interrupt source by setting the interrupt enable control bit associated with the
source in the appropriate IECx register.
Note:
The Interrupt/trap flag still needs to be
cleared prior to exiting an ISR.
Optional Step:
Select the user-assigned priority level for the interrupt
source by writing the control bits in the appropriate IPCx
register. The priority level will depend on the specific
application and type of interrupt source. If multiple priority levels are not desired, the IPCx register control bit for
all enabled interrupt sources may be programmed to the
same non-zero value.
Note:
Upon Reset, all interrupts are assigned a
default priority level of 4.
DISABLING USER INTERRUPTS
To disable interrupts on PIC18F devices, it is only
necessary to clear the GIE bit (GIEH or GIEL if priority
levels are used).
To disable user interrupts on PIC24F devices, these
steps are required:
1.
2.
Push the current STATUS register value onto
the software stack using the PUSH instruction.
Force the CPU to priority level 7 by inclusive
ORing the value OEh with the low byte of the
STATUS register (SRL). To enable user interrupts, the POP instruction may be used to restore
the previous STATUS register value.
Note:
The DISI instruction allows interrupts of
priority levels 1-6 to be disabled for a fixed
period of time.
MIGRATION CONSIDERATIONS
PIC18F architecture only has the ability to assign either
high or low priority interrupts to individual sources.
PIC24F architecture allows the assignment of multiple
priority levels for interrupts (priorities 0 through 7 are
user defined and priorities 8 through 15 are hardware
defined). At the very least, interrupts in native PIC18F
applications will need to be re-assessed, and their
priority levels redefined in PIC24F terms.
For both PIC18F and PIC24F devices, the RETFIE
instruction exits an Interrupt Service Routine (ISR), but
this instruction does behave slightly different depending on the microcontroller. For PIC18F, this instruction
will set the GIE bit to re-enable global interrupts. Since
the GIE bit does not exist for PIC24F, this instruction
will restore the previous priority level.
Set the NSTDIS bit (INTCON1<15>) if nested
interrupts are not desired.
DS39764A-page 18
© 2006 Microchip Technology Inc.
Oscillator
CHANGES FROM PIC18F ARCHITECTURE
The PIC24F oscillator system supports many of the
features of PIC18F nanoWatt Technology, and adds
several new features. Both architectures support three
major clock sources: primary oscillators, internal RC
oscillators and 4x PLL frequency multipliers. In addition, both also support features to enhance application
robustness, such as software-controlled clock switching, Fail-Safe Clock Monitors and Two-Speed Start-up.
PIC24F devices increase the flexibility of initial clock
configuration, software controlled clock switching and
the use of the PLL.
Features added from the PIC18F implementation of
nanoWatt Technology include:
Although there are many similarities between PIC24F
and PIC18F architectures in the oscillator and clock
generation, there are also important differences in the
implementation of these features. Because the oscillator affects most aspects of an application, it is important
to understand the differences before migrating an
application to a PIC24F device.
PIC18F features that are no longer supported in
PIC24F architecture include:
• Enhanced PLL Operation: PIC24F architecture
allows the PLL to be used under software control in
all modes where it is available, and makes the PLL
available to all External Primary Oscillator modes.
• Doze Mode: This permits differential clocking of
the CPU and peripherals, and allows the CPU to
run at lower speeds while maintaining timing
sensitive peripherals (see the “Power-Saving
Features” section on page 23 for more details).
• LP and External RC Primary Oscillator modes
have been removed in favor of SOSC and FRC
Oscillator modes
• XT mode is still implemented, but is limited to the
upper end of the upper range of frequencies
available with PIC18F devices. For PIC24F
devices, the XT frequency range is 3.5 MHz to
10 MHz.
The major differences between the PIC18F and
PIC24F clock structures are detailed in Table 14.
TABLE 14:
COMPARISON OF MAJOR OSCILLATOR FEATURES
Feature Description
PIC18F
PIC24F
HS, XT, EC, LP and
external RC(1)
HS, XT and EC
(all devices)
Secondary (Timer1) Oscillator
Yes
Yes (SOSC)
8 MHz Internal RC Oscillator
Most devices (INTOSC)(1)
Yes (FRC)
31 kHz Internal RC Oscillator
Yes (INTRC)
Yes (LPRC)
No
Select devices only
Select devices only
Yes
Yes
Yes
Primary (External) Oscillator Modes
4x PLL Options:
XTPLL (MSPLL)
ECPLL
INTOSCPLL/FRCPLL
INTOSC/FRC Tuning
5-bit magnitude, ±12% range
6-bit magnitude, ±12% range
Software Clock Switching
Between clock sources only
Between all available oscillator types;
uses safety interlock
Doze Mode
No
Yes
Fail-Safe Clock Monitor
Yes
Yes
Two-Speed Start-up
Yes
Yes
Note 1:
Applies to most PIC18FXXXX devices, such as PIC18F8722. Currently, PIC18FXXJ Flash devices, such
as the PIC18F87J10, only offer HS and EC Primary Oscillator modes and no INTOSC oscillator.
© 2006 Microchip Technology Inc.
DS39764A-page 19
BIT AND CONTROL FUNCTION MAPPING
There is not a precise one-to-one correspondence
between configuration and control functions of the
PIC18F and PIC24F architectures. The most common
differences are shown in Table 15. Details are
discussed later in this section.
TABLE 15:
COMPARISON OF OSCILLATOR BIT AND CONTROL FUNCTION MAPPING
Oscillator Block Function
PIC18F
FNOSC2:FNOSC0
(Configuration Word 2<10:8>)
Define Start-up Oscillator
Define Primary Oscillator Type
FOSC3:FOSC0
(CONFIG1H<3:0>)(1)
Define I/O Port Functions in EC Oscillator
Modes
Enable Secondary Oscillator
Select INTOSC/FRC Postscaler
Enable Two-Speed Start-up
Enable Fail-Safe Clock Monitor
Note 1:
POSCMD1:POSCMD0
(Configuration Word 2<1:0>)
OSCIOFCN
(Configuration Word 2<5>)
T1OSCEN (T1CON<3>)
SOSCEN (OSCCON<1>)
IRCF2:IRCF0 (OSCCON<6:4>)
RCDIV2:RCDIV0 (CLKDIV<10:8>)
SCS1:SCS0 (OSCCON<1:0>)
NOSC2:NOSC0, OSWEN
(OSCCON<10:8, 0>), FCKSM0
(Configuration Word 2<6>)
OSTS, IOFS, T1RUN
COSC2:COSC0
IESO (CONFIG1H<7>)
IESO (Configuration Word 2<15>)
FCMEN (CONFIG1H<6>)
FCKSM1:FCKSM0
(Configuration Word 2<7:6>)
Switch Run-Time Clock Source
Active Clock Source Monitoring
PIC24F
PIC18FXXXX devices only; FOSC2:FOSC0 (CONFIG2H<2:0>) on current PIC18FXXJ Flash devices.
PRIMARY OSCILLATORS (POSC)
SECONDARY OSCILLATOR (SOSC)
PIC18F microcontrollers, with the latest versions of
nanoWatt Technology, use an oscillator circuit that supports a wide range of external components, including a
variety of crystals, RC networks or external clock generators. To use the oscillator, users connect their crystal or
RC circuit to the OSC1 and OSC2 pins, or present the
external clock on OSC1. The exact oscillator mode to be
used is selected during device configuration using the
FOSC3:FOSC0 Configuration bits, and must match the
actual external circuit to be used.
All PIC18F devices have the option to use the Timer1
oscillator as a secondary clock source. The most
typical arrangement for this option is to connect a
low-power, 32 kHz watch crystal across pins T1OSI
and T1OSO. The oscillator is controlled separately
from the device clock controls with the T1OSCEN bit
(T1CON<3>).
PIC24F microcontrollers support a similar range of
oscillator options on the OSC1 and OSC2 pins;
however, the options for support of low-power,
low-frequency crystals and external RC resonant
circuits have been omitted. These have been replaced
by the use of a high-speed internal RC oscillator, and
the use of the Timer1 oscillator in the more flexible
clock structure.
PIC24F devices also provide a secondary oscillator
that is identical in function to the Timer1 oscillator; it
only differs in that it is controlled through the OSCCON
register with the SOSCEN bit. The crystal input/output
pins are renamed SOSCI and SOSCO.
The PIC24F secondary oscillator takes the place of the
Primary LP Oscillator mode provided on PIC18F
devices, but not supported on PIC24F. To use SOSC as
the default oscillator on start-up, it must by selected in
device configuration by the FNOSC2:FNOSC0 bits and
enabled in software by setting the SOSCEN bit.
The primary oscillator mode is selected during configuration with a combination of the FNOSC2:FNOSC0 and
POSCMD<1:0> Configuration bits. Like PIC18F
devices, the configuration must match the external
circuit to be used in the application.
DS39764A-page 20
© 2006 Microchip Technology Inc.
INTERNAL RC OSCILLATORS (INTOSC/FRC
AND INTRC/LPRC)
The internal oscillators for PIC18F devices with
nanoWatt Technology and PIC24F devices are virtually
identical, except in name. Both feature two independent
internal oscillators, an efficient 31 kHz oscillator and an
accurate, high-speed 8 MHz oscillator. Both architectures use a configurable postscaler, driven by the 8 MHz
source, to provide a range of clock frequencies, from
31 kHz to 4 MHz (as well as the undivided 8 MHz
output). Both architectures allow software selection from
the 31 kHz or 8 MHz oscillators to provide the 31 kHz
source for various system features. Both clock systems
permit tuning of the 8 MHz source through a nominal
range of ±12%.
The differences here are minor. For PIC18F devices,
the internal 31 kHz and 8 MHz sources are generally
referred to as INTOSC and INTRC. For PIC24F
devices, they are known as the Fast RC (FRC) and
Low-Power RC (LPRC) oscillators. INTOSC/FRC tuning is accomplished with 5 tuning bits (TUN4:TUN0) in
PIC18F devices; PIC24F devices use 6 tuning bits
(TUN5:TUN0) for finer resolution. Finally, the default
value on Reset for the 8 MHz postscaler is 1 MHz for
PIC18F devices and 4 MHz for PIC24F devices.
PLL FREQUENCY MULTIPLIER
PIC18F and PIC24F devices both support a 4x PLL
frequency multiplier for use with select clock sources.
In all cases, the PLL provides a stable output only when
the input frequency is between 4 and 10 MHz. The
operation of the PLL differs substantially between the
two architectures.
For most PIC18F devices incorporating nanoWatt
Technology, the PLL is automatically enabled for
specific, primary oscillator configurations and is always
operational. All devices can use the HS oscillator with
the PLL; select later devices also allow the use of the
PLL with the EC mode. These are distinct primary
oscillator configurations. If the user wishes to disable the
PLL, the device must be reprogrammed and reconfigured. If the internal oscillator block is selected as the
device’s default oscillator, the PLL is made available
when the INTOSC postscaler is configured for an output
of 4 or 8 MHz. In these cases, the PLL can be selectively
enabled under software control with the PLLEN control
bit (OSCTUN<6>).
For PIC24F devices, the PLL is always available under
software control. It is available for all primary oscillator
modes, as well as FRC or FRCDIV operation (as long
as a postscaler output of at least 4 MHz is selected). To
use the PLL, it is only necessary to perform a clock
switch to one of the PLL Clock modes. Once a PLL
mode is selected, the state of the PLL’s output stability
is indicated by the flag bit, LOCK (OSCCON<5>).
When the bit is set, the PLL output is stable.
© 2006 Microchip Technology Inc.
CLOCK SWITCHING
Clock switching differs significantly between PIC18F
and PIC24F devices. Conceptually, both architectures
have three categories of oscillators: primary (external
components connected to OSC pins), secondary
(external crystal connected to T1OSC or SOSC pins)
and internal RC. PIC18F devices permit the definition
of one and only one primary oscillator type used during
device configuration. This is the oscillator that is always
used when on device power-up and Reset. Thereafter,
the device can switch between primary, secondary and
internal oscillator sources, under software control, by
writing to the SCS1:SCS0 bits. Once a primary
oscillator is defined, it cannot be changed unless the
device is reprogrammed.
For PIC24F devices, any one of the three major clock
sources can be configured as the default start-up oscillator; users are no longer confined to just the primary
oscillator sources. During run time, the device can
switch between any of the available oscillator modes
under software control. This means, that among other
things, it is possible to switch between a Primary Clock
mode and its PLL counterpart while the application is
running. It is also possible to start the device using the
Timer1 or LPRC oscillator, rather than switch to those
sources after Reset or power-up (as was required in
PIC18F implementations of nanoWatt Technology). In
fact, it is possible to completely disable the primary
oscillator source in PIC24F devices; something that
cannot be done on the PIC18F architecture.
This increased flexibility makes clock switching on
PIC24F devices a more complex sequence. The new
oscillator is selected with the NOSC2:NOSC0 bits and
by setting the Oscillator Switch Enable bit, OSWEN. To
prevent unintended changes, PIC24F devices also use
an additional safety interlock that requires an unlock
sequence to write each byte of the OSCCON register.
PIC24F unlocks the high or low byte for one instruction
after two specific literals are written to the high or low
byte of OSCCON. An instruction counter ensures the
unlock sequence is performed within a maximum
number of instructions and remains unlocked for one
instruction cycle. Because these sequences are so
time critical, the unlock sequences are done with an
assembly language routine. When the NOSC bits
match the COSC bits, or the OSWEN bit is clear, the
clock switch has been completed successfully.
Because the New Oscillator Select bits, NOSC, and
Oscillator Switch Enable bit, OSWEN (OSCCON<0>),
reside in opposite halves of OSCCON, two unlock
sequences are needed to request a system clock
switch. For examples of the OSCCON unlock
sequences, refer to the specific device data sheet.
DS39764A-page 21
TWO-SPEED START-UP
Two-Speed Start-up is implemented identically in
PIC18F and PIC24F devices. In both cases, the feature
is controlled by the IESO Configuration bit.
FAIL-SAFE CLOCK MONITOR
The Fail-Safe Clock Monitor feature is also available for
the PIC24F. It is controlled, along with run-time clock
switching, by the Configuration Word bits,
FCKSM1:FCKSM0 (CW2<7:6>). FSCM in PIC24F
devices is similar to the PIC18F implementation by
automatically switching to the FRC when the primary
oscillator stops.
The single significant difference is the secondary
effects of an FSCM event. For PIC18F devices, a
primary oscillator failure sets the OSCFIF interrupt flag
bit, which can optionally generate a device interrupt.
For PIC24F devices, an FSCM event sets both the CF
flag (OSCCON<3>) and OSCFAIL (INTCON1<1>) bits,
and generates an unmaskable hardware trap which
then must be cleared.
MIGRATING A TYPICAL APPLICATION
• Most applications built on a PIC18F device with
nanoWatt Technology will be able to use the same
oscillator type and clock frequency when a
PIC24F device is substituted. This is particularly
true when the oscillator uses a crystal (HS mode
or XT mode, between 3.5 and 10 MHz), an
external clock generator or the internal RC
oscillator block.
DS39764A-page 22
• PIC18F applications that use a 32 kHz crystal for
the primary oscillator will need to use the
secondary oscillator for their PIC24F equivalent
versions. The crystal circuit will need to be moved
to the T1OSCI/T1OSCO pins, and the Secondary
Oscillator mode (SOSC) will need to be selected
as the start-up clock source.
• PIC18F applications using an External RC
Primary Oscillator mode, or an XT Oscillator
mode running below 3.5 MHz, must now use the
FRC oscillator as the default clock source.
Configuration will need to be changed to select
FRC as the default start-up clock source.
• If clock switching is used, the clock switch
sequences will need to be added. These are
described in the appropriate device data sheet.
MIGRATION CONSIDERATIONS
When migrating to a PIC24F microcontroller (or any
microcontroller, for that matter), any application that is
based on a crystal clock source should be re-evaluated
for oscillator operation and stability. It is important to
verify that the crystal performance is reliable across the
voltage, temperature and process variations
anticipated for the application.
For more information, refer to the application notes
listed in the “References” section on page 45.
© 2006 Microchip Technology Inc.
Power-Saving Features
A comparison of the power-saving features in both
architectures is presented in Table 16.
PIC24F power-saving features are very similar to the
Power-Saving modes offered in PIC18F nanoWatt
Technology devices. Both architectures include
run-time switching of system clock sources, Idle and
Sleep modes, and hardware invoked exits through
Resets and interrupts. PIC24F devices describe these
features in a somewhat different manner, and support
additional features for strategic reduction of power
consumption.
TABLE 16:
Note:
For the sake of brevity, references to
“PIC18F” throughout this section should
be interpreted as meaning “PIC18F
devices with nanoWatt Technology”.
COMPARISON BETWEEN PIC18F AND PIC24F POWER-SAVING FEATURES
Feature Description
PIC18F
Run-Time Clock Switching
PIC24F
Yes
Yes
Instruction and hardware bit setting
Instruction with argument
Idle Mode
Selective Peripheral Idle
Yes
No
Yes
Yes
Sleep Mode
Yes
Yes
Doze Mode
No
Yes
PMD Option
No
Yes
Power-Saving Mode Invocation
RUN-TIME CLOCK SWITCHING
SLEEP AND IDLE MODES
PIC18F and PIC24F devices have all the same types of
system clock sources (primary, secondary and internal
oscillator). In addition, Sleep and Idle modes are
defined in the same manner. The difference between
the devices is strictly terminology: PIC24F devices do
not use the Power-Managed mode terminology created
for nanoWatt Technology. Because oscillator mode
switching in more expansive in PIC24F devices, the old
PIC18F descriptions of Power-Managed modes
(PRI_RUN, SEC_IDLE, etc.) are no longer used. However, completely equivalent modes are available in
PIC24F devices; that is, using the NOSC2:NOSC0 bits
to select the FRC oscillator as the clock source is
equivalent to switching to RC_RUN mode in a PIC18F
device.
PIC18F devices use the SLEEP instruction to invoke
their Power-Managed (x_IDLE and Sleep) modes. The
actual mode invoked is determined by the IDLEN bit
(OSCCON<7>); an Idle mode is entered when the bit is
set or Sleep mode when the bit is cleared.
In PIC18F devices, clock switching is accomplished by
writing to the SCS1:SCS0 bits (OSCCON<1:0>). For
PIC24F devices, clock switching is accomplished by
writing to the NOSC2:NOSC0 bits, accompanied by a
safety unlock procedure (see the “Oscillator” section
on page 19 for more details). In addition, clock switching can be disabled entirely by setting Configuration bit,
FCKSM1 (CW2<7>).
In PIC24F devices, peripherals can be selectively
disabled during Idle mode. Most peripheral modules
have a control bit, xxxIDL (where ‘xxx’ represents the
peripheral mnemonic), that determines if the peripheral
continues operation when Idle mode is invoked. The
IDL bits allow modules to be partially powered down,
providing for additional incremental power savings.
The internal transitions between clock sources are
essentially the same in both architectures and are
accompanied by similar delays.
© 2006 Microchip Technology Inc.
In PIC24F devices, the equivalent instruction is
PWRSAV. The instruction is used with an argument
(either symbolic or literal) to specify the desired mode.
As before, Idle mode is invoked when the literal
argument is ‘1’, and Sleep mode when it is ‘0’.
SELECTIVE PERIPHERAL IDLING
In PIC18F devices, Idle mode is an all-or-nothing affair;
all peripherals remain operational during an Idle mode.
EXITING POWER-SAVING MODES
Exiting a Power-Managed mode can be achieved by an
enabled interrupt or by a Reset. A WDT Reset or interrupt exits the Power-Managed mode and returns the
device to the previous clock source. All other methods
switch the controller to the 8 MHz FRC internal oscillator,
if Two-Speed Start-up is enabled, until the primary clock
source is ready.
DS39764A-page 23
DOZE MODES
MIGRATING A TYPICAL SETUP
PIC24F devices feature an additional Doze mode option
to reduce power consumption while allowing the application to continue running. Doze mode permits the CPU to
run at a reduced clock rate while the peripherals are
clocked at full speed. It is enabled by setting the DOZEN
bit (CLKDIV<11>). The CPU peripheral clock ratio is
selected using the DOZE bits (CLKDIV<14:12>), with a
range of 1:128 (slowest) to 1:1 (full speed). An option to
disable Doze mode on an interrupt is available through
the Recover on Interrupt bit, ROI (CLKDIV<15>).
For straight migrations of a PIC18F application using
Power-Saving modes, there is a tight correspondence
between PIC18F and PIC24F instructions. Users will
need to change references from SCS1:SCS0 to the
equivalent mode using NOSC2:NOSC0 (plus the addition of the register unlocking sequence). Additionally,
all SLEEP instructions will need to be changed to the
appropriate PWRSV n equivalent, and references to
IDLEN removed.
PIC18F devices have no equivalent feature.
PERIPHERAL MODULE DISABLE
In PIC24F devices, the PMD feature reduces peripheral
current consumption to the absolute minimum possible.
Peripherals which support PMD have an associated
control bit in one of the PMD registers. When enabled,
all clock sources are disconnected from the peripheral,
and all SFR registers associated with it appear as unimplemented memory. This is a contrast to the Selective
Peripheral Idle, where the module is partially powered
down but remains accessible.
There is no equivalent feature in PIC18F architecture.
ADDITIONAL PIC24F FEATURES
The internal voltage regulator can be brought into a
low-power mode by setting the VREGS bit
(RCON<8>). In this mode, the voltage regulator
supplies only enough power to maintain RAM states. If
any peripherals are active, this mode cannot be used.
DS39764A-page 24
MIGRATION CONSIDERATIONS
• The voltage/frequency characteristics of the
PIC18F and PIC24F architectures are significantly different and will affect clock switching decisions. The PIC24F voltage supply range (2.0V to
3.6V) is narrower than for PIC18F devices, such
as the PIC18F8722. Applications that change
clock frequencies, due to reduced power supply
voltage, may not need to switch at all, since the
PIC24F can operate at higher speeds across a
wider range of voltage. Also note that PIC18FXXJ
Flash devices, such as the PIC18F87J10, have
V/F characteristics that are similar to the PIC24F
family.
• The lower maximum VDD of PIC24F devices may
also impact the design of an application migrated
from PIC18F devices. Refer to the appropriate
product data sheets for more information on
operating voltage range and Power-Managed
modes.
© 2006 Microchip Technology Inc.
Watchdog Timer (WDT)
The Watchdog Timer (WDT) module for the PIC24F is
nearly identical to the PIC18F nanoWatt device
implementation. Both use Configuration bits to enable
the WDT and to select a time-out period. The time-out
periods are the same and both feature a software
TABLE 17:
enable option. Power-Managed modes can also be
exited using the WDT for both devices. In addition, the
PIC24F implementation has a new configurable
prescaler and windowed WDT options available in the
Configuration Word.
COMPARISON BETWEEN PIC18F AND PIC24F WDT FEATURES
Feature Description
Configurable Time-out Period
PIC18F
PIC24F
Yes
Yes
Software Enable
Yes
Yes
Exit Power-Managed Modes
Yes
Yes
Time-out Range
1 ms to 131s
1 ms to 131s
Prescaler
No
Yes
Windowed WDT Option
No
Yes
COMMON FEATURES
UNSUPPORTED PIC18F FEATURES
The WDT modules for both PIC18F and PIC24F
devices can be enabled during programming in the
Configuration Word. The PIC24F is enabled or disabled by the FWDTEN (CW1<7>) Configuration bit. A
time-out period is also selected in the Configuration
Word with the WDTPS<3:0> bits (CW1<4:0>), ranging
from 1 ms to 131s. The periods are the same for both
devices within the accuracy limitations of the 32 kHz
Low-Power Internal Oscillator (LPRC). Both implementations automatically enable the 32 kHz LPRC if it is not
already enabled.
All PIC18F WDT features are supported in the PIC24F
WDT.
Sleep and Idle modes can be exited using the WDT. If a
time-out occurs in one of these modes, code execution
resumes at the next instruction in program memory.
Also, the WDT can be enabled in software by setting the
SWDTEN (RCON<5>) bit if the option is disabled in the
Configuration Word. Both architectures clear the WDT
counter in the following events:
• CLRWDT instruction
• SLEEP instruction
• Selecting a new internal oscillator frequency
NEW PIC24F FEATURES
The PIC24F WDT has a prescaler option in the Configuration Word to select either 1:128 or 1:32 using the
FWPSA bit (CW1<4>). To match the PIC18F nanoWatt
implementation, set the FWPSA to select the 1:128
option.
MIGRATING A TYPICAL SETUP
Migrating PIC18F WDT to PIC24F is straightforward.
Enable the WDT in the same manner, either by setting
the FWDTEN Configuration bit, or in software, by
setting the SWDTEN bit in the RCON register. Select
the same postscaler setting used in the PIC18F configuration with the WDTPS<3:0> bits and set the FWPSA
Configuration bit to choose the 1:128 prescaler setting.
The PIC24F WDT can be used in the same manner as
the PIC18F to exit Power-Managed modes and monitor
for unexpected code execution.
MIGRATION CONSIDERATIONS
• The PIC24F WDT counter will be cleared on any
clock source switch, whether it was caused from
the Fail-Safe Clock Monitor, or by software. This
may differ from the PIC18F implementation that
typically clears the WDT on the conditions
specified in the section, “Common Features”, on
page 25.
• When a WDT time-out occurs, PIC18F devices
clear the TO (RCON<3>) bit and PIC24F devices
set the WDTO (RCON<4>) bit. On POR or BOR,
the state of these bits is unknown and must be
initialized to the opposite state to detect a WDT
time-out event.
The windowed WDT feature is enabled by clearing the
Configuration bit, WINDIS. For more information on the
windowed WDT option, refer to the applicable product
data sheet.
© 2006 Microchip Technology Inc.
DS39764A-page 25
Device Integration Features
CODE PROTECTION
Certain features of PIC18F and PIC24F devices are not
considered as individual modules, but part of a system
integration package that makes the devices more
reliable and their applications more cost-effective. In
addition to the WDT, included in this group are:
All PIC18F and PIC24F devices incorporate some
variety of code protection system that prevents
programmed areas from being altered, or read back at
any time, except during code execution.
• Device Configuration Control
• Code Protection
• On-Chip Voltage Regulator
DEVICE CONFIGURATION
All PICmicro microcontrollers program their basic and
generally, application constant configuration setting
into an area of nonvolatile memory inside the device
configuration space. The manner in which this information is stored and used differs greatly between PIC18F
and PIC24F families.
All PIC18F devices use Configuration registers at
addresses 300000h through 30000Fh, well outside of
the normal program space. While all devices can read
these addresses during run time, most cannot change
their configuration settings through self-reprogramming.
Changes to the Configuration Words can only be done
with external programming, such as ICSP. In some early
devices, the configuration settings were implemented
with one-way fuses, and were essentially permanent.
Later versions of PIC18F devices, such as PIC18FXXJ
Flash devices, store their configuration settings in the
last four words at the top of program memory. At POR,
the information is latched into the actual registers (still
at addresses 300000h through 30000Fh), which controls the device configuration. The actual registers in
configuration space cannot be directly written to by the
user, or programmed via ICSP. While the configuration
data in program memory can be altered during run time
using table write operations, the new configuration is
not latched into the actual Configuration registers and
does not take effect until a POR occurs. Even then,
changes to device code protection cannot be done
without a Chip Erase and complete reprogramming.
The actual Configuration registers are parity-protected
against spurious bit changes; any unexpected changes
will result in a device Reset.
Like PIC18FXXJ Flash devices, PIC24F devices store
their Configuration Words at the end of implemented
program memory. Unlike PIC18F, these devices reread
and latch the configuration settings on all types of device
Resets, including the use of the RESET instruction. This
means that any aspect of device configuration, except
for code protection, can essentially be updated in software at any time. Code protection settings are still
specially protected, and can only be changed by a Chip
Erase and complete reprogramming. Like PIC18FXXJ
Flash devices, the actual Configuration registers are
parity-protected against spurious changes.
DS39764A-page 26
Implementation of this feature on PIC18F devices
varies from family to family in terms of how the program
memory area is divided into individual blocks and the
size of these blocks. Some PIC18F device families
provide for separate boot block protection, for a small
segment at the bottom of the program memory, in order
to create a secure area for a bootloader program. All
devices with data EEPROMs also provide code protection for this area as a separate block. Protection for all
blocks is configured independently with three bits:
• CPn, to prevent reads and writes from outside of
the device
• WRTn, to prevent all table writes
• EBTRn, to prevent table read operations
executed from another code block
In contrast, PIC24F code protection is all-or-nothing:
the entire program memory is either protected as one
block or it is not. Protection is configured by two bits:
GCP, which functions as the PIC18F CPn bit, and
GWRP, which functions as the PIC18F WRTn.
ON-CHIP VOLTAGE REGULATOR
PIC24F devices use low-power circuitry for their digital
logic. To ensure proper power distribution between the
core and peripheral I/O systems, these devices also
include an on-chip voltage regulator. The regulator
allows the device to be powered from a single voltage
source at the upper end of the VDD range, and provides
the option to power the logic core separately if needed.
The regulator is hardware configured by tying an external regulator pin to VDD or ground. For complete
details, refer to the appropriate device data sheet.
The on-chip regulator is a departure from previous
PIC18F devices which used common VDD and VSS
busses for all on-chip circuits. The exception is the
PIC18FXXJ Flash family which uses the same regulator system. Applications originally designed for these
devices will be pin compatible with an equivalent
PIC24F device, at least from the standpoint of power.
© 2006 Microchip Technology Inc.
PIC24F PERIPHERAL SET
I/O Ports
PIC24F ports are very similar to PIC18F but have noteworthy differences. Both devices have data PORT, LAT
and TRIS registers. Both analog and digital peripherals
TABLE 18:
are multiplexed onto ports. Ports on the PIC24F feature
more pins on more ports that have configurable
open-drain and interrupt-on-change (CNx) input
options.
COMPARISON BETWEEN PIC18F AND PIC24F PORT FEATURES
Feature Description
PIC18F
PIC24F
No
Digital-only pins
Pull-up Option
PORTB (all pins)
Multiple pins, individually
selectable
Interrupt-on-Change
PORTB (3 pins)
Multiple pins, individually
selectable
PORTx, LATx and TRISx
PORTx, LATx, TRISx
and ODCx
Yes
Yes
Voltage Inputs Above VDD + 0.3V Permitted
Control Registers
Configured to Inputs on Reset
For both architectures, pins configured as analog
inputs are read as ‘0’ when the associated PORTx bit
is read by the CPU and the output driver is disabled.
This prevents shoot-through current in the port output
driver.
Reading the PORTx register will return the digital
representation of the pin voltage. This value will reflect
an override from either a peripheral or external pin
voltage.
Peripherals with digital outputs require the TRISx bit to
be cleared in software. While the peripheral is enabled,
the pin output can be read with the PORTx register.
Enabling the peripheral may affect the output’s slew
rate and/or drive strength. Peripherals with the ability to
tri-state the output will override the TRISx register,
although the change will not affect the TRISx register
value. Refer to the product data sheet for more
information on peripheral outputs.
© 2006 Microchip Technology Inc.
Bidirectional peripherals can override the port output
but not the input. Setting the TRISx bit to ‘1’ allows the
peripheral to control the data direction. Reading the
PORTx register will provide the port levels. The output
may be affected by the peripheral’s slew rate or drive
strength overrides.
Reading the PORTx register will read the digital representation of the voltages on the pins. Reading the LATx
register, reads the latched output value. Writing the
PORTx register or the LATx register will write the LATx
register.
On all Resets, the TRISx bits are set, causing the ports
to configure as inputs and, where possible, analog
inputs. This minimizes the pin load onto the application
and the potential for shoot-through current in the digital
port inputs.
DS39764A-page 27
NEW PIC24F FEATURES
UNSUPPORTED PIC18F FEATURES
• Open-drain inputs, when enabled, are active for
both port and peripheral activities. The I2C™ pins
already have this function and are unaffected by
the ODCx register setting.
• The Parallel Master Port (PMP) inputs are unique
for the input buffer and can be software selected
as either a TTL or Schmitt Trigger (ST) input
buffer. This feature is available through the
PADCFGx register.
• Digital-only pins are 5.5V input tolerant and are
convenient for interfacing into 5V components.
• Additional pins are available for
interrupt-on-change and open-drain
configurations.
• The PMP is now a separate peripheral and not
integrated into the I/O port functions as was the
PIC18F Parallel Slave Port (PSP). Please see the
product data sheet for additional information.
• Pull-ups are only available on PORTB in PIC18F
devices and have a single enable bit to control all
pull-ups. PIC24F supports pull-ups that can be
selectively enabled on individual pins.
• Interrupt-on-change on PIC18F devices is also
implemented with a single control bit for three
PORTB pins. PIC24F interrupt-on-change pins
can all be individually enabled.
The PIC24F port architecture does not permit the port
output to drive the peripheral input. The user must
either configure the pin as a peripheral input, or port
output, but not both.
DS39764A-page 28
MIGRATION CONSIDERATIONS
• Enabling a digital or analog input or output onto a
pin with a configurable open-drain option will not
cause the pull-up to be automatically disabled.
The pull-up is not disabled if the pin has a configurable open-drain option. It is important to disable
the pull-up in software when it is not needed.
• Pins without an analog function can tolerate input
voltages up to 5.5V. This can minimize hardware
changes when migrating from a PIC18F device. A
higher voltage output can be created by adding an
external pull-up resistor on the pin and writing a
zero to the data latch. Setting the TRIS bit will pull
the output up to the supply voltage and clearing
the TRIS bit will output a digital zero.
• Drive strength, slew rate and input voltage thresholds can change automatically when a peripheral
is enabled. It is important to review the specific
data sheets for differences between devices.
• Most of the input buffers for PIC24F devices are
Schmitt Trigger (ST). Verify that the output levels
of associated components meet the ST input
voltage thresholds.
© 2006 Microchip Technology Inc.
Timers (Timer1, Timer2/3 and Timer4/5)
PIC24F timers support all of the PIC18F nanoWatt
features, which include Asynchronous and Synchronous Counter modes, Timer modes and 32 kHz crystal
support. PIC24F timers are designed to have more
generic functions, whereas PIC18F timers are intended
for dedicated purposes, such as PWM clock sources or
TABLE 19:
a generic timer function. Each PIC24F 16-bit timer has
a dedicated period register, selectable prescaler and
period match flag, and can operate in either Counter or
Timer mode. PIC24F timers add new features, such as
the ability to combine two timers into a single 32-bit
timer and a timer gate option.
COMPARISON BETWEEN PIC18F AND PIC24F TIMER FEATURES
Feature Description
Timer Width
PIC18F
PIC24F
8/16-bit
16/32-bit
General Purpose Timer Mode
All timers
All timers
Asynchronous Counter Mode
Timer1 and 3
Timer1, 2 and 4
Synchronous Counter Mode
Timer0, 1 and 3
All timers
Timer2 and 4
All timers
Period Register
32 kHz Crystal Support
Timer1
Timer1
No
All timers
Prescaler
All timers
All timers
Postscaler
Timer2 and Timer4
No
Timer Gate Option
Special Event Trigger
System Clock Source Rate
Although all timer functionality of the PIC18F nanoWatt
devices is available in the PIC24F family, different functions may reside in different timers. Like the PIC18F, all
PIC24F timers can operate using the system clock as
the clock source. Where Asynchronous Counter mode
was available in only Timer1 and 3 for PIC18F, this
function is available in Timer1, 2 and 4 for PIC24F.
Synchronous Counter mode is provided in all PIC24F
timers, as well as providing a dedicated period register.
The period register resets the timer on a clock cycle
match and sets the interrupt flag in both architectures.
However, when using the PIC24F period register,
ensure the timer gate option is disabled.
Prescalers are available in both architectures. PIC18F
timers have different prescale ranges, but PIC24F
timers use a standard range for all timers (1:1, 1:8, 1:64
and 1:256).
TABLE 20:
Yes
Yes
FOSC/4
FOSC/2
Both architectures support 32 kHz crystals through
Timer1, which can be optionally used as an accurate,
low-power system clock source. Refer to the “Oscillator”
and “Power-Saving Features” sections on pages 19
and 23, respectively, for more information on using
Timer1 as a system clock.
Other device similarities include:
• Timers can operate if the device is in Sleep mode
when the timer is configured for Asynchronous
Counter mode or Timer1 32 kHz Crystal mode.
• All timer modes are available in Idle mode since
the peripheral has a clock source.
• Both Sleep and Idle mode can be exited on a
timer interrupt event.
• A Special Event Trigger is available to start an
A/D conversion. Refer to the product data sheet
for which timer(s) is capable of generating a
Special Event Trigger.
PIC18F AND PIC24F BIT EQUIVALENT TIMER FUNCTIONS
Functionality
PIC18F
PIC24F
Timer Enable
Double Read/Write Buffer Mode
Timer1 System Clock Status
TMRxON
RD16
T1RUN
Timer Prescale Select
Timer1 Oscillator Enable
TxCKPSx
T1OSCEN
TON
T32
COSC2:COSC0 = 100
(OSCCON<14:12>)
TCKPSx
SOSCEN (OSCCON<1>)
Timer External Clock Synchronization
Timer Clock Source Select
Timer Postscale Select
TxSYNC
TMRxCS
TxOUTPSx
TSYNC
TCS
N/A
© 2006 Microchip Technology Inc.
DS39764A-page 29
NEW PIC24F FEATURES
To configure the PIC24F Timer1 for operation:
The most apparent difference between PIC18F and
PIC24F timers is the size. All PIC24F timers are 16-bit
and can be paired together to form a 32-bit timer. In
32-bit mode, a holding register latches the upper
16 bits when the lower 16 bits are read. The upper
16 bits are written first, which are latched until the lower
half is written. This feature allows all 32 bits to be
written or read without concern of a register rollover.
1.
A timer gate option is available for PIC24F timers. This
option enables the timer, when the TxCK pin is high, to
set the interrupt flag on a high-to-low transition on the
TxCK pin. A period match will not set the interrupt flag.
UNSUPPORTED PIC18F FEATURES
• Postscalers are not implemented in any of the
PIC24F timers. Therefore, the timer interrupt flag
is set on every period match.
• In PIC18F devices, Timer1 and Timer3 can both
use the Timer1 oscillator, a 32 kHz crystal clock
source. For PIC24F devices, only Timer1 can use
the oscillator.
• The PIC24F Timer1 has only one power mode for
the 32 kHz crystal oscillator. This differs from
PIC18F devices which feature two oscillator gain
options, set by the LPT1OSC Configuration bit.
MIGRATING A TYPICAL SETUP
In these examples, the procedure for Timer1 is shown.
The process for other timers is very similar, particularly
for PIC24F devices.
To configure the PIC18F Timer1 for operation:
1.
2.
3.
4.
5.
6.
Select the timer prescaler and postscaler (if
available) ratio using the T1CKPS and
TOUTPS bits.
Set the clock source using the TMR1CS bit.
Set or clear the T1SYNC bit to configure
synchronous or asynchronous operation.
Load the timer period value into the PR1 register
(if available).
If interrupts are required, set the interrupt enable
bit, TXIE. Use the priority bit, TXIP, to set the
interrupt priority.
Set the TMR1ON bit (= 1).
DS39764A-page 30
2.
3.
4.
5.
6.
Select the timer prescaler ratio using the
TCKPS1:TCKPS0 bits.
Set the Clock and Gating modes using the TCS
and TGATE bits.
Set or clear the TSYNC bit to configure
synchronous or asynchronous operation.
Load the timer period value into the PR1 register.
If interrupts are required, set the interrupt enable
bit, T1IE. Use the priority bits, T1IP2:T1IP0, to
set the interrupt priority.
Set the TON bit (= 1).
MIGRATION CONSIDERATIONS
• PIC24F peripheral clocks derived from the system
clock are twice the frequency of PIC18F devices
(FOSC/2 versus FOSC/4). Be sure to account for
the increased peripheral clock speed when the
clock source is derived from the system clock.
• The range of prescaler settings is fixed for all
PIC24F timers; PIC18F prescaler options differ
from timer to timer. Both 16-bit and 32-bit timer
options increase the time and resolution available
to applications.
• PIC24F timers do not implement interrupt
postscalers; the timer’s interrupt flag will be set on
every period match. If a PIC18F timer application
uses a postscaler, it may be necessary to change
the PIC24F timer’s operation (time base or
prescaler) to get the same results.
• Ensure PIC24F timer reads are performed on the
entire 16-bit word. Byte reads of timer registers
are not supported and will return ‘0’s.
• PIC18F Real-Time Clock/Calendar (RTCC)
applications use either Timer1 or Timer3 to
maintain time information. PIC24F devices have a
dedicated RTCC module which leaves Timer1
available for other tasks.
© 2006 Microchip Technology Inc.
Capture/Compare/PWM (CCP and ECCP)
The PIC24F capture and compare modules exhibit the
same features as the PIC18F nanoWatt CCP and
ECCP peripherals, but differ in how the features are
implemented. The capture module is capable of capturing timer values at the same pin edge intervals. The
TABLE 21:
compare peripheral can initialize the pin at the same
states and can generate a Special Event Trigger to
start an A/D conversion. PWM functions are incorporated within the compare peripheral and can support
multiple PWM outputs, and auto-shutdown, called Fault
protection in PIC24F devices.
COMPARISON BETWEEN PIC18F AND PIC24F CCP/ECCP FEATURES
Feature Description
Configurable Timer Sources
Capture Pin Prescale
Capture Buffer
Capture Timer Width
Selectable Captures per Interrupt
Stop in CPU Idle Mode
PIC18F
PIC24F
Yes
Yes
1, 4, 16
Every edge, 1, 4, 16
No
Yes
16 bits
16 bits
No
No
No
Yes
High, Low, Toggle
High, Low, Toggle
Yes
Yes
4
1
Auto-Shutdown
Yes
Yes
Half-Bridge/Full-Bridge PWM Support
Yes
Yes
PWM Dead-Band Support
Yes
Yes
Selectable Output Compare Pin States
Special Event Trigger
Number of PWM Ouputs per Peripheral
The PIC24F input capture and output compare
modules can use either Timer2 or Timer3, where
PIC18F can use either Timer1 or 3. Capture events can
be generated on every rising, falling, 4th rising and 16th
rising edge of the ICx pin.
With Single Compare Match mode selected, both
architectures can select the initial state of the OCx pin.
Upon the match, the pin can either transition or toggle.
For each mode and in both architectures, the output
compare interrupt flag is set.
All of the PIC18F PWM modes are supported by the
PIC24F family. The significant difference is that each
output compare peripheral can generate only one output. Therefore, half-bridge requires two peripherals
and full-bridge requires four. Each output compare
module can be configured for active-high or active-low
output using the OCM2:OCM0 bits (OCxCON<2:0>).
PIC24F PWM mode is an extension of the output
compare peripheral. This mode is similar to the Single
Output Compare mode and with the addition of Fault
protection pins, OCFA and OCFB, can stop the pulse
train. Similar to the PIC18F PWM mode, the duty cycle
is selected by the OCxR register, which is reloaded with
OCxRS register contents on every match. The associated output compare interrupt flag is also set. The
PWM period for both architectures is controlled by the
period register, PRx, associated with the selected
timer.
© 2006 Microchip Technology Inc.
The PIC18F auto-shutdown option is supported by the
PIC24F Fault protection option. Instead of using an
external interrupt pin, INTx, the OCFA or OCFB pin is
used. A low pulse on the Fault input pin will cause the
pulse train to automatically stop and the Output
Compare Fault Flag, OCxIF, to set. After the Fault pin
returns to a digital high voltage and the Output Compare mode is selected again in the OCxCON register,
the PWM pulse train is automatically restarted.
PIC18F ECCP features an option to insert a premature
dead-band time in Half-Bridge mode to avoid
shoot-though current in the switches, which turn off
slower than they turn on. This delay is controlled by the
PIC18F PDC6:PDC0 bits. This feature is not supported
by the PIC24F output compare module since only one
output is associated with each peripheral. To implement this feature in a PIC24F device, two timers are
assigned to two compare peripherals. The difference in
the initial timer’s values is the desired dead-band time.
The duty cycle and period are loaded for each compare
module, generating a half-bridge output with dead band
similar to the PIC18F definition. An advantage of the
PIC24F solution is that the dead-band time is not
limited to a 64-bit increment of the instruction clock,
TCY.
DS39764A-page 31
In Full-Bridge mode, the PIC18F PWM can insert a
delay between the high and low side switch activation
to prevent shoot-through. This delay is selected by the
Timer2 postscaler setting. The PIC24F solution is similar to the solution described in the half-bridge scenario,
TABLE 22:
except that two output compare peripherals are
assigned to each timer instead of one. An advantage to
the PIC24F solution is that the delay is not limited to
Timer2 postscaler settings.
ECCP BIT NAMING CONVENTION AND FUNCTIONALITY
Functionality
Input Capture Timer Select
Output Compare Timer Select
PWM Fault Condition Status
ECCP Mode Select bits
PWM Fault Condition Enable
PIC18F
PIC24F
T3CCPx
ICTMR
T3CCPx
OCTSEL
ECCPxASE
OCFLT
CCPxM<3:0>
(CCPxCON<3:0>)
ICM<2:0> (Input Capture)
OCM<2:0> (Output Compare)
ECCPxAS<2:0>
OCM<2:0>
NEW PIC24F FEATURES
UNSUPPORTED PIC18F FEATURES
• Independent Modules and Logic: The PIC24F
input capture and output compare peripherals are
independent from each other and can be individually configured. This is in contrast to the PIC18F
module which required configuration as either a
capture, compare or PWM device at any time.
• Optional Capture FIFO Buffer: This allows the
storage of up to four input capture timer values.
When enabled, buffer empty and overflow status
bits are available for buffer management.
• Input Capture Options: Input capture can be
configured to generate events on all pin
transitions (both rising and falling, not just
either/or).
• Capture Interrupt Prescaler: The input capture
module can be configured to generate an interrupt
on every capture event, as well as every 2nd, 3rd
and 4th event.
• Dual Compare Mode: PIC24F output compare
peripherals feature two compare registers, OCxR
and OCxRS. The additional register in Dual
Compare mode can generate two pin transitions
within the period to generate a wider variety of
output signals.
The PIC24F input compare peripheral always
generates an output on the ICx pin which is selectable
in software. For PIC18F, an Interrupt Only mode is
available which permits the CCPx pin to remain a port
pin. The ICx pin can not be an I/O with the input capture
peripheral enabled for PIC24F devices.
Hardware only option to clear auto-shutdown condition
is not supported in PIC24F devices. An auto-shutdown
condition is cleared automatically in hardware when the
auto-shutdown condition terminates, but PIC24F
devices also require the OCxCON register to be
reinitialized.
A single bit, PxM1, can reverse the full-bridge PWM
output direction. Since the PIC24F PWM outputs are
controlled by independent output compare peripherals,
switching the direction requires a different approach.
By swapping the timer assignments for each output
compare peripheral, using the OCTSEL bits, the output
will change direction.
PIC18F Timer2 and 4 postscale settings select how
many period matches will occur before the interrupt flag
is set. This option is available when these timers are
used for PWM clock sources. Since PIC24F timers do
not have a postscaler, a counter can be used to
accumulate timer interrupt events.
PWM Fault protection is only available on the OCFA
and OCFB pins. A comparator output can not be used
for this function. During the Fault condition, the output
compare pins are placed in a high-impedance state. An
option does not exist to select the output state in
software, such as the PIC18F architecture.
DS39764A-page 32
© 2006 Microchip Technology Inc.
MIGRATING A TYPICAL SETUP
Configuring the PIC18F ECCP module for PWM
operation typically requires these steps:
1.
Configure the PWM pins, PxA and PxB (and
PxC and PxD, if used), as inputs by setting the
corresponding TRIS bits.
2. Set the PWM period by loading the PRx register.
3. If auto-shutdown is required, do the following:
a) Disable auto-shutdown (ECCPxASE = 0).
b) Configure source (FLTx, Comparator 1 or
Comparator 2).
c) Wait for non-shutdown condition.
4. Configure the ECCP module for the desired
PWM mode and configuration by loading the
CCPxCON register with the appropriate values:
a) Select one of the available output configurations and direction with the PxM1:PxM0
bits.
b) Select the polarities of the PWM output
signals with the CCPxM3:CCPxM0 bits.
5. Set the PWM duty cycle by loading the CCPRxL
register and CCPxCON<5:4> bits.
6. For Half-Bridge Output mode, set the
dead-band delay by loading ECCPxDEL<6:0>
with the appropriate value.
7. If auto-shutdown operation is required, load the
ECCPxAS register:
a) Select the auto-shutdown sources using
the ECCPxAS2:ECCPxAS0 bits.
b) Select the shutdown states of the PWM
output pins using the PSSxAC1:PSSxAC0
and PSSxBD1:PSSxBD0 bits.
c) Set the ECCPxASE bit (ECCPxAS<7>).
d) Configure the comparators using the
CMCON register.
e) Configure the comparator inputs as analog
inputs.
8. If auto-restart operation is required, set the
PxRSEN bit (ECCPxDEL<7>).
9. Configure and start TMRx:
a) Clear the TMRx interrupt flag bit by clearing
the TMRxIF bit.
b) Set the TMRx prescale value by loading the
TxCKPS bits (TxCON<1:0>).
c) Enable Timerx by setting the TMRxON bit
(TxCON<2>).
10. Enable PWM outputs after a new PWM cycle
has started:
a) Wait until TMRx overflows (TMRxIF bit is
set).
b) Enable the ECCP/PxA, PxB, PxC and/or
PxD pin outputs by clearing the respective
TRIS bits.
c) Clear the ECCPxASE bit (ECCPxAS<7>).
© 2006 Microchip Technology Inc.
The equivalent procedure for the PIC24F output
compare module is as follows:
1.
2.
3.
4.
5.
6.
Set the PWM period by writing to the selected
Timer Period register (PRx).
Set the PWM duty cycle by writing to the OCxRS
register.
Write the OCxR register with the initial duty
cycle.
Enable interrupts, if required, for the timer and
output compare modules. The output compare
interrupt is required for PWM Fault pin
utilization.
Configure the output compare module for one of
two PWM operation modes by writing to the
Output Compare mode bits OCM<2:0>
(OCxCON<2:0>).
Set the TMRx prescale value and enable the
time base by setting TON (TxCON<15>) = 1.
MIGRATION CONSIDERATIONS
The PIC24F output compare peripheral clock source is
based on FOSC/2 which differs from the PIC18F FOSC/4
clock source. Ensure the equations available in the
product data sheet are used for the various
calculations.
If the PIC24F capture time base increments every
instruction cycle, the captured count value will be the
value that was present 1 or 2 instruction cycles past the
time of the event on the ICx pin. This time delay is a
function of the actual ICx edge event, related to the
instruction cycle clock and delay, associated with the
input capture logic. If the input clock to the capture time
base is prescaled, then the delay in the captured value
can be eliminated.
Note:
The maximum PWM resolution is TOSC for
PIC18F devices and TCY for PIC24F
devices.
DS39764A-page 33
Serial Peripheral Interface (SPI)
The PIC24F SPI peripheral is a superset of the PIC18F
architecture and many of the features use the same
pin, register and bit names. Most of the 64-pin and
larger PIC24F pin count devices have two SPI peripherals, as do the larger PIC18F pin count devices. The
PIC24F SPI peripheral is considered a “stand-alone”
peripheral, where PIC18F devices incorporate the SPI
function into the larger Master Synchronous Serial Port
(MSSP) peripheral, which also includes I2C.
The functionality of a synchronous USART is supported in the PIC24F SPI, leaving the asynchronous,
LIN and IrDA® functions for the PIC24F UART. See the
“Universal Asynchronous Receiver/Transmitter
(UART)” section on page 38 for additional PIC18F
EUSART and PIC24F UART differences.
TABLE 23:
Both SPI peripherals support Master and Slave mode,
selectable active clock edge and clock Idle state. Master mode can select when data is sampled at a variety
of clock rates. The slave select feature is also common
between the two architectures.
A comparison of SPI module features is provided in
Table 23.
BIT NAME CHANGES AND MAPPING
Many of the PIC24F bit and register names will look
familiar to a PIC18F user, as shown in Table 24.
COMPARISON BETWEEN PIC18F AND PIC24F SPI FEATURES
Feature Description
PIC18F
PIC24F
Selectable Clock Polarity
Yes
Yes
Selectable Clock Edge
Yes
Yes
2-Wire Support
Yes
Yes
Slave Select Option
Yes
Yes
FIFO Buffer
No
Yes
8
8/16
Transfer Data Width
Frame Mode Support
No
Yes
Synchronous USART Functionality in SPI
No
Yes
TABLE 24:
SPI BIT NAMING CONVENTION AND FUNCTIONALITY
Functionality
Clock Polarity
Clock Edge
SPI Data Buffer
Transfer or Reception States
PIC18F
PIC24F
CKE
CKE
CKP
CKP
SSPxBUF
SPIxBUF
BF
SPITBF and SPIRBF
SPI Event Occurs
SSPxIF Interrupt Flag
SPIxIF
Overflow Status bit
SSPOV
SPIROV
SMP
SMP
Sampling Time
SPI Modes and Frequency
SSPM<3:0>
MSTEN
PPRE<1:0>
SPRE<2:0>
SSEN
SDO Disable
DS39764A-page 34
TRIS<SDO>
DISSDO
© 2006 Microchip Technology Inc.
NEW PIC24F FEATURES
The following new PIC24F SPI features provide
additional flexibility and reduced CPU overhead.
• SPI FIFO (First-In, First-Out) Buffer:
Probably the most significant enhancement, the
buffer is capable of queuing up multiple transfers
without additional CPU intervention. It can be configured to behave as a single or multi-level buffer,
and can track the number of pending transactions
and the where the last incoming data came from
(CPU or SPI receiver).
• 8 and 16-Bit Transfer Support: Both 8 and 16-bit
transfers are selected by setting MODE16
(SSPxCON1<10>).
• SPI Frame mode: Frame mode is available by
setting FRMEN (SPIxCON2<15>).
• Optional Frame Synchronization Pulse: An
optional frame synchronization pulse is also
provided with configurable polarity and edge
coincidence.
• SPI Transfers Clocked Externally: Similar to
disabling the SDO output in Master mode, SCK
output can be disabled with the DISSCK bit,
allowing SPI transfers to be clocked externally.
• SPI Interrupt Flag: SPIxIF indicates when a
reception has occurred if the SPIROV bit is
already set.
A comparable setup for PIC24F SPI Master mode
follows a similar setup:
1.
2.
3.
4.
5.
If interrupts are desired:
a) clear the SPIxIF bit;
b) set the SPIxIE bit;
c) load SPIxIP with 7.
Select clock frequency, polarity and active edge.
Input sample phase and set the MSTEN bit.
If SDO needs to be disabled, set the DISSDO
bit.
Clear the SPIROV bit and set the SPIEN bit
(SPIxSTAT<15>) to enable the peripheral.
Note:
Slave mode is similar, except the SPIxBUF
register and the SMP and MSTEN bits are
cleared. Slave select option is enabled by
setting the SSEN bit.
MIGRATION CONSIDERATIONS
The only significant issue when migrating is the Master
mode clock frequency calculation. Because the
PIC24F instruction clock is based on FOSC/2, the
peripheral clock is at a different rate than the PIC18F
architecture. Use the equations in the SPI chapter of
the specific device data sheet to calculate the correct
SPI clock speed.
UNSUPPORTED PIC18F FEATURES
All SPI PIC18F features are supported in PIC24F.
MIGRATING A TYPICAL SETUP
PIC18F SPI code block migration to PIC24F does not
require much effort. The following is a typical Master
mode setup for PIC18F:
1.
2.
3.
4.
5.
6.
Set the TRIS bit for the SDI pin.
Clear the TRIS bits for the SCK and SDO pins.
Select the appropriate clock edge and polarity
with the CKE and CKP bits
Select a sampling time and clock frequency
If interrupts are needed, clear the SSPxIF bit
and set the SSPxIE and GIE bits
Clear the WCOL and SSPOV bits and enable
the module with the SSPEN bit
Note:
Slave mode is similar, except the TRIS bit
for the SCK pin is cleared, and a slave
select option is available.
© 2006 Microchip Technology Inc.
DS39764A-page 35
Inter-Intergrated Circuit™ (I2C™)
The PIC24F I2C peripheral has not changed significantly
from the PIC18F definition. Many of the PIC18F control
and status bits have corresponding PIC24F bits. Both
architectures support 7 and 10-Bit Addressing modes,
general call addressing, clock stretching, 100 and
400 kHz data rates and multi-master networking.
New features available for migrating applications
include independent master and slave logic, configurable address masking and Bus Repeater mode.
Whether the PIC18F I2C software implementation uses
TABLE 25:
an interrupt-based state machine or status bit polling,
the transition to PIC24F can be accomplished with
minimal effort.
A comparison of module features is provided in
Table 25.
BIT NAME CHANGES AND MAPPING
Many of the PIC18F I2C bits can be mapped to their
PIC24F equivalent. Refer to Tables 26, 27 and 28 for
bit functions common to both Master and Slave modes,
and Master and Slave mode specific bit functions.
COMPARISON BETWEEN PIC18F AND PIC24F I2C™ FEATURES
Feature Description
PIC18F
PIC24F
100 kHz/400 kHz
100 kHz/400 kHz/1 MHz
Yes
Yes
Simplified 10-Bit Addressing Mode
No
Yes
Multi-Master Support
Yes
Yes
Yes (up to 6 bits)
Yes (full 7 or 10 bits)
Supported Bus Speeds
7 and 10-Bit Addressing Mode Support
Configurable Address Masking
General Call Support
Reserved Address Support
Clock Stretching Option
Yes
Select devices only
Yes
(1)
Yes
Yes
Yes
Bus Repeater (IPMI) Mode
No
Yes
Slew Rate Control
Yes
Yes
Disable in Idle Mode Option
No
Yes
I2C/SMBus Input Levels
Yes
Yes
Note 1:
Refer to the specific device data sheet for information on which addresses are reserved for particular devices.
TABLE 26:
PIC18F AND PIC24F BIT EQUIVALENT I2C™ FUNCTIONALITY
Functionality
PIC18F
PIC24F
SSPEN
I2CEN
Stop bit Detected
P
P
Start bit Detected
S
S
Disable Slew Rate Control
SMP
DISSLW
SMBus Input Levels
CKE
SMEN
Write Attempted while Transmit Register Busy
WCOL
IWCOL
Byte Received while Byte in Receive Register
SSPOV
I2COV
Receive Buffer Full
BF
RBF
Transmit Buffer Full
BF
TBF
Module Enable
TABLE 27:
PIC18F AND PIC24F BIT EQUIVALENT I2C™ SLAVE FUNCTIONS
Functionality
SCL Stretch/Release
I2CxADD 10-Bit Slave Enable
General Call Enable
PIC18F
PIC24F
CKP
SCLREL
SSPM3:SSPM0 = 1111
A10M
GCEN
GCEN
Data/Address bit
D/A
D/A
Read/Write bit
R/W
R/W
DS39764A-page 36
© 2006 Microchip Technology Inc.
TABLE 28:
PIC18F AND PIC24F BIT EQUIVALENT I2C™ MASTER FUNCTIONS
Functionality
PIC18F
PIC24F
Acknowledge Data bit
ACKDT
ACKDT
Acknowledge Sequence Enable
ACKEN
ACKEN
RCEN
RCEN
PEN
PEN
RSEN
RSEN
SEN
SEN
Receive Enable
Stop Condition Enable
Repeated Start Condition Enable
Start Condition Enable
Acknowledge Status
ACKSTAT
ACKSTAT
Transmit Status
TRMT
TRSTAT
Bus Collision
BCLIF
BCL and MI2CxIF
NEW PIC24F FEATURES
MIGRATING A TYPICAL SETUP
I2C
The following new PIC24F
features provide
additional flexibility and reduced CPU overhead.
• Independent Master/Slave Logic: In the PIC24F
implementation, I2C master and slave functions
have independent logic and functions. Each of
these sections can operate independently and
simultaneously, and generate its own interrupts.
• Bus Repeater Mode: The PIC24F module can
function as a “passive” repeater, capable of
responding to all addresses and performing automatic clock stretching. In this mode, reserved I2C
addresses are also Acknowledged.
• General Call Support: A General Call Status bit,
GCSTAT (I2CxSTAT<9>), eliminates the need to
read SPIxBUF to confirm the address.
• Full Slave Address Masking: The slave logic in
the PIC24F module allows masking of all address
bits in both 7-Bit and 10-Bit Addressing modes.
The PIC18F module only permits masking on
bits 0 through 7 in both modes.
• Address Detection: The 10-Bit Addressing mode
has been simplified for the Update Address bit,
UA. Update address is no longer necessary and
address matches are automatically detected with
the available ADD10 (I2CxSTAT<8>) status bit.
UNSUPPORTED PIC18F FEATURES
The PIC24F I2C peripheral does not have a Firmware
Controlled Master mode configuration (similar to the
PIC18F mode, where SSPM<3:0> = 1011). As a result,
PIC24F I2C firmware implementation must use port
input (VIH and VIL) levels.
© 2006 Microchip Technology Inc.
PIC18F I2C implementations vary greatly between
various applications. Due to this high degree of
variance, an adequate summary of each potential
implementation would be complex and still not cover
every application. A good approach to migrating I2C
code is to translate each PIC18F I2C event into its
PIC24F equivalent, using Tables 26, 27 and 28. Also,
review the new PIC24F features which can significantly
reduce code size and simplify the software solution.
MIGRATION CONSIDERATIONS
Differences between the PIC24F and PIC18F I2C
peripherals can lead to some complications during
migration. A common issue is to not account for the
address shift in the I2CxMSK and I2CxADD registers.
The Least Significant I2C address bit in the PIC18F
SSPxADD register is bit ‘1’, where in the PIC24F
I2CxADD register, it is bit ‘0’. A simple shift prior to
loading or after reading the address will resolve the
difference.
In Sleep or Idle mode, some PIC24F devices cannot
wake-up on a Slave mode address match and may not
update the D/A bit in Slave Transmit mode. Refer to the
appropriate PIC24F data sheet to determine whether
these features are supported.
Defining Master mode baud rates has changed for
PIC24F devices. Since the PIC24F uses an instruction
clock based on FOSC/2, the peripheral clock rate differs
by a factor of two. Refer to the specific device data
sheet for the baud rate equations and tables.
DS39764A-page 37
Universal Asynchronous
Receiver/Transmitter (UART)
The new PIC24F Universal Asynchronous Receiver
Transmitter (UART) module is a full-duplex, asynchronous system with enhanced functionality over the PIC18F
Enhanced Universal Synchronous Asynchronous
Receiver Transmitter (EUSART) module. Some of the
new PIC24F UART module features include increased
baud rate, parity hardware support (even/odd/none) for
TABLE 29:
8-bit data, selectable Idle polarity, software Stop in Idle,
improved interrupt options and hardware flow control
supports. Table 29 summarizes the comparison between
the PIC18F EUSART and PIC24F UART.
Note:
The PIC24F UART does not support
synchronous communications. If synchronous serial communication is required, use
the SPI module instead.
COMPARISON BETWEEN PIC18F AND PIC24F UART FEATURES
Features
PIC18F EUSART
PIC24F UART
Asynchronous (full-duplex) Operation with:
- Auto-Wake-up on Character Reception
- Auto-Baud Calibration
- 12-Bit Break Character Transmission
Yes
Yes
Full-Duplex 8 or 9-Bit Data Transmission
through TX and RX pins
Yes
Yes
Support for 9-Bit Mode with Address Detect
(9th bit = 1)
Yes
Yes
Hardware Flow Control Option with CTS and
RTS pins
No
Yes
Number of Stop bits
1
1 or 2
No
Yes
Dedicated 8-bit/16-bit
16-bit
Yes
Yes
300 bps to 115 kbps
at 0.25-10 MIPS
15 bps to 1 Mbps
at 16 MIPS
IrDA® Encoder and Decoder Logic
No
Yes
16x Baud Clock Output for IrDA Support
No
Yes
FIFO Transmit Data Buffer
No
Yes
FIFO Receive Data Buffer
No
Yes
Loopback Mode for Diagnostic Support
No
Yes
No
(can be implemented in software)
Yes
Selectable Idle Polarity
Baud Rate Generator
BRG Prescaler
Baud Rate range
Hardware Parity Support (8-bit data)
Parity Error Detection
No
Yes
Hardware Sync Byte Generation
Yes
Yes
Support for Sync and Break Characters
Yes
Yes
Wake-up Enable
Yes
Yes
Framing and Buffer Overrun Error Detection
Yes
Yes
Software Stop in Idle Option
No
Yes
Transmit and Receive
Transmit, Receive and UART
Error Event
Interrupt Options (see “Interrupt Controller”
on page 17)
DS39764A-page 38
© 2006 Microchip Technology Inc.
TABLE 30:
UART BIT NAMING CONVENTION AND FUNCTIONALITY
Functionality
PIC18F
PIC24F
Auto Baud Detect Enable bit/Auto-Baud Enable bit
ABDEN
ABAUD
Address Detect Enable bit/Address Character Detect bit
(bit 8 of received data = 1)
ADDEN
ADDEN
BRGH
BRGH
CREN (receiver only)
UARTEN
(transmitter and receiver)
High Baud Rate Select bit:
(PIC18F high/low-speed, PIC24F 4x/16x baud clock)
Continuous Receive Enable bit
Framing Error bit/Framing Error Status bit (read-only)
FERR
FERR
Overrun Error bit/Receive Buffer Overrun Error Status bit
(clear/read-only)
OERR
OERR
Receive Operation Idle Status bit/Receiver Idle bit
(read-only)
RCIDL
RIDLE
EUSART Receive Interrupt Flag bit (PIC18F)
UART1 Receiver Interrupt Flag Status bit (PIC24F)
RCIF
UxRXIF
Receive Buffer Data Available bit (read-only)
9th bit of Received Data bit
URXDA
RX9D
UxRXREG<8>
(word read needed)
9-Bit Receive Enable bit/Parity and Data Selection bits
RX9
PDSEL1:PDSEL0
9-Bit Transmit Enable bit/Parity and Data Selection bits
TX9
Send Break Character bit
SENDB
UTXBRK
Transmit Shift Register Status bit (PIC18F)
Transmit Shift Register Empty bit (read-only, PIC24F)
TRMT
TRMT
Transmit Enable bit
TXEN
UTXEN
EUSART Transmit Interrupt Flag bit/UARTx Transmitter
Interrupt Flag Status bit
TXIF
UxTXIF
9th bit of Transmit Data
TX9D
UxTXREG<8>
(word write needed)
Wake-up Enable bit/Wake-up on Start bit Detect during
Sleep Mode Enable bit
WUE
WAKE
UNSUPPORTED PIC18F FEATURES
The following are PIC18F EUSART features that are
not supported by the newer PIC24F UART module:
• FOSC/[64 (n + 1)] baud rate.
• Synchronous Master and Slave Communication
modes are not supported in the PIC24F UART. To
use Synchronous mode in PIC24F devices, use
the SPI module.
© 2006 Microchip Technology Inc.
• The PIC18F EUSART option of changing
between low speed and high speed by changing
the BRGH bit between ‘0’ and ‘1’ is not supported
in PIC24F. The target will need to change the
baud rate for PIC24F.
DS39764A-page 39
TRANSMISSION SETUP (8-BIT DATA MODE)
To set up the PIC18F EUSART for a transmission in
8-Bit Data mode:
1.
2.
3.
4.
5.
6.
7.
8.
Initialize the SPBRGHx:SPBRGx registers for
the appropriate baud rate. Set or clear the
BRGH and BRG16 bits, as required, to achieve
the desired baud rate.
Select Asynchronous or Synchronous mode via
the SYNC bit and setting bit, SPEN.
If interrupts are desired, set enable bit TXxIE.
If 9-bit transmission is desired, set transmit bit,
TX9. Can be used as address/data bit.
Enable the transmission by setting bit, TXEN,
which will also set bit, TXxIF.
If 9-bit transmission is selected, the 9th bit
should be loaded in bit, TX9D.
Load data to the TXREGx register (starts
transmission).
If using interrupts, ensure that the GIE and PEIE
bits in the INTCON register (INTCON<7:6>) are
set.
4.
5.
6.
If 9-bit reception is desired, set bit, RX9.
Enable the reception by setting bit, CREN.
Flag bit, RCxIF, will be set when reception is
complete and an interrupt will be generated if
enable bit, RCxIE, was set.
7. Read the RCSTAx register to get the 9th bit (if
enabled) and determine if any error occurred
during reception.
8. Read the 8-bit received data by reading the
RCREGx register.
9. If any error occurred, clear the error by clearing
enable bit, CREN.
10. If using interrupts, ensure that the GIE and PEIE
bits in the INTCON register (INTCON<7:6>) are
set.
The equivalent steps for the PIC24F UART are:
1.
The equivalent steps for the PIC24F UART are:
1.
2.
3.
4.
5.
6.
Set up the UART:
a) Write appropriate values for data, parity and
Stop bits.
b) Write appropriate baud rate value to the
UxBRG register.
c) Set up transmit and receive interrupt enable
and priority bits.
Enable the UART.
Set the UTXEN bit (causes a transmit interrupt).
Write data byte to lower byte of UxTXREG word.
The value will be immediately transferred to the
Transmit Shift Register (TSR) and the serial bit
stream will start shifting out with next rising edge
of the baud clock.
Alternately, the data byte may be transferred
while UTXEN = 0, and then the user may set
UTXEN. This will cause the serial bit stream to
begin immediately because the baud clock will
start from a cleared state.
A transmit interrupt will be generated through
the interrupt control bit, UTXISELx.
RECEPTION SETUP (8-BIT DATA MODE)
To set up the PIC18F EUSART for a reception in 8-bit
data mode:
1.
2.
3.
Initialize the SPBRGHx:SPBRGx registers for
the appropriate baud rate. Set or clear the
BRGH and BRG16 bits, as required, to achieve
the desired baud rate.
Select Asynchronous or Synchronous mode via
the SYNC bit and setting bit, SPEN.
If interrupts are desired, set enable bit, RCxIE.
DS39764A-page 40
2.
3.
4.
Setup the UART
a) Write appropriate values for data, parity and
Stop bits.
b) Write appropriate baud rate value to the
UxBRG register.
c) Set up transmit and receive interrupt enable
and priority bits.
Enable the UART.
A receive interrupt will be generated when one
or more data characters has been received as
per interrupt control bit, URXISELx.
Read the OERR bit to determine if an overrun
error has occurred.
Note:
5.
The OERR bit must be reset in software.
Read UxRXREG.
MIGRATION CONSIDERATIONS
When migrating from a PIC18F design to a PIC24F, the
following must be taking into consideration:
• Because the fundamental instruction cycle rate is
different (FOSC/2 for PIC24F, FOSC/4 for PIC18F),
projects that are being ported from PIC18F to
PIC24F will need to have baud rates recalculated.
• For PIC18F, the maximum USART baud rate is
FOSC/4, and the minimum is FOSC/(64 * 65536).
For PIC24F, the maximum UART baud rate
possible (BRGH = 1) is FCY/4 (for BRG = 0) and
the minimum baud rate possible is
FCY/(4 * 65536).
• Routines for 9-bit communications will need to be
modified. PIC18F USARTs require the 9th bit to
be read from, or written to another register,
besides RXREGx or TXREGx. PIC24F UARTs
can perform 9-bit operations with a single write to
UxTXREG or a read from UxRXREG.
© 2006 Microchip Technology Inc.
10-Bit A/D Converter
The PIC24F A/D has significant improvements in
performance and features over the PIC18F implementation (see Table 31). Improvements include a conversion
rate of 500 ksps (samples per second), Automatic
Channel Scan mode, 16-bit conversion result buffer,
TABLE 31:
selectable Buffer Fill modes, four result format options
and individually selectable A/D inputs. These features
improve A/D performance and flexibility, and minimize
CPU overhead.
A comparison of available features is presented in
Table 31.
COMPARISON BETWEEN PIC18F AND PIC24F A/D FEATURES
Feature Description
Resolution
Conversion Throughput (ksps)
PIC18F
PIC24F
10-bit
10-bit
100
500
Internal and External
Internal and External
DONE Status bit
Yes
Yes
Selectable A/D Clock Divider
Yes
Yes
Available Voltage Reference Sources
A/D RC Oscillator
Yes
Yes
Auto-Sample
Yes
Yes
Programmable Sample Time
Yes
Yes
Individually Selectable Analog Inputs
No
Yes
Special Event Trigger
Yes
Yes
Multiple Channel Scan
No
Yes
FIFO Buffer
No
Yes
Multiple Result Formats
No
Yes
Differential Channel (comparative) Conversion
No
Yes
BIT NAME CHANGES AND MAPPING
The PIC24F and PIC18F A/D module have similar features. Both have a 10-bit, Successive Approximation
Register (SAR) A/D capable of using a combination of
reference pins (VREF+ and VREF-) and analog power
pins (AVDD and AVss) for the reference voltages. Both
product lines feature an A/D conversion status bit,
selectable A/D clock divider, dedicated A/D RC,
TABLE 32:
auto-sampling with configurable sample time,
analog/digital input selection and run-time selectable
A/D input. Conversions can be initiated by software, an
external interrupt or an output compare event.
The associated control and status bits for the common
features may have different names but perform similar
functions, as shown in Table 32.
CONTROL AND STATUS BIT NAMING CONVENTION AND FUNCTIONALITY
Functionality
PIC18F Name
PIC24F Name
VCFG2:VCFG0
VCFG2:VCFG0
Indicates when the conversion is complete, an associated interrupt
is also available.
GO/DONE
DONE
One of two A/D clock sources can be selected, either the dedicated
A/D RC oscillator or the divider of the system clock. An associated
interrupt is also available.
ADCS2:ADCS0
ADRC,
ADCS7:ADCS0
Auto-sampling time defined.
ACQT2:ACQT0
SAMC4:SAMC0
To configure an I/O for an analog input, disable the digital input
buffers.
PCFG3:PCFG0
PCFG15:PCFG0
CHS3:CHS0
CSSL15:CSSL0
CCPxM3:CCPxM0
(CCPxM:<3:0>)
SSRC2:SSRC0
Bits select a combination of AVDD and VREF+ for the positive
voltage reference and AVSS and VREF- for the negative voltage
reference.
Specifies the pin at which the analog conversion will be performed.
A conversion can be initiated from an external interrupt or output
compare event.
© 2006 Microchip Technology Inc.
DS39764A-page 41
NEW PIC24F A/D FEATURES
Many of the improvements of the PIC24F A/D are likely
to add value to applications migrating from the PIC18F
architecture.
To prepare the PIC24F A/D for a comparable PIC18F
conversion, perform the following:
1.
Select which pins will become A/D inputs
(AD1PCFG<15:0>).
Determine
A/D
voltage
references
(AD1CON2<15:13>).
Select A/D clock divider (AD1CON3<7:0>) or
dedicated RC (AD1CON3<15>).
Choose whether sampling will begin automatically after the previous conversion or by software
(AD1CON1<2>).
Select the trigger source to begin the conversion, either by software, an INT0 transition,
Timer3 compare or automatically by the module
(AD1CON1<7:5>).
Determine whether the results will be stored as
integer, signed integer, fractional or signed
fractional format (AD1CON1<9:8>).
To match the PIC18F architecture, generate an
interrupt on every conversion by clearing the
SMPI (AD1CON2<5:2>) bits.
Enable the module (AD1CON1<15>).
If desired, enable the A/D interrupt by clearing
the interrupt flag (IFS0<13>), setting the
interrupt enable bit (IEC0<13>) and setting the
interrupt priority to 7 (IPC3<6:4>).
• Enhanced Sampling Speed and Throughput:
The minimum A/D clock period has been reduced
from 750 ns to 75 ns, providing conversion rates
up to 500 ksps (thousand samples per second).
• Flexible Results Buffering: The results buffer can
be configured as two 8-word buffers or one
16-word buffer. In Two 8-Word Buffer mode, results
can be written either sequentially through each
buffer or alternately between the two buffers.
• Output Formats: Conversion data can be provided
in one of four user-selectable data formats.
• Input Scanning: Multiple analog channels can be
successively scanned across two sets of
multiplexed inputs using the Automatic Channel
Scan mode option.
• Individual Pin Configuration: Each of the
analog input pins can be individually selected for
Analog Input mode, instead of as part of a
sequence of pins.
• Differential Conversion: This conversion mode
allows the direct measurement of the voltage
difference between two analog inputs.
2.
UNSUPPORTED PIC18F FEATURES
MIGRATION CONSIDERATIONS
All PIC18F A/D converter features are supported in the
PIC24F A/D.
• The analog input voltage range of the PIC24F is
smaller than PIC18F devices due to the smaller
VDD range of the PIC24F device family. The voltage range of the PIC24F is 2.0V to 3.6V, whereas
the range for most PIC18F devices is 2.0V to 5.5V.
MIGRATING A TYPICAL SETUP
Preparing for a PIC24F A/D conversion is very similar
to setting up a PIC18F conversion. One or more pins
are configured as an analog input and the A/D parameters select the acquisition time and conversion clock.
The A/D is enabled. If an interrupt is needed, the A/D
interrupt flag is cleared and the interrupt is enabled.
After the minimum required acquisition time has
expired, either in software or automatically by the
module, the A/D conversion is started. When the
interrupt occurs or the DONE bit is read high, the result
is available in the designated result register.
DS39764A-page 42
3.
4.
5.
6.
7.
8.
9.
Note:
For both architectures, the analog voltage
range must not exceed 0.3V above VDD or
below VSS.
• The analog input impedance for the PIC24F
module is 2.5 kΩ. Many PIC18F devices are
10 kΩ, although 2.5 kΩ is recommended.
• For the PIC24F module, the module’s internal
sampling capacitor is 4.4 pF, typical; for the
PIC18F module, it is 25 pF, typical. The reduced
capacitance increases the affect of the external
capacitance on the analog input.
• When configuring the A/D to use the conversion
clock, several factors will affect the PIC24F divider
selection. These include the reduced TAD and the
instruction rate. The PIC24F conversion clock is
based on the instruction clock, TCY/2, where the
PIC18F is based on FOSC/2. Due to different
instruction rates for a given system clock frequency,
the smallest period for the PIC24F A/D clock divider
is one FOSC period and two for PIC18F.
© 2006 Microchip Technology Inc.
Comparator and Comparator Voltage
Reference Modules
The comparator modules on the PIC18F and PIC24F
devices share many of the same features. Each has
two comparators with various configuration selections.
The PIC18F version has only eight selections, one of
TABLE 33:
which is disabling comparators. The PIC24F version is
more configurable, allowing individual control over
many of the options that are fixed on PIC18F. In addition to the comparator module, both PIC18F and
PIC24F offer a comparator voltage reference based on
a resistor ladder circuit.
COMPARISON BETWEEN PIC18F AND PIC24F COMPARATOR MODULE FEATURES
Feature Description
PIC18F
Comparators
PIC24F
2
2
Yes
Yes
Comparator Output on I/O pin
Available in 3 modes
Always available,
individually enabled
Separate Comparator Enables
Available in 1 mode
Always available,
individually enabled
Multiple Input Selections
Available in 1 mode
Always available,
individually configurable for
all inputs
Output Inversion Control
Detecting Individual Comparator Output Changed States Tracked in firmware by user
TABLE 34:
Tracked in hardware
COMPARISON BETWEEN PIC18F AND PIC24F COMPARATOR VOLTAGE
REFERENCE MODULE FEATURES
Feature Description
PIC18F
PIC24F
16-tap
16-tap
Two Selectable Ranges
Yes
Yes
Selectable Reference from Analog Power or MCU Power
Yes
Yes
Voltage Reference Output Enable
Yes
Yes
Resistor Ladder
TABLE 35:
COMPARATOR AND COMPARATOR VOLTAGE BIT NAMING CONVENTION AND
FUNCTIONALITY
Functionality
PIC18F
PIC24F
Comparator Output
CxOUT
CxOUT
Comparator Output Inversion
CxINV
CxINV
Comparator Input Switch
CIS
No
Comparator Mode
CMx
No
Stop in Idle Mode
No
CMIDL
Comparator Event
No
CxEVT
Comparator Enable
No
CxEN
Comparator Output Enable
No
CxOUTEN
Comparator Negative Input Configure
No
CxNEG
Comparator Positive Input Configure
No
CxPOS
© 2006 Microchip Technology Inc.
DS39764A-page 43
NEW PIC24F COMPARATOR MODULE
FEATURES
• Increased Flexibility in Configuration: The
PIC24F comparator module allows individual
control over the inverting and non-inverting inputs
to each of the comparators, comparator enables,
comparator output inversion and output on I/O
pins. In contrast, the comparator module in
PIC18F devices was limited to eight fixed
configurations, one of which has both comparators disabled and another has the comparators in
Reset. The PIC24F module can reproduce all but
one of these configurations.
• Individual Comparator Status Tracking: The
PIC24F module has two individual comparator
event control bits that can be used for detecting
when an individual comparator output changes
states. The PIC18F devices require firmware to
maintain information about the status of the output
bits to determine which comparator has changed
states.
NEW PIC24F COMPARATOR VOLTAGE
REFERENCE MODULE FEATURES
The comparator voltage reference module is identical
to that of the PIC18F module. The control registers and
the bits within them are identically named and have the
same functions.
UNSUPPORTED PIC18F FEATURES
The PIC18F module has two configurations, where the
VIN+ input on both comparators are tied together and
share one I/O pin. To achieve one of these two modes
on PIC24F, the VIN+ input on each comparator must be
tied externally together using one more I/O pins than
the comparable PIC18F configuration.
TYPICAL SETUP SEQUENCE
In this example, the PIC18F comparator module will be
configured as two independent comparators with outputs enabled and Comparator 1 output inverted. The
comparator voltage reference module is configured for
output enabled (outputs onto VIN+ pin of Comparator 1)
and set for 0.25 * VDD. All referenced bits are in the
CMCON and CVRCON registers.
DS39764A-page 44
1.
2.
3.
4.
5.
6.
7.
Set the Comparator mode bits, CM2:CM0 to
‘011’, which enables two independent
comparators with output enabled.
Clear the C2INV bit for a non-inverted output for
Comparator 2.
Set the C1INV bit to invert Comparator 1 output.
Enable the comparator voltage reference
module and its output by setting the CVREN and
CVROE bits.
Select the CVRSRC/32 step size for the voltage
range.
Select AVDD and AVSS as the supply voltage by
clearing the CVRSS bit.
Select 0.25 * VDD as the voltage reference value
by clearing bits, CVR3:CVR0.
This sequence configures the PIC24F comparator and
comparator voltage reference modules to operate the
same as the previous PIC18F setup. Control bits are in
the CMCON (for comparator) and CVRCON (for
voltage reference) registers.
1.
Enable the comparators by setting the C1EN
and C2EN bits.
2. Enable the comparator outputs by setting the
C1OUTEN and C2OUTEN bits.
3. Clear the C2INV bit for a non-inverting output for
Comparator 2.
4. Set the C1INV bit to invert Comparator 1 output.
5. Connect Comparator 1 negative input pin to VINby clearing C1NEG.
6. Connect Comparator 1 positive input pin to the
comparator voltage reference by clearing
C1POS.
7. Connect Comparator 2 negative input to VIN- by
clearing C2NEG.
8. Connect Comparator 2 positive input is to VIN+
by setting C2POS.
9. Enable the comparator voltage reference
module and its output by setting the CVREN and
CVROE bits.
10. Select the CVRSRC/32 step size for the voltage
range.
11. Select AVDD and AVSS as the supply voltage by
clearing the CVRSS bit.
12. Select 0.25 * VDD as the voltage reference value
by clearing bits, CVR3:CVR0.
© 2006 Microchip Technology Inc.
SUMMARY
REFERENCES
The preceding represents the most important considerations for moving a legacy, 8-bit PIC18F application to a
PIC24F platform. Since there are so many ways for
implementing a given solution, it is impractical in this
space to list every possible code or algorithm translation
into its 16-bit equivalent. Instead, this document should
be thought of as a checklist of the most important
differences between those features shared by both
device families.
For more specific information on the device families
used as the basis for this document, please refer to the
following data sheets:
Nor does this document consider all the possibilities of
the PIC24F architecture and its expanded peripheral set.
Features, such as the Programmable CRC Generator,
hardware Real-Time Clock/Calendar and Parallel
Master Port, may offer the chance for making an existing
application smaller and more efficient. Ultimately, the
user will need to review their application’s design and
implementation, and make the decisions as to how their
code and hardware design must be changed to work on
the new platform.
• “PIC18F8722 Family Data Sheet” (DS39646)
• “PIC24FJ128GA Family Data Sheet” (DS39747)
Detailed information on oscillator design and troubleshooting for PICmicro microcontroller applications is
provided in these Microchip application notes:
• AN826, “Crystal Oscillator Basics and Crystal
Selection for rfPIC® and PICmicro® Devices”
(DS00826)
• AN849, “Basic PICmicro® Oscillator Design”
(DS00849)
• AN943, “Practical PICmicro® Oscillator Analysis
and Design” (DS00943)
• AN949, “Making Your Oscillator Work” (DS00949)
Microchip also has additional data sheet and reference
material available for PIC18F, PIC18FXXJ Flash and
PIC24F devices that may be helpful in planning the
migration of an application. For a complete listing of
available materials, users are encouraged to visit the
Microchip corporate web site at:
www.microchip.com
© 2006 Microchip Technology Inc.
DS39764A-page 45
NOTES:
DS39764A-page 46
© 2006 Microchip Technology Inc.
APPENDIX A:
MAPPING PIC18F
TO PIC24F
INSTRUCTIONS
Key:
Wn, Ws, Wb and Wd: any of the working registers. For
PIC24F, WREG refers exclusively to W0.
This section describes how PIC18F assembly instructions map to PIC24F assembly instructions. Keep in
mind that the addressing structure of the two product
lines has changed and this will affect how many of
these instructions are mapped. See the “Addressing
Modes” section on page 5 of this document for more
details on the different addressing modes. The mapping provided does not cover all possible permutations
of the different addressing modes. Please be aware
that if indirect addressing is available for an instruction,
a single example is provided in the mapping chart. Also
note that this chart only maps PIC18F instructions to
PIC24F instructions. It does not highlight many of the
new capabilities of the PIC24F product line.
Below is a description of the differences in notation of
the instruction sets between the two product lines.
TABLE A-1:
PIC18F
Instruction
[Ws]: use Ws as a pointer; similar to using INDF0 in
PIC18F.
[Ws++]: use Ws as a pointer and increment it after
accessing the variable it points to. Similar to using
POSTINC0 in PIC18F.
[Ws + Wd]: use Ws as a pointer and Wd as an offset
to the pointer. Similar to using PLUSW0 in PIC18F.
.B or .D: immediately following an instruction
mnemonic indicates that the instruction will operate on
a byte or double word (4 bytes), rather than a word
(2 bytes).
Varn: the address of a variable n in data memory space.
#litn: a literal value of length n.
Expr: an address in program memory space.
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
ADDFSR
ADDFSR 0, #lit6
ADDLW
ADDLW
ADD
#lit10, Wn
#lit8
ADD
#lit10, Wn
ADDULNK(1) ADDULNK#lit6
LNK
#lit14
ADDWF
ADDWFC
ANDLW
Notes
1) This is part of the extended instruction
set and may not be available on all
PIC18F devices.
2) Most W registers can be used as
indirect pointers (see “Addressing
Modes” section on page 5).
ADDWF
var1, w
ADD
var1, WREG
This instruction can only operate on W0.
ADDWF
var1, f
ADD
var1
This instruction can only operate on W0.
ADDWF
INDF0, w
ADD
Wb, [Ws], Wb
ADDWF
INDF0, f
ADD
Wb, [Ws], [Ws]
ADDWF
var1, w
ADDC
var1, WREG
This instruction can only operate on W0.
ADDWF
var1, f
ADDC
var1
This instruction can only operate on W0.
ADDWF
INDF0, w
ADDC
Wb, [Ws], Wb
ADDWF
INDF0, f
ADDC
Wb, [Ws], [Ws]
ANDLW
#lit8
AND
#lit10, Wn
Wn = Wn OR #lit10.
AND
Wb, #lit5, Wd
Wd = Wb OR #lit5.
ANDWF
var1, w
AND
var1, WREG
This instruction can only operate on W0.
ANDWF
var1, f
AND
var1
This instruction can only operate on W0.
ANDWF
INDF0, w
AND
Wb, [Ws], Wb
ANDWF
INDF0, f
AND
Wb, [Ws], [Ws]
BC
BC
Expr
BRA
C, Expr
BCF
BCF
var1, #lit3
BCLR
var1, #lit4
BCLR
Ws, #lit4
BCF
INDF0, #lit3
BCLR
[Ws], #lit4
ANDWF
Note 1:
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
© 2006 Microchip Technology Inc.
DS39764A-page 47
TABLE A-1:
PIC18F
Instruction
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS (CONTINUED)
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
BN
BN
Expr
BRA
N, Expr
BNC
BNC
Expr
BRA
NC, Expr
BNN
BNN
Expr
BRA
NN, Expr
BNOV
BNOV
Expr
BRA
NOV, Expr
BNZ
BNZ
Expr
BRA
NZ, Expr
BOV
BOV
Expr
BRA
OV, Expr
BRA
BRA
Expr
BRA
Expr
BSF
BSF
var1, #lit3
BTFSC
BTFSS
BSET
var1, #lit4
BSET
Ws, #lit4
BSF
INDF0, #lit3
BSET
[Ws], #lit4
BTFSC
var1, #lit3
BTSC
var1, #lit4
BTSC
Ws, #lit4
BTFSC
INDF0, #lit3
BTSC
[Ws], #lit4
BTFSS
var1, #lit3
BTSS
var1, #lit4
BTSS
Ws, #lit4
BTFSS
INDF0, #lit3
BTSS
[Ws], #lit4
BTG
var1, #lit3
BTG
var1, #lit4
BTG
Ws, #lit4
BTG
INDF0, #lit3
BTG
[Ws], #lit4
BZ
BZ
Expr
BRA
Z, Expr
CALL
CALL
Expr
CALL
Expr
CALLW
Wn
CLR
var1
CLR
WREG
CLR
Ws
CLR
[Ws]
BTG
(1)
CALLW
CALLW
CLRF
CLRF
CLRF
CLRWDT
COMF
CPFSEQ
CPFSGT
CPFSLT
DAW
Note 1:
var1
INDF0
CLRWDT
Notes
This instruction can only operate on W0.
CLRWDT
COMF
var1, w
COM
var1, WREG
COMF
var1, f
COM
var1
COMF
INDF0, w
COM
[Ws], Wb
COMF
INDF0, f
COM
[Ws], [Ws]
This instruction can only operate on W0.
CPFSEQ var1
(No exact equivalent)
CPFSEQ INDF0
CPSEQ
CPFSGT var1
(No exact equivalent)
CPFSGT INDF0
CPSGT
CPFSLT var1
(No exact equivalent)
CPFSLT INDF0
CPSLT
Wb, [Wn]
Compares Wb to the contents pointed to
by [Wn].
DAW
DAW.B
Wn
Wn is the destination of the operation.
Wb, [Wn]
Wb, [Wn]
Compares Wb to the contents pointed to
by [Wn].
Compares Wb to the contents pointed to
by [Wn].
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
DS39764A-page 48
© 2006 Microchip Technology Inc.
TABLE A-1:
PIC18F
Instruction
DCFSNZ
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS (CONTINUED)
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
DCFSNZ var1, w
Notes
(No exact equivalent)
DCFSNZ var1, f
DCFSNZ INDF0, w
DCFSNZ INDF0, f
DECF
DECFSZ
DECF
var1, w
DEC
var1, WREG
DECF
var1, f
DEC
var1
DECF
INDF0, w
DEC
[Ws], Wd
DECF
INDF0, f
DEC
[Ws], [Ws]
DECFSZ var1, w
This instruction can only operate on W0.
(No exact equivalent)
DECFSZ var1, f
DECFSZ INDF0, w
DECFSZ INDF0, f
GOTO
INCF
INCFSZ
GOTO
Expr
GOTO
Expr
INCF
var1, w
INC
var1, WREG
INCF
var1, f
INC
var1
INCF
INDF0, w
INC
[Ws], Wd
INCF
INDF0, f
INC
[Ws], [Ws]
INCFSZ var1, w
This instruction can only operate on W0.
(No exact equivalent)
INCFSZ var1, f
INCFSZ INDF0, w
INCFSZ INDF0, f
INFSNZ
INFSNZ var1, w
(No exact equivalent)
INFSNZ var1, f
INFSNZ INDF0, w
INFSNZ INDF0, f
IORLW
IORWF
LFSR
MOVF
MOVFF
MOVLB
Note 1:
IORLW
#lit8
IOR
#lit10, Wn
Wn = Wn OR #lit10.
IOR
Wb, #lit5, Wd
Wd = Wb OR #lit5.
This instruction can only operate on W0.
IORWF
var1, w
IOR
var1, WREG
IORWF
var1, f
IOR
var1
IORWF
INDF0, w
IOR
Wb, [Ws], Wb
IORWF
INDF0, f
IOR
Wb, [Ws], [Ws]
LFSR
0, var1
MOV
#var1, Wd
MOVF
var1, w
MOV
var1, Wn
MOVF
var1, f
MOV
var1
MOVF
INDF0, w
MOV
[Ws], Wd
MOV.D
[Ws], Wd
[Ws,], [Ws]
MOVF
INDF0, f
MOV
MOVFF
var1, var2
(No exact equivalent)
MOVFF
INDF0, var1
MOVFF
INDF0, INDF1
MOV
MOVLB
var1
N/A
Most W registers can be used as indirect
pointers (see “Addressing Modes”
section on page 5).
[Ws], [Wd]
PIC24F does not require banking.
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
© 2006 Microchip Technology Inc.
DS39764A-page 49
TABLE A-1:
PIC18F
Instruction
MOVLW
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS (CONTINUED)
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
MOVLW
#lit8
MOV
MOVSF
[#lit7], var1
(No exact equivalent)
MOVSF
[#lit7], INDF0
MOVSS
MOVSS
[#lit7], [#lit7] (No exact equivalent)
MOVWF
MOVWF
var1
MOV
Ws, var1
Ws, [Wd]
(1)
MOVSF
(1)
Notes
#lit16, Wd
MOVWF
INDF0
MOV
MULLW
MULLW
#lit8
MUL.UU Wb, #lit5, Wn
1) The result of this operation is stored in
Wn:Wn + 1.
2) Note that the PIC24F equivalent is a
#lit5 instead of a #lit8 like the PIC18F
instruction.
MULWF
MULWF
var1
MUL
1) This instruction can only operate on
W0.
2) The result of this operation is stored in
W2:W3.
MULWF
INDF0
MUL.UU Wb, [Ws], Wn
NEGF
NOP
var1
NEGF
var1
NEG
var1
NEGF
INDF0
NEG
[Ws], [Ws]
NOP
The result of this operation is stored in
Wn:Wn + 1.
NOP
NOPR
POP
PUSH
POP
PUSH
POP
var1
POP
Wn
Note that all POP operations on PIC24F
require a destination address and thus,
the result of the POP can be saved.
POP
[Wn]
POP.D
Wn
DEC2
W15
If the results of the POP do not need to be
maintained.
PUSH
var1
Note that all PUSH operations on PIC24F
require a source address and thus, values
other then the PC can be pushed.
PUSH
Wn
PUSH
[Wn]
PUSH.D Wn
PUSHL(1)
PUSHL
#lit8
RCALL
RCALL
Expr
RESET
RESET
RESET
RETFIE
RETFIE
RETFIE
(No exact equivalent)
RCALL
Expr
RETFIE FAST
RETLW
RETLW
RETURN
RETURN
RLCF
Note 1:
#lit8
RETLW
#lit10, Wn
Wn is the destination of the operation.
RETURN
RLCF
var1, w
RLC
var1, WREG
RLCF
var1, f
RLC
var1
RLCF
INDF0, w
RLC
[Ws], Wd
RLCF
INDF0, f
RLC
[Ws], [Ws]
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
DS39764A-page 50
© 2006 Microchip Technology Inc.
TABLE A-1:
PIC18F
Instruction
RLNCF
RRCF
RRNCF
SETF
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS (CONTINUED)
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
RLNCF
var1, w
RLNC
var1, WREG
RLNCF
var1, f
RLNC
var1
RLNCF
INDF0, w
RLNC
[Ws], Wd
RLNCF
INDF0, f
RLNC
[Ws], [Ws]
RRCF
var1, w
RRC
var1, WREG
RRCF
var1, f
RRC
var1
RRCF
INDF0, w
RRC
[Ws], Wd
RRCF
INDF0, f
RRC
[Ws], [Ws]
RRNCF
var1, w
RRNC
var1, WREG
RRNCF
var1, f
RRNC
var1
RRNCF
INDF0, w
RRNC
[Ws], Wd
RRNCF
INDF0, f
RRNC
[Ws], [Ws]
SETF
var1
SETM
var1
SETF
INDF0
SETM
WREG
SETM
Ws
SETM
[Ws]
Notes
This instruction can only operate on W0.
SLEEP
SLEEP
PWRSAV #lit1
If #lit1 = 0, then it is Sleep mode. If
#lit1 = 1, then the part goes into Idle
mode.
SUBFSR(1)
SUBFSR 0, #lit6
SUB
#lit10, Wn
Most W registers can be used as indirect
pointers (see “Addressing Modes”
section on page 5).
SUBFWB
SUBFWB var1, w
SUBBR
var1, WREG
This instruction can only operate on W0.
SUBFWB var1, f
SUBBR
var1
This instruction can only operate on W0.
SUBFWB INDF0, w
SUBB
Wd, [Ws], Wd,
SUBFWB INDF0, f
SUBB
Wd, [Ws], [Ws]
SUBLW
SUB
#lit10, Wd
SUBLW
(1)
SUBULNK
SUBWF
SUBWFB
SWAPF
Note 1:
#lit8
SUBULNK#lit6
(No exact equivalent)
Note that the PIC24F instruction, ULNK, is
very similar but not equivalent.
SUBWF
var1, w
SUB
var1, WREG
This instruction can only operate on W0.
SUBWF
var1, f
SUB
var1
This instruction can only operate on W0.
SUBWF
INDF0, w
SUBR
Wd, [Ws], Wd,
SUBWF
INDF0, f
SUBR
Wd, [Ws], [Ws]
SUBWFB var1, w
SUBB
var1, WREG
This instruction can only operate on W0.
SUBWFB var1, f
SUBB
var1
This instruction can only operate on W0.
SUBWFB INDF0, w
SUBBR
Wd, [Ws], Wd
SUBWFB INDF0, f
SUBBR
Wd, [Ws], [Ws]
Wn
SWAPF
WREG
SWAP
SWAPF
var1, w
(No exact equivalent)
SWAPF
var1, f
SWAPF
INDF0, w
SWAPF
INDF0, f
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
© 2006 Microchip Technology Inc.
DS39764A-page 51
TABLE A-1:
PIC18F
Instruction
PIC18F ASSEMBLY INSTRUCTIONS AND THEIR PIC24F EQUIVALENTS (CONTINUED)
PIC24F Equivalent
Instruction(s)
PIC18F Example(s)
TBLRD*
TBLRD*
TBLRDL [Ws], Wd
TBLRD*-
TBLRD*-
Notes
1) [Ws] is a pointer to the program
memory address.
2) Wd is the destination (or pointer to the
destination) of the read.
TBLRDL [Ws], [Wd]
TBLRDL [Ws--], Wd
1) [Ws] is a pointer to the program
memory address.
2) Wd is the destination (or pointer to the
destination) of the read.
TBLRDL [Ws--], [Wd]
TBLRD*+
TBLRD*+
TBLRDL [Ws++], Wd
1) [Ws] is a pointer to the program
memory address.
2) Wd is the destination (or pointer to the
destination) of the read.
TBLRDL [Ws++], [Wd]
TBLRD+*
TBLRD+*
TBLWT*
TBLWT*
TBLWT*-
TBLWT*-
TBLRDL [++Ws], Wd
1) [Ws] is a pointer to the program
memory address.
2) Wd is the destination (or pointer to the
destination) of the read.
TBLRDL [++Ws], [Wd]
TBLWTL Ws, [Wd]
1) Ws is the source (or pointer to the
source) of data that is written.
2) Wd is the destination (or pointer to the
destination) of the write.
TBLWTL [Ws], [Wd]
TBLWTL Ws, [Wd--]
1) Ws is the source (or pointer to the
source) of data that is written.
2) Wd is the destination (or pointer to the
destination) of the write.
TBLWTL [Ws], [Wd--]
TBLWT*+
TBLWT*+
TBLWTL Ws, [Wd++]
1) Ws is the source (or pointer to the
source) of data that is written.
2) Wd is the destination (or pointer to the
destination) of the write.
TBLWTL [Ws], [Wd++]
TBLWT+*
TBLWT+*
TSTFSZ
TSTFSZ var1
XORLW
XORLW
TBLWTL Ws, [++Wd]
1) Ws is the source (or pointer to the
source) of data that is written.
2) Wd is the destination (or pointer to the
destination) of the write.
TBLWTL [Ws], [++Wd]
XORWF
Note 1:
#lit8
(No exact equivalent)
XOR
#lit10, Wd
XOR
Wb, #lit5, Wd
Wd is the destination of the operation.
XORWF
var1, w
XOR
var1, WREG
This instruction can only operate on W0.
XORWF
var1, f
XOR
var1
This instruction can only operate on W0.
XORWF
INDF0, w
XOR
Wd, [Ws], Wd
XORWF
INDF0, f
XOR
Wd, [Ws], [Ws]
This instruction is part of the PIC18F extended instruction set. It is not available in earlier PIC18F devices
or PIC18F devices operating in Legacy mode (XINST Configuration bit is unprogrammed).
DS39764A-page 52
© 2006 Microchip Technology Inc.
Note the following details of the code protection feature on Microchip devices:
•
Microchip products meet the specification contained in their particular Microchip Data Sheet.
•
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
•
There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
•
Microchip is willing to work with the customer who is concerned about the integrity of their code.
•
Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device
applications and the like is provided only for your convenience
and may be superseded by updates. It is your 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 support and/or safety
applications is entirely at the buyer’s risk, and the buyer agrees
to defend, indemnify and hold harmless Microchip from any and
all damages, claims, suits, or expenses resulting from such
use. No licenses are conveyed, implicitly or otherwise, under
any Microchip intellectual property rights.
Trademarks
The Microchip name and logo, the Microchip logo, Accuron,
dsPIC, KEELOQ, microID, MPLAB, PIC, PICmicro, PICSTART,
PRO MATE, PowerSmart, rfPIC, and SmartShunt are
registered trademarks of Microchip Technology Incorporated
in the U.S.A. and other countries.
AmpLab, FilterLab, Migratable Memory, 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, dsPICDEM,
dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR,
FanSense, FlexROM, fuzzyLAB, In-Circuit Serial
Programming, ICSP, ICEPIC, Linear Active Thermistor,
MPASM, MPLIB, MPLINK, MPSIM, PICkit, PICDEM,
PICDEM.net, PICLAB, PICtail, PowerCal, PowerInfo,
PowerMate, PowerTool, REAL ICE, rfLAB, rfPICDEM, Select
Mode, Smart Serial, SmartTel, Total Endurance, UNI/O,
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.
© 2006, Microchip Technology Incorporated, Printed in the
U.S.A., All Rights Reserved.
Printed on recycled paper.
Microchip received ISO/TS-16949:2002 quality system certification for
its worldwide headquarters, design and wafer fabrication facilities in
Chandler and Tempe, Arizona and Mountain View, California in
October 2003. The Company’s quality system processes and
procedures are for its PICmicro® 8-bit MCUs, KEELOQ® code hopping
devices, Serial EEPROMs, microperipherals, nonvolatile memory and
analog products. In addition, Microchip’s quality system for the design
and manufacture of development systems is ISO 9001:2000 certified.
© 2006 Microchip Technology Inc.
DS39764A-page 53
WORLDWIDE SALES AND SERVICE
AMERICAS
ASIA/PACIFIC
ASIA/PACIFIC
EUROPE
Corporate Office
2355 West Chandler Blvd.
Chandler, AZ 85224-6199
Tel: 480-792-7200
Fax: 480-792-7277
Technical Support:
http://support.microchip.com
Web Address:
www.microchip.com
Australia - Sydney
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
India - Bangalore
Tel: 91-80-4182-8400
Fax: 91-80-4182-8422
China - Beijing
Tel: 86-10-8528-2100
Fax: 86-10-8528-2104
India - New Delhi
Tel: 91-11-5160-8631
Fax: 91-11-5160-8632
Austria - Wels
Tel: 43-7242-2244-399
Fax: 43-7242-2244-393
Denmark - Copenhagen
Tel: 45-4450-2828
Fax: 45-4485-2829
China - Chengdu
Tel: 86-28-8676-6200
Fax: 86-28-8676-6599
India - Pune
Tel: 91-20-2566-1512
Fax: 91-20-2566-1513
France - Paris
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
China - Fuzhou
Tel: 86-591-8750-3506
Fax: 86-591-8750-3521
Japan - Yokohama
Tel: 81-45-471- 6166
Fax: 81-45-471-6122
Germany - Munich
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
China - Hong Kong SAR
Tel: 852-2401-1200
Fax: 852-2401-3431
Korea - Gumi
Tel: 82-54-473-4301
Fax: 82-54-473-4302
China - Qingdao
Tel: 86-532-8502-7355
Fax: 86-532-8502-7205
Korea - Seoul
Tel: 82-2-554-7200
Fax: 82-2-558-5932 or
82-2-558-5934
Atlanta
Alpharetta, GA
Tel: 770-640-0034
Fax: 770-640-0307
Boston
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088
Chicago
Itasca, IL
Tel: 630-285-0071
Fax: 630-285-0075
Dallas
Addison, TX
Tel: 972-818-7423
Fax: 972-818-2924
Detroit
Farmington Hills, MI
Tel: 248-538-2250
Fax: 248-538-2260
Kokomo
Kokomo, IN
Tel: 765-864-8360
Fax: 765-864-8387
Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
San Jose
Mountain View, CA
Tel: 650-215-1444
Fax: 650-961-0286
China - Shanghai
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
China - Shenyang
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
China - Shenzhen
Tel: 86-755-8203-2660
Fax: 86-755-8203-1760
China - Shunde
Tel: 86-757-2839-5507
Fax: 86-757-2839-5571
China - Wuhan
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
China - Xian
Tel: 86-29-8833-7250
Fax: 86-29-8833-7256
Malaysia - Penang
Tel: 60-4-646-8870
Fax: 60-4-646-5086
Philippines - Manila
Tel: 63-2-634-9065
Fax: 63-2-634-9069
Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
Spain - Madrid
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
UK - Wokingham
Tel: 44-118-921-5869
Fax: 44-118-921-5820
Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
Taiwan - Hsin Chu
Tel: 886-3-572-9526
Fax: 886-3-572-6459
Taiwan - Kaohsiung
Tel: 886-7-536-4818
Fax: 886-7-536-4803
Taiwan - Taipei
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
Toronto
Mississauga, Ontario,
Canada
Tel: 905-673-0699
Fax: 905-673-6509
02/16/06
DS39764A-page 54
© 2006 Microchip Technology Inc.