Семейства микроконтроллеров
Стандартные семейства:
- tinyAVR:
- флеш-память 16 Кб, SRAM 512 б, EEPROM 512 б;
- число линий ввод-вывода 4-18 (общее количество выводов 6-32);
- ограниченный набор периферийных устройств;
- megaAVR:
- флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб;
- число линий ввода-вывода 23-86 (общее количество выводов 20-100);
- аппаратный умножитель;
- расширенная система команд и периферийных устройств;
- XMEGA AVR:
- флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб;
- четырёхканальный DMA-контроллер;
- Инновационная система обработки событий.
Примечание: здесь приведены максимальные значения объёмов памяти.
На основе стандартных семейств выпускаются микроконтроллеры, адаптированные под конкретные приложения:
- со встроенными интерфейсами USB, CAN, контроллером LCD;
- со встроенным радиоприёмо-передатчиком — серии ATAхxxx, ATAMxxx;
- для управления электродвигателями — серия AT90PWMxxxx;
- для автомобильной электроники;
- для осветительной техники.
Версии контроллеров
- ATmega/tinyXXX
- Базовая версия.
- ATXXXL
- Версии контроллеров, работающих на пониженном (Low) напряжении питания, обычно 1,8 или 2,7 В.
- ATXXXP
- Малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007), повыводно и функционально совместимы с предыдущими версиями.
- ATXXXA
- Уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» с точки зрения программатора ничем не отличаются.
- АТmegaXXX-PI
- Корпус DIP.
- АТmegaXXX-PU
- Корпус DIP, бессвинцовый (Pb-free) припой.
- АТmegaXXX-AI
- Корпус TQFP.
- АТmegaXXX-AU
- Корпус TQFP, бессвинцовый (Pb-free) припой.
Цифры 8/10/16/20 перед индексом означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания.
Комплектующие
Микроконтроллеры AVR имеют некоторые преимущества по сравнению с другими аналогичными микросхемами, включая более высокую MIPS и более дружественную архитектуру. В этой статье мы узнаем, как использовать AVR IDE, как создать исполняемый проект, построить базовую схему AVR, а затем запрограммировать ее. Для этого нам понадобится набор компонентов, а также некоторое программное обеспечение.
Оборудование:
- ATMEGA168 DIP IC x 1
- Кварцевые резонаторы, кристалл (4-20 МГц) x 1
- 20 пФ конденсатор x 2
- 680 резистор x 1
- 5.6K резистор x 1
- Светодиод LED x 1
- Источник 5 В (цепь 7805, плавное регулирование и т.д.) x 1
- Провода
Программное обеспечение:
- USBASP
- WINAVR (20100110)
- Atmel Studio 7
Создание первого проекта
Следующая задача состоит в том, чтобы создать проект на основе AVR микроконтроллера и протестировать схему, компилятор и программатор.
Сначала перейдите в: Файл -> Создать -> Проект (англ. File -> New -> Project) и в открывшемся окне выберите: Исполняемый проект GCC C (англ. GCC C Executable Project), а в текстовом поле Имя (англ. Name) дайте любое название вашему проекту.
Следующее окно, которое должно появиться, — это окно выбора устройства. Из списка выберите Atmega168. Насколько мне известно, это окно не имеет никакого смысла, так как мы все равно передаем имя устройства в AVRDUDE вручную (пока я не могу найти способ заставить Atmel Studio 7 автоматически отправлять имя устройства в AVRDUDE через аргументы).
Результатом должен стать файл main.c, содержащий код нашей программы, который будет запускать AVR. Однако сгенерированный код ничего не делает, поэтому замените все содержимое файла main.c с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).
#define F_CPU 800000UL // Я использую кристалл 8 МГц #include <avr/io.h> #include <avr/delay.h> int main(void){ DDRD = 0xFF; // Сделать порт D портом выхода while(1){ PORTD = 0xFF; _delay_ms(1000); PORTD = 0x00; _delay_ms(1000); } }
Теперь пришло время скомпилировать код и загрузить его на устройство AVR. Первый шаг — убедиться, что наш проект использует компилятор WINAVR. Щелкните правой кнопкой мыши проект и выберите «Дополнительно» (англ. — Advanced) в окне свойств.
В окне «Дополнительно» убедитесь, что в поле «Набор инструментов» (англ. — Toolchain Flavour) выбран WINAVR.
Сохраните проект и скомпилируйте его, нажав: Build -> Build Solution (или нажав F7). Если все идет по плану, в окне вывода должно появиться следующее сообщение:
Build succeeded. ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
Это означает, что наш проект успешно скомпилирован и готов к передаче на наш чип. Чтобы запрограммировать устройство, убедитесь, что USBASP подключен как к ПК, так и к цепи Atmega, к цепи подано питание и что к микросхеме подключен кристалл (в случае, если микросхема была настроена для использования внешнего кристалла).
Затем, после всего этого, нажмите: Инструменты -> USBASP (англ. Tools -> USBASP), и все будет работать автоматически.
Если все хорошо, светодиод в вашей цепи должен начать мигать. Ниже приведен вывод AVRDUDE в Atmel Studio 7, показывающий, как выглядит успешная программа.
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update. avrdude.exe: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude.exe: Device signature = 0x1e9406 avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude.exe: erasing chip avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update. avrdude.exe: reading input file "0x26" avrdude.exe: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.00s avrdude.exe: 1 bytes of lfuse written avrdude.exe: verifying lfuse memory against 0x26: avrdude.exe: load data lfuse data from input file 0x26: avrdude.exe: input file 0x26 contains 1 bytes avrdude.exe: reading on-chip lfuse data: Reading | ################################################## | 100% 0.00s avrdude.exe: verifying ... avrdude.exe: 1 bytes of lfuse verified avrdude.exe: reading input file "c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex" avrdude.exe: writing flash (184 bytes): Writing | ################################################## | 100% 0.11s avrdude.exe: 184 bytes of flash written avrdude.exe: verifying flash memory against c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex: avrdude.exe: load data flash data from input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex: avrdude.exe: input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex contains 184 bytes avrdude.exe: reading on-chip flash data: Reading | ################################################## | 100% 0.10s avrdude.exe: verifying ... avrdude.exe: 184 bytes of flash verified avrdude.exe: safemode: Fuses OK avrdude.exe done. Thank you.
Подготовка МК к прошивке
В прошлых статьях мы с вами рассматривали программатор Громова. Главный его минус в том, что нам требуется COM-порт, который с трудом можно сейчас найти в компьютере, а разъем USB зато есть на каждом компьютере. Поэтому, было принято решение о покупке самого дешевого USB программатора для AVR МК. Называется такой программатор USBASP и выглядит он примерно вот так
Если хорошенько порыться на Али, то можно найти очень сладкую цену на такой программатор. Например, здесь. Может быть найдете даже дешевле. Если будете брать у другого продавца, то внимательно смотрите, чтобы его надписи и радиоэлементы располагались именно так, как у меня на фото. В среднем его цена на момент написания статьи около 120 рублей. Такой программатор в корпусе обойдется чуток подороже.
Вот его вид сзади:
Его рабочий разъем выглядит примерно вот так:
С программатором также в придачу идет шлейф
который одним концом цепляется к рабочему разъему программатора:
Другой конец шлейфа мы будем цеплять к МК.
Если внимательно присмотреться, то можно узнать, какой вывод в разъеме является первым. Стрелка укажет на первый вывод разъема:
После того, как узнали, где находится первый вывод, можно без труда определить остальные выводы:
Дальше берем макетную плату с установленным на ней МК Tiny2313:
Итак, наша задача — соединить выводы МК с выводами программатора.
Для этого в разъем шлейфа втыкаем провода в гнезда MOSI, RST, SCK, MISO, VTG (VCC), GND. GND я взял 10 гнездо, можно и другое, где написано GND. Итого 6 проводков-джамперов:
Далее качаем даташит на наш МК. В данном случае у нас Tiny2313. Ищем в даташите лист с его цоколевкой:
VTG (он же VCC) цепляем к 20 ножке МК
SCK(UCSK) цепляем на 19 ножку МК
MISO цепляем к 18 ножке МК
MOSI на 17 ножку
GND на 10 ножку
RST на первую ножку
Должно получиться как-то вот так:
После первого включения программатора в разъем USB ПК, Диспетчер устройств нам выдаст новое устройство:
Не пугаемся, качаем вот этот архивчик, распаковываем его и указываем путь на него при установке «дров». Когда «дровишки» на программатор установятся, то мы увидим что-то типа этого:
Все ОК, программатор готов к бою.
В этом же архиве находим папку «avrdudeprog», открываем ее, находим там исполняемый файл AVRDUDEPROG и запускаем. Это и есть программная оболочка для прошивки МК с помощью нашего программатора.
Она выглядит вот так. Не забываем выбрать наш МК в списке.
Для того, чтобы прошить МК, нам надо выбрать файл с расширением HEX. Итак, вот мой файлик. Первым делом я нажимаю кнопочку «Стереть все». А вдруг кто-то уже использовал МК и там залита уже какая-нибудь программа? Поэтому, перед прошивкой стираем память МК. Если «стирка» прошла удачно, то программка выдаст нам примерно такое сообщение:
Средства разработки
Свободные
- AVR-GCC
- Порт GCC (компилятор) для AVR. Есть возможность интеграции с AVR Studio и Eclipse (AVR Eclipse Plugin).
- SimulAVR
- Симулятор ядра микроконтроллера AVR
- KontrollerLab
- IDE + работа с RS-232 + отладчик.
- Code::Blocks
- IDE.
- AVR-GDB
- Порт GDB (отладчик) для AVR.
- DDD
- Графический интерфейс к avr-gdb.
- WinAVR
- Комплект разработки, включающий в себя: Programmers Notepad — программистский блокнот, компиляторный комплект AVR-GCC , avrdude для прошивки и avr-gdb для отладки (раздел на RadioProg.RU).
- Avrdude
- Популярное средство для прошивки микроконтроллеров.
- V-USB
- Программная реализация протокола USB для микроконтроллеров AVR.
- Загрузчики (bootloader) для микроконтроллеров AVR
- Технология, позволяющая использовать стандартные интерфейсы (RS-232, CAN, USB, I2C и проч.) для загрузки программы в кристалл AVR.
- PonyProg
- Универсальный программатор, подключение через COM-порт, LPT-порт (подерживается и USB эмулятор COM-порта) поддерживает МК AVR, PIC и др.
Проприетарные
- AVR Studio
- IDE + ассемблер + отладчик. Freeware.
- CodeVisionAVR
- Компилятор C и программатор — CVAVR + генератор начального кода.
- ICC AVR
- Компилятор C + генератор начального кода.
- AtmanAvr
- Компилятор C + отладчик + генератор начального кода.
- IAR AVR
- IDE C/C++. сайт разработчика.
- VMLAB
- Симулятор AVR.
- Proteus
- Мощнейший симулятор электрических цепей, компонентов, включая различные МК и др. периферийное оборудование.
- Bascom AVR
- Компилятор Basic + отладчик + программатор.
- E-LAB AVRco
- Компилятор Pascal.
- MikroE
- Можество компиляторов для разных языков.
- Algorithm Builder
- Визуальная среда разработки программ для AVR в виде блок-схем включает также эмулятор и программатор. Используемый язык программирования — псевдоассемблер. Freeware.
- ForthInc Forth-Compiler
- Компилятор языка Forth.
- MPE Forth-Compiler
- Компилятор языка Forth.
- AVReal
- Программатор, подключение LPT (практически любой адаптер, в том числе совместим с программатором в CodeVisionAVR) либо USB (адаптеры на основе FT2232C/L/D, FT2232H, FT4232H). Freeware.
Также архитектура AVR позволяет применять операционные системы при разработке приложений, например FreeRTOS, uOS, scmRTOS, ChibiOS/RT, AvrX (ядро реального времени).
Как установить AVR Studio
Устройства AVR программируются с использованием специально модифицированной Visual Studio 2015 под названием AVR Studio 7, которую можно найти на сайте AVR. Первым шагом в программировании устройств AVR является скачивание установщика (небольшого приложения, которое загружает потом необходимые файлы). После скачивания нужно запустить установщик.
Первое, что он вас спросит, будет текст лицензионного соглашения и вопрос про отправку анонимной информации. Я лично рекомендую вам не отправлять анонимные данные по ряду причин (из-за крайней паранойи).
На следующей странице спрашивается какую архитектуру вы хотите установить. Поскольку наш материал охватывает только устройства из диапазона 8-битных микроконтроллеров AVR, то это будет единственная выбранная опция. Однако, если у вас приличная скорость загрузки (у меня всего 4 Мбит/с), тогда выбор всех опций может пригодиться в будущем.
После выбора поддерживаемого устройства на следующей странице будет задан вопрос про расширения — Atmel Software Framework и примеры проектов. Убедитесь, что галочка стоит.
Следующая страница просто проверяет ваш компьютер на наличие потенциальных проблем, таких как отложенный перезапуск (из-за обновления), или если система не сможет запустить IDE. Если все проверено и ОК, жмите «Далее».
Если вы уже установили более раннюю версию AVR IDE, вы можете увидеть следующее окно. Если это так, просто нажмите «Установить».
Теперь нужно подождать пока IDE загрузит все необходимые компоненты и установит их.
После этого вам будет предложено запустить Atmel Studio 7.0. Убедитесь, что стоит галочка перед закрытием окна установки.
Схема
Построение схемы довольно простое и может быть выполнено с использованием большинства методов построения схем, включая макет, картон, монтажную плату и печатную плату.
Схема в этом проекте показывает использование простой цепи регулятора мощности (с использованием 7805), которую обеспечивает устройство ATMEGA 5В, но оказывается, что программатор USBASP обеспечивает приблизительно 3,3 В. Несмотря на это, лучше обеспечить внешнее питание, чтобы USBASP не потреблял слишком много тока из любого USB-порта.
Программатор USBASP, который я купил, также шел с конвертером, который преобразует 10-контактный разъем в более удобный 6-контактный программный разъем. Тем не менее, header использует двухрядный шаг 2,54 мм, что означает, что он не может быть подключен к макету. Чтобы обойти это, я просто подключил разъем к проводам, которые соединяются с различными пинами на макете.
Методические указания к выполнению лабораторной работы по курсу
«Микропроцессорные устройства систем
управления»
Комсомольск-на-Амуре
2007
УДК 681.3.06
Создание и отладка проекта для AVR микроконтроллеров с использованием
среды программирования CodeVisionAVR: Методические указания к лабоpатоpной pаботе по куpсу «Микропроцессорные
устройства систем управления» /Сост. В.А.Егоpов, Е. И. Ефимов — Комсомольск-на-Амуpе:
Комсомольский-на-Амуpе гос. техн. ун-т, 2007. — 8 с.
Описывается порядок создания и
отладки проекта для AVR микроконтроллеров
с использованием среды программирования CodeVisionAVR.
Пpедлагаемые методические указания
пpедназначены для студентов специальности 210100 — «Управление и информатика
в технических системах» дневной фоpмы обучения.
Печатается по постановлению
pедакционно-издательского совета Комсомольского-на-Амуpе госудаpственного
технического унивеpситета.
Согласовано с отделом стандаpтизации.
Рецензент: С.М. Копытов
Цель работы: овладеть навыками
создания и отладки проекта в среде программирования CodeVisionAVR.
Теоретические сведения
Создание проекта в CodeVisionAVR:
1. Запустить компилятор Пуск->Программы->CodeVisionAVR
->CodeVisionAVRCCompiler
2. После загрузки окна программы CodeVisionAVR выполнить File->New. В окне CreateNewFile (рис. 1) выбрать тип файла – project и нажать OK.
Рис. 1. Окно «Create
New File
3. На запрос «Хотите ли использовать CodeWizardAVR» (рис. 2) ответить No
Рис. 2.
Запрос «Хотите ли использовать CodeWizardAVR»
4. В окне CreateNewProject создать новую папку и войти в неё. В
поле Имя файла ввести имя проекта с расширением *.prj и нажать кнопку Сохранить.
5. В окне ConfigureProject (рис. 3) перейти на закладку CCompiler.
Рис. 3. Окно «Configure
Project
В поле Chip выбрать тип процессора Atmega128, в поле Clock задать частоту тактовых импульсов 7,372800 МГц. В
каталоге проекта с помощью программы блокнот создать пустой файл с расширением *.c . Перейти на закладку Files и нажать кнопку Add(добавить). В раскрывшемся окне выбрать
созданный файл с расширением *.c и нажать Открыть. Нажать кнопку
OK в окне Configure
Project.
6. В окно файла с расширением *.c ввести текст программы.
7. Сохранить проект командой File->SaveAll..
8. Произвести компиляцию проекта
командой Project->Make (Shift+F9).
При наличии синтаксических ошибок устранить их. При отсутствии ошибок
компилятор выдаёт сообщение Noerrors и размер
программы в процентах от общего объёма флэш памяти программ контроллера (рис.
4.).
Рис. 4. Окно Information
9. Загрузить проект в отладчик среды AVRStudio4 командой Tools->Debugger (Shift+F3)
или соответствующей кнопкой на панели инструментов (Run the debugger). В результате загружается программа
AVRStudio4 и раскрывается окно WelcometoAVRStudio4.
Создание проекта для отладчика среды
AVRStudio4:
1. В окне Welcome to
AVRStudio4 нажать кнопку Open.
2. Перейти в папку с проектом и
выбрать файл расширением *.cof , затем нажать кнопку Открыть. В появившемся окне
нажать кнопку Сохранить.
3. В открывшемся окне выбрать
отладочное устройство (Debug platform) – AVRSimulator и микроконтроллер (Device) – Atmega128, затем нажать кнопку Load(рис.5.).
Рис. 5. Окно
выбора платформы и устройства
В результате проделанных действий в
левой части экрана появляется окно IOView с ресурсами микроконтроллера. В окне можно наблюдать содержимое
регистрового файла процессора (R0-R15, R16-R31),
содержимое управляющих регистров процессора (Processor) и состояние регистров ввода/вывода
(I/O ATmega128).
Выполнение тестовой программы в
отладочном режиме:
В тестовой программе происходит
изменение состояния (мигание) бита D7 порта
D. Для просмотра изменения состояния
указанного бита необходимо раскрыть список IO ATmega128 и в нём раскрыть список регистров порта D.
Покомандное выполнение программы
осуществляется командой Debug->Stepover (F10). В этом же меню находится полный список команд работы в
отладочном режиме (подробное описание работы в отладочном режиме находится в
приложении) .
Перевести фокус в окно и исходным
текстом программы (файл *.c) и
при помощи клавиши F10 выполнить
программу в пошаговом режиме.
Внесение изменений в исходный текст
программы:
1. Перейти в окно AVRStudio и выйти из отладочного режима командой
Debug-> StopDebugging.
2. Перейти в окно CodeVisionAVR и внести изменения в исходный текст
программы.
3. Перекомпилировать проект командой Project->Make (Shift+F9).
4. После успешной компиляции закрыть
окно Information, нажав OK.
5. Перейти в окно AVRStudio и на запрос о перезагрузке изменений
с диска (changeondiskreload) ответить Да. Запустить
отладку командой Debug->StartDebugging.
Как установить WINAVR
Хотя Atmel Studio 7 полезная штука для написания кода, она не самый лучший выбор, когда речь идет о программировании устройств AVR с использованием инструментов с открытым исходным кодом. Поэтому, чтобы сделать жизнь проще на этапе компиляции и/или программирования, мы будем использовать WINAVR, которая также поставляется с AVRDUDE для загрузки нашего кода на устройства Atmega. Чтобы скачать WINAVR для Windows, просто нажмите на эту ссылку и выберите исполняемый exe-файл.
После скачивания запустите установщик и просмотрите все предложенные опции, пока программа не спросит вас про место установки.
Лучшее место для установки WINAVR — это рекомендуемое расположение: . Следующая опция спросит про компоненты и вы должны убедиться, что установлены все галочки (показано ниже).
После того, как кнопка установки нажата, установщик выполнит остальную часть работы, после чего установщик закроется.
Что такое «прошить» и «прошивка»?
Давайте первым делом определимся, что означает слово «прошить»? Думаю, вы часто слышали такие словосочетания, как «прошить телефон», «слетела прошивка», «кривая прошивка» и тд. А что такое «прошивка»?
Прошивка — это грубо говоря, операционная система для маленьких устройств, таких как мобильный телефон, MP3-плеер, цифровой фотоаппарат и тд. То есть это небольшая программка, которая управляет этим устройством. Также часто можно услышать и такое:» У меня «глючит» сотовый телефон, его надо срочно «перепрошить«.
В данном случае это означает, что надо заново установить операционную систему на мобильный телефон. Значит, «прошить МК» означает закачать во внутрь него программу, которая бы управляла этим МК, а МК уже управлял бы каким-нибудь устройством. То есть по идее, МК — это посредник между программой и каким-либо устройством, которым надо управлять
История создания архитектуры AVR
Идея разработки нового RISC-ядра принадлежит двум студентам Norwegian University of Science and Technology (NTNU) из норвежского города Тронхейма (Trondheim) — Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard Wollen). В 1995 году Боген и Воллен решили предложить американской корпорации Atmel, которая была известна своими чипами с Flash-памятью, выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром.
Идея была одобрена Atmel Corp., и было принято решение незамедлительно инвестировать в данную разработку. В конце 1996 года был выпущен опытный микроконтроллер AT90S1200, а во второй половине 1997-го корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке.
Новое ядро было запатентовано и получило название AVR. Существует несколько трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced Virtual RISC, другие полагают, что не обошлось здесь без Alf Egil Bogen Vegard Wollan RISC.
Заключение
Начало работы с устройствами AVR может показаться несколько сложным, если вы не используете официальный программатор, который может работать «из коробки» с Atmel Studio 7. Однако в инструментах программирования требуется определить только одну командную строку (тип устройства, биты и т.п.). И все будущие проекты могут использовать один и тот же инструмент/компилятор, который нужно настроить только один раз.
Т.е. следующий проект ATMEGA168, который вы будете делать, сможет использовать тот же компилятор и внешний инструмент, что и в этом проекте и не потребуется никаких дополнительных настроек. Конечно, в более сложных проектах может потребоваться замена бит (англ. fuse), например, но в данном материале я хотел просто помочь вам освоить работу с устройствами AVR.
Устройства ввода/вывода МК
МК AVR имеют развитую периферию:
- многофункциональные, двунаправленные GPIO порты ввода/вывода со встроенными подтягивающими резисторами. Конфигурация портов в/в задаётся программно;
- в качестве источника тактовых импульсов может быть выбран:
- кварцевый резонатор;
- внешний тактовый сигнал;
- внутренний RC-генератор (частота 1, 2, 4, 8 МГц);
- внутренняя флеш-память команд до 256 KБ (не менее 10 000 циклов перезаписи);
- отладка программ осуществляется с помощью интерфейсов JTAG или debugWIRE:
- внутренняя EEPROM данных до 4 КБ (100 000 циклов);
- внутренняя SRAM до 8 KБ время доступа 1 такт;
- внешняя память объёмом до 64 КБ (Mega8515 и Mega162);
- таймеры c разрядностью 8, 16 бит;
- ШИМ-модулятор (PWM) 8-, 9-, 10-, 16-битный;
- аналоговые компараторы;
- АЦП (ADC) с дифференциальными входами, разрядность 10 бит (12 для XMEGA AVR):
- программируемый коэффициент усиления перед АЦП 1, 10 и 200;
- опорное напряжение 2,56 В;
- различные последовательные интерфейсы, включая:
- двухпроводной интерфейс TWI, совместимый с I²C;
- универсальный синхронно/асинхронный приёмопередатчик UART/USART;
- синхронный последовательный порт Serial Peripheral Interface (SPI);
- USB серия AT90USBxxxx;
- CAN серия AT90CANxxx;
- LCD серии ATmega169 и ATmega329;
- Датчики температуры ATtiny25, ATtiny45, ATtiny85;
Примечание: не все периферийные устройства могут быть включены программно. Бит в регистре fuses может быть изменён только программатором.