Инженер-электронщик (avr-микроконтроллеры)

AVR. Учебный курс. Архитектура

Итак, камрад, прежде чем ты начнешь работать с контроллером, то неплохо бы тебе узнать что у него внутри.
Поэтому дам тебе краткий ликбез по архитектуре контроллера AVR.

Основой любого микроконтроллера является вычислительное ядро. Во всех моделях AVR оно практически одинаковое и это большой плюс. Именно единство архитектуры обеспечивает легкую переносимость кода.

Итак, что же у нас в основе микроконтроллера, взгляни на диаграмму:

Ядро состоит, в первую очередь, из памяти программ (Flash Programm Memory) и Арифметико-логического устройства (ALU), блока управления (на диаграмме не показан) и программного счетчик (Program Counter).

Также есть тактовый генератор, задающий импульсы относительно которых работают блоки микроконтроллера. Тактовый генератор можно сравнить с маятником и собачкой в будильнике: маятник туда сюда, собачка тикает по одному зубчику — шестеренки крутятся.

Встала собачка — встал весь будильник.

При старте микроконтроллера значение программного счетчика равно 0000 — это адрес первой команды в нашей flash ROM. Микроконтроллер хватает оттуда два байта (код команды и ее аргументы) и отдает на выполнение в декодер команд (Instruction Decoder).

А дальнейшая судьба зависит от команды. Если это просто команда работы с какими-либо действиями, то они будут выполнены, а на следующем такте значение программного счетчика будет увеличено и из следующей пары ячеек памяти будут взяты еще два байта команды и также отправлены на выполнение.

Все интересней становится когда встречается команда перехода.

В этом случае в Программный счетчик загружается адрес указанный в команде (абсолютный переход) или его значение увеличивается не на 1, а на столько сколько нужно и на следующем такте микроконтроллер возьмет команду уже с нового адреса.

Декодер команд загребает команду и скармливает ее логике блока управления, который уже пинает все остальные блоки, заставляя их делать нужные действия в нужном порядке.

Вся математика и обработка делается посредством ALU. Это, своего рода, калькулятор. Он может складывать, вычитать, сравнивать, сдвигать разными способами, иногда делить и умножать (это считается круто, встречается редко).

В качестве промежуточных операндов используются 32 ячейки — Оперативные регистры общего назначения РОН. Доступ к этим ячейкам самый быстрый, а число операций с их содержимым наиболее богатое. В ассемблере регистры эти называются просто R0,R1,R2 … R31. Причем делятся они на три группы:

Младшие R0..R15
Обычные регистры общего назначения, но какие то ущербные. С ними не работают многие команды, например, такие как загрузка непосредственного числа. Т.е. нельзя, например, взять и присвоить регистру число. Зато можно скопировать число из любого другого регистра.

Старшие R16..R31
Полноценные регистры, работающие со всеми командами без исключения.

Индексные R26…R31
Шесть последних регистров из старшей группы особенные. В принципе, их можно юзать и как обычные регистры общего назначения. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28,R29), Z(R30:R31) которые используются как указатели при работе с памятью.

ОЗУ
Кроме 32 регистров в микроконтроллере есть оперативная память. Правда не везде — в младших семействах AVR Tiny12 и Tiny11 оперативной памяти нет, так что приходиться вертеться в 32 ячейках.

Оперативная память это несколько сотен ячеек памяти. От 64 байт до 4килобайт, в зависимости от модели. В этих ячейках могут храниться любые данные, а доступ к ним осуществляется через команды Load и Store.

То есть нельзя взять, например, и прибавить к ячейке в памяти, скажем, единицу. Нам сначала сделать операцию Load из ОЗУ в РОН, потом в регистре прибавить нашу единицу и операцией Store сохранить ее обратно в память. Только так.

EEPROM
Долговременная память. Память которая не пропадает после выключения питания. Если Flash может содержать только код и константы, а писать в нее при выполнении ничего нельзя (Это память Read Only), то в ЕЕПРОМ можно сколько угодно писать и читать. Но в качестве оперативки ее особо не поюзаешь. Дело в том, что цикл записи в EEPROM длится очень долго — миллисекунды.

Чтение тоже не ахти какое быстрое. Да и число циклов перезаписи всего 100 000, что не очень много в масштабах работы оперативной памяти. ЕЕПРОМ используется для сохранения всяких настроек, предустановок, собранных данных и прочего барахла, что может потребоваться после включения питания и в основном на чтение. Эта память есть не во всех моделях AVR, но в подавляющем их большинстве.

Периферия
Периферия это внутренний фарш микроконтроллера. То что делает его таким универсальным.

ALU, RAM, FLASH и Блок управления это как в компе Мать, Проц, Память, Винт — то без чего комп даже не запустится толком. То периферия это уже как сетевуха, видяха, звуковая карта и прочие прибамбасы.

Они могут быть разными, разной степени крутости и навороченности, а также комбинироваться в разном порядке.

Именно по наличию на кристалле той или иной периферии происходит выбор микроконтроллера под задачу.

Периферии всякой придумано великое множество, всего я наверное даже не опишу. Но дам основной набор присутствующий почти во всех AVR, а также в других современных контроллерах.

  • Порты ввода вывода — то без чего невозможно взаимодействие контроллера с внешним миром. Именно порты обеспечивают то самое «ножкодрыгательство» управляющее другими элементами схемы. Захотели получить на выводе единичку, дали приказ соответствующему порту — получите, распишитесь. Захотели узнать какой там сигнал на входе? Спросили у соответствующего порта — получили. Почти все выводы микроконтроллера могут работать в режиме портов ввода-вывода.
  • UART/USART приемопередатчик — последовательный порт. Работает по тому же асинхронному протоколу что и древние диалапные модемы. Старый как мир, надежный и простой как кувалда. Подходит для связи с компьютером и другими контроллерами.
  • Таймеры/счетчики — задача таймеров отсчитывать тики. Сказал ему отсчитать 100 тактов процессора — он приступит и как досчитает подаст сигнал. Им же можно подсчитывать длительность входных сигналов, подсчитывать число входных импульсов. Да много чего умеет таймер, особенно в AVR. Подробное описание функций таймера занимает добрых три десятка страниц в даташите. При том, что таймеров самих существует несколько видов и фарш у них разный.
  • АЦП — аналоговый вход. Есть не у всех микроконтроллеров, но вещь полезная. Позволяет взять и замерить аналоговый сигнал. АЦП это своеобразный вольтметр.
  • I2C(TWI) интерфейс — последовательная шина IIC. Через нее осуществляется связь с другими устройствами. На IIC можно организовать своеобразную локальную сеть из микроконтроллеров в пределах одного устройства.
  • SPI — еще один последовательный протокол, похожа на IIC, но не позволяет организовывать сети. Работает только в режиме Мастер-Ведомый. Зато ОЧЕНЬ быстрая.
  • Аналоговый Компаратор — еще один аналоговый интерфейс. Но, в отличии от АЦП, он не замеряет, а сравнивает два аналоговых сигнала, выдавая результат А>B или A

