Datasheet

388
XMEGA B [DATASHEET]
8291B–AVR–01/2013
Figure 30-2. I/O mapped EEPROM addressing.
When EEPROM memory mapping is enabled, loading a data byte into the EEPROM page buffer can be performed
through direct or indirect store instructions. Only the least-significant bits of the EEPROM address are used to determine
locations within the page buffer, but the complete memory mapped EEPROM address is always required to ensure
correct address mapping. Reading from the EEPROM can be done directly using direct or indirect load instructions.
When a memory mapped EEPROM page buffer load operation is performed, the CPU is halted for two cycles before the
next instruction is executed.
When the EEPROM is memory mapped, the EEPROM page buffer load and EEPROM read functionality from the NVM
controller are disabled.
30.11.5 NVM EEPROM Commands
The NVM flash commands that can be used for accessing the EEPROM through the NVM controller are listed in Table
30-4.
For self-programming of the EEPROM, the trigger for action-triggered commands is to set the CMDEX bit in the NVM
CTRLA register (CMDEX). The read-triggered command is triggered by reading the NVM DATA0 register (DATA0).
The Change Protected column indicates whether the trigger is protected by the configuration change protection (CCP)
during self-programming or not. CCP is not required for external programming. The last two columns show the address
pointer used for addressing and the source/destination data register.
Section 30.11.5.1 on page 389 through Section 30.11.5.7 on page 390 explain in detail the algorithm for each EEPROM
operation.
Table 30-4. EEPROM self-programming commands.
E2PAGE
E2BYTE
BIT
NVM ADDR
0BS
ME
TYBB
SM
E
GA
P
DATA BYTE
PAGE
PAGEEEPROM MEMORY
BYTE ADDRESS
WITHIN A PAGE
PAGE ADDRESS
WITHIN THE EEPROM
E2BYTE
00
01
02
E2PAGEEND
E2PAGE
00
01
02
E2END
CMD[6:0] Group Configuration Description Trigger
CPU
Halted
Change
Protected
NVM
Busy
Address
Pointer
Data
Register
0x00 NO_OPERATION No operation - - - - - -
EEPROM Page Buffer
0x33 LOAD_EEPROM_BUFFER Load EEPROM page buffer DATA0 N Y N ADDR DATA0
0x36 ERASE_EEPROM _BUFFER Erase EEPROM page buffer CMDEX N Y Y - -