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