AVR Microcontrollers

AVR Microcontrollers

What are AVR Microcontrollers?

AVR is a family of 8-bit microcontrollers (MCUs) developed by Atmel in 1996, but aquired by Microchip in 2016. Although Atmel has stated that AVR is not an acronym and does not stand for anything, it is commonly accepted AVR is named after its creators, Alf-Egil Bogen and Vegard Wollan RISC, or Advanced Virtual RISC (Reduced Instruction Set Computer) [2] [3]. These AVR MCUs executes most instructions in one clock cycle and therefore consume relatively little power for their speed. This makes them very popular in project prototyping such as in the Arduino UNO and even production embedded systems [4].

Starting in 2016, Microchip has been releasing new generations of ATtiny and ATmega MCUs that have drastically changed how they are programed. These new lines, so far in 2021, are the tinyAVR 0-series,1-series, 2-series and megaAVR 0-series [8]. These new lines share many similarities with the ATxmega line by adding new peripherals, and using new arcitecture, register names, and a programing style that was traditionally reserved for the XMEGA devices [9]. This page will mainly focus on developing firmware for the ATtiny 1-series, specifically the ATtiny3217, in Microchip Studio/Atmel Studio 7 (MS/AS7) with the AVR-GCC Toolchain/Compiler.

 

Basic Types of AVR Microcontrollers

Series Name

Images

Pins

Flash Memory (KB)

Characteristics 

Series Name

Images

Pins

Flash Memory (KB)

Characteristics 

tinyAVR

(ATtiny)

 

ATtiny85 [5]

6-32

0.5 - 32

  • Small size

  • Less memory

  • Simple applications

megaAVR

(ATmega)

 

ATmega328P [6]

28-100

4 - 256

  • Many inbuilt peripherals

  • More memory 

  • Moderate to complex applications

XMEGA

(ATxmega)

ATxmega256A3U [7]

44-100

16 - 384

  • More commercial usage

  • Complex and compound applications

  • High speed

  • Large memory

  • Direct memory access (DMA)

  • Inbuilt event system 

   

tinyAVR 0/1/2-series and megaAVR 0-series Naming Convention [10] 

tinyAVR 0/1/2-series and megaAVR 0-series Naming Convention [10] 

Image of new MCU generation's naming convention graphic using the ATtiny3217

 

 

 

Programming Languages

The 3 most widely used languages for AVR MCUs are C, Arduino C/C++, and Assembly which is also known as Assembler Language and often abrreviated as ASM [11].