Atmel Corporation
Products > AVR Solutions > Application Notes

AVR Solutions -

right arrow Application Example and Algorithms   right arrow General Purpose
right arrow Battery Management   right arrow Getting Started
right arrow Design Considerations   right arrow Mature
right arrow Development Tools/Kits   right arrow Migration Notes
 
Application Example and Algorithms
PDF Software Description
AVR064: STK502 - A Temperature Monitoring System with LCD Output (24 pages, revision C, updated 02/06)
This application note explains how to use the ATmega169(P) and STK502 to display a temperature measurement on an LCD.
 
AVR114: Using the ATMEL File System management for AT32UC3x, AT90USBx and ATmega32U4 (22 pages, revision A, updated 9/08)
This application note describes the File System module which is optimized for the AVR core, leading to a small footprint and high bandwidth. It provides many features such as opening multiple files at the same time or play list management.
AVR115: Data Logging with Atmel File System on ATmega32U4 (10 pages, revision A, updated 1/09)
This application note describes how to use the Atmel file system (see AVR114) to perform data logging operation on the ATmega32U4.
AVR153: USB PC Drivers Based on Generic HID Class (10 pages, revision B, updated 7/08)
This document gives information on integrating the Atmel USB HID DLL functions. Simple code examples that demonstrate different types of implementation are given.
AVR155: Accessing I2C LCD Display Using the tinyAVR and megaAVR 2-Wire Serial Interface (10 pages, revision B, updated 09/05)
This application note includes a 2-wire/TWI driver for bus handling and describes how to access a Philips I2C LCD driver on a Batron LCD display.
AVR172: Sensorless Commutation of Brushless DC Motor (BLDC) using ATmega32M1 and ATAVRMC320 (23 pages, revision A, updated 10/08)
This application note describes how to implement a sensorless commutation of BLDC motors with the ATAVRMC320 development kit and the ATmega32M1.
 
AVR191: Anti-Pinch Algorithm Adaptation Procedure (10 pages, revision A, updated 11/06)
The purpose of this document is to explain how to adapt an anti-pinch algorithm to a specified powered window.
AVR194: Brushless DC Motor Control using ATmega32M1 (16 pages, revision A, updated 4/08)
This application note describes how to implement a brushless DC motor control in sensor mode using the ATmega32M1 AVR microcontroller.
AVR200: Multiply and Divide Routines (21 pages, revision D, updated 5/06)
This Application Note lists subroutines for multiplication and division of 8 and 16-bit signed and unsigned numbers.
AVR201: Using the 8-bit AVR Hardware Multiplier (11 pages, revision C, updated 6/02)
Examples of using the 8-bit AVR multiplier for 8-bit arithmetic.
AVR202: 16-Bit Arithmetics on tinyAVR and megaAVR devices (3 pages, revision B, updated 5/02)
This Application Note lists program examples for arithmetic operation on 16-bit values on tinyAVR and megaAVR devices.
AVR204: BCD Arithmetics (14 pages, revision B, updated 01/03)
This Application Note lists routines for BCD arithmetics.
AVR220: Bubble Sort (5 pages, revision B, updated 5/02)
This Application Note implements the Bubble Sort algorithm on the AVR controllers.
AVR221: Discrete PID controller on tinyAVR and megaAVR devices (10 pages, revision A, updated 05/06)
This application note describes a simple implementation of a discrete Proportional-Integral-Derivative (PID) controller on tinyAVR and megaAVR devices.
AVR222: 8-Point Moving Average Filter on tinyAVR and megaAVR devices (5 pages, revision B, updated 5/02)
This Application Note gives an demonstration of how the addressing modes in the tinyAVR and megaAVR architecture can be utlized.
AVR223: Digital Filters on tinyAVR and megaAVR devices (18 pages, revision B, updated 7/08)
This application note explains how to implement digital filters on tinyAVR and megaAVR devices, taking into consideration coefficient and data scaling and methods of optimization
AVR236: CRC check of Program Memory on tinyAVR and megaAVR devices with LPM instruction (9 pages, revision B, updated 5/02)
The Application Note describes CRC (Cyclic Redundancy Check) theory and implementation of CRC checking of program memory for secure applications.
AVR242: Multiplexing LED Drive & a 4x4 Keypad on tinyAVR and megaAVR devices (26 pages, revision B, updated 5/02)
This Application Note describes a comprehensive system providing a 4 x 4 keypad as input into a real time clock/timer with two outputs and controls external loads and a four digit mulitplexed LED display.
AVR244: UART as ANSI Terminal Interface (8 pages, revision A, updated 11/03)
This application note describes some basic routines to interface an AVR microcontroller to a terminal window using the UART (hardware or software).
AVR245: Code Lock with 4x4 Keypad and I2C LCD on a tinyAVR (9 pages, revision A, updated 10/05)
This application note describes how to build a code lock with an tinyAVR and a handful of components. The code lock uses a 4x4 keypad for user input, a piezoelectric buzzer for audible feedback and an LCD for informational output.
Register to download
AVR252: TV Control Touch Keyboard (29 pages, revision A, updated 10/09)
TV Control Touch Keyboard is designed to be the drop-in replacement for an existing electromechanical (resistive ladder) type TV control keyboard. It is based on the latest Capacitive Touch Technology for man-machine/user interface.
Register to download
AVR254: QWheel with ATtiny48 (39 pages, revision A, updated 10/09)
This Application Note focuses on making a customized firmware solution using Atmel QTouch Library designed for a wheel (constructed from 4 channels).
AVR270: USB Mouse Demonstration on megaAVR with USB (11 pages, revision C, updated 7/08)
This application note describes a simple mouse project. It allows users to quickly test USB hardware using megaAVR with USB without any driver installation.
AVR271: USB Keyboard Demonstration on megaAVR with USB (12 pages, revision B, updated 7/08)
This application note describes how to start and implement a USB keyboard application using the STK525 starter kit and FLIP in-system programming software for megaAVR with USB.
AVR272: USB CDC Demonstration: UART to USB Bridge, on megaAVR with USB (11 pages, revision B, updated 4/08)
This application note describes how to start and implement a CDC (Virtual Com Port and UART to USB bridge) application using the STK525 starter kit and FLIP in-system programming software for megaAVR with USB.
AVR273: USB Mass Storage Implementation on megaAVR with USB (23 pages, revision A, updated 3/06)
This application note describes how to start and implement a USB application based on the Mass Storage (Bulk only) class to transfer data between a PC and user equipment on megaAVR with USB.
AVR275: Sensor-based Control of Three Phase Brushless DC Motors Using 8-bit AVR USB microcontrollers (10 pages, revision A, updated 09/06)
This application note described the control of a BLDC motor with Hall effect position sensors (referred to simply as Hall sensors). The implementation includes both direction and open loop speed control.
AVR280: USB Host CDC Demonstration on megaAVR with USB (14 pages, revision A, updated 9/07)
This application note describes how to start and implement a Host CDC application using the STK525 or USBKEY starter kit, and finally introduces a simple example of dual USB-UART bridge between two PCs.
AVR287: USB Host HID and Mass Storage Demonstration (11 pages, revision A, updated 9/09)
This application note describes how to start and implement a USB host application based on the USB HID class (USB mouse) and Mass Storage class and introduces a simple example of an megaAVR with USB managing both USB classes and a file system.
AVR296: AVRUSBRF01 USB RF Dongle user's guide (11 pages, revision A, updated 7/08)
This kit is a USB dongle designed to demonstrate wireless communications. It is powered by the AT90USB162 AVR microcontroller.
AVR298: USB Audio Demonstration with ATmega32(16)U4 (8 pages, revision A, updated 11/08)
This application note describes a simple audio project. It allows to quickly test USB hardware using the ATMega32U4 without any driver installation.
AVR313: Interfacing a PC AT Keyboard on tinyAVR and megaAVR devices (13 pages, revision B, updated 5/02)
Most microcontrollers requires some kind of human interface. This Application Note describes one way of doing this using a standard PC AT Keyboard.
AVR314: DTMF Generator on tinyAVR and megaAVR devices (8 pages, revision B, updated 5/02)
This Application Note describes how DTMF (Dual-Tone Multiple Frequencies) signaling can be implemented using any tinyAVR or megaAVR device with PWM and SRAM.
AVR32120: using the 32-bit AVR UC3 audio bitstream DAC driver (8 pages, revision C, updated 3/08)
This application note describes how to use the ABDAC peripheral on 32-bit AVR UC3 devices. This DAC is suitable for generating audio playback. By using the generic clock interface, the ABDAC is capable of supporting a wide range of playback frequencies.
AVR32134: 3D Graphic Rendering Application using 32-bit AVR UC3 (17 pages, revision C, updated 4/09)
This application note demonstrates a real time bitmap texture mapping on a 3D rotating Cube. The real time image is processed using DSP instructions without any hardware acceleration.
AVR323: Interfacing GSM modems with tinyAVR and megaAVR devices (21 pages, revision A, updated 02/06)
This application note describes how to use a tinyAVR or megaAVR device to control a GSM modem in a cellular phone. The interface between modem and host is a textual protocol called Hayes AT-Commands.
AVR325: High-Speed Interface to Host Enhanced Parallel Port (EPP) using tinyAVR and megaAVR devices (7 pages, revision A, updated 2/02)
This Application Note describes a method for high-speed bidirectional data transfer between an AVR Microcontroller and an of-the-shelf IBM (R) PC-compatible desktop computer, using its Enhanced Parallel Port (EPP) 8-bit parallel data path.
AVR32709: Audio Decoder Over USB using 32-bit AVR UC3 (29 pages, revision C, updated 7/09)
This application note will help the reader use the 32-bit AVR UC3 Audio Decoder over USB software. This software includes a software MP3 decoder, a file system, and a USB Host mass storage class support.
AVR32710: Space Vector Modulation for Motor Control using 32-bit AVR UC3 (19 pages, revision B, updated 05/09)
This application note is a 32-bit AVR UC3 stand-alone application which computes real-time Space Vector Modulation on a Brushless DC Motor. This application is designed to work with the EVK1100 evaluation kit.
 
