2012 Microchip Technology Inc. DS80549A-page 3
PIC24FJ32MC104 FAMILY
Silicon Errata Issues
1. Module: SPI
When using the frame sync pulse output feature
(FRMEN bit (SPIxCON2<15>) = 1) in Master
mode (SPIFSD bit (SPIxCON2<14>) = 0), the
frame sync pulse is not being generated with an
active-low pulse (FRMPOL (SPIxCON2<13>)
= 0).
Work around
The Slave Select pin is used as the frame sync
pulse when the frame sync pulse output feature is
used. Mapping the
SSx input function and output
function to the same pad, using the PPS feature,
resolves this issue.
The code in Example 1 assigns SPI1 Slave Select
input and SPI1 Slave Select output to RP15.
EXAMPLE 1:
Affected Silicon Revisions
2. Module: SPI
When in SPI Slave mode (MSTEN bit
(SPIxCON1<5>) = 0) and using the frame sync pulse
output feature (FRMEN bit (SPIxCON2<15>)
= 1
and SPIFSD bit (SPIxCON2<14>) = 0), the Frame
Sync Pulse Edge Select bit must be set to ‘0’
(FRMDLY bit (SPIxCON2 <1>) = 0).
Work around
There is no work around. The Frame Sync Pulse
Edge Select (FRMDLY) bit cannot be set to
produce a Frame sync pulse that coincides with
the first bit clock.
Affected Silicon Revisions
3. Module: UART
When using UTXISEL<1:0> = 01 (interrupt when
last character is shifted out of the Transmit Shift
Register), and the final character is being shifted
out through the Transmit Shift Register (TSR), the
TX interrupt may occur before the final bit is shifted
out.
Work around
If it is critical that the interrupt processing occurs
only when all transmit operations are complete,
after which, the following work around can be
implemented:
Hold off the interrupt routine processing by adding
a loop at the beginning of the routine that polls the
Transmit Shift Register empty bit, as shown in
Example 2.
EXAMPLE 2:
Affected Silicon Revisions
4. Module: UART
The Transmitter Write Pointer does not get cleared
when the UART module is disabled (UARTEN = 0)
and it requires the UTXEN bit to be set in order to
clear the Write Pointer.
Work around
Do not load data into the TX FIFO (register) before
setting the UTXEN bit.
Affected Silicon Revisions
Note: This document summarizes all silicon
errata issues from all revisions of silicon,
previous as well as current. Only the
issues indicated by the shaded column in
the following tables apply to the current
silicon revision (A0).
A0
X
A0
X
/* Assign SPI1 Slave Select Input to RP15 */
RPINR21bits.SS1R = 15;
/* Assign peripheral output function SPI1
to RP15 */
RPOR7bits.RP15R = 0b01001;
A0
X
A0
X
// in UART1 initialization code
...
// Set to generate TX interrupt when all
// transmit operations are complete.
U1STAbits.UTXISEL0 = 1;
U1STAbits.UTXISEL1 = 0;
...
U1TXInterrupt(void)
{
// wait for the transmit buffer to be
// empty and then process interrupt.
while(U1STAbits.TRMT==0);
...