Источник: http://easyelectronics.ru/avr-uchebnyj-kurs-arxitektura.html

Радиотехнический сайт RADIOTRACT

ИнформацияМикроконтроллерыМикроконтроллеры фирмы Atmel

Здесь представлена информация по микроконтроллерам фирмы Atmel, в основном по микроконтроллерам AVR. Представлены для свободного скачивания книги и справочники. Вы можете здесь же заказать бумажный вариант книги.

  1. Микроконтроллеры AVR: от простого к сложному — М. С. Голубцов 2003г. (2522 Кб) Прочитав эту книгу, читатели познакомятся с микроконтроллерами семейства AVR, программным обеспечением, необходимым для конструирования и программирования схем на основе этих микроконтроллеров, а при желании познакомятся с их применением на практике, собрав какую-либо из описанных в книге практических конструкций.

    В книге есть опечатка: на странице 113 и 147 у вывода Е элемента D1.2 номер не 9, как напечатано, а 19.

  2. Применение микроконтроллеров AVR: схемы, алгоритмы, программы — В. Н. Баранов 2004г. (3073 Кб)
  3. Микроконтроллеры AVR семейств Tiny и Mega фирмы «Atmel» — А. В. Евстифеев 2004г. том 1 (5100 Кб)
  4. Микроконтроллеры AVR семейств Tiny и Mega фирмы «Atmel» — А. В. Евстифеев 2004г. том 2 (2865 Кб)
  5. Микроконтроллеры семейства AVR фирмы Atmel. Гребнев В. В., 2002г. — 3826 Кб Книга предназначена для разработчиков аппаратуры различного назначения, содержащей встроенные однокристальные микро-ЭВМ-микроконтроллеры. В книге рассматриваются структура, система команд, периферийные устройства и работа микроконтроллеров, выпускаемых фирмой Atmel и поступающих в продажу по состоянию на конец 2001 г.

    Изложенный материал позволяет выбрать микроконтроллер определенного типа, разработать функциональную схему устройства, содержащего микроконтроллер, и программу работы микроконтроллера на языке AVR Ассемблера фирмы Atmel.

  6. Микроконтроллеры AVR. Вводный курс. Мортон Д., 2006г. — 2201 Кб Данное издание представляет собой практическое руководство, с помощью которого вы сможете изучить, а впоследствии и использовать микроконтроллеры AVR компании Atmel. Неважно, студент ли вы, собирающийся использовать микроконтроллер AVR в своем проекте или же опытный разработчик встраиваемых систем, впервые столкнувщийся с AVR, — если вам нужно быстро разобраться в этих популярных микроконтроллерах, то эта книга для вас. Для демонстрации различных возможностей AVR Джон Мортон использует простые устройства и программы. В отличие от книг, в которых излагается голая теория либо просто воспроизводится фирменная техническая документация, такой подход (обучение в процессе использования) предлагает быстрое и интуитивное изучение возможностей микроконтроллеров AVR. В общей сложности, в книге рассмотрены 16 проектов, охватывающих все наиболее популярные микроконтроллеры AVR, включая модели семейства Tiny.

    Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов технических вузов и радиолюбителей.

  7. Создаём устройства на микроконтроллерах. Белов А.В., 2007г. — 3870 Кб Данная книга представляет собой практическое пособие по разработке электронных схем с применением микроконтроллеров и управляющих программ к ним. Год выпуска: 2007 Издательство: Наука и Техника Серия: Радиолюбитель ISBN: 978-5-94387-364-3 Формат: DjVu Качество: Отсканированные страницы

    Количество страниц: 307

  8. Микроконтроллер AVR в радиолюбительской практике. А. В. Белов, 2007г. — 5691 КбДанная книга представляет собой справочник, в котором представлено полное и подробное описание одной конкретной микросхемы — микроконтроллера ATiny2313 семейства AVR фирмы Atmel. Описание построено на основе оригинальной технической документации на микросхему и содержит описание всех регистров, всех видов памяти и всех внутренних систем микроконтроллера.

    Имеется и практический раздел для радиолюбителей. Книга содержит описание нескольких практических схем, выполненных с применением данного микроконтроллера. Каждая схема снабжена подробным описанием и примером управляющей программы. Программы приведены в двух вариантах: на Ассемблере и языке СИ. Все программы также подробно описаны.

  9. Микроконтроллеры AVR семейства Classic фирмы ATMEL. Евстифеев А.В., 2006г. — 1303 КбКнига является справочным изданием по применению микроконтроллеров AVR семейства Classic фирмы «ATMEL». Рассмотрена архитектура, ее особенности, приведены основные электрические параметры. Подробно описано внутреннее устройство микроконтроллеров, система команд, периферия, а также способы программирования.

    Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов технических вузов.

  10. Микроконтроллеры AVR семейства Mega. Руководство пользователя. А. Евстифеев, 2007г. — 10176 КбКнига представляет собой справочное руководство по однокристальным микроконтроллерам AVR семейства Mega фирмы ATMEL. Рассмотрена архитектура микроконтроллеров AVR, ее особенности, приведены основные электрические параметры. Подробно описано внутреннее устройство микроконтроллеров, система команд, периферия, а также способы программирования. Основой данного издания послужила популярная книга «Микроконтроллеры AVR семейств Tiny и Mega», материал которой был существенно переработан и дополнен описаниями новых моделей.

    Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров, студентов технических вузов.

  11. Микропроцессорные устройства систем управления. Иванов. Ю. И., 2005г. — 3256 Кб
    Учебное пособие предназначено для студентов, обучающихся по направлению 657900 «Автоматизированные технологии и производства», и содержит сведения, необходимые при изучении курсов «Микропроцессорная техника в системах управления», «Электронные устройства автоматики», «Технические средства автоматизации», «Технологические процессы и производства». В учебном пособии рассмотрены вопросы организации работы микропроцессорных средств, функциональные возможности и характеристики аппаратных средств микроконтроллеров, особенности программирования на ассемблере, приведены примеры программ для выполнения типовых функций, даны краткие рекомендации по технической реализации алгоритмов управления.
  12. 10 практических устройств на AVR-микроконтроллерах. Кравченко А.В., 2008г. — 7496 Кб
    Данная книга открывает серию сборников с практическими примерами применения микроконтроллеров. В ней рассмотрены десять завершенных устройств на базе микроконтроллеров AVR, которые можно легко собрать в домашних условиях и применять в быту или профессиональной деятельности: генератор световых эффектов, счетчик событий, музыкальный звонок, индикатор уровня звука, повышающий преобразователь, схема управления шаговым двигателем, цифровой термометр и др. Благодаря подробному анализу аппаратной и программной части устройств, книга будет интересна и полезна как начинающим, так и опытным радиолюбителям, желающим изучить методы эффективного применения микроконтроллеров.
  13. AVR-RISC микроконтроллеры. Архитектура, аппаратные ресурсы, система команд, программирование, применение. Трамперт В., 2006г. — 13862 Кб
    В книге «AVR-RISC Микроконтроллеры. Архитектура, аппаратные ресурсы, система команд, программирование, применение» дано исчерпывающее описание базовой серии микроконтроллеров семейства АVR от компании Аtmеl, построенных на базе прогрессивной архитектуры RISC с применением программируемой флэш-памяти ЕРROМ. Кроме того, подробно рассматривается программирование микроконтроллеров данной серии на языке ассемблера, а также среда отладки АVR-Studio и программно-аппаратный набор SТК200. Книга предназначена для всех, кто уже обладает основными познаниями в области построения и функционирования микрокомпьютеров, желает изучить однокристальные микроконтроллеры АVR и успешно претворять в жизнь задачи внутриплатного управления.
  14. Измерение, управление и регулирование с помощью AVR-микроконтроллеров. Трамперт В. — 2565 Кб
    Книга описывает особенности применения AVR-микроконтроллеров в технике измерения, управления и регулирования. При этом основной акцент поставлен на измерении напряжения, выводе и отображении результатов измерений, а также на регулировании аналоговых напряжений. Изложенный материал дает возможность поэтапно проследить весь процесс разработки устройства, понять, почему программное и аппаратное обеспечение скомпоновано именно таким, а не каким-либо другим образом, и суметь в случае необходимости выполнить самостоятельную разработку.
  15. Продолжение следует.