AVR32718: AVR UC3 DSPlib Software Framework DSPLib (28 pages, revision A, updated 11/07)
This application note describes the DSP Library from the AVR UC3 Software Framework. It details the main functions (prototype, algorithm and benchmark) of the DSP library: FFT, convolution, FIR and partial IIR using GCC compiler.
AVR32723: Sensor Field Oriented Control for Brushless DC motors using 32-bit AVR AT32UC3B0256 (26 pages, revision A, updated 6/09)
This application note delivers an implementation of Sensor Field Oriented Control algorithm for brushless DC motor on Atmel 32-bit AVR UC3 B series microcontrollers.
AVR32758: USB Host Mass Storage Bootloader on 32-bit AVR UC3 (16 pages, revision B, updated 12/09)
This USB host mass storage class (MSC) bootloader allows to perform In-System Programming of 32-bit AVR UC3 parts from a USB USB Drive, without removing the part from the system and the need for any external programming interface other than USB.
 
AVR32760: USB DFU Bootloader Protocol on 32-bit AVR UC3 (18 pages, revision A, updated 9/09)
This application note describes the USB DFU Protocol used in the 32-bit AVR UC3 USB bootloader. First, it gives an overview of the USB DFU class protocol and then it details the Atmel DFU protocol used by the bootloader.
AVR32765: 32-bit AVR UC3 DSPLib Reference Manual (138 pages, revision A, updated 7/09)
The 32-bit AVR UC3 DSP Library is a compilation of digital signal processing functions. The source code is available in the AVR UC3 Software Framework, for GCC and IAR compilers.
AVR328: USB Generic HID Implementation on megaAVR devices (13 pages, revision C, updated 7/08)
The aim of this document is to describe how to start and implement a USB application, based on the HID class, to transfer data between a PC and user equipment, using USB megaAVR devices.
AVR335: Digital Sound Recorder with tinyAVR or megaAVR and DataFlash (20 pages, revision C, updated 04/05)
This Application Note describes how to record, store and play back sound using any 8-bit AVR MCU with A/D converter, the AT45DB161 DataFlash memory and a few extra components
AVR336: ADPCM Decoder on tinyAVR and megaAVR devices (20 pages, revision A, updated 11/04)
This application note focuses on decoding the ADPCM signal, Adaptive Differential Pulse Code Modulation, and turning it to a signal suitable for loudspeakers. It targets an ATmega128 device.
AVR341: Four and five-wire Touch screen Controller using tinyAVR and megaAVR devices (19 pages, revision A, updated 07/07)
This application note describes how to interface a resistive 4- and 5-wire touch systems with tinyAVR and megaAVR devices which provide an excellent solution thanks to their analog features combined with low power modes.
AVR360: Step Motor Controller using tinyAVR and megaAVR devices (4 pages, revision B, updated 4/03)
This Application Note describes how to implement a compact size and high-speed interrupt driven step motor controller.
AVR410: RC5 IR Remote Control Receiver on tinyAVR and megaAVR devices (10 pages, revision B, updated 5/02)
This Application Note describes a receiver for the frequently used Philips/Sony RC5 coding scheme
AVR411: Secure Rolling Code Algorithm for Wireless Link on tinyAVR and megaAVR devices (22 pages, revision D, updated 11/09)
This application note describes a Secure Rolling Code Algorithm transmission protocol for use in a unidirectional wireless communication system.
AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR devices (5 pages, revision A, updated 5/03)
In this application note the widely used RC5 coding scheme from Philips will be described and a fully working remote control solution will be presented. This application will use the ATtiny28 AVR microcontroller for this purpose.
 
AVR433: Power Factor Corrector (PFC) with AT90PWM2/2B Re-triggable High Speed PSC (7 pages, revision A, updated 03/06)
This application note explains how to develop a stand alone PFC (Power Factor Corrector) with the AT90PWM2.
AVR435: BLDC/BLAC Motor Control Using a Sinus Modulated PWM Algorithm on AT90PWM3B (12 pages, revision A, updated 9/06)
This application note proposes an implementation of a sinus modulated BLDC/BLAC motor control, based on an ATAVRMC100 board populated with an AT90PWM3B.
AVR441: Intelligent BLDC Fan Controller with Temperature Sensor and Serial Interface (26 pages, revision A, updated 09/05)
This application note describes how to integrate a low-cost, feature-rich AVR microcontroller into the commutator electronics of a BLDC fan. The ATtiny25 is used as an example.
AVR442: PC Fan Control using ATtiny13 (10 pages, revision A, updated 09/05)
This application note describes the operation of 12 volt DC cooling fans typically used to supply cooling air to electronic equipment, and controlling them with the ATtiny13.
AVR443: Sensor-based control of three phase BLDC motor based on tinyAVR and megaAVR devices (8 pages, revision B, updated 02/06)
This application note describes the control of a BLDC motor with Hall effect position sensors. The implementation includes both direction and open loop speed control.
AVR444: Sensorless control of 3-phase BLDC motors based on tinyAVR and megaAVR devices (14 pages, revision A, updated 10/05)
This application note describes how to implement sensorless commutation control of a 3-phase brushless DC (BLDC) motor with the low cost ATmega48 microcontroller.
AVR446: Linear speed control of stepper motor on tinyAVR and megaAVR devices (15 pages, revision A, updated 06/06)
This application note describes how to implement an exact linear speed controller for stepper motors. It also presents a driver with a demo application, capable of controlling acceleration as well as position and speed.
AVR447:Sinusoidal driving of three-phase permanent magnet motor using ATmega48/88/168 (26 pages, revision A, updated 06/06)
This application note describes the implementation of sinusoidal driving for threephase brushless DC motors with hall sensors. The implementation can easily be modified to use other driving waveforms such as sine wave with third harmonic injected.
AVR448: Control of High Voltage 3-Phase BLDC Motor with an ATmega48 (10 pages, revision C, updated 05/06)
Using a microcontroller as a control device, 3-phase motors can be used for a wide range of applications. Motor sizes below one horsepower are efficiently controlled in speed, acceleration, and power levels.
AVR449: Sinusoidal driving of 3-phase permanent magnet motor using ATtiny261/461/861 (24 pages, revision B, updated 10/07)
This application note describes the implementation of sinusoidal driving for threephase brushless DC motors with hall sensors on the ATtiny261/461/861 microcontroller family.
AVR452: Sensor-based Control of Three Phase Brushless DC Motors Using AT90CAN128/64/32 (10 pages, revision A, updated 03/06)
This application note describes the control of a BLDC motor with Hall effect position sensors. The implementation includes both direction and open loop speed control.
 
