Datasheet
261
7766F–AVR–11/10
ATmega16/32U4
The following figure illustrates the allocation and reorganization of the USB memory in a typical
example:
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