Читайте также:  Устройство для зарядки литий-ионные батареи 18650 своими руками в домашних условиях

Источник: https://radiotract.ru/info_mc_avr.html

Что такое AVR микроконтроллер?

31.01.2019 02:30

AVR микроконтроллеры – это тип устройств, разработанный компанией Atmel, которые имеют определенное преимущество перед обычными микросхемами, но, сначала, давайте разберемся, что такое микроконтроллер?

Самый простой способ понять это – сравнить микроконтроллер с вашим компьютером, в котором установлена материнская плата.

На этой плате стоит микропроцессор (на чипе Intel или AMD), который обеспечивает устройство вычислений, память RAM и EEPROM, и интерфейсы остальных систем, например, серийные порты (в настоящее время в основном USB), жесткие диски и графические интерфейсы.

В микроконтроллере все эти возможности встроены в один чип, а это значит, что отсутствует потребность в материнской плате и многих других компонентах, например, светодиод может быть подключен напрямую к AVR. В микропроцессорах нет такой возможности!

AVR микроконтроллеры выпускаются в нескольких корпусах, некоторые предназначены для монтажа в отверстия, некоторые для поверхностного. AVR бывают 8-ми и 100-пиновыми, хотя все, что выше 64-х пинов только для монтажа в отверстия. Большинство людей начинают с DIL (Сдвоенный в линию) 28—х пинового чипа, например, ATmega328 или 40-ка пинового ATmega16 или ATmega32.

Компьютерные микропроцессоры бывают минимум 32-х битными, а теперь чаще 64-х битные. Это означает, что они могут обрабатывать данные 32-х битными или 64-х битными блоками, если они подключены к шине. AVR гораздо проще и работает с 8-ми битными блоками, пропускная ширина потока 8 бит, хотя сейчас стали появляться AVR32 с 32-х битной шиной.

На компьютере установлена операционная система (Windows или Linux), и именно в ней запускаются программы, такие, как Word, InternetExplorer или Chrome. На 8-ми битном микроконтроллере, например, на таком, как AVR обычно нет установленной операционной системы, хотя, при необходимости, она может быть установлена. Вместо этого реализована возможность запуска одной программы.

Также, как и ваш компьютер, который будет бесполезным, если на нем не установлена ни одна программа, также, и AVR требует установки программ.

Программа хранится во встроенной памяти AVR, а не на внешнем жестком диске, как на компьютере.

Загрузка этой программы вAVR происходит при помощи программатора AVR, обычно, когда AVR является частью системы, и программируется разработчиком или системным программистом.

Так что же это за программа? Она состоит из серии инструкций, очень простых, и направленных на обработку данных.

В большинстве приложений, которые вы будете использовать с AVR, например, в контроллере промышленного оборудования, необходимо, чтобы считывалась информация со входов, проводилась проверка состояния и, соответственно, происходило переключение на выходы.

