Пятница, 19.04.2024, 01:25
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Общие сведения
В данной статье я постараюсь в общих чертах описать строение AVR микроконтроллера, главные характеристики, что "у него у нутре"©, что нужно для начала работы с AVR микроконтроллерами и т.д.

Что такое Tiny, Mega?

Компания Atmel выпускает обширную линейку восьмибитных микроконтроллеров на базе AVR ядра, разбитые на несколько подсемейств, различающиеся по техническим характеристикам, области применения, цене :

  • ATtiny – семейство AVR микроконтроллеров оптимизированных для приложений, требующих относительно большой производительности (до 1.0 MIPS и способны работать на частотах до 20.0 МГц), энергоэффективности (ATtiny единственное семейство способное работать от 0,7В напряжения питания!) и компактности (есть микроконтроллеры в SOT23-6 корпусе – всего 6 пин, и при этом каждый пин обладает несколькими функциями, к примеру: порт ввода/вывода, вход АЦП, вывод ШИМ и т.д.). Отсюда вырисовывается и область их применения : устройства критичные к цене, энергопотреблению, габаритам и т.д.
  • ATmega – семейство AVR микроконтроллеров предназначенных для использования в самых разнообразных областях, благодаря очеь большому набору периферийных устройств, большому объему памяти програм, портов ввода/вывода и пр. Одним словом – есть где развернутся.
  • ATxmega – новое семейство AVR микроконтроллеров с еще большим набором периферийных устройств чем у ATmega (добавилось устройство прямого доступа к памяти, ЦАП, CRC-модуль, полноценный USB интерфейс, более быстрый АЦП и др.), с рабочими частотами до 32.0МГц.
Все вышеперечисленные семейства имеют единую архитектуру (что позволяет с легкостью переносить код с одного микроконтроллера на другой), выпускаются как в DIP, так и SMD упаковках (каждая со своими плюсами и минусами).

Как выглядят AVR микроконтроллеры?


ATMega8 в DIP-корпусе

AVR микроконтроллеры, как и любые другие интегральные схемы, для большей сохранности упаковывается производителем в герметичный корпус, во избежание физического/химического или любого другого контакта с внешним миром. Единственно возможный способ воздействовать/управлять микроконтроллером являются металические проводки соединенные с различными внутренними устройствами микроконтроллера и ему подчиняющиеся. Эти проводки называют – "выводами/контактами”, а на радиолюбительском жаргоне их еще именуют – "ножками”. Через эти выводы в микроконтроллер подается питающие напряжения и токи, тактирующие сигналы, а самое главное подаются/считываются различные аналоговые и цифровые сигналы, для их последующей обработки.

Самые популярными упаковочными корпусами являются :

  • DIP (Dual Inline Package) — корпус с двумя рядами контактов
  • QFP (Quad Flat Package) — плоский корпус с четырьмя рядами контактов
  • SOIC (Small-Outline Integrated Circuit) – малогабаритные (малая площадь) интегральные схемы
Большинство радиолюбителей, небольшие фирмы и т.д. уделяют особое внимание микроконтроллерам в DIP корпусе, так как с ними очень легко работать, благодаря большому шагу между выводами, что очень удобно при пайке, возможности подключать микроконтроллер к плате через специальный разъем (панелька/кроватка) – для снижения риска повреждения компонента при пайке. Также при помощи микроконтроллеров в DIP-корпусе легко и быстро собрать макет будующего устройства, произвести его тестирование и отладку.

Питание и тактирование

Начнем с того что AVR микроконтроллеры построены по технологии КМОП (CMOS), что обеспечивает очень малое энергопотребление. Практически, энергопотребление линейно и прямо пропорционально зависит от рабочей частоты (чем выше частота – тем выше энергопотребление).



Напряжение питания для AVR микроконтроллеров находится в диапазоне от 2.7 до 5.5В (6.0В – максимум, хотя у меня AVR’ка как-то работала и при 7В – и ничего, жива и по сей день). Это означает что AVR может напрямую управлять, обмениваться данными и т.д. с различными устройствами (как 3.3В-толерантными так и 5В-толерантными) без необходимости применять какие-либо преобразователи логических уровней. Для более точной обработки аналоговых сигналов, в AVR предусмотренно отдельные выводы для питания аналоговой части микроконтроллера, в которую входят такие устройства как АЦП, ЦАП, Аналоговый компаратор. В добавок, AVR микроконтроллеры обладают несколькими "спящими режимами” (Sleep modes), для обеспечения наилучшего энергосбережения.

Также каждый пин микроконтроллера (в зависимости от рабочей частоты и напряжения питания) может питать внешние устройства током до 40.0 мА (максимум!), но всего из микроконтроллера можно "закачать/выкачать” до 200.0 мА (максимум!).