AVR460: Embedded Web Server on megaAVR devices (53 pages, revision C, updated 5/02)
This application note explains how embedded applications can be connected directly to the internet.
AVR465: Energy Meter using tinyAVR and megaAVR devices (40 pages, revision A, updated 07/04)
This application note describes a single-phase power/energy meter with tamper logic. The design measures active power, voltage, and current in a single-phase distribution environment.
AVR480: Anti-Pinch System for Power Window using tinyAVR and megaAVR devices (19 pages, revision B, updated 12/06)
This application note provides an example of how to create an anti-pinch system for power windows. Based on Speed and Current parameters measured out of the window DC motor, it supports the FMVSS118 and 20/64/ECC standards.
AVR492: BLDC Motor control in sensor mode using AT90PWM3/3B (26 pages, revision B, updated 5/07)
This application note describes how to implement a brushless DC motor control in sensor mode using AT90PWM3/3B AVR microcontroller.
AVR493: Sensorless Commutation of BLDC Motor control using AT90PWM3/3B and ATAVRMC100 (20 pages, revision B, updated 12/06)
This application note describes how to implement a sensorless commutation of BLDC motors with the ATAVRMC100 developement kit.
AVR494: AC Induction Motor Control Using the constant V/f Principle and a Natural PWM Algorithm (12 pages, revision A, updated 12/05)
This application note explains how to control the speed of an induction motor by using variable frequency drives and natural PWM modulation on an AT90PWM3/3B.
AVR495: AC Induction Motor Control Using the Constant V/f Principle and a Space-vector PWM Algorithm (11 pages, revision A, updated 12/05)
This application note explains how to control the speed of an induction motor by using variable frequency drives and space vector modulation on an AT90PWM3/3B.
AVR496: Brushless DC Motor Control using ATtiny861 (13 pages, revision A, updated 7/09)
This application note describes how to implement a brushless DC motor control in sensor mode using the ATtiny861 AVR microcontroller.
AVR498: Sensorless control of BLDC Motors using ATtiny861 (20 pages, revision A, updated 7/09)
This application note describes how to implement a brushless DC motor control in sensorless mode using the ATtiny861 AVR microcontroller.
AVR926 : Using ATmega88 and ATA6824 for DC motor control in high temperature environment (13 pages, revision A, updated 8/07)
DC Motor Control in High Temperature Environment
AVR927: Using ATmega88 and ATA6832 for BLDC motor control in high temperature environment (17 pages, revision A, updated 3/07)
The purpose of this document is to explain the theory and application of Atmel’s integrated BLDC driver solution.
AVR998: Guide to IEC60730 Class B compliance with AVR Microcontrollers (9 pages, revision B, updated 04/08)
This application note describes the ‘Class B’ software classification, refering to embedded firmware which is intended to prevent unsafe operation of controlled equipment and provides guidelines for compliance with the 'Class B' classification as it relates to AVR devices.
Top
Battery Management
PDF Software Description
AVR146: Lithium-Ion Battery Charging via USB with ATmega16/32U4 (35 pages, revision A, updated 06/08)
This application note is based on the ATmega16/32U4 and describes how to charge Lithium-Ion (Li-Ion) batteries using USB connection as power supply.
AVR351: Runtime calibration and compensation of RC oscillators (7 pages, revision A, updated 10/08)
This application note explains how to calibrate RC oscillators at operating temperature or runtime if system temperature changes over time, to achieve the best possible accuracy.
AVR352: Using the Coulomb Counting ADC (7 pages, revision B, updated 2/09)
This application note describes how to use the CC-ADC to get maximum accuracy and lowest possible current consumption.
AVR353: Voltage Reference Calibration and Voltage ADC Usage (6 pages, revision A, updated 10/08)
This application note explains how to calibrate the very accurate low power bandgap voltage reference embedded in some of the new Atmel AVR Smart Battery devices, and used for the internal Voltage ADC and Coulomb Counting ADC.
 
AVR354: Using the Deep Under-Voltage Recovery Mode (DUVR) (8 pages, revision 8, updated 10/08)
This application note explains how to charge Li-ion battery cells from a deeply discharged condition and at the same time keep full control of the charging sequence, which is a challenge in many applications.
AVR450: Battery Charger for SLA, NiCd, NiMH and Li-ion Batteries (43 pages, revision C, updated 09/06)
This Reference Design is a battery charger that fully implements the latest technology in battery charger designs. The charger can fast-charge all popular battery types without any hardware modifications.
AVR453: Smart Battery Reference Design using the ATmega406 (37 pages, revision C, updated 02/06)
This application note describes the implementation of a smart battery using the ATmega406 which includes high accuracy ADCs, a TWI for SMBus communications and independent hardware features that can protect the battery from incorrect use.
Register to download
AVR456: Firmware User's Guide for SB201-1 & SB201-2 (29 pages, revision A, updated 8/09)
This document describes an implementation of a smart battery for the Atmel SB201-1 and SB201-2 reference designs, explaining how to gain optimal safety and accuracy for a Lithium-Ion rechargeable battery-pack.
AVR458: Charging Lithium-Ion Batteries with ATAVRBC100 (34 pages, revision B, updated 8/08)
This application note is based on the ATAVRBC100 Battery Charger reference design and focuses on how to charge Lithium-Ion (Li-Ion) batteries. The firmware is written entirely in C language and is easy to port to other 8-bit AVR devices.
AVR463: Charging Nickel-Metal Hydride Batteries with ATAVRBC100 (26 pages, revision A, updated 09/07)
This application note is based on the ATAVRBC100 Battery Charger reference design and focuses on how to use it to charge Nickel-Metal Hydride (NiMH) batteries. The firmware is written entirely in C language and is easy to port to other AVR microcontrollers.
 
AVR491: Quick start guide for SB200 (13 pages, revision B, updated 11/08)
This document gives an introduction to the use of the SB200. It explains how the SB200 hardware and PC software is used and how it can be used to demonstrate and evaluate the SB201 features and performance.
Top
Design Considerations
PDF Software Description
 
AVR040: EMC Design Considerations (18 pages, revision D, updated 6/06)
This Application Note covers the most common EMC problems designers encounter when using Microcontrollers.
 
AVR042: AVR Hardware Design Considerations (15 pages, revision H, updated 1/10)
This Application Note covers the most common problems encountered when switching to a new microcontroller architecture like the AVR. Solutions and considerations for the most common design challenges are covered.
AVR1010: Minimizing the power consumption of XMEGA devices (13 pages, revision B, updated 11/09)
This application note describes what must be done to achieve the lowest possible power consumption for XMEGA devices. Example code is also supplied, which compiles with both GCC and IAR Embedded Workbench.
 
AVR1012: XMEGA A Schematic Checklist (17 pages, revision A, updated 12/09)
This application note describes a common checklist which should be used when starting and reviewing the schematics for a XMEGA A design.
 
AVR181: Automotive Grade0 - PCB and Assembly Recommendations (8 pages, revision A, updated 09/07)
This paper is a collection of technical advice aiming at providing automotive electronic designers elements to manage high temperature constraints when addressing the PCB development.
 
AVR186: Best practices for the PCB layout of Oscillators (4 pages, revision A, updated 3/08)
This application note provides guidelines to design the PCB layout in order not to risk failure and unstable oscillator operation.
 
AVR188: Design Guidelines for ATtiny43U (12 pages, revision A, updated 8/09)
This application note explains how to design with the ATtiny43U which provides the microcontroller and peripherals with a fixed supply voltage, generated from an external supply of lower voltage.
 
AVR32714: 32-bit AVR UC3 A series Schematic Checklist (20 pages, revision D, updated 12/08)
This application note describes a common checklist which should be used when starting and reviewing the schematics for a 32-bit AVR UC3 A series design.
 
AVR32715: 32-bit AVR UC3 B series Schematic Checklist (13 pages, revision D, updated 12/08)
This application note describes a common checklist which should be used when starting and reviewing the schematics for a 32-bit AVR UC3 B series design.
 
AVR32722: How to license audio and video codecs (8 pages, revision A, updated 2/08)
This guide shall give Atmel customers information about, as well as an overview over, the licensing of patents that cover technologies such as MP3 and WMA. This document only applies as a source of information and no responsibility is taken by Atmel for the correctness of the information found herein.
AVR32733: Placing data and the heap in external SDRAM on 32-bit AVR UC3 (16 pages, revision A, updated 1/10)
This application note provides a way to place the heap and the variables of a C application in external SDRAM. A basic C application is provided as a standalone zip package;. This document only applies to 32-bit AVR UC3 products that have a SDRAMC module.
 
AVR32738: 32-bit AVR AP7 Schematic Checklist (24 pages, revision C, updated 9/08)
This application note describes a common checklist which should be used when starting and reviewing the schematics for an 32-bit AVR AP7 design.
AVR32739: Low power software design using 32-bit AVR UC3 (13 pages, revision B, updated 05/08)
This application note gives an overview of available features on the UC3 A and B series that help decrease power consumption. Most sections of this application note are also applicable for other 32-bit AVR devices.
AVR32771: USB High speed Device Mass storage on SD/MMC card with optional AES (18 pages, revision A, updated 2/10)
This application note is a description of a USB Mass Storage device, using High Speed USB for communication and a SD/MMC-card for storage. By default the code is compiled to run at the EVK1104 reference design board with the AT32UC3A3.
 
AVR32787: 32-bit AVR UC3 A3 series High Speed USB Design Guidelines (6 pages, revision B, updated 4/09)
This document provides guidelines for integrating an 32-bit AVR AT32UC3 A3 series high speed USB device controller onto a 4-layer PCB. The material covered can be broken into two main categories: board design guidelines and layout examples.
 
AVR32800: 32-bit AVR UC3 L series Schematic Checklist (12 pages, revision A, updated 9/09)
This application note describes a common checklist which should be used when starting and reviewing the schematics for a 32-bit AVR UC3 L series design.
 
AVR32801: 32-bit AVR UC3 A3 series Schematic Checklist (23 pages, revision A, updated 8/09)
This application note describes a common checklist which should be used when starting and reviewing the schematics for a 32-bit AVR UC3 A3 series design.
Top
Development Tools/Kits
PDF Software Description
 
AVR060: JTAG ICE Communication Protocol (20 pages, revision B, updated 01/04)
This application note describes the communication protocol used between AVR Studio and JTAG ICE.
AVR061: STK500 Communication Protocol (31 pages, revision B, updated 4/03)
This document describes the protocol for the STK500 starterkit. This protocol is based on earlier protocols made for other AVR tools and is fully compatible with them in that there should not be any overlapping or redefined commands.
AVR067: JTAGICE mkII Communication Protocol (69 pages, revision D, updated 11/09)
This document describes the communication protocol used between AVR Studio and JTAGICE mkII.
AVR068: STK500 Communication Protocol (37 pages, revision C, updated 06/06)
The document describes version 2.0 of the Atmel STK500 and the PC controlling the STK500 communication protocol. The firmware is distributed with AVR Studio 4.11 build 401 or later.
 