Иногда вам нужно менять данные, управлять ими, или передавать их на другое устройство, например, на ЖК дисплей или на серийный порт.

Чтобы выполнять эти простые задачи, используется серия простых бинарных инструкций, каждая из которых соответствует команде на ассемблере, понятной пользователю. Самый простой способ написать программу для AVR – использовать ассемблер (хотя, если хотите оставаться педантичным, можете записывать двоичные числа).

Использование ассемблера позволяет вам понять больше о том, как действует AVR, и как это все соединено воедино. Также, это дает возможность использовать очень маленький и быстрый код. Недостаток в том, что вы, как программист, должны делать все сами, включая управление памятью и структурой программ, что может быть очень утомительно.

Чтобы этого избежать, для написания программ для AVR были использованы языки программирования более высокого уровня, основным считается Cи, а также, можно использовать Basic и Java.

Высокий уровень означает, что каждая строка Cи (или Basic, или Java) кода может переводиться в множество строк ассемблера. Компилятор также разбирается со структурой программы и управлением памятью, так что все становится гораздо проще.

Наиболее часто используемые процессы, например, задержки или вычисления, могут храниться в библиотеках, и доступ к ним очень простой.

Мне кажется, что написание программ на Си для AVR сравнимо с управлением автомобилем.

Да, вы очень легко можете это делать, но, если что-то идет не так, то вы понятия не имеете, как быть, и как справиться со сложной ситуацией, например, со скользкой дорогой.

Написание простейших программ на ассемблере дает вам понять, что происходит «под капотом», как это работает, и что с этим можно сделать. Потом вы переходите на Си, но, к этому моменту, вы уже знаете, как функционирует AVR, и знаете его ограничения.

Также, как у вашей программы есть в памяти код, также у AVR есть вторая память, которая называется EEPROM, где вы можете хранить данные, например, серийные номера, данные калибровок и другую, необходимую под рукой, информацию. Доступ туда осуществляется по инструкциям в вашей программе.

У AVR также есть I/O, которое используется, чтобы контролировать аппаратные средства микроконтроллера.

К аппаратным средствам относятся порты, АЦП (ADC), коммуникационные интерфейсы, например, I2C (2—х проводной интерфейс), SPI и UART (серийный порт), таймеры и система watchdog, которая восстанавливает систему после сбоя.

Все эти периферийные устройства контролируется из-под программы, используя специальные инструкции. Большая часть кода программирования AVR посвящена тому, как устанавливать и контролировать эти аппаратные интерфейсы.

Источник: https://prom-electric.ru/articles/2/25/

Микроконтроллеры Atmel AVR – Часть 1

Общее количество существующих семейств микроконтроллеров оценивается приблизительно в 100 с лишним, причем ежегодно появляются все новые и новые. Каждое из этих семейств может включать десятки разных моделей.

Причем львиная доля выпускаемых чипов приходится на специализирован­ные контроллеры: например, для управления USB-интерфейсом, или ЖК-дисплеями.

Иногда довольно трудно классифицировать продукт: так, многие представители семейства ARM, которое широко применяется для построения мобильных устройств, с точки зрения развитой встроенной функционально­сти относятся к типичным контроллерам, но в то же время достаточно мощ­ное ядро позволяет отнести их и к классу микропроцессоров.

Из семейств универсальных 8-разрядных микроконтроллеров, так сказать, «на все случаи жизни», наиболее распространены три: контроллеры класси­ческой архитектуры х51 (первый контроллер семейства 8051 был выпущен фирмой Intel еще в середине 1980-х), контроллеры PIC фирмы Microchip (идеально подходят для проектирования несложных устройств, особенно предназначенных для тиражирования), и рассматриваемые нами Atmel AVR.

Заметки на полях

в 1995 г. два студента Норвежского университета науки и технологий в г. Трон­хейме, Альф Боген и Вегард Воллен, выдвинули идею 8-разрядного RISC-ядра, которую предложили руководству Atmel. Имена разработчиков вошли в название архитектуры AVR: Alf + Vegard + RISC.

В Atmel идея настолько по­нравилась, что в 1996 г. был основан исследовательский центр в Тронхейме, и уже в конце того же года был начат выпуск первого опытного микрокон­троллера новой серии AVR под названием AT90S1200. Во второй половине 1997 г.

корпорация Atmel приступила к серийному производству семейства AVR.

Почему AVR?

у AVR-контроллеров «с рождения» есть несколько особенностей, которые отличают это семейство от остальных МК, упрощают его изучение и исполь­зование. Одним из существенных преимуществ AVR стало использование конвейера.

В результате для AVR не существует понятия машинного цикла: большинство команд, как мы говорили, выполняется за один такт (для срав­нения отметим, что пользующиеся большой популярностью МК семейства PIC выполняют команду за 4 такта).

Правда, при этом пришлось немного пожертвовать простотой системы ко­манд, есть некоторые сложности и в области операций с битами.

Тем не ме­нее, это не приводит к заметным трудностям при изучении AVR-ассемблера: наоборот, программы получаются короче и больше напоминают программу на языке высокого уровня (отметим, что AVR проектировались специально в расчете на максимальное приближение к структуре языка С).

Другое огромное преимущество AVR-архитектуры — наличие 32 оператив­ных регистров, не во всем равноправных, но позволяющих в простейших случаях обходиться без обращения к оперативной памяти и, что еще важнее, без использования стека — главного источника ошибок у начинающих про­граммистов (мало того, в младщих моделях AVR стек даже недоступен для программиста). Для AVR не существует понятия «аккумулятора», ключевого для ряда других семейств. Это еще больше приближает структуру ассемб­лерных программ для AVR к программам на языке высокого уровня, где опе­раторы работают не с ячейками памяти и регистрами, а с абстрактными пе­ременными и константами.

Но это, конечно, не значит, что AVR — однозначно лучшее в мире семейство МК.

У него есть и ряд недостатков (например, несовершенная система защи­ты энергонезависимой памяти данных— EEPROM, некоторые вопросы с помехоустойчивостью, излишние сложности в системе команд и структуре программ и т. п.).

