English
Language : 

ATMEGA8_08 Datasheet, PDF (215/308 Pages) ATMEL Corporation – 8-bit with 8K Bytes In-System Programmable Flash
ATmega8(L)
Figure 103. Addressing the Flash during SPM(1)
BIT 15
Z - REGISTER
ZPCMSB
ZPAGEMSB 1 0
0
PCMSB
PROGRAM
COUNTER
PCPAGE
PAGE ADDRESS
WITHIN THE FLASH
PAGEMSB
PCWORD
WORD ADDRESS
WITHIN A PAGE
PROGRAM MEMORY
PAGE
PAGE
INSTRUCTION WORD
PCWORD[PAGEMSB:0]:
00
01
02
PAGEEND
Notes: 1. The different variables used in the figure are listed in Table 84 on page 221.
2. PCPAGE and PCWORD are listed in Table 89 on page 225.
Self-Programming
the Flash
The Program memory is updated in a page by page fashion. Before programming a page with
the data stored in the temporary page buffer, the page must be erased. The temporary page
buffer is filled one word at a time using SPM and the buffer can be filled either before the page
erase command or between a page erase and a page write operation:
Alternative 1, fill the buffer before a page erase.
• Fill temporary page buffer.
• Perform a page erase.
• Perform a page write.
Alternative 2, fill the buffer after page erase.
• Perform a page erase.
• Fill temporary page buffer.
• Perform a page write.
If only a part of the page needs to be changed, the rest of the page must be stored (for example
in the temporary page buffer) before the erase, and then be rewritten. When using alternative 1,
the boot loader provides an effective Read-Modify-Write feature which allows the user software
to first read the page, do the necessary changes, and then write back the modified data. If alter-
native 2 is used, it is not possible to read the old data while loading since the page is already
erased. The temporary page buffer can be accessed in a random sequence. It is essential that
the page address used in both the page erase and page write operation is addressing the same
page. See “Simple Assembly Code Example for a Boot Loader” on page 219 for an assembly
code example.
2486T–AVR–05/08
215