AVR069: AVRISP mkII Communication Protocol (24 pages, revision B, updated 02/06)
This document describes the AVRISP mkII protocol. The firmware is distributed with AVR Studio 4.12 or later.
 
AVR070: Modifying AT90ICEPRO and ATICE10 to Support Emulation of AT90S8535 (5 pages, revision C, updated 5/02)
Older AT90ICEPRO can be upgraded to support the new AVR devices with internal A/D converter. This Application Note describes in detail how to modify the AT90ICEPRO to support emulation of AT90S8535 and other AVR devices with A/D converter.
 
AVR074: Upgrading AT90ICEPRO to ICE10 (8 pages, revision B, updated 5/02)
This Application Note describes how to upgrade the AT90ICEPRO emulator to ATICE10 Version 2.0
 
AVR078: STK524 User's Guide (20 pages, revision A, updated 02/08)
The STK524 kit is made of the STK524 board, AVRCANAdapt and AVRLINAdapt boards. The STK524 board is a top module for the STK500. It is designed to support the ATmega32M1, ATmega32C1 products and future compatible derivatives.
 
AVR079: STK600 Communication Protocol (61 pages, revision A, updated 04/08)
This document describes the STK600 protocol. The firmware is distributed with AVR Studio 4.14 or later.
AVR1907: Xplain Hardware User's Guide (12 pages, revision C, updated 1/10)
This application note describes the Xplain evaluation kit which is a hardware platform to evaluate the ATxmega128A1. The kit enables the user to get started using the XMEGA's peripherals and to integrate the XMEGA in their own design.
AVR414: User Guide - ATAVRRZ502 - Accessory Kit (21 pages, revision B, updated 12/06)
This application note describes the ATAVRRZ502 Accessory Kit (RZ502). The RZ502 is designed for evaluation of the Atmel AT86RF230 2.4 GHz radio transceiver. This radio transceiver fully complies with the IEEE 802.15.4 standard.
 
AVR430: ATAVRMC300 Hardware User Guide (13 pages, revision C, updated 10/08)
The ATAVRMC300 is a general-purpose power stage board able to drive brushless DC, brushed DC and stepper motors. The board is designed to be a flexible platform for developing motor control applications.
AVR451: BC100 Hardware User's Guide (12 pages, revision A, updated 09/07)
The BC100 is reference design/development kit that targets especially battery charging. It can be used to charge various battery types, as long as the requirements to charging voltage and currents are within the output range that the kit offers.
 
AVR454: Users Guide - ATAVRSB100 - Smart Battery Development kit (20 pages, revision D, updated 06/06)
This document describes the ATAVRSB100 smart battery development kit. The SB100 is designed for evaluation of the Atmel AVR ATmega406, which is designed for smart battery applications targetting 2, 3 or 4 cell Lithium-Ion battery packs.
AVR455: ATAVRSB201 User's guide (10 pages, revision A, updated 10/08)
The ATAVRSB201-1/SB201-2 kits are evaluation and development kits for the new Atmel AVR smart battery device ATmega16HVA which is made for battery packs with 1 series or 2 series lithium ion and lithium polymer cells.
AVR459: SB200 Hardware User's Guide (17 pages, revision A, updated 10/08)
The SB200 is a development platform for SB20x smart battery reference designs, which offers an easy way to start evaluation and hence development of smart battery applications using Atmel AVR microcontrollers.
 
AVR461: Quick Start Guide for the Embedded Internet Toolkit (16 pages, revision B, updated 5/02)
This Quick Start Guide gives an introduction to using the AVR Embedded Internet Toolkit and can be used as a guide for getting started with embedded internet applications.
 
AVR462: Reducing the Power Consumption of AT90EIT1 (3 pages, revision A, updated 3/02)
This Application Note describes a small modification to the AVR Embedded Internet Toolkit. This will reduce the power consumption and the operating temperature of the board.
 
AVR469: ATAVRMC301 Hardware User Guide (21 pages, revision A, updated 4/09)
The ATAVRMC301 is the device board for ATtiny861 AVR microcontroller which can be connected to the general-purpose power stage board ATAVRMC300 for driving brushless DC, brushed DC and stepper motors.
 
AVR470: ATAVRMC310 Hardware User Guide (20 pages, revision A, updated 7/08)
The ATAVRMC310 is the device board for ATmega32M1 AVR microcontroller. Connected to the power stage board ATAVRMC300, it enables to drive brushless DC, brushed DC and stepper motors.
 
AVR471: MC320 Getting Started Guide (7 pages, revision A, updated 11/08)
"This application note describes the MC320 kit which is a complete hardware system which demonstrates motor control using ATmega32M1 and features CAN and LIN connectivity."
AVR481: DB101 Hardware User's Guide (10 pages, revision B, updated 09/07)
The DB101 is a graphical LCD module. It demonstrates how to use an AVR microcontroller to control a 128x64 pixel graphical LCD.
 
AVR487: AVRUSBRF01 Getting Started Guide (8 pages, revision A, updated 4/08)
This document describes the AVRUSBRF01 reference design which allows users to build an RF application in a short time and reduce time to market.
 
AVR600: STK600 Expansion, routing and socket (18 pages, revision A, updated 8/08)
This application note describes the process of developing new routing, socket and expansion cards for the STK600. It also describes the physical parameters for creating such cards.
 
AVR601: Atmel Modular Evaluation Kits for Motor Control Applications (9 pages, revision A, updated 10/08)
This document describes the association between the ATAVRMC300, ATAVRMC301, ATAVRMC303, and ATAVRMC310 processor boards.
 
AVR602: Using the ATtinyX3U Top Module (11 pages, revision B, updated 02/09)
This Application note describes what's in the ATtinyX3U top module package for STK600, how to prepare the equipment, how to set up the power source, how to programming the ATtiny43U, and schematics.
 
AVR603 : STK200 Modification from Rev. B to Rev C
This document describes how to modify the STK200 from rev B to rev C.
 
AVR604: Understanding the AVR ICEPRO I/O Registers (9 pages, revision A, updated 4/98)
This Application Note describes the I/O Register views seen in AVR Studio when using the ICEPRO emulator.
AVR652: ATtiny43U Demonstration Kit (13 pages, revision A, updated 8/09)
AVR652 is a Hardware platform to demonstrate the capabilities of ATtiny43U device, also providing support for programming and debug via ISP and debugWIRE.
Top
General Purpose
PDF Software Description
AVR001: Conditional Assembly and portability macros (6 pages, revision E, updated 4/08)
This application note describes the Conditional Assembly feature present in the 8-bit AVR Assembler version 1.74 and later. Examples of how to use Conditional Assembly are included to illustrate the syntax and concept.
AVR032: Linker Command Files for the IAR ICCA90 Compiler (11 pages, revision B, updated 5/02)
This Application Note describes how to make a linker command file for use with the IAR ICCA90 C-compiler for the 8-bit AVR Microcontroller.
 
AVR034: Mixing C and Assembly Code with IAR Embedded Workbench for 8-bit AVR microcontrollers (8 pages, revision B, updated 4/03)
This Application Note describes how to use C to control the program flow among main program and assembly modules to control time critical I/O functions.
 
AVR035: Efficient C Coding for 8-bit AVR microcontrollers (22 pages, revision D, updated 01/04)
This Application Note describes how to utilize the advantages of the 8-bit AVR architecture and the development tools to achieve more efficient c Code than for any other microcontroller.
 
AVR041: EMC Performances Improvement for ATmega32M1 (6 pages, revision A, updated 02/08)
Thanks to a new Atmel IC design methodology, the EMC constraints are taken into account earlier in the IC design phase. The EMC performances of the Mega32M1 product are improved thanks to some design improvements detailed in this document.
AVR053: Calibration of the internal RC oscillator (15 pages, revision G, updated 5/06)
This application note describes a method to calibrate the internal RC oscillator and targets all AVR devices with tunable RC oscillator. Furthermore, an easily adaptable calibration firmware source code is also offered.
AVR054: Run-time calibration of the internal RC oscillator via the UART (17 pages, revision C, updated 04/08)
This application note describes how to calibrate the internal RC oscillator via the UART. In the method used a slave node is synchronized to a master node at the beginning of every message frame.
AVR055: Using a 32kHz XTAL for run-time calibration of the internal RC (16 pages, revision D, updated 7/08)
This application note describes a fast and accurate way to calibrate the internal RC oscillator using an external 32.768 kHz crystal as input to an asynchronous Timer/Counter.
AVR063: LCD Driver for the STK504 (13 pages, revision A, updated 04/06)
The STK504 is a hardware expansion board for STK500 that add support for 100 pin AVR LCD devices. This application note is an example of how to use the ATmega3290 and the STK504.
AVR065: LCD Driver for the STK502 (17 pages, revision E, updated 7/08)
This application notes provides LCD drivers for the STK502 which is powered by Atmel powerful ATmega169(P).
 