Диапазон частот тактирующих сигналов отличается в зависимости от "семейного старшинства” (ATtiny является самым младшим семейством AVR микроконтроллеров, а ATxMega самым старшим). У некоторых представителей, в особенности ATtiny семейства, рабочая частота может достигать 20.0МГц, у ATmega она не превышает 16.0МГц, а у ATxMega она не превышает 32.0МГц. Также в каждом AVR микроконтроллере есть внутрений RC-генератор до 8.0МГц, что позволяет обойтись без внешнего источника тактирующего сигнала.

Atmel выпускает микроконтроллеры с максимальными рабочами частотами в два раза ниже стандартных (для повышения энергосбережения), так что следует обращать внимание на кодировку микроконтроллеров при их покупке. Подробную информацию о том какой микроконтроллер на каких частотах и напряжениях питания работает, какие бывают кодировки, упаковки для данного микроконтроллера и т.д. можно найти в разделе "Ordering Information” каждого даташита.

Ниже в качестве примера приведена таблица из даташита на микроконтроллер ATtiny13. В столбце "Ordering Code” видны различия между кодировками и не трудно догадаться с чем они связаны.



А что у AVR внутри?

Как я уже говорил в предисловии, микроконтроллеры AVR имеют гарвардскую архитектуру (главная характеристика такой архитектуры является то что память программ и оперативная память, как и шины доступа к ним, разделены для повышения скорости выполнения команд : пока одна команда выполняется, следующая извлекается из памяти программ) с RISC процессором, с быстродействием в 1.0 MIPS. Во всех микроконтроллерах, независимо от их модели и компоновки, одно и тоже центральное процессорное устройство (процессор/ядро). Единое ядро, делает написанную на любом языке программу более универсальной и при желании можно заменить в любом из проектов, скажем, более дорогой контроллер на другой по дешевле, с минимальными изменениями в коде.

