English
Language : 

MEGA128CAN Datasheet, PDF (318/413 Pages) ATMEL Corporation – Microcontroller WITH 128K BYTES OF ISP FLASH AND CAN CONTROLLER
the address. Since this instruction addresses the Flash byte by byte, also the LSB (bit
Z0) of the Z-pointer is used.
Figure 155. Addressing the Flash During SPM(1)
RAMPZ - REGISTER
7
ZPCMSB
1 0 15
PROGRAM
COUNTER
PCMSB
15
PCPAGE
PAGE address
within the FLASH
PROGRAM MEMORY
PAGE
ZPAGEMSB
0
10
PAGEMSB
PCWORD
0
Z - REGISTER
WORD address
within a PAGE
PAGE
INSTRUCTION WORD
PCWORD [PAGEMSB:0]:
00
01
02
PAGEEND
Self-Programming the
Flash
Note: 1. The different variables used in Figure 155 are listed in Table 121 on page 324.
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 alternative 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
318 AT90CAN128
4250E–CAN–12/04