In ATmega48PB, there is no Read-While-Write support and no separate Boot Loader
Section. The SPM instruction can be executed from the entire Flash.
The device provides a Self-Programming
mechanism for downloading and uploading program code by the MCU itself. The
Self-Programming can use any available data interface and associated protocol to read code
and write (program) that code into the Program Memory.
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 with 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 re-written. 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 the Page Erase and Page Write operation is
addressing the same page.