20
Atmel ATmega16/32/64/M1/C1 [DATASHEET]
7647K–AVR–12/13
4.3
EEPROM Data Memory
The Atmel ATmega16/32/64/M1/C1 contains 512/1024/2048 bytes of data EEPROM memory. It is organized as a separate
data space, in which single bytes can be read and written. The EEPROM has an endurance of at least 100,000 write/erase
cycles. The access between the EEPROM and the CPU is described in the following, specifying the EEPROM Address
Registers, the EEPROM Data Register, and the EEPROM Control Register.
4.3.1
EEPROM Read/Write Access
The EEPROM Access Registers are accessible in the I/O space.
The write access time for the EEPROM is given in
Table 4-2. A self-timing function, however, lets the user software detect when
the next byte can be written. If the user code contains instructions that write the EEPROM, some precautions must be taken. In
heavily filtered power supplies, VCC is likely to rise or fall slowly on power-up/down. This causes the device for some period of
In order to prevent unintentional EEPROM writes, a specific write procedure must be followed. Refer to the description of the
EEPROM Control Register for details on this.
When the EEPROM is read, the CPU is halted for four clock cycles before the next instruction is executed. When the EEPROM
is written, the CPU is halted for two clock cycles before the next instruction is executed.
4.3.2
The EEPROM Address Registers – EEARH and EEARL
Bits 15.11 – Reserved Bits
These bits are reserved bits in the ATmega16/32/64/M1/C1 and will always read as zero.
Bits 9..0 – EEAR10..0: EEPROM Address
The EEPROM address registers – EEARH and EEARL specify the EEPROM address in the 512/1024/2048 bytes EEPROM
space. The EEPROM data bytes are addressed linearly between 0 and 511/1023/2047. The initial value of EEAR is undefined.
A proper value must be written before the EEPROM may be accessed.
4.3.3
The EEPROM Data Register – EEDR
Bits 7..0 – EEDR7.0: EEPROM Data
For the EEPROM write operation, the EEDR register contains the data to be written to the EEPROM in the address given by the
EEAR register. For the EEPROM read operation, the EEDR contains the data read out from the EEPROM at the address given
by EEAR.
Bit
15
141312
11
10
9
8
–
EEAR10
EEAR9
EEAR8
EEARH
EEAR7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0
EEARL
7
654
3
2
1
0
Read/Write
R
R/W
Initial Value
0
X
XXX
X
Bit
7654
321
0
EEDR7
EEDR6
EEDR5
EEDR4
EEDR3
EEDR2
EEDR1
EEDR0
EEDR
Read/Write
R/W
Initial Value
0000
000
0