2008 Microchip Technology Inc.
DS80280G-page 9
PIC24HJXXXGPX06/X08/X10
13. Module: I2C
The Bus Collision Status bit (BCL) does not get set
when a bus collision occurs during a Restart or
Stop event. However, the BCL bit gets set when a
bus collision occurs during a Start event.
Work around
None.
14. Module: INT0, ADC and Sleep/Idle Mode
ADC event triggers from the INT0 pin will not
wake-up the device from Sleep or Idle mode if the
SMPI bits are non-zero. This means that if the
ADC is configured to generate an interrupt after a
certain number of INT0 triggered conversions, the
ADC conversions will not be triggered and the
device will remain in Sleep. The ADC will perform
conversions and wake-up the device only if it is
configured to generate an interrupt after each INT0
triggered conversion (SMPI<3:0> = 0000).
Work around
None. If ADC event trigger from the INT0 pin is
required, initialize SMPI<3:0> to ‘0000’ (interrupt
on every conversion).
15. Module: Doze Mode and Traps
The address error trap, stack error trap, math error
trap and DMA error trap will not wake-up a device
from Doze mode.
Work around
None.
16. Module: JTAG Programming
JTAG programming does not work.
Work around
None.
17. Module: UART
With the parity option enabled, a parity error,
indicated by the PERR bit (UxSTA<3>) being set,
may occur if the Baud Rate Generator contains an
odd value. This affects both even and odd parity
options.
Work around
Load the Baud Rate Generator register, UxBRG,
with an even value, or disable the peripheral’s
parity option by loading either 0b00 or 0b11 into
the Parity and Data Selection bits, PDSEL<1:0>
(UxMODE<2:1>).
18. Module: UART
The Receive Buffer Overrun Error Status bit,
OERR (UxSTA<1>), may get set before the UART
FIFO has overflowed. After the fourth byte is
received by the UART, the FIFO is full. The OERR
bit should set after the fifth byte has been received
in the UART shift register. Instead, the OERR bit
may set after the fourth received byte with the
UART Shift register empty.
Work around
After four bytes have been received by the UART,
the UART Receiver Interrupt Flag bit, U1RXIF
(IFS0<11>) or U2RXIF (IFS1<14>), will be set,
indicating the UART FIFO is full. The OERR bit
may also be set. After reading the UART receive
buffer, UxRXREG, four times to clear the FIFO,
clear both the OERR and UxRXIF bits in software.
19. Module: UART
UART receptions may be corrupted if the Baud
Rate Generator is set up for 4x mode (BRGH = 1).
Work around
Use the 16x baud rate option (BRGH = 0) and
adjust the baud rate accordingly.
20. Module: UART
The UTXISEL0 bit (UxSTA<13>) is always read as
zero regardless of the value written to it. The bit
can be written to either a ‘0’ or ‘1’, but will always
be read as zero. This will affect read-modify-write
operations such as bitwise or shift operations.
Using a read-modify-write instruction on the
UxSTA register (e.g., BSET, BLCR) will always
write the UTXISEL0 bit to zero.
Work around
If a UTXISEL0 value of ‘1’ is needed, avoid using
read-modify-write instructions on the UxSTA
register. Copy the UxSTA register to a temporary
variable and set UxSTA<13> prior to performing
read-modify-write operations. Copy the new value
back to the UxSTA register.
21. Module: UART
The auto-baud feature may not calculate the
correct baud rate when the High Baud Rate Enable
bit, BRGH, is set. With the BRGH bit set, the baud
rate calculation used is the same as BRG = 0.
Work around
If the auto-baud feature is needed, use the Low
Baud Rate mode by clearing the BRGH bit.