AVR072: Accessing 16-bit I/O Registers (4 pages, revision B, updated 5/02)
This Application Note shows how to read and write the 16-bit registers in the AVR Microcontrollers. Since the AVR has an 8-bit I/O bus these registers must be written in two execution cycles. It explains how to safely read and write these 16-bit registers.
AVR073: Accessing 10- and 16-bit registers in ATtiny261/461/861 (6 pages, revision B, updated 1/08)
This application note explains how 10- and 16-bit accesses should be handled when using the ATtiny261/461/861 family of microcontrollers. A complete set of C macros for accessing 10- and 16-bit. registers is also included with this application note.
AVR076: AVR CAN - 4K Boot Loader (34 pages, revision A, updated 8/09)
This document describes the "Slim" CAN boot loader functionality and protocol which allows In-System Programming (ISP) over the CAN bus for AT90CAN32/64/128 and ATmega16M1/32M1/32C1/64M1/64C1 devices.
 
AVR077: Opto Isolated Emulation for the DebugWIRE (9 pages, revision A, updated 1/08)
This application note describes how to implement an optoisolated interface for the DebugWIRE. This device could help the debug of applications with non isolated power supply like ballast, motors, vacuum cleaners, refrigerators, etc.
AVR100: Accessing the EEPROM on tinyAVR and megaAVR devices (7 pages, revision C, updated 09/05)
This Application Note contains assembly routines for accessing the EEPROM for all 8-bit AVR devices. Includes code for reading and writing EEPROM addresses sequentially and at random addresses.
AVR1003: Using the XMEGA Clock System (10 pages, revision E, updated 11/09)
This application note describes the XMEGA Clock System which is a set of highly flexible modules that provides a large portfolio of internal and external clock sources.
AVR101: High Endurance EEPROM Storage (5 pages, revision A, updated 9/02)
This Application Note describes how to make safe, high endurance, parameter storage in EEPROM, insuring no wear-out of the memory.
AVR102: Block Copy Routines on tinyAVR and megaAVR devices (5 pages, revision B, updated 5/02)
This Application Note contains routines for transfer of data blocks on tinyAVR and megaAVR devices.
AVR103: Using the EEPROM Programming Modes on tinyAVR and megaAVR devices (5 pages, revision A, updated 03/05)
This application note implements a driver utilizing the programming modes available for the EEPROM in some tinyAVR and megaAVR devices, involving both time and power savings.
AVR104: Buffered Interrupt Controlled EEPROM Writes on tinyAVR and megaAVR devices (9 pages, revision A, updated 07/03)
This application note presents a buffered interrupt driven approach to preserve and restore system information when power is turned off, significantly increasing general performance and decreasing power consumption compared to a polling implementation.
AVR105: Power efficient high endurance parameter storage in tinyAVR and megaAVR devices Flash memory (10 pages, revision A, updated 9/03)
This application note describes how to implement a high endurance parameter storage method in Flash memory using the self-programming feature of the AVR.
AVR106: C functions for reading and writing to Flash memory on tinyAVR and megaAVR devices (10 pages, revision B, updated 08/06)
This application note provides C functions for accessing the Flash memory using the Self programming Program memory which allows to reprogram the Flash memory during program run.
AVR107: Interfacing AVR microcontrollers with serial memories (22 pages, revision A, updated 03/05)
This application note describes the functionality and the architecture of SPI serial memories drivers as well as the motivation of the selected solution.
AVR108: Setup and use of the LPM Instructions on tinyAVR and megaAVR devices (4 pages, revision B, updated 5/02)
This Application Note describes how to access constants saved in Flash program memory of tinyAVR and megaAVR devices.
AVR109: Using Self Programming on tinyAVR and megaAVR devices (11 pages, revision B, updated 06/04)
This Application note describes how an tinyAVR or megaAVR device with the SPM instruction can be configured for Self Programming.
 
AVR120: Characterization and Calibration of the ADC on an AVR (15 pages, revision D, updated 02/06)
This application note explains various ADC (Analog to Digital Converter) characterization parameters, how they affect ADC measurements and how to measure them and how to perform run-time compensation.
AVR121: Enhancing ADC resolution by oversampling (14 pages, revision A, updated 09/05)
This Application Note explains the method called "Oversampling and Decimation" and which conditions need to be fulfilled to make this method work properly to achieve a higher resolution without using an external ADC.
 
AVR122: Calibration of the tinyAVR's internal temperature reference (14 pages, revision A, updated 2/08)
This application note describes how to calibrate and compensate the temperature measurements from the ATtiny25/45/85. It can also be used on other AVR microcontrollers with internal temperature sensors.
AVR128: Using the Analog Comparator on tinyAVR and megaAVR devices (4 pages, revision B, updated 5/02)
This Application Note serves as an example on how to set up and use the AVR's on-chip Analog Comparator.
AVR130: Using the timers on tinyAVR and megaAVR devices (16 pages, revision A, updated 2/02)
This Application Note describes how to use the different timers on tinyAVR and megaAVR devices. The intention of this document is to give a general overview of the timers, show their possibilities and explain how to configure them.
AVR1300: Using the XMEGA ADC (12 pages, revision C, updated 9/09)
This application note describes the basic functionality of the XMEGA ADC with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1301: Using the XMEGA DAC (9 pages, revision B, updated 4/08)
This application note describes the basic functionality of the XMEGA DAC with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1302: Using the XMEGA Analog Comparator (6 pages, revision B, updated 4/08)
This application note describes the basic functionality of the XMEGA AC with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1303: Using the XMEGA IR communication module (5 pages, revision C, updated 7/08)
This application note describes the basic functionality of the IRCOM module in the AVR XMEGA with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1304: Using the XMEGA DMA Controller (10 pages, revision B, updated 7/09)
This application note describes the basic functionality of the XMEGA DMAC with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1305: using the XMEGA Interrupts and the Programmable Multi-level Interrupt Controller (6 pages, revision A, updated 2/08)
This application note describes the XMEGA Interrupt mechanisms and the Programmable Multi-level Interrupt Controller (PMIC). The application note also offers a C code example that shows how the PMIC can be accessed.
AVR1306: Using the XMEGA Timer/Counter (17 pages, revision A, updated 2/08)
This application note describes the XMEGA Timer/Counter modules which are true 16-bit Timer/Counters with Input Capture and PWM functionality. The application note also offers a C code example that shows how the Timer/Counters can be accessed.
AVR1307: Using the XMEGA USART (7 pages, revision A, updated 2/08)
This application note describes how to set up and use the USART in asynchronous mode in the XMEGA. C code drivers and examples are included for both polled and interrupt controlled USART applications.
AVR1308: Using the XMEGA TWI (11 pages, revision A, updated 7/09)
This application note describes how to set up and use the TWI module in the XMEGA. C code drivers and examples are included for both master and slave applications.
AVR1309: Using the XMEGA SPI (7 pages, revision A, updated 11/09)
This application note describes how to set up and use the SPI module in the AVR XMEGA. Both interrupt controlled and polled C code drivers and examples are included for master and slave applications.
AVR131: Using the 8-bit AVR’s High-speed PWM (8 pages, revision A, updated 09/03)
This application note is an introduction to the use of the high-speed Pulse Width Modulator (PWM) available on some tinyAVR and megaAVR devices.
AVR1310: Using the XMEGA Watchdog Timer (9 pages, revision B, updated 4/09)
This application note describes how to set up and use the Watchdog Timer module in the AVR XMEGA. A driver interface written in C is included as well.
AVR1311: Using the XMEGA Timer/Counter Extensions (8 pages, revision A, updated 4/08)
This application note describes how to set up and use the extension module available on some Timer/Counters of the XMEGA. A driver interface written in C is included as well.
AVR1312: Using the XMEGA External Bus Interface (10 pages, revision A, updated 2/08)
This application note describes the basic functionality of the XMEGA EBI with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1313: Using the XMEGA IO Pins and External Interrupts (9 pages, revision A, updated 2/08)
This application note describes the highly configurable XMEGA I/O pins and external interrupts. A driver interface written in C is included as well.
AVR1314: Using the XMEGA Real Time Counter (6 pages, revision A, updated 2/08)
This application note describes the use of the 16-bit Real Time Counter (RTC) in the XMEGA. A driver interface written in C is included as well.
AVR1315: Using the XMEGA EEPROM (8 pages, revision A, updated 4/08)
This application note describes the basic functionality of the XMEGA EEPROM with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR1316: Using the XMEGA Self-programming (11 pages, revision B, updated 11/08)
This application note describes the basic functionality of the XMEGA Self-programming feature and gives code examples to get up and running quickly.
AVR1317: Using the XMEGA built-in DES accelerator (7 pages, revision A, updated 4/08)
This application note describes the basic functionality of the XMEGA DES instructions with code examples to get up and running quickly. A driver interface written in C and Assembler is included as well.
AVR1318: Using the XMEGA built-in AES accelerator (7 pages, revision A, updated 4/08)
This application note describes the basic functionality of the XMEGA AES with code examples to get up and running quickly. A driver interface written in C is included as well.
AVR132: Using the Enhanced Watchdog Timer on tinyAVR and megaAVR devices (17 pages, revision C, updated 6/08)
This Application Note describes how to utilize the Enhanced Watchdog Timer (WDT) used on new 8-bit AVR devices. In addition to performing System Reset, the WDT now also has the ability to generate an interrupt.
 