Но в принципе любые универсальные современные МК позволяют делать одно и то же, и вопрос выбора платформы — вопрос в зна­чительной степени предпочтений и личного опыта разработчика.

Classic, Mega и Tiny

Линейка универсальных контроллеров AVR общего назначения делится на семейства — Classic, Mega и Tiny (есть и новейшее семейство Xmega, но оно представляет весьма «навороченные» приборы не для наших задач).

МК се­мейства Classic (они именовались, как АТ908) ныне уже не производятся, однако все еще распространены, так как они задержа­лись на складах торгующих фирм, и, к тому же, для них наработано значи­тельное количество программ.

Чтобы пользователям не пришлось переписы­вать все ПО, фирма Atmel позаботилась о преемственности — большинство МК семейства Classic имеет функциональные аналоги в семействе Mega, на­пример, AT90S8515— ATmega8515, AT90S8535— ATmega8535 и т.п. (только AT90S2313 имеет аналог в семействе Tiny — ATtiny2313).

Полная совместимость обеспечивается специальным установочным битом (из набора т. н. Fuse-битов), при программировании которого Mega-процессор начинает функционировать, как Classic (подробнее об этом рассказано в гла­ве 19).

Для вновь разрабатываемых устройств обычно нет никакого смысла в использовании их в режиме совместимости, однако такой прием в ряде слу­чаев может оказаться полезным для начинающих, так как МК Classic устрое­ны проще и не заставляют пользователя отвлекаться на некоторые ненужные подробности, не имеющие отношения к делу. Поэтому в книге далее будут приводиться иногда примеры и для «классической» серии.

Семейство Tiny (что в буквальном переводе означает «крохотный») предна; значено для наиболее простых устройств.

Часть МК этого семейства не имеет возможности программирования по последовательному интерфейсу, и пото­му мы не буд^м их рассматривать в этой книге, за исключением ATtiny2313 (это не значит, что остальных Tiny следует избегать — среди них есть очень удобные и функциональные микросхемы, нередко вообще не имеющие ана­логов).

У этого МК отсутствует бит совместимости с «классическим» анало­гом AT90S2313, одним из самых простых и удобных контроллеров Atmel, но при внимательном рассмотрении оказывается, что они и без такого бита со­вместимы «снизу вверх»: программы для «классического» 2313 полностью подходят и для Tiny2313 (см. следующую главу).

Структура МК AVR

Общая структура внутреннего устройства МК AVR приведена на рис. 18.9.

Читайте также:  Управляем рукой робота ардуино через интернет

На этой схеме показаны все основные компоненты AVR (за исключением некоторых специализированных); в отдельных моделях некоторые компо­ненты могут отсутствовать или различаться по характеристикам, неизменным остается только общее 8-разрядное процессорное ядро (GPU, General Processing Unit). Кратко рассмотрим наиболее важные компоненты, боль­шинство из которых мы будем рассматривать в дальнейшем подробнее.

Начнем с памяти. В структуре AVR имеются три разновидности памяти: flash-память программ, ОЗУ (SRAM) для временного хранения данных, и энергонезависимая память (EEPROM) для долговременного хранения кон­стант и данных. Рассмотрим их по отдельности.

Память программ

Встроенная flash-память программ в AVR-контроллерах имеет объем от 1 кбайта у ATtinyl 1 до 256 кбайт у ATmega2560. Первое число в наименова­нии модели содержит величину этой памяти в килобайтах, из ряда: 1, 2, 4, 8, 16, 32, 64, 128 и 256 кбайт. Так, ATtiny2313 имеет 2 кбайта памяти, а ATmega8535 — 8 кбайт.

С точки зрения программиста память программ можно считать построенной из отдельных ячеек— слов по два байта каждое. Устройство памяти про­грамм (и только этой памяти!) по двухбайтовым словам— очень важный момент, который нужно твердо усвоить. Такая организация обусловлена тем.

что любая команда в AVR имеет длину ровно 2 байта.

Исключение состав­ляют команды jmp, call и некоторые другие (например, ids), которые опери­руют с адресами 16-разрядной и более длины, длина этих команд составляет 4 байта, и они используются лишь в моделях с памятью программ более 8 кбайт, поэтому в этой книге вы их не встретите. Во всех остальных случаях счетчик команд сдвигается при выполнении очередной команды на 2 байта (одно слово), поэтому необходимую емкость памяти легко подсчитать, зная просто число используемых команд.

По умолчанию все контроллеры AVR всегда начинают выполнение програм­мы с адреса $0000^. Если в программе не используются прерывания, то с это­го адреса может начинаться прикладная программа, как мы увидим далее. В противном случае по этому адресу располагается т. н. таблица векторов прерываний, подробнее о которой мы будем говорить в главе 19.

Память данных (ОЗУ, 3RAM)

в отличие от памяти программ, адресное пространство памяти данных адре­суется побайтно (а не пословно). Адресация полностью линейная, без какого-то деления на страницы, сегменты или банки, как это принято в некоторых других системах. Исключая некоторые младшие модели Tiny, объем встро­енной SRAM колеблется от 128 байт (например, у ATtiny2313) до 4—8 кбайт у старших моделей Mega.

Адресное пространство статической памяти данных (SRAM) условно делится на несколько областей, показанных на рис. 18.10. К собственно встроенной SRAM относится лишь затемненная часть, до нее по порядку адресов распо­ложено адресное пространство регистров, где первые 32 байта занимает мас­сив регистров общего назначения (РОН), еще 64 — регистров ввода-вывода (РВВ).

Для некоторых моделей Mega (ATmega8515, ATmegal62, ATmegal28, AT-mega2560 и др.) предусмотрена возможность подключения внешней памяти объемом до 64 кбайт.

