|
ATMEGA8U2_14 Datasheet, PDF (201/310 Pages) ATMEL Corporation – 125 Powerful Instructions – Most Single Clock Cycle Execution | |||
|
◁ |
ATmega8U2/16U2/32U2
21.10 Remote Wake-up
The Remote Wake-up (or upstream resume) request is the only operation allowed to be sent by
the device on its own initiative. Anyway, to do that, the device should first have received a
DEVICE_REMOTE_WAKEUP request from the host.
⢠First, the USB controller must have detected the âsuspendâ state of the line: the remote
wake-up can only be sent if the SUSPI bit is set.
⢠The firmware has then the ability to set RMWKUP to send the âupstream resumeâ stream.
This will automatically be done by the controller after 5ms of inactivity on the USB line.
⢠When the controller starts to send the âupstream resumeâ, the UPRSMI flag is set and
interrupt is triggered (if enabled). If SUSPI was set, SUSPI is cleared by hardware.
⢠RMWKUP is automatically cleared by hardware at the end of the âupstream resumeâ.
⢠After that, if the controller detects a good âEnd Of Resumeâ signal from the host, an EORSMI
interrupt is triggered (if enabled).
21.11 STALL request
For each endpoint, the STALL management is performed using 2 bits:
â STALLRQ (enable stall request)
â STALLRQC (disable stall request)
â STALLEDI (stall sent interrupt)
To send a STALL handshake at the next request, the STALLRQ request bit has to be set. All fol-
lowing requests will be handshakâed with a STALL until the STALLRQC bit is set.
Setting STALLRQC automatically clears the STALLRQ bit. The STALLRQC bit is also immedi-
ately cleared by hardware after being set by software. Thus, the firmware will never read this bit
as set.
Each time the STALL handshake is sent, the STALLEDI flag is set by the USB controller and the
EPINTx interrupt will be triggered (if enabled).
The incoming packets will be discarded (RXOUTI and RWAL will not be set).
The host will then send a command to reset the STALL: the firmware just has to set the STALL-
RQC bit and to reset the endpoint.
21.11.1
Special consideration for Control Endpoints
A SETUP request is always ACKâed.
If a STALL request is set for a Control Endpoint and if a SETUP request occurs, the SETUP
request has to be ACKâed and the STALLRQ request and STALLEDI sent flags are automati-
cally reset (RXSETUPI set, TXIN cleared, STALLED cleared, TXINI cleared...).
This management simplifies the enumeration process management. If a command is not sup-
ported or contains an error, the firmware set the STALL request flag and can return to the main
task, waiting for the next SETUP request.
This function is compliant with the Chapter 8 test that sends extra status for a
GET_DESCRIPTOR. The firmware sets the STALL request just after receiving the status. All
extra status will be automatically STALLâed until the next SETUP request.
7799DâAVRâ11/10
201
|
▷ |