AVR133: Long Delay Generation Using the 8-bit AVR Microcontroller (8 pages, revision B, updated 01/04)
The solution presented here shows how the AVR AT90 series microcontrollers generate and handle long delays, without any software intervention, thus allowing the core to be in a low-power mode during the delay.
AVR134: Real-Time Clock using the Asynchronous Timer on tinyAVR and megaAVR devices (9 pages, revision G, updated 04/09)
This Application Note describes how to implement a real-time (RTC) on tinyAVR and megaAVR devices that features the RTC module.
AVR135: Using Timer Capture to Measure PWM Duty Cycle on tinyAVR and megaAVR devices (12 pages, revision A, updated 10/05)
This application note describes how the pulse width and period of a signal may be computed using the Input Capture Unit (ICP).
AVR136: Low-jitter Multi-channel Software PWM (5 pages, revision A, updated 05/06)
This application note shows how an multi-channel software pulse-width modulation can be implemented. The implementation uses an 8-bit timer with overflow interrupt to generate 10 PWM channels with very low jitter.
AVR138: ATmega32M1 family PSC Cookbook (17 pages, revision A, updated 3/08)
This application note is an introduction to the use of the Power Stage Controller (PSC) available in ATmega32M1 family. The object of this document is to give a general overview of the PSC, show its various modes of operation and explain how to configure them.
 
AVR140: ATmega48/88/168 family run-time calibration of the Internal RC oscillator (12 pages, revision A, updated 09/06)
This application note describes how to calibrate the internal RC oscillator via the UART. The method used is based on the calibration method used in the Local Inteconnect Network (LIN) protocol.
AVR151: Setup and use of the SPI on tinyAVR and megaAVR devices (15 pages, revision C, updated 7/08)
This application note describes how to setup and use the on-chip Serial Peripheral Interface (SPI) of the tinyAVR and megaAVR devices.
AVR1600: Using the XMEGA Quadrature Decoder (8 pages, revision A, updated 8/08)
This application note describes the basic functionality of the XMEGA QDECs with code example.
AVR1605: XMEGA Boot Loader Quick Start Guide (12 pages, revision A, updated 5/09)
This application note describes how to use a boot loader application with one of the XMEGA family devices (e.g. ATxmega128A1) and how an AVR with the Store Program Memory (SPM) instruction can be configured for Self-programming.
AVR1606: XMEGA Internal RC Oscillator Calibration (10 pages, revision A, updated 12/09)
This application note describes a fast and accurate method to calibrate the internal RC oscillator. It offers an easily adaptable calibration firmware source code, which can be used with any XMEGA with internal tunable RC oscillator and JTAG interface. This firmware allows device calibration using the AVR tools JTAGICE mkII and AVRONE.
 
AVR180: External Brown-Out Protection (16 pages, revision B, updated 5/02)
This Application Note shows in detail how to prevent system malfunction during periods of insufficient power supply voltage.
AVR182: Zero Cross Detector on tinyAVR and megaAVR devices (8 pages, revision B, updated 01/04)
This Application Note describes how to implement an efficient zero cross detector for mains power lines using an tinyAVR and megaAVR devices
AVR230: DES Bootloader on tinyAVR and megaAVR devices (24 pages, revision D, updated 04/05)
This application note describes how firmware can be updated securely on microcontrollers with bootloader capabilities, using the Data Encryption Standard (DES) or triple DES to encrypt the firmware.
AVR231: AES Bootloader on tinyAVR and megaAVR devices (29 pages, revision D, updated 08/06)
This application note describes how firmware can be updated securely on microcontrollers with bootloader capabilities, using the Advanced Encryption Standard (AES) to encrypt the firmware.
AVR240: 4x4 Keypad-Wake Up on Keypress on tinyAVR and megaAVR devices (14 pages, revision D, updated 06/06)
This Application Note describes a simple interface to a 4 x 4 keypad designed for low power battery operation.
AVR241: Direct driving of LCD display using general I/O on tinyAVR and megaAVR devices (11 pages, revision A, updated 04/04)
This application note describes software driving of LCDs with one common line, using the static driving method.
AVR243: Matrix Keyboard Decoder on tinyAVR and megaAVR devices (11 pages, revision A, updated 01/03)
This application note describes a software driver interfacing an 8x8 keyboard and is designed for low power battery operation. The application also supports user-defined alternation keys to implement Caps Lock, Ctrl-, Shift- and Alt-like functionality.
AVR274: Single-wire Software UART on tinyAVR and megaAVR devices (14 pages, revision A, updated 03/07)
This application note describes a software implementation of a single wire UART. The protocol supports half duplex communication between two devices. The only requirement is an I/O port supporting external interrupt and a timer compare interrupt.
 
AVR282: USB Firmware Upgrade for megaAVR with USB (13 pages, revision A, updated 1/08)
This application note describes how to perform the firmware upgrade of the megaAVR with USB products using the on-chip bootloader and FLIP software.
AVR286: LIN Firmware Base for AVR microcontrollers with LIN/UART Controller (19 pages, revision A, updated 3/08)
This application note provides low level drivers for LIN communication on ATtiny87/167 or ATmega32M1/32C1/64M1/64C1
 
AVR292: LIN Break-in-Data Feature for AVR microcontrollers with LIN/UART Controller (8 pages, revision A, updated 3/08)
This document describes the behavior of the LIN/UART Controller when it detects an unexpected BREAK field during an otherwise normal LIN transfer. This event is referred to as "Break-in-Data".
AVR301: 8-bit AVR C Code for Interfacing AVR to AT17CXXX FPGA Configuration Memories (20 pages, revision D, updated 01/04)
This Application Note describes how to In-System-Program (ISP) an Atmel FPGA Configuration Memory using an 8-bit AVR MCU and how to bit bang TWI using port pins on an AT90S8515 AVR MCU
AVR303: SPI-UART Gateway on tinyAVR and megaAVR devices (5 pages, revision A, updated 03/05)
The SPI-UART Gateway application runs on the ATmega8 and allows the developer to test and debug an SPI slave application isolated from the master, using manually controlled communications via a suitable RS232 terminal.
AVR304: Half Duplex Interrupt Driven Software UART on tinyAVR and megaAVR devices (8 pages, revision C, updated 4/08)
This Application Note describes how to make a half duplex UART on any tinyAVR or megaAVR device using the 8-bit Timer/Counter0 and an external interrupt.
AVR305: Half Duplex Compact Software UART on tinyAVR and megaAVR devices (9 pages, revision C, updated 09/05)
This Application Note describes how to implement a polled software UART capable of handling speeds up to 614,400 bps on an AT90S1200.
AVR306: Using the AVR UART in C on tinyAVR and megaAVR devices (3 pages, revision B, updated 7/02)
This Application Note describes how to set up and use the UART present in most 8-bit AVR devices. C code examples are included for polled and interrupt controlled UART applications
AVR307: Half Duplex UART Using the USI Module on tinyAVR and megaAVR devices (18 pages, revision A, updated 10/03)
The Universal Serial Interface (USI) present in 8-bit AVR devices like the ATtiny26, ATtiny2313, and ATmega169, is a communication module designed for TWI and SPI communication, but can also be used for UART communication as well.
AVR308: Software LIN Slave on tinyAVR and megaAVR devices (12 pages, revision B, updated 5/02)
This Application Note shows how to implement a LIN (Local Interconnect Network) slave task on tinyAVR and megaAVR devices without the need for any external components.
AVR309: Software Universal Serial Bus (USB) (23 pages, revision B, updated 2/06)
This application note describes the USB implementation in a low-cost microcontroller through emulation of the USB protocol in the firmware. Supports Low Speed USB (1.5 Mbit/s) in accordance with USB2.0.
AVR310: Using the USI module as a I2C master on tinyAVR and megaAVR devices (8 pages, revision B, updated 09/04)
This Application Note describes how to use the USI for TWI master communication on tinyAVR and megaAVR devices.
AVR311: Using the TWI module as I2C slave on tinyAVR and megaAVR devices (12 pages, revision D, updated 8/09)
This application note describes a TWI slave implementation, in form of a fullfeatured driver and an example of usage for this driver.
AVR312: Using the USI module as a I2C slave on tinyAVR and megaAVR devices (9 pages, revision C, updated 09/05)
This Application Note describes how to use the USI for TWI slave communication on tinyAVR and megaAVR devices.
AVR315: Using the TWI module as I2C master on tinyAVR and megaAVR devices (11 pages, revision B, updated 09/04)
This Application Note describes a TWI master implementation, in form of a fullfeatured driver and an example of usage for this driver.
AVR316: SMBus Slave Using the TWI Module on tinyAVR and megaAVR devices (20 pages, revision A, updated 10/05)
This application note provides background information on the SMBus specification and the 8-bit AVR TWI module, an interrupt-driven SMBus slave driver and a sample implementation.
AVR317: Using the USART on the ATmega48/88/168 as a SPI master (10 pages, revision A, updated 09/04)
Some applications might need more than one SPI module. This can be achieved using the new Master SPI Mode of the ATmega48/88/168 USART.
AVR318: Dallas 1-Wire master on tinyAVR and megaAVR devices (21 pages, revision A, updated 09/04)
This application note shows how a 1-Wire master can be implemented on an 8-bit AVR, either in software only, or utilizing the U(S)ART module.
AVR319: Using the USI module for SPI communication on tinyAVR and megaAVR devices (8 pages, revision A, updated 09/04)
This application note describes a SPI interface implementation, in form of a fullfeatured driver and an example of usage for this driver.
AVR320: Software SPI Master (5 pages, revision C, updated 09/05)
This Application Note describes a set of low-level routines for software implementation of the SPI (Synchronous Peripheral Interface). These can be used for communicating with Atmel's 25xxx family of Serial EEPROM memories.
 