Отметим, что адресные пространства РОН и РВВ не отнимают пространство у ОЗУ данньпс: так, если в конкретной модели МК имеется 512 байт SRAM, а пространство регистров занимает первые 96 байт (до адреса $60), то адреса SRAM займут адресное пространство от $0060 до $025F (то есть от 96 до 607 ячейки включительно). Конец встроенной памяти данных обозначается константой ramend. Следует учесть, что последние ад­реса SRAM, как минимум, на четыре—шесть ячеек от конца (в зависимости от количества вложенных вызовов процедур, для надежности лучше принять это число равным десяти или даже более) занимать данными не следует, так как они при использовании подпрограмм и прерываний заняты под стек.

Рис. 18.10. Адресное пространство статической памяти данных (SRAM) микроконтроллеров AVR

Операции чтения/записи в память одинаково работают с любыми адресами из доступного пространства, и потому при работе с SRAM нужно быть вни­мательным: вместо записи в память вы легко можете «попасть» в какой-нибудь регистр.

Для обращения к РОН, как к ячейкам памяти, можно в каче­стве адреса подставлять номер регистра, а вот при обращении к РВВ таким же способом к номеру последнего нужно прибавлять $20.

Следует также помнить, что по умолчанию при включении питания все РВВ устанавливают­ся в нулевое состояние во всех битах (единичные исключения все же имеют­ся, поэтому в критичных случаях надо смотреть документацию), а вот РОН и ячейки SRAM могут принимать произвольные значения.

Энергонезависимая память данных (EEPROM)

Все модели МК AVR (кроме снятого с производства ATtinyl 1) имеют встро­енную EEPROM для хранения констант и данных при отключении питания. В разных моделях объем ее варьируется от 64 байт (ATtinylх) до 4 кбайт (старшие модели Mega). Число циклрв перепрограммирования EEPROM мо­жет достигать 100 тыс.

Напомним, что EEPROM отличается от flash-памяти возможностью выбо­рочного программирования побайтно (в принципе, даже побитно, но эта воз­можность скрыта от пользователя).

Чтение из EEPROM осуществляется с такой же скоростью, как и чтение из РОН — в течение одного машинного цикла (правда, на практике оно растягивается на 4 цикла, но программисту следить за этим специально не требуется).

А вот запись в EEPROM протекает значительно медленнее, и к тому же с не точно определенной скоростью: цикл записи одного байта может занимать от 2 до 4 и более миллисекунд.

Процесс записи регулируется встроенным RC-генератором, частота которого нестабильна (при низком напряжении питания можно ожидать, что время записи будет больше). За такое время при обычных тактовых частотах МК успевает выполнить несколь^со тысяч команд, потому программирование процедуры записи требует аккуратности: например, нужно следить, чтобы в момент записи не «вклинилось» прерывание (подробнее об этом далее).

Главная же сложность при использовании EEPROM — то, что при недоста­точно быстром снижении напряжения питания в момент выключения содер­жимое ее может быть испорчено.

Обусловлено это тем, что при снижении напряжения питания ниже некоторого порога (ниже порога стабильной рабо­ты, но недостаточного для полного выключения) и вследствие его дребезга МК начинает выполнять произвольные команды, в том числе может выпол­нить и процедуру записи в EEPROM, если она имеется в программе. Если учесть, что типовая команда МК AVR выполняется за десятые доли микросе­кунды, то ясно, что никакой реальный источник питания не может обеспе­чить снижение напряжения до нуля за нужное время. По опыту автора при питании от обычного стабилизатора типа LM7805 с рекомендованными зна­чениями емкости конденсаторов на входе и на выходе содержимое EEPROM будет испорчено примерно в половине случаев.

Этой проблемы не должно существовать, если запись констант в EEPROM производится при программировании МК, а процедура записи в программе отсутствует.

Во всех же остальных случаях (а их, очевидно, абсолютное большинство — EEPROM чаще всего используется для хранения пользова­тельских установок и текущей конфигурации при выключении питания) при­ходится принимать специальные меры.

Встроенный детектор падения на­пряжения (Brown-Out Detection, BOD), имеющийся практически во всех моделях Tiny и Mega, обычно с этим не справляется. Наиболее кардинальной из таких мер является установка внешнего монитора питания, удерживающе­го МК при снижении напряжения питания ниже пороговой величины в со­стоянии сброса (см. главу 21).

Источник: http://nauchebe.net/2010/06/mikrokontrollery-atmel-avr-chast-1/

Введение во встраиваемую электронику, часть 1 | avr | programming

Здесь приведен перевод замечательного на мой взгляд руководства Sparkfun [1], которое поможет начинающим радиолюбителям окунуться в занимательный мир микроконтроллеров (автор Nathan Seidle). Эта часть посвящена общим вопросам и источнику питания.

Эти лекции в целом посвящены людям, слегка знакомым с электроникой и интересующимися этим вопросом (например, второкурсникам факультетов Электротехники и/или Вычислительной техники), если они хотят что-нибудь узнать о диком мире Embedded Electronics (электроника встраиваемых микроконтроллерных систем, далее просто Embedded). Я предполагаю, что Вы знакомы с понятием электричества, и знаете, что такое радиодетали. Все остальное будет разъяснено как можно подробнее. Прошу также прощения за некоторый беспорядок в изложении. Когда это руководство было подготовлено и многие фотографии были сделаны, то использовались микроконтроллеры ATmega8, но сейчас мы переходим на более современный ATmega328. Вы найдете всю необходимую информацию об ATmega328 на страницах этих туториалов, однако картинки будут показывать ATmega8.

Прим. переводчика: ATmega8 по разводке портов ввода/вывода и типам корпусов взаимозаменяем с ATmega328. Кроме того, большинство программ для ATmega8 будут работать на ATmega328 даже без перекомпиляции (обратное верно не всегда).

[Итак, что такое Embedded, что такое микроконтроллер?]

Вы наверное знаете, что такое логический элемент OR (т. е. по-русски ИЛИ). Логический элемент OR производит операцию над двумя входами (входов может быть и больше), и по результату операции управляет выходом.

Вы можете поиграться с такими логическими элементами, есть даже соответствующая микросхема DIP14, в корпусе которой находятся 4 таких элемента (например 74HC32 или наш аналог КР555ЛЛ1).

