Datasheet

PIC18(L)F2X/45K50
DS30684A-page 352 2012 Microchip Technology Inc.
24.2 USB Status and Control
The operation of the USB module is configured and
managed through three control registers. In addition, a
total of 14 registers are used to manage the actual USB
transactions. The registers are:
USB Control register (UCON)
USB Configuration register (UCFG)
USB Transfer Status register (USTAT)
USB Device Address register (UADDR)
Frame Number registers (UFRMH:UFRML)
Endpoint Enable registers 0 through 7 (UEPn)
24.2.1 USB CONTROL REGISTER (UCON)
The USB Control register (Register 24-1) contains bits
needed to control the module behavior during transfers.
The register contains bits that control the following:
Main USB Peripheral Enable
Ping-Pong Buffer Pointer Reset
Control of the Suspend mode
Packet Transfer Disable
In addition, the USB Control register contains a status
bit, SE0 (UCON<5>), which is used to indicate the
occurrence of a single-ended zero on the bus. When
the USB module is enabled, this bit should be moni-
tored to determine whether the differential data lines
have come out of a single-ended zero condition. This
helps to differentiate the initial power-up state from the
USB Reset signal.
The overall operation of the USB module is controlled
by the USBEN bit (UCON<3>). Setting this bit activates
the module and resets all of the PPBI bits in the Buffer
Descriptor Table to ‘0’. This bit also activates the inter-
nal pull-up resistors, if they are enabled. Thus, this bit
can be used as a soft attach/detach to the USB.
Although all Status and control bits are ignored when
this bit is clear, the module needs to be fully preconfig-
ured prior to setting this bit. This bit cannot be set until
the USB module is supplied with an active clock
source. If the PLL is being used, it should be enabled
at least two milliseconds (enough time for the PLL to
lock) before attempting to set the USBEN bit.
Note: When disabling the USB module, make
sure the SUSPND bit (UCON<1>) is clear
prior to clearing the USBEN bit. Clearing
the USBEN bit, when the module is in the
suspended state, may prevent the module
from fully powering down.