AVR32136: 32-bit AVR UC3 NAND flash GPIO driver (10 pages, revision A, updated 12/08)
This application note describes how to connect a NAND flash device to an 32-bit AVR UC3 family device and communicate using only GPIO lines. How to configure the driver to match the target hardware is also covered by this application note.
 
AVR32138: How to optimize the ADC usage on AVR UC3 microcontrollers (5 pages, revision A, updated 11/09)
This application note outlines the steps necessary to optimize analog to digital conversions on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series.
AVR322: LIN Protocol Implementation on megaAVR Microcontrollers (21 pages, revision A, updated 12/05)
The LIN protocol is introduced in this application note, along with its implementation on Atmel Automotive AVR microcontrollers.
 
AVR32708: 32-bit AVR UC3 A and B series Flash JTAG Programming Algorithms (13 pages, revision A, updated 11/07)
The aim of this application note is to provide 3rd party programmer vendors, the JTAG programming specification for 32-bit AVR UC3 A and B series.
AVR32749: 32-bit AVR UC3A0512/A1512 rev E, H, I Software Workaround for Flash Read-after-Write Errat (4 pages, revision B, updated 8/09)
This application note gives the software workaround implementation of the erratum flash-read-after-write present on AT32UC3Ax512 (x=0 or x=1) revision E, H and I.
AVR32752: Using the 32-bit AVR UC3 Static Memory Controller (12 pages, revision B, updated 1/09)
The purpose of this application note is to understand all features available in the SMC and to deliver guidelines to interface 32-bit AVR UC3 microcontroller and external static memory devices. Drivers and code example are provided.
 
AVR32788: Using the 32-bit AVR UC3 SSC in I2S mode (12 pages, revision A, updated 6/09)
This application note describes how the I˛S protocol is handled on 32-bit AVR devices and gives important information about how to get the best configuration for different sample rates.
 
AVR340: Direct Driving of LCD Using General Purpose IO using tinyAVR and megaAVR devices (15 pages, revision A, updated 09/07)
This application note describes the operation of a Multiplexed LCD. Also discussed are electrical waveforms and connections needed by a LCD, as well as a C-program to operate the LCD.
AVR350: Xmodem CRC Receive Utility for tinyAVR and megaAVR devices (7 pages, revision D, updated 1/08)
The Xmodem protocol was created years ago as a simple means of having two computers talk to each other and has found its way into many applications.
AVR400: Low Cost A/D Converter using Analog Comp. on tinyAVR and megaAVR devices (6 pages, revision B, updated 5/02)
This Application Note targets cost and space critical applications that need an ADC and explains how to use an analog comparator for this purpose.
AVR401: 8-Bit Precision A/D Converter using Analog Comp. on tinyAVR and megaAVR devices (12 pages, revision C, updated 2/03)
This Application Note describes how to perform a kind of dual slope A/D conversion with the analog comparator of tinyAVR and megaAVR devices
AVR434: PSC Cookbook for AT90PWM devices (32 pages, revision A, updated 10/06)
This application note is an introduction to the use of the Power Stage Controllers (PSC) available in some AVR microcontrollers like the AT90PWM devices, showing the various modes of operation.
AVR482: DB101 Software User's Guide (13 pages, revision A, updated 09/07)
The DB101 firmware is a complex piece of software that uses a number of drivers and libraries to implement a set of applications to the user. This document gives a brief introduction to every driver, library, and application.
AVR483: DB101 Firmware - Getting Started (17 pages, revision A, updated 2/08)
This application explains, step by step, how to create a new firmware project, add the bare essentials for a basic graphics application, build it and run it on the DB101.
AVR910: In-System Programming (12 pages, revision E, updated 8/08)
This Application Note shows how to design an application to support in-system programming.
AVR911: AVR Open-source Programmer for tinyAVR and megaAVR devices (13 pages, revision A, updated 7/04)
The AVR Open-source Programmer (AVROSP) is an AVR programmer application that replaces the AVRProg tool included in AVR Studio. It is a command-line tool, using the same syntax as the STK500 and JTAGICE command-line tools in AVR Studio.
AVR916: Upgrading the Flash memory using a U-Disk (12 pages, revision A, updated 8/09)
This application note explains how to perform In System Programming (ISP) from a U-disk, without removing the part from the system and without the need for any external interface other than the USB.
 
AVR922: Adding a Serial Number to a USB Device (6 pages, revision A, updated 1/09)
This application note describes how to add a unique serial number to a USB device (on top of VID and PID) with the help of the information stored in the embedded flash of a megaAVR with USB.
Top
Getting Started
PDF Software Description
AVR000: Register and Bit-Name Definitions for the 8-bit AVR Microcontroller (2 pages, revision C, updated 11/09)
This Application Note contains files which allow the user to use Register and Bit names from the databook when writing assembly programs for 8-bit AVR microcontrollers.
AVR030: Getting Started with IAR Embedded Workbench for Atmel 8-bit AVR (10 pages, revision D, updated 10/04)
The purpose of this application note is to guide new users through the initial settings of IAR Embedded Workbench, and compile a simple C-program.
 
AVR031: Getting Started with ImageCraft C for Atmel 8-bit AVR (8 pages, revision B, updated 5/02)
The purpose of this Application Note is to guide new users through the initial settings of the ImageCraft IDE and compile a simple C program.
AVR033: Getting Started with the CodeVisionAVR C Compiler (18 pages, revision C, updated 4/08)
The purpose of this Application Note is to guide the user through the preparation of an example C program using the CodeVisionAVR C compiler.
 
AVR1000: Getting Started Writing C-code for XMEGA (15 pages, revision A, updated 2/08)
This application note describes the coding style behind header files and drivers for XMEGA peripherals; this coding style ensures high readability, reusability and short development times of embedded code for electronic products.
AVR1001: Getting Started With the XMEGA Event System (8 pages, revision A, updated 2/08)
This application note describes the XMEGA event system which is a set of features that allows peripherals to interact without intervention from the CPU. Several peripheral modules can generate events.
 
AVR1005: Getting started with XMEGA (11 pages, revision B, updated 11/09)
This document briefly introduces the similarities and differences between the megaAVR family and the XMEGA family, and provides an overview of the available tool chain.
 
AVR1900: Getting started with ATxmega128A1 (15 pages, revision A, updated 4/08)
This document contains information about how to get started with the ATxmega128A1 on STK600.
AVR276: USB Software Library for megaAVR with USB Microcontrollers (27 pages, revision A, updated 1/07)
This application note describes the USB software library for megaAVR with USB and illustrates how to develop a USB device or reduced host applications using this library.
AVR277: On-The-Go (OTG) add-on to USB Software Library for megaAVR with USB (15 pages, revision A, updated 7/07)
This application note describes the new features brought by the OTG working group and how they are integrated in the USB software library for megaAVR with USB, illustrating how to develop customizable USB OTG applications.
AVR293: USB Composite Device on megaAVR with USB (9 pages, revision A, updated 8/08)
This document describes how to start and implement a composite device application on megaAVR with USB.
AVR32000: Introduction to 32-bit AVR UC3 header files (6 pages, revision A, updated 05/06)
This application note gives a basic introduction to the header files for 32-bit AVR UC3 microcontrollers.
 
AVR32006: Getting Started with GCC for 32-bit AVR (13 pages, revision A, updated 12/07)
The goal of this guide is to quickly enlighten the developer on best practices for the development of code for 32-bit AVR microcontrollers, as well as giving some pointers to specific features of GCC relevant to 32-bit AVR UC3.
 
AVR32007: 32-bit AVR UC3 C-coding Guidelines for ARM7 Developers (11 pages, revision B, updated 3/08)
This document describes differences between the 32-bit AVR UC3 and ARM7TM CPU architectures, and gives guidelines on developing applications on the AVR UC3 architecture for developers with ARM7 experience.
 
AVR32015: Getting started with AVR32 Studio (24 pages, revision C, updated 4/08)
This application note is a quick start guide for the AVR32 Studio. It documents on a step by step basis how a simple program can be created as standalone or Linux application.
 