Корпус DIP требует подачи питания на микросхему на специально предназначенные для этого выводы питания (к примеру, для 74HC32 нужно подать напряжение постоянного тока 5V минусом к ножке 7 и плюсом к ножке 14). Электрический ток течет через микросхему, и дает энергию, необходимую для её работы.

Вы можете и не знать всех тонкостей внутреннего устройства микросхемы, однако понимаете, что если менять уровни сигнала на входах микросхемы, то состояние её выхода также поменяется (в соответствии с логической операцией OR, как в нашем примере). Логические сигналы (лог. 0, лог.

1) можно подавать на входы микросхемы, если замкнете их либо на землю (минус питания, этот сигнал также называют GND, ground), либо на + питания (эта шина также известна как VCC). Удобнее всего проводить такие эксперименты на платках breadboard, и возможно Вы это делали.

Если же это что-то совсем чуждое Вам (либо слишком очевидное), то не судите строго! Мы просто пытаемся облегчить для Вас понимание предмета разговора.

Микроконтроллер является сердцем встраиваемых систем (Embedded). По входам и выходам он работает аналогично логическому элементу OR. С микроконтроллером Вы также имеете несколько входов, и также несколько выходов. Ко входам можно подключать разные датчики, кнопки.

К выходам можно подключать светодиоды, транзисторные ключи, реле, биперы. На рисунке показан популярный представитель семейства AVR — микроконтроллер ATmega328P в корпусе DIP28.

Такой микроконтроллер и и используется для различных радиолюбительских плат, например Arduino и metaboard.

Однако самая сумасшедшая вещь с микроконтроллером состоит в том, что он умеет выполнять машинный код.

Например, Вы можете очень просто сделать так, что будут проверяться входы на ножках микроконтроллера A и B. Состояние сигнала на этих входах будет управлять состоянием выходной ножки C.

Так можно повторить логику работы элемента OR (если или А, или В равно 1, то на C выдать 1, иначе на C выдать 0):

if (A == 1 || B == 1) { C = 1; } else { C = 0; }

Ого, да это же код на языке C! Вы можете таким способом закодировать любой алгоритм для любого приложения, скомпилировать код, загрузить его в память микроконтроллера, подать питание на микроконтроллер, и код начнет свою работу.

Это очень просто! Микроконтроллеры используются сейчас во всех электронных приборах и устройствах типа микроволновки, пульта управления телевизором, сотового телефона, компьютерной мыши, принтера, и более 150 микроконтроллеров может быть встроено в один новый автомобиль! Например, микроконтроллер может следить за нажатием на педаль тормоза (BRAKES == 1) и также следить за отсутствием проскальзывания колес на дороге (LOCK_UP == 1). Когда эти условия происходят одновременно, то микроконтроллер включает тормоз (логическая операция AND). По такому принципу работает система ABS (anti-lock brake system).

Давным давно микроконтроллеры были однократно программируемые (OTP, One Time Programing), программу можно было записать в них только один раз. Т. е. Вы можете сделать только одну попытку написать код и протестировать его работу; если что-то пошло не так, то микроконтроллер можно было выбрасывать.

Сегодня микроконтроллеры имеют на борту память FLASH, и программировать стало намного проще. Это означает, что Вы можете записывать, стирать и снова записывать память программ микроконтроллера множество (многие тысячи) раз.

Я прошиваю микроконтроллеры несколько лет, и всегда портил его по какой-то другой причине, никогда не доходя до предела количества циклов перепрограммирования FLASH.

FLASH-микроконтроллеры сильно отличаются от компьютеров и памяти RAM. Компьютерам для работы нужны десятки и сотни ватт питающей мощности, и они состоят из множества компонентов, порой весьма сложных. Компьютеры в работе обычно сильно нагреваются, и требуют систем охлаждения.

Компьютеру нужно довольно много времени, чтобы загрузиться и прийти в рабочее состояние. Микроконтроллеры могут запустить свой код за считанные миллисекунды после подачи питания, и они обычно в работе чуть теплые или совсем холодные.

Читайте также:  Функционал количества просмотров товара в интернет-магазине - arduino+

Если микроконтроллер значительно нагрелся, так что Вы это почувствовали, то скорее всего Вы его сожгли. Да, и еще микроконтроллер стоит порядка 2 долларов.

Теперь вернемся обратно к микросхеме логики с элементами OR типа 74HC32. Она имеет набор ножек, каждая из которых жестко закреплена за выбранной функцией — это либо вход, либо выход встроенных в микросхему элементов OR.

Имеем 4 логических элемента в одном корпусе, 8 входов, 4 выхода, и 2 вывода для подключения питания/земли. Итого 14 ножек. Ни назначение ножек, ни внутреннюю логику микросхемы поменять нельзя, имеем то что имеем. Теперь давайте сравним с микроконтроллером.

Да, тут тоже входы и выходы, но каждая ножка гибко конфигурируется, и может работать именно так, как Вы захотите — это может быть либо вход, либо выход. Поэтому ножки микроконтроллера называются порты GPIO (general purpose input/output).

Эти ножки GPIO настраиваются программно кодом, который Вы записываете в память микроконтроллера. Это очень крутая возможность! Состояние каждой ножки может отслеживаться, и с ней можно предпринимать любые действия. Пример:

if (PORTC.2 == 1) //то делаем что-нибудь…

Каждую ножку микроконтроллера, настроенную как выход, можно программно переставить либо в логическое состояние 1, либо 0. Пример:

while(1) { RB3 = 1; delay_ms(1000); RB3 = 0; delay_ms(1000); }

Этот код переключает ножку порта из состояния 0 в 1 и обратно каждые 2 секунды.

Выглядит необычно? Этот код считается примером «Hello World» для мира микроконтроллеров, с него новички начинают изучение embedded-программирования.

Пример кажется тривиальным, но когда после долгих часов неудачных попыток Вы рвали на себе волосы, но в результате впервые увидели мигающий светодиод — это просто великолепно!

Подробнее про то, как работать с портами ввода/вывода GPIO микроконтроллера AVR см. [2].

[Какие бывают микроконтроллеры?]

