Datasheet

PIC18(L)F2X/45K50
DS30684A-page 368 2012 Microchip Technology Inc.
24.5.1.1 Bus Activity Detect Interrupt Bit
(ACTVIF)
The ACTVIF bit cannot be cleared immediately after
the USB module wakes up from Suspend or while the
USB module is suspended. A few clock cycles are
required to synchronize the internal hardware state
machine before the ACTVIF bit can be cleared by
firmware. Clearing the ACTVIF bit before the internal
hardware is synchronized may not have an effect on
the value of ACTVIF. Additionally, if the USB module
uses the clock from the 48 MHz PLL source, then after
clearing the SUSPND bit, the USB module may not be
immediately operational while waiting for the 48 MHz
PLL to lock. The application code should clear the
ACTVIF flag as shown in Example 24-1.
Only one ACTVIF interrupt is generated when
resuming from the USB bus Idle condition. If user
firmware clears the ACTVIF bit, the bit will not
immediately become set again, even when there is
continuous bus traffic. Bus traffic must cease long
enough to generate another IDLEIF condition before
another ACTVIF interrupt can be generated.
EXAMPLE 24-1: CLEARING ACTVIF BIT (UIR<2>)
Assembly:
BCF UCON, SUSPND
LOOP:
BTFSS UIR, ACTVIF
BRA DONE
BCF UIR, ACTVIF
BRA LOOP
DONE:
C:
UCONbits.SUSPND = 0;
while (UIRbits.ACTVIF) { UIRbits.ACTVIF = 0; }