Information

© 2011-2012 Microchip Technology Inc. DS80526C-page 5
dsPIC33EPXXX(GP/MC/MU)806/810/814 and PIC24EPXXX(GP/GU)810/814
Silicon Errata Issues
1. Module: I/O Multiplexer
The open drain control signal from GPIO PORTA,
bit 3, is inadvertently controlling the data output of
bit 15 of PORTC.
Work around
There is no work around. If bit 15 of PORTC is
being used as an output (FOSC<OSCIOFNC> = 0
and TRISC<15> = 0), the open drain capability for
bit 3 of PORTA cannot be enabled and used as an
open drain output (ODCA<3> 1).
This issue only applies when the OSC2 pin
function is set for general purpose digital I/O
(FOSC<ISCIOFNC> = 0) and the device is using
the FRC or EC Primary Oscillator modes.
Affected Silicon Revisions
2. Module: CPU
The assembly language DO instruction does not
function correctly with nested loops when the inner
loop count is zero (one iteration).
Work around
With nested DO loops where an inner loop can
have a single iteration (DCOUNT = 0), one of the
following precautions must be taken for proper
operation:
1. Insert a NOP immediately after the DO
instruction, which can contain a loop count
of zero, and insert two NOP instructions
immediately following the DO instruction of
the next outer loop, as shown in Example 1.
2. Alternatively, the code can test for a count
of zero and branch over the DO instruction
for all nested loops. In this case, insertion of
NOP instructions is not required.
This issue does not apply if there are no nesting of
DO loops or if all of the inner loop counts are always
greater than zero. When a nested DO loop has a
count of zero, only the immediate next outer loop
will be affected.
Affected Silicon Revisions
EXAMPLE 1:
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 (B1).
B1
X
Note: This silicon issue applies only to the
dsPIC33EPXXXGP/MC/MU806/810/814
devices.
B1
X
do w0, out_lp ; w0 contains the count for the outer loop
nop ; 2 NOPs are added for the work around
nop ;
; user code
do w1, in_lp ; w1 contains count for the inner loop
nop ; A Single NOP is the required work around for the inner loop
; user code
in_lp: ; end of inside loop
out_lp: ; end of outside loop