Datasheet

2018 Microchip Technology Inc. Data Sheet Complete DS40002060A-page 120
ATtiny4/5/9/10
16.4.3 Programming the Flash
The Flash can be written word-by-word. Before writing a Flash word, the Flash target location must be erased. Writing to an
un-erased Flash word will corrupt its content.
The Flash is word-accessed for writing, and the data space uses byte-addressing to access Flash that has been mapped to
data memory. It is therefore important to write the word in the correct order to the Flash, namely low bytes before high
bytes. First, the low byte is written to the temporary buffer. Then, writing the high byte latches both the high byte and the
low byte into the Flash word buffer, starting the write operation to Flash.
The Flash erase operations can only performed for the entire Flash sections.
The Flash programming sequence is as follows:
1. Perform a Flash section erase or perform a Chip erase
2. Write the Flash section word by word
16.4.3.1 Chip Erase
The Chip Erase command will erase the entire code section of the Flash memory and the NVM Lock Bits. For security rea-
sons, the NVM Lock Bits are not reset before the code section has been completely erased. Configuration, Signature and
Calibration sections are not changed.
Before starting the Chip erase, the NVMCMD register must be loaded with the CHIP_ERASE command. To start the erase
operation a dummy byte must be written into the high byte of a word location that resides inside the Flash code section.
The NVMBSY bit remains set until erasing has been completed. While the Flash is being erased neither Flash buffer load-
ing nor Flash reading can be performed.
The Chip Erase can be carried out as follows:
1. Write the CHIP_ERASE command to the NVMCMD register
2. Start the erase operation by writing a dummy byte to the high byte of any word location inside the code section
3. Wait until the NVMBSY bit has been cleared
16.4.3.2 Erasing the Code Section
The algorithm for erasing all pages of the Flash code section is as follows:
1. Write the SECTION_ERASE command to the NVMCMD register
2. Start the erase operation by writing a dummy byte to the high byte of any word location inside the code section
3. Wait until the NVMBSY bit has been cleared
16.4.3.3 Writing a Code Word
The algorithm for writing a word to the code section is as follows:
1. Write the WORD_WRITE command to the NVMCMD register
2. Write the low byte of the data into the low byte of a word location
3. Write the high byte of the data into the high byte of the same word location. This will start the Flash write operation
4. Wait until the NVMBSY bit has been cleared
16.4.3.4 Erasing the Configuration Section
The algorithm for erasing the Configuration section is as follows: