Information
2009-2013 Microchip Technology Inc. DS80000470H-page 7
PIC24FJ64GA004 FAMILY
10. Module: I
2
C™ (I2C1, SDA Line State)
When using I2C1, the SDA1 line state may not be
detected properly unless it is first held low for
150 ns after enabling the I
2
C module.
In Master mode, this error may cause a bus colli-
sion to occur instead of a Start bit transmission.
Transmissions after the SDA1 pin that have been
held low will occur correctly.
In Slave mode, the device may not Acknowledge
the first packet sent after enabling the I
2
C module.
In this case, it will return a NACK instead of an
ACK. The device will correctly respond to packets
after detecting a low level on the line for 150 ns.
The I2C2 module operates as expected and does
not exhibit this issue.
Work around
Using an external device or another I/O pin from
the microcontroller, drive the SDA1 pin low.
If no external devices or additional I/O pins are
available, it is sometimes possible to perform the
work around internally, using the following steps:
• With the module in Master mode, configure the
RB9 pin as an output.
• Clear the LATB9 bit (for the default I2C1
assignment) or LATB5 (for the alternate I2C1
assignment) to drive the pin low.
• Enable I2C1 by setting the I2CEN bit
(I2C1CON<15>).
Note that this action could appear to be a Start bit
to an I
2
C slave device on the bus if the RB8/SCL1
pin is not driven low prior to driving RB9/SDA1 low.
It may be necessary to add additional capacitance
to the SDA1 bus in order to maintain the low logic
level long enough for the module to detect the low
logic level. Make sure that when adding capaci-
tance, that the application does not violate the I
2
C
timing specifications.
In Slave mode, the I
2
C master device on the bus
must either pull the SDAx line low, then high again,
prior to sending the first packet to the device, or
must resend the first packet.
Note that 150 ns is the absolute maximum time
required to avoid the issue. It is possible to work
around the issue using a shorter delay in some
devices.
Affected Silicon Revisions
11. Module: UART
When the UARTx is in High-Speed mode, BRGH
(UxMODE<3>) is set; some optimal UxBRG
values can cause reception to fail.
Work around
Test UxBRG values in the application to find a
UxBRG value that works consistently for more high-
speed applications. The user should verify that the
UxBRG baud rate error does not exceed the appli-
cation limits. If possible, it is recommended to use a
comparable baud rate in Low-Speed mode.
Affected Silicon Revisions
12. Module: UART
When the UARTx is in High-Speed mode
(BRGH = 1), the auto-baud sequence can calculate
the baud rate as if it were in Low-Speed mode.
Work around
The calculated baud rate can be modified by the
following equation:
The user should verify that the baud rate error does
not exceed application limits.
Affected Silicon Revisions
13. Module: UART
When an auto-baud is detected, the receive inter-
rupt may occur twice. The first interrupt occurs at
the beginning of the Start bit and the second after
reception of the Sync field character.
Work around
If a receive interrupt occurs, check the URXDA bit
(UxSTA<0>) to ensure that valid data is available.
On the first interrupt, no data will be present. The
second interrupt will have the Sync field character
(55h) in the receive FIFO.
Affected Silicon Revisions
A3/
A4
B4 B5
B8
X
A3/
A4
B4 B5
B8
X
New BRG Value = (Auto-Baud BRG + 1) * 4 – 1
A3/
A4
B4 B5
B8
X
A3/
A4
B4 B5
B8
X