RISC (Reduced Instruction Set Computer) – процессор с набором простых ассемблерных команд (прибавить, отнять, сдвиг влево/вправо, "логическое И”, и т.д.), все команды имеют фиксированную длину, в составе процессора находятся большое количество регистров общего назначения, и т.д. Чтобы, к примеру, расчитать какое-нибудь среднее математическое уровнение, процессору придется выполнить несколько простых ассемблерных команд, в отличии от CISC-процессора у которого есть команды "на все случаи жизни". Но у AVR не совсем RISC-процессор, поскольку не все ассемблерные команды имеют фиксированный формат. Большинство имеют 16-разрядный формат, остальные 32-разрядные. Это означает что каждая команда занимает в памяти программ 16 или 32 бита. Кстати, нефиксированная длина ассемблерных команд и делает его процессор: Advanced Virtual RISC-процессором (AVR).

MIPS (Million Instructions Per Second) – AVR микроконтроллеры способны выполнять (приблизительно) миллион команд на частоте 1.0 МГц, или проще говоря, большинство ассемблерных команд выполняются за один период тактирующего сигнала.


Архитектура процессора AVR

Мозгами AVR микроконтроллера является его центральное процессорное устройство (процессор/ядро).

Некоторые составляющие процессора :

Арифметико-логическое устройство (Arithmetic Logic Unit)
Счетчик команд (Program counter)
Указатель стека (Stack Pointer)
  • Регистр состояния (Status Register)
  • Память программ (Flash Program memory)
  • Память данных (Data memory)

Регистры общего назначения (General Purpose Registers)
Регистры периферийных устройств (I/O Registers)
Оперативная память (SRAM memory)
Система тактирования (Clock System). Данную систему можно сравнить с сердечно-сосудистой системой
Модуль обработки прерываний (Interrupt Unit)

Периферийные устройства, перечислю некоторые из них :

Порты ввода/вывода
EEPROM память
USB (только в xMega), USART, I2C, SPI, JTAG интерфейсы
Сторожевой таймер, Таймер/Счетчик (с функцией ШИМ генератора, захвата/сравнения и т.д.)
АЦП, ЦАП (только в xMega), Аналоговый компаратор
Модули внешнего прерывания (External Interrupts)

Набор периферийных устройств в различных семействах (Tiny, Mega и xMega) и различных микроконтроллеров данных семейств отличается. Есть микроконтроллеры набитые "по самое немагу” различными периферийными устройствами, но также, для разработок критичных к стоимости, имеются и микроконтроллеры с малым (нужным) набором периферии.

Одним из плюсов AVR микроконтроллеров является возможность использования периферийных устройств в различных совместных режимах работы, что очень часто упрощает задачу разработчика. Также в AVR встроенна система сброса и отслеживания уровня питаниющего напряжения (System Control and Reset), обеспечивающая нормальный старт микроконтроллера и в случае необходимости, надежное завершение работы.

Регистры управления/состояния периферийных устройств находятся в области памяти данных (Data memory), между регистрами общего назначения и оперативной памятью, что обеспечивает высокое быстродействие в работе с периферией. Разработчик, естественно, имеет полный доступ к данным регистрам (I/O Registers).

Что необходимо чтобы заработал микроконтроллер?

Здесь вырисовываются три базовых направления :

  • написать программу (программирование). Для того чтобы написать программу/алгоритм по которому будет действовать микроконтроллер вам понадобится интегрированная среда разработки для AVR микроконтроллеров, в состав которой входит редактор кода/текста, компилятор, компоновщик (linker) и пр. утилиты. О работе компилятора и линкера будет отдельная статья. Среда разработки позволяет сэкономить уйму времени и сил в процессе создания проложения. Список популярных сред для AVR микроконтроллеров я приводил в прошлой статье, а также на странице Ссылки.

  • схемотехника. Одной лишь программы недостаточно чтобы микроконтроллер заработал, ему также требуется минимальный обвес (набор внешних электронных устройств), для обеспечения микроконтроллера напряжением питания и тактирующим сигналом, чтобы как минимум заработало ядро микроконтроллера. На следующем рисунке показан "классический” обвес микроконтроллера, необходимый для нормальной работы.

"Классические" схемотехнические требования

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

- Кварц и конденсаторы C1,C2 (по 22пФ) обеспечивают микроконтроллер и все его периферийные устройства качественным тактирующим сигналом (максимальная частота – 16.0МГц).
Резистор R1 (10К), обеспечивает высокий уровень на входе RESET, необходимый для стабильной работы микроконтроллера. Если, во время работы микроконтроллера, напряжение на этом пине упадет ниже определенного уровня, то произойдет сброс микроконтроллера и возможно нарушение работы задуманного алгоритма.
- ISP connector используется для внутрисхемного программирования, тоесть необходим для записи написанной вами программы в память микроконтроллера прямо на плате (не вынимая микроконтроллер из устройства).
- Дроссель L1 и конденсаторы C3,C4 обеспечивают напряжением питания аналоговые периферийные устройства а также некоторые регистры портов ввода/вывода. Если у микроконтроллера отсутствует аналоговая часть, соответственно, отсутствуют и пины аналогового питания, как результат – данные компоненты не нужны.
- Конденсатор C5 обеспечивает развязку межды пином питания и землей микроконтроллера. Земли микроконтроллера следует соединить вместе (GND и AGND).

  • программатор. Устройство для записи откомпилированной программы (прошивки) в память микроконтроллера. Самый часто-используемый метод записи прошивки в память микроконтроллера является метод ISP (In-System Programming), для чего и нужен ISP connector. Также весьма популярными методами записи прошивки в память микроконтроллера являются HVP (High-Voltage Programming) и запись прошивки через JTAG-интерфейс.
Приведенная выше требования к обвязке микроконтроллера могут быть урезанны до "абсолютного” минимума


"Абсолютные" схемотехнические требования
Как видно из приведенного рисунка, чтобы запустить AVR микроконтроллер, во первых, следует подать напряжение питания (плюс развязывающий конденсатор – на всякий пожарный), а во вторых – удерживать "высокий уровень” на пине RESET (при помощи подтягивающего резистора), чтобы избежать спонтанных сбросов микроконтроллера. Последствия такой обвязки микроконтроллера следующие : во первых, поскольку микроконтроллер был лишен внешнего тактирования, ему следует указать что тактирование будет происходить от внутреннего RC-генератора, установив соответствующие фьюз биты (своего рода предельные эксплуатационные параметры микроконтроллера). Максимальная частота внутреннего генератора равна 8.0 МГц, а это означает что микроконтроллер не сможет работать на своей максимальной частоте (производительности). Во вторых аналоговая часть микроконтроллера, а также некоторые регистры портов ввода/вывода, лишены источника питания, что исключает их использование. В третьих, чтобы записать прошивку в память микроконтроллера придется вынимать его из устройства, где-то производить запись, после чего возвращать его на место. Как вы сами понимаете это не очень удобно (вынимать/вставлять, припаивать/отпаивать), и может привесть к повреждению как самого микроконтроллера (могут поломаться ножки, перегреться от пайки и т.п.), так и близлежащих устройств – разъем, дорожки на плате и т.п.
Категория: Изучаем AVR | Добавил: Alex (28.12.2013)
Просмотров: 3533 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024