AVR-программирование. Программирование микроконтроллеров AVR для начинающих. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. (3-е издание) Программирование авр микроконтроллеров
Почему именно с этой линейки?
Ну, может кто знает, может кто-то не знает, микроконтроллер AVR - это продукт компании Atmel.
Ну почему же всё-таки именно с линейки AVR?
Во-первых, микроконтроллеры AVR - они повсеместно доступны, они есть в любых магазинах, цена их невысока.
Во-вторых, из-за наличия многочисленного программного обеспечения для их программирования и прошивки, что тоже в наше время немаловажно.
То есть, при написании программ вы не будете нарушать ни чьих авторских прав.
В-третьих, ещё то, что именно потому, что по программированию именно данной линейки я имею в наличии больше всего знаний в своей голове и навыков.
Поэтому, будем программировать мы именно под микроконтроллеры AVR.
Начнём мы с такого представителя этой линейки, как микроконтроллер Atmega 8.
ATMEGA 8A
Почему именно с него, с Atmega 8?
Потому что, во-первых, он вполне себе такой полноправный микроконтроллер и недорогой.
Имеет на своём борту три порта ввода-вывода. Мы не будем здесь вдаваться в подробности, что такое порты. Вкратце, порты - это такие шины данных, которые работают в двух направлениях - и на вывод, и на ввод.
Порт B.
У порта B, он у нас неполный, имеет 6 ножек.
0, 1 ножка, 2, 3, 4 и 5. То есть, 6 ножечек.
Порт C
также у нас неполный, от нулевой до шестой ножки.
А вот порт D
у нас полноправный порт, имеет все 8 ног, т.е. байт данных от 0 до 7.
Питается микроконтроллер от 5 вольт. Можно питать его также от 3,3 вольта, он также будет отлично работать. Но единственное, частота тактирования может быть выставлена только 8 мегагерц максимально. 16 мы не можем выставить при трёх вольтах, можем только при пяти вольтах. Подается питание на 7 ножку. Общий провод - восьмая.
Ну теперь давайте посмотрим, откуда мы можем взять программное обеспечение для программирования.
У компании Atmel имеется свой сайт www.atmel.com. На главной страничке, далеко ходить не нужно, в правой части страницы под главным баннером находится вот Download Atmel Studio.
AVR-микроконтроллеры предоставляют пользователю несколько различных интерфейсов для программирования. Это последовательное программирование при высоком напряжении, последовательное программирование при низком напряжении через SPI, параллельное программирование при высоком напряжении и программирование по интерфейсу JTAG. Первый тип программирования встречается только в моделях AVR семейства ATtiny, последний - доступен некоторым моделям старшего семейства. Модели ATmega с наиболее развитой периферией могут поддерживать до трех различных интерфейсов программирования.
Подавляющее большинство AVR-микроконтроллеров обладают также способностью самопрограммирования, благодаря чему содержимое памяти программ можно модифицировать непосредственно из пользовательской программы. Кроме этого FLASH-память может быть перепрограммирована в режиме отладки через однопроводной интерфейс dW, имеющийся в ряде моделей ATmega и во всех новых моделях ATtiny.
Программирование при высоком напряжении (параллельное и последовательное) требует значительного числа выводов микроконтроллера и дополнительного источника напряжения 12 В. По этой причине конструкция программаторов достаточно сложна. При высоковольтном программировании достигается наибольшая скорость записи и предоставляется максимальный доступ к ресурсам AVR. Чаще всего этот вид программирования применяется при крупносерийном заводском производстве.
Интерфейс JTAG очень удобно использовать в тех случаях, когда необходимо вести программирование и отладку в одном цикле разработки. К сожалению JTAG имеется далеко не во всех моделях AVR, а фирменные программаторы стоят значительных денег.
Низковольтное последовательное программирование через SPI, наиболее распространено. Это способ стоит признать основным при программировании AVR-микроконтроллеров. Его поддерживают все модели с ядром AVR, за исключением двух устаревших представителей младшего семейства ATtiny11x и ATtiny28x. В данном разделе будет приведено описание двух программаторов работающих в подобном режиме. Первый из них можно рекомендовать для быстрого старта. Он имеет простую конструкцию и работает под управлением популярной радиолюбительской программы . Второй, намного более совершенный, является функциональным аналогом AVR ISP фирмы ATMEL. Этот программатор интегрируется с и позволяет реализовать алгоритмы программирования с максимально возможной точностью.
Особенности последовательного низковольтного программирования
Для взаимодействия программатора с микроконтроллером при последовательном низковольтном программировании используется аппаратный модуль SPI. Это очень практичное решение, позволяющее использовать минимальное число выводов и изменять алгоритмы работы устройства предварительно запаянного на плату. В виду последней причины программирование через SPI называют также еще внутрисхемным программированием или ISP (In System Programming).
Внутрисхемное программирование потребует задействовать у микроконтроллера в общей сложности 5 выводов. Это 3 линии модуля SPI (MISO, MOSI, SCK), вывод RESET и общий провод GND. В моделях семейства ATmega, имеющих на борту 64 и более кбайт FLASH-памяти, вместо MISO, MOSI используются выводы PDO и PDI, соответственно. В случае если программатор и микроконтроллер получают питание от одного источника, то дополнительно понадобится также вывод VCC, соединяющий шины питания. Перевод микроконтроллера в режим программирования осуществляется подачей низкого логического уровня на линию RESET. Длина шлейфа, соединяющего программатор с устройством, не должна превышать 15…20 см.
внутрисхемном программировании одного микроконтроллера
На рис.1а показана схема соединения программатора с AVR-микроконтроллером, при программировании через ISP. Для более надежной работы последовательно линиям MISO, MOSI, SCK рекомендуется включать сопротивления небольшого номинала. Напряжение питания программатора и устройства не должно иметь больших различий. Внутрисхемное программирование двух и более микроконтроллеров также возможно (рис.1б). В этом случае необходимо помнить об одном важном условии: в момент программирования на шине должен находиться только один активный микроконтроллер. Поэтому при проектировании платы заранее нужно предусмотреть переключатели (джампера J1, J2 на рис.1б), с помощью которых можно выборочно подавать напряжение на каждый программируемый микроконтроллер. После программирования модуль SPI или линии ввода-вывода, совпадающие с MISO, MOSI и SCK, могут быть использованы по своему прямому назначению.
При внутрисхемном программировании для чтения и записи доступны FLASH–память программ, EEPROM-память данных, биты защиты и управляющие FUSE–биты. Кроме этого могут быть считаны калибровочные ячейки и ячейки идентификатора.
Рис.1а Схема подключения программатора при
внутрисхемном программировании 2-х и более микроконтроллеров
Изменения некоторых FUSE–битов необходимо производить с большой осторожностью. Особенно если демонтировать микроконтроллер уже не представляется возможным. Главным образом это касается битов RSTDISBL и DWEN (если таковые имеется). Сброс любого из них в дальнейшем сделает невозможным использование линии RESET микроконтроллера. При RSTDISBL=0 вывод RESET настраивается как линия порта ввода-вывода, а при DWEN=0 – вход RESET служит однопроводным отладочным интерфейсом dW. Естественно, что в обоих случаях работа программатора с микроконтроллером будет заблокирована. Кроме того во время внутрисхемного программирования микроконтроллеры AVR должны работать от собственного источника тактовой частоты, выбор которого осуществляется битами CKSEL3:CKSEL0. Если их настройка произведена некорректно (например, вместо внутреннего RC-генератора, выбран внешний кварцевый резонатор), то устройство может вообще отказаться работать. Еще один FUSE–бит, о котором следует помнить, - это SPIEN. SPIEN не доступен во время последовательного низковольтного программирования. Однако его установка при программировании в каком-либо другом режиме запретит работу модуля SPI. Напомним, что активизированным FUSE–битам соответствует состояние лог.0.
Программирование микроконтроллеров AVR для начинающих
Микроконтроллер – микросхема, предназначенная для управления электронными устройствами, или по другому – простенький компьютер (микро-ЭВМ), способный выполнять несложные задачи.
Рано или поздно, любой радиолюбитель (я так думаю), приходит к мысли о применении в своих разработках микроконтроллеров. Микроконтроллер позволяет существенно «облегчить» радиолюбительскую конструкцию, сделать ее проще и намного функциональнее.
Что нужно для того, чтобы начать пользоваться всеми возможностями микроконтроллеров?
Я считаю, что не так уж и много. Главное в этом деле — желание. Будет желание, будет и результат.
В этом разделе (и в разделе «Устройство AVR») сайта я постараюсь помочь начинающим «микроконтроллерщикам» сделать первый, он же самый трудный шаг навстречу микроконтроллерам — попробуем разобраться в устройстве и программировании микроконтроллеров AVR семейства ATtiny и ATmega.
В сети существует множество сайтов затрагивающих так или иначе «микроконтроллерную» тематику, много также и различной литературы для начинающих. Поэтому я не собираюсь «переплюнуть» всех и вся и создать очередной шедевр мыслительных мук в виде пособия по микроконтроллерам для начинающих. Я постараюсь систематизировать, собрать в кучу все нужное на мой взгляд, для первого шага в мир микроконтроллеров, и изложить более-менее доступным языком.
В своих статьях я буду опираться на материалы из публикаций популярных авторов микроконтроллерной тематики: Рюмика С.М., Белова А.В., Ревича Ю.В., Евстифеева А.В., Гребнева В.В., Мортона Д., Трамперта В., Фрунзе А.В. и Фрунзе А.А. (и многих других), а также материалы радиолюбительских сайтов. Ну и, может быть, немного своих «умных мыслей».
Программирование микроконтроллеров AVR фирмы Atmel
Эта статья, как и все последующие, - маленький шажок в мир микроконтроллеров. И таких «шажков» у нас будет много, пока не дойдем до того момента, когда сможем сказать: «Микроконтроллер - последний шаг». Но и это, скорее всего, из области фантастики - нельзя объять необъятное, - мир микроконтроллеров постоянно развивается и совершенствуется. Наша задача - сделать первый шаг, логическим итогом которого должна стать первая, самостоятельно разработанная и собранная конструкция на микроконтроллере.
Как вы наверняка знаете, существует много разных систем счисления
, одними пользуются и сейчас (наша, родная, десятичная система; римская система, известная нам как «римские цифры»), другие остались в глубоком прошлом (системы счисления инков и майя, древнеегипитская система, вавилонская).
Тут, я думаю, вопросов у нас нет, что такое системы счисления нам понятно - отображение чисел символами. А вот какая связь систем счисления с микроконтроллерами.
Все современные цифровые технологии основываются на логических операциях, без них никуда не деться. Все цифровые микросхемы в своей работе используют логические схемы (выполняют логические операции, в том числе и микроконтроллер).
Создавая программу, мы прописываем все действия микроконтроллера основываясь на своей логике с применением логических операций, иногда даже и не подозревая об этом, которые применяем к логическим выражениям.
В прошлой статье была рассмотрена тема логических операций и выражений. В этой статье мы рассмотрим логические битовые операции. Битовые операции очень близки к логическим операциям, можно даже сказать, что это одно и тоже. Разница только в том,что логические операции применяются к высказываниям, а битовые операции, с такими же правилами и результатами применяются к битам.
Прямой, обратный и дополнительный коды двоичного числа - способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы - AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.
Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny
С этой статьи мы начнем конкретно заниматься одним вопросом - программирование микроконтроллеров . Процесс будет проходить следующим образом - сначала статья по устройству микроконтроллера (к примеру, первая статья будет по портам ввода-вывода), а затем статья по программированию. Сегодняшний наш разговор вводный, и будет посвящен вопросам материального и программного обеспечения процесса изучения основ программирования микроконтроллеров.
В этой статье мы поговорим о проблемах русификации программы Atmel Studio, как перевести программу на русский (или другой) язык, и как сделать более удобной работу программы с программатором USBASP. После установки программы Atmel Studio весь интерфейс будет на английском языке. Кому-то, кто знаком с английским, или уже привык работать с программами с английским интерфейсом, это вполне устроит. Меня лично, такой подход создателей программы к великому и могучему не устраивает, мне более комфортно работать с русскими меню.
В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.
Современное радиолюбительство невозможно представить без микроконтроллеров, и это очевидно. В последние десятилетия микроконтроллеры различных производителей стали широко распространены в разных сферах деятельности человека. Нередко их можно встретить в самых неожиданных устройствах и конструкциях. Мы с вами являемся свидетелями компьютеризации и автоматизации окружающих нас процессов. Истина такова, что без знания основ программирования создавать современные конкурентоспособные устройства стало практически невозможно…
Если вы читаете эту статью, вероятно у вас возникло желание понять, как работают микроконтроллеры, и скорее всего появились вопросы:
4. Какую литературу изучать?
Попробуем ответить на эти вопросы.
1. Какой микроконтроллер выбрать для работы?
Большой популярностью у радиолюбителей пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM .В промышленности, несколько иначе, первое место с большим отрывом занимает Renesas Electronics
на втором Freescale
, на третьем Samsung
, затем идут Microchip
и TI
, далее все остальные.
Популярность определяется ценой и доступностью, немалую роль играют наличие технической информации и стоимость программного сопровождения.
Мы будем изучать 8-битные микроконтроллеры AVR, семейства ATMEGA 8 и 16 серии . Выбор определился, опять же доступностью, наличием множества любительских разработок, огромным количеством учебного материала. Наличием разнообразных встроенных компонентов и функциональностью этого семейства.
2. Какую среду разработки использовать для программирования выбранного микроконтроллера?
Для AVR созданы разные интегрированные среды разработки (IDE, Integrated development environment).IDE – это система программных средств, используемая программистами для разработки программного обеспечения (ПО), в состав которой входят:
текстовый редактор,
компилятор и/или интерпретатор,
средства автоматизации сборки,
отладчик.
Наиболее распространенные из них AVRStudio, ATmelStudio, WINAVR, CodeVision, IAR Embedded Workbench
.
Для того, чтобы писать программы, мы воспользуемся бесплатной IDE ATmelStudio версии 6
и выше.
Скачать Atmel Studio можно с официального сайта после регистрации (регистрация абсолютно бесплатная и ни к чему не обязывает!)
ATmelStudio позволяет создавать проекты, и писать программы как в ассемблере, так и на СИ.
Изначально всегда стоит вопрос: какой язык программирования выбрать, чтобы писать эффективные программы?
Отвечу просто: нужно уметь писать как минимум на двух языках ассемблере и СИ. Ассемблер просто необходим, когда нужно написать быстрые и компактные подпрограммы и макросы, различные драйверы устройств. Но, когда требуется создать объемный проект, построенный на сложных алгоритмах, без знания СИ может быть потрачено очень много времени, особенно в процессе отладки, а если возникнет желание перенести на другую платформу, например PIC18, или STM, может стать неразрешимой проблемой.
Кроме этого, сейчас появились аппаратные вычислительные платформы Arduino
, работа с которыми требует знаний языка СИ++.
Поэтому будем писать программы как в ассемблере, так и на СИ.
Чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus .
3. Как прошивать контроллер, и какие дополнительные приборы и акссесуары нужны для удобной работы с ними?
Используем датагорский . Кроме этого, нужно будет приобрести макетные платы, блок питания с выходным напряжением 5 Вольт. Можно в качестве БП с малыми пульсациями использовать , применив стабилитрон на 5 Вольт.Возможно, со временем мы с Игорем предложим проект для сборки отладочной платы.
4. Какую литературу изучать?
А вот, например:Практическое программирование AVR на ассемблере. Ревич, 2011
1000 и одна микроконтроллерная схема Вып. 1-2. Рюмик, 2010-2011
10 практических устройств на МК AVR Книга 1-2. Кравченко, 2008-2009
Самоучитель разработчика устройств на МК AVR. Белов, 2008
МК AVR семейств Tiny и Atmega. Ефстифеев, 2008
CodeVisionAVR. Пособие для начинающих. Лебедев, 2008
Микропроцессорное управление устройствами, тиристоры, реле. Белов, 2008
Аналоговые интерфейсы МК. Стюард, Болл, 2007
Создаем устройства на МК AVR. Белов, 2007
МК AVR в радиолюбительской практике. Полный разбор ATTINY2313. Белов, 2007
Сетевой и межсетевой обмен данными с МК. Иди, 2007
МК AVR. практикум для начинающих. Хартов, 2007
Применение AVR Схемы, алгоритмы, программы. Баранов, 2006
Микроконтроллеры AVR. Вводный курс. Мортон, 2006
Измерение, управление и регулирование с помощью AVR. Трамперт, 2006
Программирование на языке С для AVR и PIC МК. Шпак, 2006
Конструирование устройств на МК. Белов, 2005
МK - это же просто, тома 1-3. Фрунзе, 2002-2003
Язык программирования Си, 2-е издание. Керниган, Ритчи, 2009
Программирование микроконтроллеров ATMEL на языке С. Прокопенко, 2012
5. Где в интернете можно задавать вопросы и получать конкретные ответы?
Задавать вопросы вы можете на нашем или любом другом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания!Теперь рассмотрим поближе нашего фаворита, микроконтроллер ATMEGA 8
8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблениемПрогрессивная RISC архитектура
130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл
32 8-разрядных рабочих регистра общего назначения
Полностью статическая работа
Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность
Встроенный 2-цикловый перемножитель
Энергонезависимая память программ и данных
8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)
Обеспечивает 1000 циклов стирания/записи
Дополнительный сектор загрузочных кодов с независимыми битами блокировки
Обеспечен режим одновременного чтения/записи (Read-While-Write)
512 байт EEPROM
Обеспечивает 100000 циклов стирания/записи
1 Кбайт встроенной SRAM
Программируемая блокировка, обеспечивающая защиту программных средств пользователя
Встроенная периферия
Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения
Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения
Счетчик реального времени с отдельным генератором
Три канала PWM
8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF)
6 каналов с 10-разрядной точностью
6-канальный аналого-цифровой преобразователь (в корпусе PDIP)
4 канала с 10-разрядной точностью
2 канала с 8-разрядной точностью
Байт-ориентированный 2-проводный последовательный интерфейс
Программируемый последовательный USART
Последовательный интерфейс SPI (ведущий/ведомый)
Программируемый сторожевой таймер с отдельным встроенным генератором
Встроенный аналоговый компаратор
Специальные микроконтроллерные функции
Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
Встроенный калиброванный RC-генератор
Внутренние и внешние источники прерываний
Пять режимов пониженного потребления: Idle, Power-save, Power-down, Standby и снижения шумов ADC
Выводы I/O и корпуса
23 программируемые линии ввода/вывода
28-выводной корпус PDIP, 32-выводной корпус TQFP и 32-выводной корпус MLF
Рабочие напряжения
2,7 - 5,5 В (ATmega8L)
4,5 - 5,5 В (ATmega8)
Рабочая частота
0 - 8 МГц (ATmega8L)
0 - 16 МГц (ATmega8)
отличия ATMEGA16 от 8
16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)
Интерфейс JTAG (совместимый с IEEE 1149.1)
Возможность сканирования периферии, соответствующая стандарту JTAG
Расширенная поддержка встроенной отладки
Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки
Четыре канала PWM / ШИМ
8-канальный 10-разрядный аналого-цифровой преобразователь
8 несимметричных каналов
7 дифференциальных каналов (только в корпусе TQFP)
2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP)
Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC
32 программируемые линии ввода/вывода
40-выводной корпус PDIP и 44-выводной корпус TQFP
AtmelStudio
Если Вы только начинаете, то нужно скачать и установить программу AtmelStudio с официальной страницы atmel.comПосле установки программы AtmelStudio можно приступить к созданию проекта.
Проект – это ваша программа, которую вы будете писать, отлаживать и прошивать, после компиляции, в память микроконтроллера.
Чтобы создать проект, надо открыть программу, появиться такая заставка,
и откроется страница создания проекта
Чтобы создать новый проект, нужно кликнуть по «New Project…»
В этом случае откроется новое окно, где можно выбрать язык программирования, название проекта, его месторасположение, название пакета с файлами проекта и возможность создания каталога для дальнейшего использования в других перекрестных проектах. Чтобы создать проект, где мы будем программировать в ассемблере, нужно выбрать - Assembler
, после этого поменяем название проекта, его расположение, и выбираем ОК.
Появится следующее окно
Выбираем “megaAVR, 8-bit”
и находим нужный нам микроконтроллер, мы выбрали ATmega8.
В правой части заставки появляется список устройств, работающих с этим микроконтроллером, один из которых мы можем подключить. Выбираем ОК.
Появляется страница редактора текста, которая позволяет редактировать и отлаживать программу. Пока страница чистая, указано время и дата создания и название файла проекта, имя пользователя. Есть дополнительные окно устройств ввода-вывода, окно отчетов компиляции программы. Теперь мы
можем программировать в ассемблере.
Аналогично создается проект для программирования на языке СИ.
Урок 0.
Итак, сегодня мы открываем цикл уроков программирования микроконтроллеров семейства AVR.
Сегодня будут рассмотрены следующие вопросы:
- Что такое микроконтроллер?
- Где применяются микроконтроллеры?
Вступление.
Микроконтроллеры везде. В телефонах, стиральных машинах, «умных домах»,станках на заводе а так же ещё в бесчисленном множестве технических устройств. Их повсеместное применение позволяет заменить сложные аналоговые схемы, более сжатыми цифровыми.
Так что же такое, микроконтроллер?
Микроконтроллер (Micro Controller Unit, MCU ) - микросхема, предназначенная для управления электронными устройствами.Можно представить его в виде простейшего компьютера, способного взаимодействовать с внешними устройствами.Например, открывать и закрывать транзисторы, получать данные с датчиков температуры, выводить данные на lcd экраны и т. д. . К тому же, микроконтроллер может производить различную обработку входных данных, как и Ваш персональный компьютер.
То есть, микроконтроллеры открывают нам практически безграничные возможности управления какими либо устройствами, благодаря наличию портов I/0(портов ввода(input)/вывода(output)), а так же возможности их программирования.
Где используются микроконтроллеры?
- Бытовая техника(Стиральные машины, микроволновые печи и.т.д.).
- Мобильная техника(Роботы, робототехнические системы, средства связи и др.).
- Промышленное оборудование(Системы управления станками).
- Вычислительная техника(Материнские платы,системы управления периферийными устройствами).
- Развлекательная техника(Детские игрушки, украшения).
- Транспорт(Системы управления двигателем автомобиля, системы безопасности)
Это далеко не полный список сфер применения микроконтроллеров. Часто, очень выгодно заменить набор управляющих микросхем одним микроконтроллером, ввиду упрощения производства, снижения энергопотребления.
Начало знакомства с AVR
AVR — семейство микроконтроллеров фирмы Atmel.Обладают достаточной производительностью для большинства любительских устройств. Так же находят широкое применение в промышленности.