ATmega328P Memory The ATmega328P has 3 basic types of memory, Flash, SRAM and EEPROM.
Flash memory is where a program is stored. When you upload an program, it gets loaded into flash memory. ATmega328P flash is non-volatile storage. Data can be retrieved from Flash even after power has been cycled.
EEPROM is a form of non-volatile storage used for variable data that we want to maintain between operations of our program.
SRAM is the memory used to store variable information and data. SRAM is volatile storage, and anything placed here is immediately lost when power is removed.
Registers are special SRAM memory locations. The ATmega328P has 32 general purpose registers (labeled r0 to r31). Each register is 8-bits, or 1-byte in size. r0 occupies SRAM position 0. Each register following incrementally through SRAM position 31. These 32 general purpose registers are important because the ATmega328P cannot operate directly with memory. Values stored in memory must first be loaded into a register(s).
Memory Lock Bits Changing the Bits will lock memory.
Fuse bits Change clock settings.