Skip to main content
AVR Memory Architecture

AVR Memory Architecture

The AVR family of microcontrollers use a modified Harvard Architecture which uses 3 types of memory, most of which are on chip.

  • Flash
  • RAM


Flash is non volatile memory, which means it perisists when power is removed. Its purpose is to hold intructions that the microcontroller executes. The amount of flash can range from 512 bytes on an ATTiny to 384K on an ATxmega384A1. AVR microcontrollers can be thought of having 2 modes, a flash programming and a flash executing mode.

By modifying fuse settings (BOOTSZ0 & BOOTSZ1 on the ATmega168) some AVR microcontrollers allow you to reserve sections of flash for a bootloader and reserved application flash section. The bootloader allows the flash programming process to be controlled by a flash resident program. Some bootloader applications might include.

  • Decrypt encrypted flash files to prevent reverse engineering
  • Implement a self destruct sequence triggered by a tamper sensor
  • Allow the device to be programmed from a TFTP server


RAM is volatile memory that stores the runtime state of the program being executed. The amount of RAM can range from 32 byes on an ATTiny28L to 32KB on an ATxmega384A1. In many AVR microcontrollers RAM is split into 4 subsections:

  • General purpose registers
  • I/O registers
  • Extended I/O registers
  • Internal RAM

AVR microcontrollers have RAM on-chip but some AVRs (e.g. ATMega128) can use external RAM modules to extent what is built into the microcontroller.


EEPROM is non volatile memory which is used to store data. The most common use is to store configurable parameters. The amount of EEPROM can range from 32 bytes on an ATTiny to 4KB on an XMega.

Related News

Analogue to Digital Conversion Interrupts on an ATmega168

Analogue to Digital Conversion Interrupts on an ATmega168A

Back in February, we wrote a post on Analogue to Digital Conversion. Many people mentioned...

Analogue to Digital Conversion on an ATmega168

Many AVR microcontrollers are capable of doing Analogue to Digital Conversion. The ATmega168 has 6...

Atmega168 Timer interrupts

This tutorial will teach you about the 8 and 16 bit timers on an ATmega168...

Leave a reply

Your email address will not be published. Required fields are marked *

Shopping Cart