ATmega Microcontrollers

The ATmega is an extremely powerful and versatile microcontroller. The different versions range from 4kB Flash and 23 I/O lines to 256kB Flash and 53 I/O lines. The maximum clock speed is 20MHz, with most versions running 5V, and operating Vcc down to either 2.7V or 1.8V.

The ATmega8 is an early 28-pin device with 8kB of flash. It was the foundation for the Arduino, and is still very popular. The ATmega8A is an improved version, and is the only one available today. By current standards it is a little short of features, but it performs as well as it's more feature-rich relatives.

The ATmegaXX8 family of AVR devices includes the ATmega48, ATmega88, ATmega168, and ATmega328. They are similar in that they have identical I/O. They have three timers - two 8-bit and one 16-bit.They differ in the amount of memory available, with flash memory size of from 4kB to 32kB. The devices are widely used in Arduino and Arduino clone boards.

The ATmega16 and ATmega32 are 40-pin devices with either 16kB or 32kB of flash. They are not the only devices having their particular pinout - the ATmega164/324/644/1284 family shares it. Maximum clock speeds of 16MHz (8MHz for the -L parts) limit their performance.

The ATmega162 has an external memory bus for interfacing up to 64k of memory. It has four timers - two 8-bit, and two 16-bit, as well as two USARTS. The device does not have an ADC. It is similar in function to the ATmega8515, but with twice the memory and more I/O.

The ATmega8515 is a replacement for the AT90S4414/8515 MCU. It has an external memory bus that allows the addition of upto 64k SRAM or memory mapped I/O ports. It is not 100% compatible, but there is a compatibility fuse that makes it so. Use the ATmega8515 when you need access to external resources. The ATmega162 is a more capable version, with additional I/O, but the additional I/O can't be used if external memory is used.

The ATmega8535 is a 40-pin device with a full complement of peripherals. With all those peripherals and only 512B of RAM, one needs to be careful about memory use. The device can be put in a compatibility mode which allows it to be used in place of an ATS908535 by changing the watchdog timer and removing the double buffering on the USART receive register.

The ATmegaXX4 family of AVR devices share a common I/O system, having 2 8-bit timers, and 1 16-bit, with the exception of the ATmega1284, which has an additional 16-bit timer. They could be considered upgrades from the older ATmega16 and ATmega32 parts, since they have the same basic pinout but more functionality.

The ATmegaXXU2 devices are dominated by their USB 2.0 full-speed engines. Most other peripherals are cut back in favor of the added USB support. They make perfect USB to Serial converters because of this, since the price is quite low for the feature set. Primarily intended for USB to ... conversion, they feature a USART with RTS and CTS support, and one full 8-bit port (PORTB).

The ATmegaXXU4 devices are a different approach to a USB enabled AVR. They still have the USB 2.0 full-speed engine, but it has larger buffers, and the other peripherals found on AVRs are still available. Rather than a USB converter, they turn out to be a great USB enabled microcontroller.

The ATmega64 and ATmega128 have an external memory bus for interfacing with up to 64k of memory. There are two 8-bit timers, and two 16-bit, as well as two USARTS. The ISP programming port on these parts is a "dedicated" SPI port for programming, but it shares SCK with the other SPI port.