Atmel Corporation
Products > AVR Solutions > Application Notes

ATmega32 -

Application Example and Algorithms
PDF Software Description
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.
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.
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.
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
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.
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.
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.
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.
Top
General Purpose
PDF Software Description
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.
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.
 
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.
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.
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.
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.
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.
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.
 
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).
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.
 
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.
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
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
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.
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 (14 pages, revision C, updated 2/10)
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.
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.
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
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.
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.
Top
Migration Notes
PDF Software Description
 
AVR084: Migrating from ATmega323 to ATmega32 (6 pages, revision C, updated 7/03)
This Application Note describes differences to be aware of when migrating from the ATmega323 to the ATmega32 Microcontroller.
 
AVR089: Migrating from ATmega16 to ATmega32 (3 pages, revision A, updated 06/03)
This Application Note describes differences to be aware of when migrating from the ATmega16 to the ATmega32 Microcontroller.
 
AVR099: Migrating from AT90S4433 to ATmega48 (11 pages, revision A, updated 07/04)
This Application Note describes differences to be aware of when migrating from the AT90S4433 to the ATmega48 Microcontroller.
 
AVR500: Migration from ATmega64 to ATmega645 (6 pages, revision A, updated 07/04)
This Application Note describes differences to be aware of when migrating from the ATmega64 to the ATmega645 Microcontroller.
 
AVR505: Migration from ATmega16/32 to ATmega164P/324P/644(P) (11 pages, revision C, updated 06/06)
This Application Note describes differences to be aware of when migrating from the ATmega16/32 to the ATmega164P/324P/644(P) Microcontroller.
 
AVR521: Migrating from ATmega32 to ATmega32A (3 pages, revision A, updated 6/08)
This Application Note describes differences to be aware of when migrating from the ATmega32 to the ATmega32A Microcontroller.
Top