Datasheet

264
ATmega16U4/32U4 [DATASHEET]
Atmel-7766J-USB-ATmega16U4/32U4-Datasheet_04/2016
Table 21-1. Allocation and Reorganization USB Memory Flow
First, Endpoint 0 to Endpoint 5 are configured, in the growing order. The memory of each is reserved in
the DPRAM.
Then, the Endpoint 3 is disabled (EPEN=0), but its memory reservation is internally kept by the controller
Its ALLOC bit is cleared: the Endpoint 4 “slides” down, but the Endpoint 5 does not “slide”
Finally, if the firmware chooses to reconfigure the Endpoint 3, with a bigger size. The controller reserved
the memory after the Endpoint 2 memory and automatically “slide” the Endpoint 4. The Endpoint 5 does
not move and a memory conflict appear, in that both Endpoint 4 and 5 use a common area. The data of
those endpoints are potentially lost.
Note that:
the data of Endpoint 0 are never lost whatever the activation or deactivation of the higher Endpoint. Its
data is lost if it is deactivated.
Deactivate and reactivate the same Endpoint with the same parameters does not lead to a “slide” of the
higher endpoints. For those endpoints, the data are preserved.
CFGOK is set by hardware even in the case where there is a “conflict” in the memory allocation
21.10 PAD Suspend
The next figures illustrates the pad behaviour:
In the “idle” mode, the pad is put in low power consumption mode
In the “active” mode, the pad is working
Free memory
0
1
2
3
4
5
EPEN=1
ALLOC=1
Free memory
0
1
2
4
5
EPEN=0
(ALLOC=1)
Free memory
0
1
2
4
5
Endpoints
activation
Endpoint Disable
Free its memory
(ALLOC=0)
Free memory
0
1
2
3 (bigger size)
5
Endpoint
Activatation
Lost memory
4
Conflict