AVR programming introduction

The Atmel AVR microcontroller architecture has, since its inception in 1996, gained popularity over among the professionals and amateurs alike.

This course is intended to serve as a hands-on introduction into AVR programming by providing complete and explained examples on how to use each of the common on-die peripherals, while also outlining the basic programming and schematics considerations.

Prerequisites
At least basic understanding of the following subjects is presumed in this course.
 * A text editor.
 * C – the general-purpose programming language the examples in this course are written in.
 * Either Bash (preferably) or some other Text (CLI) shells|command-line shell.
 * GNU Make – a dependency-drived build tool.

The tasks in this course are intended to be completed using either a bare ATmega8 microcontroller (MCU; or a compatible one) with the Optiboot bootloader preloaded or one of the AVR-based Arduino boards. See the /Simplistic device/ task for a variant of the circuit based on a bare MCU.

Contents

 * The beginning
 * /Simplistic device/
 * /Simplistic program/


 * Internal peripherals
 * /Timer basics/
 * /Pulse-width modulator/
 * /Serial Peripheral Interface/
 * /Universal asynchronous receiver/transmitter/
 * /Two-wire interface/


 * External peripherals
 * /Nokia 5110 LCD/


 * Complete devices, practical or not
 * /Signal acquisition interface/