AVR32018: How to upgrade from GNU Toolchain 2.0.3 to 2.1.5 or later (5 pages, revision A, updated 3/09)
This document outlines the software operations to migrate from a GNU Toolchain 2.0.3 to 2.1.5 or later.
AVR32119: Getting Started with 32-bit AVR UC3 A series Microcontrollers (13 pages, revision B, updated 9/08)
This application note is aimed at helping the reader become familiar with the Atmel 32-bit AVR UC3 A series microcontroller.
 
AVR32736: Getting Started with 32-bit AVR AP7 Application Processors (11 pages, revision A, updated 4/08)
This document shall help you to get started with a development for the 32-bit AVR AP7 application processor series. It introduces available software and hardware tools, lists references to documentation and provides development setup examples.
 
AVR32737: Getting Started with Linux on 32-bit AVR AP7 Application Processors (9 pages, revision A, updated 2/08)
This application note is aimed at helping the reader become familiar with Linux development with the Atmel 32-bit AVR AP7 Application Processor.
 
AVR32769: How to Compile the standalone AVR UC3 Software Framework in AVR32 Studio V2 (11 pages, revision A, updated 5/09)
The purpose of this application note is to show how to compile any of the application and driver examples provided in the AVR UC3 Software Framework using the AVR32 Studio V2.
AVR32917: Getting started with the picoPower Board (16 pages, revision A, updated 12/09)
This application note describes the picoPower function of ATmega48PA, ATxmega32A4 and AT32UC3L064 and the picoPower Board which purpose is to get familiar with the general power-saving features of AVR microcontrollers.
Top
Mature
PDF Software Description
 
AVR32003: 32-bit AVR AP7 linux Buildroot (8 pages, revision E, updated 11/08)
Buildroot is a set of scripts that builds an entire root file system for a given target. A target can be ATNGW100 or ATSTK1000. For additional information and download see the Buildroot for 32-bit AVR AP7.
 
AVR32004: How to add software package to Buildroot on 32-bit AVR AP7 application processors (9 pages, revision B, updated 11/08)
This application note describes how a new “user-space” software package can be added to, and modified to fit into, the Buildroot build system. For additional information and download see the Buildroot for 32-bit AVR AP7.
 
AVR32005: How to add a custom board to Buildroot on 32-bit AVR AP7 (6 pages, revision B, updated 11/08)
This application note describes how a custom target board can be added to the Buildroot build system, if you intend to use Buildroot in combination with your own design. For additional information and download see the Buildroot for 32-bit AVR AP7.
AVR32100: Using the 32-bit AVR AP7 USART (8 pages, revision A, updated 04/06)
The 32-bit AVR AP7 has independent USARTs. They can be set to operate in several different modes. This application note describes these modes and provides drivers and code examples.
AVR32101: Using the 32-bit AVR AP7 interrupt controller (8 pages, revision A, updated 04/06)
The flexible 32-bit AVR AP7 interrupt controller can be customized to suit different system requirements. This application note describes how to set it up correctly and provides code example.
AVR32102: Using the 32-bit AVR AP7 SDRAM controller (11 pages, revision A, updated 05/06)
The 32-bit AVR AP7 has a dedicated SDRAM (Synchronous DRAM) controller which is capable of supporting a series of external SDRAMs. This application note describes how to configure this module and provides drivers and code examples.
AVR32105: Using the 32-bit AVR AP7 SPI controller (13 pages, revision A, updated 05/06)
The 32-bit AVR AP7 has a dedicated SPI interface which can operate in master or slave mode. This application note describes these modes and provides drivers and code examples.
AVR32107: Using the 32-bit AVR AP7 TWI controller (7 pages, revision A, updated 04/06)
The 32-bit AVR AP7 has a dedicated SPI interface. This application notes describes how to use the microcontroller as a master on a half-duplex Two-Wire Interface bus (Philips' I2C Compatible) and provides drivers and code examples.
AVR32108: Using the 32-bit AVR AP7 Peripheral Direct Memory Access controller (8 pages, revision A, updated 05/06)
The 32-bit AVR AP7 has a dedicated Peripheral Direct Memory Controller (PDC). This application notes describes how to use it and includes an example of using the USART with the Peripheral DMA Controller (PDC) with and without interrupt control.
AVR32110: Using the 32-bit AVR AP7 Timer/Counter (13 pages, revision A, updated 05/06)
The Timer/Counter Module in the 32-bit AVR AP7 consists of 3 identical and independent channels which can support various functionnalities. This application note describes how to configure this module and provides drivers and code examples.
AVR32111: Using the 32-bit AVR AP7 PIO Controller (7 pages, revision A, updated 05/06)
The 32-bit AVR AP7 PIO Controller is responsible for selecting functionality on the I/O pins. This application note explains how to configure the PIO and provides drivers and code examples.
AVR32113: Using the 32-bit AVR AP7 Memory Management Unit (11 pages, revision A, updated 09/06)
The 32-bit AVR AP7 memory management unit (MMU) provides a highly flexible and configurable memory management solution for OS or native applications. This application note describes how to configure this module and provides drivers and code examples.
AVR32114: Using the 32-bit AVR AP7 LCD Controller (18 pages, revision E, updated 7/08)
This application note explains how to connect the 32-bit AVR AP7 LCD Controller to a TFT display. It includes display selection guidelines, describes the hardware and software configurations and provides drivers and code examples
AVR32115: 32-bit AVR AP7 Linux ATA driver (11 pages, revision C, updated 8/08)
This application note describes how to connect parallel ATA devices to the 32-bit AVR using the built-in CompactFlash controller, the External Bus Interface (EBI) and a simple EBI to ATA adaptor, with an example for the STK1000 development board.
 
AVR32401: interfacing DataFlash with Linux on 32-bit AVR AP7 Application Processors (6 pages, revision B, updated 8/08)
This application note serves as an example of how to connect, set up and use DataFlash from Linux on the 32-bit AVR It shows the process of creating the file system and mounting the DataFlash to be a part of the Linux file system.
AVR32408: 32-bit AVR AP7 Linux GPIO driver (13 pages, revision A, updated 2/08)
This application describes how to use GPIO with Linux on 32-bit AVR AP7 Application Processors. It gives examples on how to control the GPIO hardware from user-space in an application or from kernel-space in a driver.
AVR32412: 32-bit AVR AP7 Linux TWI driver (12 pages, revision A, updated 8/08)
This application note covers the configuration, setup and usage of the I2C framework on Linux. The application note gives also examples of how the Linux API can be used to form SMBus commands which can be used on I2C compatible hardware.
 
AVR32413: 32-bit AVR AP7 Image sensor interface driver (11 pages, revision B, updated 8/08)
This application note describes how the ISI module can be used with Linux.
 
AVR32415: 32-bit AVR AP7 Linux PS/2 keyboard and mouse drivers (6 pages, revision A, updated 2/08)
PS/2 protocol is a very common interface for input devices such as keyboard and mouse to a computer. Linux already supports both PS/2 keyboards and mice, and for AVR32 AP7 devices with a PSIF peripheral this can be enabled in the Linux kernel.
 
AVR32416: 32-bit AVR AP7 Linux LCD Panel Customization (21 pages, revision A, updated 07/08)
This application note describes all steps to connect a custom LCD display to an 32-bit AVR AP7 device running Linux and contains valuable design considerations, HW wiring examples and a complete guide to set up the Linux frame buffer environment.
 
AVR32701: 32-bit AVR AP7 USB Performance (5 pages, revision A, updated 2/08)
This application note documents the USB bulk transfer performance of the ATSTK1000 and ATNGW100 boards running a 2.6.22-amtel.3 Linux kernel. The tests are based on the Linux USB gadget driver framework.
 
AVR32705: 32-bit AVR AP7 Networking Performance (5 pages, revision A, updated 2/08)
This application note documents the TCP/IP and UDP/IP performance of the ATSTK1000 and ATNGW100 development boards running the 2.6.23-rc7 version of the Linux kernel.
AVR32743: 32-bit AVR AP7 Linux Kernel Module Application Example (10 pages, revision A, updated 07/08)
This application note explains how to write a custom loadable driver module for the Linux kernel. Common mechanisms like module parameters, initialization and cleanup are explained in detail.
 
AVR32744: 32-bit AVR AP7 Linux Custom Board Support (13 pages, revision A, updated 07/08)
This application note describes how the Linux kernel must be expanded in order to add support for a new custom board.
AVR32753: How to connect to an SSL-server using 32-bit AVR UC3 (19 pages, revision C, updated 11/09)
This application note demonstrates the ability of the 32-bit AVR UC3 device to exchange messages with a server over TCP/IP connectivity through a secure socket layer connection.
Top
Migration Notes
PDF Software Description
 
AVR080: Migrating from ATmega103 to ATmega128 (12 pages, revision D, updated 01/04)
This Application Note describes differences to be aware of when migrating from the ATmega103 to the ATmega128 Microcontroller.
 
AVR081: Migrating from AT90S4433 to ATmega8 (11 pages, revision D, updated 07/03)
This Application Note describes differences to be aware of when migrating from the AT90S4433 to the ATmega8 Microcontroller.
 
AVR082: Migrating from ATmega161 to ATmega162 (8 pages, revision D, updated 01/04)
This Application Note describes differences to be aware of when migrating from the ATmega161 to the ATmega162 Microcontroller.