Вот очень краткий обзор разновидностей микроконтроллеров (в реальном мире их намного больше):

PIC. Классические микроконтроллеры от компании Microchip. Очень простые, проверенные, но в них часто отсутствуют многие функции, которые другие производители встраивают в свои микроконтроллеры. С PIC-ами я получил большой опыт, и был в течение долгих лет их несгибаемым поклонником, но потом начал замечать их ограничения и преимущества микроконтроллеров других платформ!

Прим. автора: с мнением автора можно поспорить, конечно. Лично у меня архитектура PIC и его система команд вызывала стойкое отвращение после знакомства с такой замечательной платформой, как 8051.

AVR. Это основной конкурент для PICs. Может делать все, что делает PIC, но лучше, быстрее, дешевле и проще. Короче говоря, больше возможностей и меньше головной боли за те же деньги.

MSP. Очень неплохие микроконтроллеры от компании Texas Instruments (TI), но не столь популярные, как AVR или PIC. Однако они очень хороши для приложений, где важно низкое энергопотребление.

Более подробно постараюсь написать об этом позже, но представьте себе, что можно создать полностью рабочую систему, которая будет работать от одной батарейки AA целых 5 лет. Токи потребления составляют порядка наноампер.

Сумасшествие!

ARM. За этими тремя буквами скрывается очень многое. Даже не знаю, как объяснить… ARM-ы представляют современную архитектуру, и их возможности огромны.

Очень мощные, очень дешевые, они очень быстро завоевывают рынок embedded-приложений, однако сложность этой платформы может испугать новичка, если он раньше не пробовал работать с микроконтроллерами других, более простых платформ.

8051. '8051 core' было долгое время стандартом де-факто для 8-битных микроконтроллеров.

Платформа была разработана Intel в далекие 1980-е, и получила систему команд, которую до сих пор очень любят преподавать в колледжах и ВУЗ-ах. 8051 основывается на архаической, но весьма проверенной временем системе команд.

Как мне кажется, это очень старая технология, однако эти микросхемы были впоследствии значительно улучшены (теперь они тоже снабжены FLASH, имеют ADC, SPI и многое другое).

Прим. автора: с такой низкой оценкой ядра 8051 я не готов согласиться. Долгая жизнь платформы 8051 объясняется отличной сбалансированностью архитектуры, а также логичной и удобной системой CISC-команд ассемблера.

К тому же имелась система приоритетов прерываний, и каждая команда ассемблера выполнялась за строго фиксированный, заранее известный интервал времени. Этим не могут похвастаться большинство популярных в настоящее время микроконтроллеров AVR и ARM, которые пришли на смену микроконтроллерам 8051.

Система команд 8051 по синтаксису была очень похожа на команды 8080 / Z80. Поэтому на 8051 быстро были сделаны компиляторы с ассемблера, и разработчикам было довольно просто перейти с 8080 на 8051.

Кроме того, система команд ассемблера 8051 идеально подходила для создания компилятора C, и поэтому компиляторы C генерировали очень эффективный (по размеру и быстродействию) код. Это позволяло на 4… 8 килобайтах памяти программ легко решать большой спектр задач.

68HC08/11. Еще один популярный набор инструкций, разработанный компанией Motorola. Весьма популярный микроконтроллер, изучить который в университете мне было довольно сложно, поэтому я его люблю ненавидеть =). Оригинальные 68HC08/11 часто испытывали недостаток во встроенной памяти RAM и FLASH.

Источник: http://microsin.net/programming/AVR/beginning-embedded-electronics-part1.html

Обзор микроконтроллеров AVR

AVR — семейство восьмибитных микроконтроллеров компании Atmel. Год разработки — 1996.

Содержание

История создания архитектуры 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 имеют гарвардскую архитектуру (программа и данные находятся в разных адресных пространствах) и систему команд, близкую к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего назначения, объединённых в регистровый файл. В отличие от «идеального» RISC, регистры не абсолютно ортогональны:

  • три «сдвоенных» 16-битных регистра-указателя X (r26:r27), Y (r28:r29) и Z (r30:r31);
  • некоторые команды работают только с регистрами r16..r31;
  • результат умножения (в тех моделях, в которых есть модуль умножения) всегда помещается в r0:r1.

Система команд

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

  • команды логических операций;
  • команды арифметических операций и команды сдвига;
  • команды операции с битами;
  • команды пересылки данных;
  • команды передачи управления;
  • команды управления системой.

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.

Семейства микроконтроллеров

Стандартные семейства:

  • 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 имеют развитую периферию:

  • многофункциональные, двунаправленные GPIO порты ввода/вывода со встроенными подтягивающими резисторами. Конфигурация портов в/в задаётся программно;
  • в качестве источника тактовых импульсов может быть выбран:
    • кварцевый резонатор;
    • внешний тактовый сигнал;
    • внутренний RC-генератор (частота 1, 2, 4, 8 МГц);
  • внутренняя флеш-память команд до 256 KБ (не менее 10 000 циклов перезаписи);
  • отладка программ осуществляется с помощью интерфейсов JTAG или debugWIRE:
    • сигналы JTAG (TMS, TDI, TDO, и TCK) мультиплексированы на порт ввода/вывода. Режим работы — JTAG или порт — задаётся соответствующим битом в регистре fuses. МК AVR поставляются с включённым интерфейсом JTAG;
  • внутренняя 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 может быть изменён только программатором.

AVR-GCCПорт GCC (компилятор) для AVR. Есть возможность интеграции с AVR Studio и Eclipse (AVR Eclipse Plugin).SimulAVRСимулятор ядра микроконтроллера AVRKontrollerLabIDE + работа с RS-232 + отладчик.Code::BlocksIDE.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 StudioIDE + ассемблер + отладчик. Freeware.CodeVisionAVRКомпилятор C и программатор — CVAVR + генератор начального кода.ICC AVRКомпилятор C + генератор начального кода.AtmanAvrКомпилятор C + отладчик + генератор начального кода.IAR AVRIDE 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 (ядро реального времени).

Источники:

Источник: https://radioprog.ru/post/5

Ссылка на основную публикацию