PIC18F24K20/25K20/44K20/45K20: PIC18F24K20/25K20/44K20/45K20 Silicon Errata and Data Sheet Clarification
PIC18F24K20/25K20/44K20/45K20: PIC18F24K20/25K20/44K20/45K20 Silicon Errata and Data Sheet Clarification
PIC18F24K20/25K20/44K20/45K20
Silicon Errata and Data Sheet Clarification
The PIC18F24K20/25K20/44K20/45K20 devices that For example, to identify the silicon revision level
you have received conform functionally to the current using MPLAB IDE in conjunction with a hardware
Device Data Sheet (DS41303H), except for the debugger:
anomalies described in this document. 1. Using the appropriate interface, connect the
The silicon issues discussed in the following pages are device to the hardware debugger.
for silicon revisions with the Device and Revision IDs 2. Open an MPLAB IDE project.
listed in Table 1. The silicon issues are summarized in 3. Configure the MPLAB IDE project for the
Table 2. appropriate device and hardware debugger.
The errata described in this document will be addressed 4. Based on the version of MPLAB IDE you are
in future revisions of the PIC18F24K20/25K20/44K20/ using, do one of the following:
45K20 silicon. a) For MPLAB IDE 8, select Programmer >
Note: This document summarizes all silicon Reconnect.
errata issues from all revisions of silicon, b) For MPLAB X IDE, select Window >
previous as well as current. Only the Dashboard and click the Refresh Debug
issues indicated in the last column of Tool Status icon ( ).
Table 2 apply to the current silicon revi- 5. Depending on the development tool used, the
sion (AF). part number and Device Revision ID value
Data Sheet clarifications and corrections start on page appear in the Output window.
13, following the discussion of silicon issues. Note: If you are unable to extract the silicon
The silicon revision level can be identified using the revision level, please contact your local
current version of MPLAB® IDE and Microchip’s Microchip sales office for assistance.
programmers, debuggers, and emulation tools, which The DEVREV values for the various PIC18F24K20/
are available at the Microchip corporate web site 25K20/44K20/45K20 silicon revisions are shown in
(www.microchip.com). Table 1.
0x11 AB
0x1B AE
0x1C AF
A4
A7
A9
0x16 A4
0x18 A7
0x19 A8
Item
Module Feature Issue Summary
Number
0xA
0xC
0xE
ECCP CCP1CON 1. Changing CCP1M bits may X X X X
cause capture of Timer1 value.
ECCP Full-Bridge 2. Direction change issue. X X X X
mode
MSSP SPI SPI Clock 3. Shortened SPI high time. X X X X
MSSP C I2 Slew Rate 4. Slow slew rate when X X X X
SLRCON<2> is set.
ADC Offset 5. Time dependent on offset. X X X X
MSSP I2C Receiving 6. Address may be received as X X X X
data.
MSSP I2C Master mode 7. Master mode not functional. X
MSSP SPI SPI Master 8. Improper sampling of last bit. X X X X
MSSP SPI SPI Master 9. SSPBUF improperly reloads on X X X X
SS pin transitions.
MSSP SPI SPI Master 10. Improper extra pulse on SCK X X X X
pin.
EUSART Synchronous 11. Duty cycle of CK output is X X X X
Master mode skewed when SPBRG is odd.
EUSART Synchronous 12. LS bit corruption during X X X X
Master mode transmission when SPBRG = 3.
EUSART Synchronous 13. Clock fails to stop at end of X X X X
Master mode character transmission when
SPBRG = 0.
Internal Fixed — 14. FVRST bit activates prematurely. X X
Voltage Refer-
ence (FVR)
High Low Voltage — 15. IVRST bit activates prematurely. X X
Detect (HLVD)
BOR FVR 16. Unexpected BOR occurrence. X X
System Clocks — 17. HFINTOSC output accuracy. X X X X
POR/BOR — 18. Unexpected code execution at X X X X
low VDD.
POR — 19. Premature POR release. X X X X
POR — 20. POR may become stuck. X X X X
Clocks EC mode 21. 48 MHz maximum frequency. X X
Comparators Interrupt-on- 22. Presetting interrupt-on-change X X X X
Change issue.
Data EEPROM Endurance 23. Endurance is limited to 10K X X X X X X X
Memory cycles.
Program Flash Endurance 24. Endurance is limited to 1K X X X X X X X
Memory cycles.
Configuration Bits CONFIG3H 25. HFOFST bit erases to ‘0’ instead X X X X
of ‘1’.
Note 1: Only those issues indicated in the last column apply to the current silicon revision.
2: Shaded cells in this table indicate older device revisions that are no longer in production.
0x11 AB
0x1B AE
0x1C AF
A4
A7
A9
0x16 A4
0x18 A7
0x19 A8
Item
Module Feature Issue Summary
Number
0xA
0xC
0xE
EUSART Asynchronous 26. RCIDL bit may stay low X X X X
Receive mode improperly.
PORTB Interrupts Interrupt-on- 27. False interrupt when setting X X X X X X X X X
Change interrupt enable.
ADC ADC 28. ADC conversion may be limited X X X X X X X
Conversion to half scale.
ECCP Full-Bridge 29. Wrong dead-band time. X X X X X X X X X
mode
ECCP Full-Bridge 30. Wrong signal start time. X X X X X X X X X
mode
MSSP SPI SPI Clock 31. Improper SCK output. X X X X X X X X X
MSSP SPI SPI Master 32. Improper sampling of last bit. X X X X X X X X X
MSSP SPI SPI Master 33. Improper handling of write X X X X X X X X X
collision.
MSSP I2C I2C Master 34. Improper handling of Stop event. X X X X X X X X X
EUSART OERR Flag 35. Clearing SPEN bit does not clear X X X X X X X X X
OERR flag.
EUSART BAUDCTL 36. RCIDL bit may stay low X X X X X X X X X
improperly.
PORTB Interrupts Interrupt-on- 37. False interrupt when waking X X X X X X X X X
Change from Sleep.
BOR Reset 38. Reset on configuring the analog X X X X X X X X X
comparators to the FVR.
Wake-up from Wake-up 39. Device may not wake-up under X X X X X X X X X
Low-Power Sleep Sources specific conditions.
mode
Low-Voltage LVD in Sleep 40. LVD erroneously triggers upon X X X X X X X X X
Detect wake-up from Sleep if band gap
is disabled in Sleep mode.
Timer1/3 Interrupt 41. When the timer is operated in X X X X X X X X X
Asynchronous External Input
mode, unexpected interrupt flag
generation may occur.
Note 1: Only those issues indicated in the last column apply to the current silicon revision.
2: Shaded cells in this table indicate older device revisions that are no longer in production.
Note 1: This document summarizes all silicon Slew rate is slower than I2C specifications when
errata issues from all specified revisions the SLRCON<2> bit is set.
of silicon. Work around
2: Shaded cells in this section indicate latest Clear SLRCON<2> bit when using the I2C
silicon in production. peripheral.
Affected Silicon Revisions
1. Module: ECCP
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
Changing the CCP1M<3:0> bits of CCP1CON
may cause the CCPR1H and CCPR1L registers to
capture the value of Timer1. X X X X
Work around
5. Module: ADC
Halt Timer1 before changing ECCP mode. Reload
Timer1 with desired value after ECCP is setup and Offset error is 3 LSb typical, 7 LSb maximum,
before Timer1 is restarted. including an acquisition time-dependent
component (~2 LSb).
Affected Silicon Revisions
Work around
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
8. Module: MSSP SPI
X X X X
In SPI Master mode, when the CKE bit is cleared
and the SMP bit is set, the last bit of the incoming
12. Module: EUSART
data stream (bit 0) at the SDI pin will not be
sampled properly. In Synchronous Master mode, when the SPBRG is
set to 3 and the TXREG is written while the
Work around
previous character is still in the TX shift register,
None. the LS bit of the TXREG character may be
corrupted during transmission.
Affected Silicon Revisions
Work around
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
In SPI Master mode, when CKE bit is set, the
SSPBUF will reload the SSPSR output shift
register on every high-to-low transition of the SS X X X X
pin.
Work around 13. Module: EUSART
Avoid using the SS pin when the CKE bit is set and In Synchronous Master mode, if the SPBRG
the MSSP is configured for SPI Master mode. register is equal to 0 when the TXEN bit is set, then
writing to TXREG will properly start transmission.
Affected Silicon Revisions
However, the clock will be improperly out of phase
0x1B
0x1C
with the data bits and the clock will not stop at the
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X
X X
15. Module: High Low Voltage Detect (HLVD)
17. Module: System Clocks
The IVRST bit of the HLVDCON register activates
prematurely (Rev. A4 and A7 only). HFINTOSC output frequency is 16 MHz ±3%,
25°C to 85°C.
Work around
Work around
Wait an additional 20 µs after IVRST is sensed
high before using the fixed voltage reference. None.
Enable the FVR by setting the FVREN bit of the
Affected Silicon Revisions
CVRCON2 register before activating any
0x1B
0x1C
peripheral that automatically enables the FVR.
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
The part may hang in the Reset state when VDD
rises to the operating range at a rate faster than X X X X
7500V per second. Recovery from the hung state
is possible only by first lowering VDD to below 0.3V,
23. Module: Data EEPROM Memory
followed by raising VDD to the operating range.
The write/erase endurance of Data EE Memory is
Work around
limited to 10K cycles.
Slow VDD rise time by adding series resistance
between the voltage supply and the VDD pin and Work around
increasing the VDD bypass capacitance. VDD Use error correction method that stores data in
bypassing should remain on the pin side of the multiple locations.
series resistor.
Affected Silicon Revisions
Affected Silicon Revisions
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X
X X X X
24. Module: Program Flash Memory
21. Module: Clocks
The write/erase endurance of the PFM is limited to
EC mode operation is limited to a maximum of 1K cycles when VDD is above 3V. Endurance
48 MHz (Rev. A4 and A7 only). degrades when VDD is below 3V.
Work around Work around
Divide external clock by 4 and use HS-PLL Clock For data tables in Program Flash Memory use
mode for external clocking above 48 MHz. error correction method that stores data in multiple
locations.
Affected Silicon Revisions
Affected Silicon Revisions
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X
X X X X X X X
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X
X X X X
29. Module: ECCP
27. Module: PORTB Changing direction in Full-Bridge mode inserts a
Setting a PORTB interrupt-on-change enable bit of dead-band time of 4/FOSC * TMR2 Prescale
the IOCB register while the corresponding PORTB instead of 1/FOSC * TMR2 Prescale as specified in
input is high will cause an RBIF interrupt. the data sheet.
0x1C
0x16
0x18
0x19
0x11
bit.
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X X X
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
When the SPI clock is configured for Timer2/2
(SSPCON1<3:0> = 0011) and the CKE bit of the
SSPSTAT register is ‘1’, then when SSPBUF is X X X X X X X X X
written, the SCK output is improperly immediately
driven to the non-Idle state together with the MSb
34. Module: MSSP I2C
value of the SSPBUF. The duration at which SDO
and SCK remain at these levels may be shorter In Master I2C Receive mode if a Stop condition
than a full half-bit period. The remaining bits in the occurs in the middle of an address or data
byte are output properly. reception, then the SCL clock stream will continue
endlessly and the RCEN bit of the SSPCON2
Work around
register will remain set improperly. If a Start
None. condition occurs after the improper Stop condition
then nine additional clocks will be generated
Affected Silicon Revisions
followed by the RCEN bit going low.
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
Work around
Use low-impedance pull-ups on the SDA line to
X X X X X X X X X reduce the possibility of noise glitches which may
trigger an improper Stop event. Use a time-out
32. Module: MSSP SPI event timer to detect the unexpected Stop
condition and resulting stuck RCEN bit. Clear the
In SPI Master mode, when the CKE bit of the
stuck RCEN bit by clearing the SSPEN bit of
SSPSTAT register is cleared and the SMP bit of
SSPCON1.
the SSPSTAT register is set, then the last bit of the
incoming data stream (bit 0) at the SDI pin will not Affected Silicon Revisions
be sampled properly.
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
Work around
None. X X X X X X X X X
Affected Silicon Revisions
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X X X
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
an invalid Start bit less than 1/16th of a bit time is
received. The RCIDL bit will then properly go high
1/8th of a bit time later. However, if another invalid X X X X X X X X X
Start bit occurs less than 1 bit time after the leading
edge of the first invalid Start bit, then the RCIDL bit 38. Module: BOR
will improperly stay high then improperly go low
one bit time later. The RCIDL bit will then stay low An unexpected Brown-out Reset may occur when
improperly until a valid Start bit is received. enabling the comparator with the Fixed Voltage
Reference (FVR) selected as the VIN+ input.
Work around
Work around
When monitoring the RCIDL bit, measure the
length of time between the RCIDL going low and Disconnect the FVR from the VIN+ comparator
the RCIF flag going high. If this time is greater than inputs prior to enabling the comparator and then
one character time, then restore the RCIDL bit by reconnect it after enabling the comparator.
resetting the EUSART module. The EUSART Affected Silicon Revisions
module is reset when the SPEN bit of the RCSTA
0x1B
0x1C
0x16
0x18
0x19
0x11
register is cleared.
0xA
0xC
0xE
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X X X
0x1B
0x1C
will not wake-up on any enabled wake-up event,
0x16
0x18
0x19
0x11
0xA
0xC
0xE
including the Watchdog Timer.
Work around X X X X X X X X X
1. Disable High-Speed Start-up
41. Module: Timer1/3
Disabling High-Speed Start-up in the Configuration
Word will delay the device executing code on When Timer1 or Timer3 is operated in
wake-up by 250 µs, nominally, allowing the Asynchronous External Input mode, unexpected
oscillator to stabilize. interrupt flag generation may occur if an external
The wake-up time from Sleep will increase by clock edge arrives too soon following a firmware
about 250 µs, nominally. write to the TMRxH:TMRxL registers. An
unexpected interrupt flag event may also occur
2. BOR enabled during Sleep when enabling the module or switching from
Configuring the device for hardware only BOR or Synchronous to Asynchronous mode.
software-controlled BOR and enabling SBOREN,
Work around
the voltage reference is on during Sleep.
This issue only applies when operating the timer
The device will wake-up and the oscillator will be
in Asynchronous mode. Whenever possible,
stable. This will add 20 µA (nominal) to the Sleep
operate the timer module in Synchronous mode
current.
to avoid spurious timer interrupts.
3. Enable the FVR during Sleep
If Asynchronous mode must be used in the
In the same manner as the BOR, the FVR will keep application, potential strategies to mitigate the
the voltage reference on during Sleep, causing the issue may include any of the following:
oscillator to be stable on wake-up.
• Design the firmware so it does not rely on
4. Avoid executing SLEEP within 100 µs of any the TMRxIF flag or keep the respective
wake-up event interrupt disabled. The timer still counts
This can be achieved by adding more instructions normally and does not reset to 0x0000
(NOP) before executing the SLEEP instruction. This when the spurious interrupt flag event is
minimizes the probability of the SLEEP instruction generated.
only partially executing. • Design the firmware so that it does not
write to the TMRxH:TMRxL registers or
Affected Silicon Revisions does not periodically disable/enable the
timer, or switch modes. Reading from the
0x1B
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
//Now wait at least two full T1CKI periods + 2TCY before re-enabling Timer1 interrupts.
//Depending upon clock edge timing relative to TMR1H/TMR1L firmware write operation,
//a spurious TMR1IF flag event may sometimes assert. If this happens, to suppress
//the actual interrupt vectoring, the TMR1IE bit should be kept clear until
//after the "window of opportunity" (for the spurious interrupt flag event has passed).
//After the window is passed, no further spurious interrupts occur, at least
//until the next timer write (or mode switch/enable event).
while(TMR1L < 0x02); //Wait for 2 timer increments more than the Updated Timer
//value (indicating more than 2 full T1CKI clock periods elapsed)
NOP(); //Wait two more instruction cycles
NOP();
PIR1bits.TMR1IF = 0; //Clear TMR1IF flag, in case it was spuriously set
PIE1bits.TMR1IE = 1; //Now re-enable interrupt vectoring for timer 1
0x1C
0x16
0x18
0x19
0x11
0xA
0xC
0xE
X X X X X X X X X
• 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.
QUALITY MANAGEMENT SYSTEM Microchip received ISO/TS-16949:2009 certification for its worldwide
headquarters, design and wafer fabrication facilities in Chandler and
CERTIFIED BY DNV Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
== ISO/TS 16949 ==
are for its PIC® MCUs and dsPIC® DSCs, 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.