sonyps4.ru

Микропроцессоры avr. Архитектура AVR микроконтроллеров, из чего состоит микроконтроллер

CISC и RISC
По числу команд микропроцессоры подразделяют на CISC (Complex Instruction Set Computer) и RISC (Reduced Instruction Set Computer). Термин CISC обозначает сложную систему команд, RISC - сокращенную.
Идея RISC - это тщательный подбор команд, которые можно было бы выполнить за один такт. Т. о. упрощается аппаратная реализация процессора, сокращается число транзисторов, снижается потребляемая мощность и цена.
Очевидно, что в общем случае одной CISC-команде должны соответствовать несколько RISC-команд. Однако обычно выигрыш в быстродействии у RISC перекрывает потери. Так, самая быстрая команда у 8051 выполняется за 12 тактов. Даже если для каждой CISC-инструкции потребуется выполнить три RISC-инструкции, то в итоге RISC-архитектура будет в 4 раза производительней.
В настоящее время грань между RISC и CISC стирается. Например, AVR имеют 133 команды, что соответствует CISC, но большинство из них выполняется за один такт, что является признаком RISC. Поэтому основным признаком RISC стало принято считать выполнение команд за один такт.


Сердцем микроконтроллеров AVR является 8-битное микропроцессорное ядро или центральное процессорное устройство (ЦПУ), построенное на принципах RISC-архитектуры. Основой этого блока служит арифметико-логическое устройство (АЛУ). По системному тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд (Program Counter - PC) выбирается очередная команда и выполняется АЛУ. Во время выбора команды из памяти программ происходит выполнение предыдущей выбранной команды, что и позволяет достичь быстродействия 1 MIPS на 1 МГц.
АЛУ подключено к регистрам общего назначения РОН (General Purpose Registers - GPR). Регистров общего назначения всего 32, они имеют байтовый формат, то есть каждый из них состоит из восьми бит. РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера.
Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров.
Память

Фоннеймановская и гарвардская архитектура
В 1945 г. американский математик Джон фон Нейман сформулировал основные принципы работы современных компьютеров. Им была предложена архитектура, получившая его имя (von Neumann architecture) и предполагающая хранение программ и данных в общей памяти (1946 г.). Сегодня такая архитектура наиболее характерна для микропроцессоров, ориентированных на использование в компьютерах. Примером могут служить микропроцессоры семейства х86.
Архитектура, предполагающая раздельное использование памяти программ и данных, носит название гарвардской (Harvard architecture). Гарвардская архитектура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность.


В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных (оперативная память и EEPROM) также расположена в своем адресном пространстве.

Память программ (Flash ROM или Flash ПЗУ)

Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-ти битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера - от 1 до 256 КБайт. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации. Программа заносится во Flash-память AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса, в том числе непосредственно на собранной плате. Возможностью внутрисхемного программирования (функция ISP) через коммуникационный интерфейс SPI обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28.
Все микроконтроллеры семейства Mega имеют возможность самопрограммирования, т. е. самостоятельного изменения содержимого своей памяти программ. Эта особенность позволяет создавать на их основе очень гибкие системы, алгоритм работы которых будет меняться самим микроконтроллером в зависимости от каких-либо внутренних условий или внешних событий.
Гарантированное число циклов перезаписи Flash-памяти у микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов при типовом значении 100 тыс. циклов. (В официальной технической документации Atmel Corp. указывается значение 10 тыс. циклов.)

Память данных

Память данных разделена на три части: регистровая память, оперативная память (ОЗУ - оперативное запоминающее устройство или RAM) и энергонезависимая память (ЭСППЗУ или EEPROM).

Регистровая память (РОН и РВВ)

Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.
В области регистров ввода/вывода расположены различные служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами.

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

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы, используется EEPROM-память. Все AVR имеют блок энергонезависимой электрически перезаписываемой памяти данных EEPROM от 64 Байт до 4 КБайт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номеров, ключей и т.п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Число циклов стирание/запись - не менее 100 тыс.

Оперативная память (ОЗУ или RAM)

Внутренняя оперативная статическая память Static RAM (SRAM) имеет байтовый формат и используется для оперативного хранения данных.
Размер оперативной памяти может варьироваться у различных чипов от 64 Байт до 4 КБайт. Число циклов чтения и записи в RAM не ограничено, но при отключении питающего напряжения вся информация теряется.
Для некоторых микроконтроллеров возможна организация подключения внешнего статического ОЗУ объемом до 64К.

Периферия

Периферия микроконтроллеров AVR включает: порты (от 3 до 48 линий ввода и вывода), поддержку внешних прерываний, таймеры-счетчики, сторожевой таймер, аналоговые компараторы, 10-разрядный 8-канальный АЦП, интерфейсы UART, JTAG и SPI, устройство сброса по понижению питания, широтно-импульсные модуляторы.

Порты ввода/вывода (I/O)

Порты ввода/вывода AVR имеют число независимых линий "вход/выход" от 3 до 53. Каждая линия порта может быть запрограммирована на вход или на выход. Мощные выходные драйверы обеспечивают токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения приведены для напряжения питания 5 В).
Архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода (пина) существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.). Это позволяет избежать необходимости иметь копию содержимого порта в памяти для безопасности и повышает скорость работы микроконтроллера при работе с внешними устройствами, особенно в условиях внешних электрических помех.

Прерывания (INTERRUPTS)

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

Таймеры/счетчики (TIMER/COUNTERS)

Микроконтроллеры AVR имеют в своем составе от 1 до 4 таймеров/счетчиков с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника тактовой частоты, и как счетчики внешних событий.
Их можно использовать для точного формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. В режиме ШИМ (PWM) таймер/счетчик может представлять собой широтно-импульсный модулятор и используется для генерирования сигнала с программируемыми частотой и скважностью. Таймеры/счетчики способны вырабатывать запросы прерываний, переключая процессор на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение микроконтроллеры находят в системах реального времени, таймеры/счетчики являются одним из наиболее важных элементов.

Сторожевой таймер (WDT)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Как и для основного внутреннего RC-генератора, значение 1 МГц является приближенным и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры.
Идея использования стоpожевого таймеpа предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не пpоизойдет сбpос пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же микpопpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа скоpее всего не будет выполнена в течение достаточного вpемени и пpоизойдет полный сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.

Аналоговый компаратор (AC)

Аналоговый компаратор (Analog Comparator) сравнивает напряжения на двух выводах (пинах) микроконтроллера. Результатом сравнения будет логическое значение, которое может быть прочитано из программы.
Выход аналогового компаратора можно включить на прерывание от аналогового компаратора. Пользователь может установить срабатывание прерывания по нарастающему или спадающему фронту или по переключению.
Присутствует у всех современных AVR, кроме Mega8515

Аналого-цифровой преобразователь (A/D CONVERTER)

Аналого-цифровой преобразователь (АЦП) служит для получения числового значения напряжения, поданного на его вход. Этот результат сохраняется в регистре данных АЦП. Какой из выводов (пинов) микроконтроллера будет являться входом АЦП, определяется числом, занесенным в соответствующий регистр.

Универсальный последовательный приемопередатчик (UART или USART)

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter - UART или USART) - удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером. (Для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней сигналов. Для этого существуют специальные микросхемы, например MAX232.)

Последовательный периферийный интерфейс SPI

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.
Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.

Двухпроводной последовательный интерфейс TWI

Двухпроводной последовательный интерфейс TWI (Two-wire Serial Interface) является полным аналогом базовой версии интерфейса I2C (двухпроводная двунаправленная шина) фирмы Philips. Этот интерфейс позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала (SCL) и линии данных (SDA).

Интерфейс JTAG

Интерфейс JTAG был разработан группой ведущих специалистов по проблемам тестирования электронных компонентов (Joint Test Action Group) и был зарегистрирован в качестве промышленного стандарта IEEE Std 1149.1-1990. Четырехпроводной интерфейс JTAG используется для тестирования печатных плат, внутрисхемной отладки, программирования микроконтроллеров.
Многие микроконтроллеры семейства Mega имеют совместимый с IEEE Std 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры Mega с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

Тактовый генератор

Тактовый генератор вырабатывает импульсы для синхронизации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера и указывается Atmel в его характеристиках, хотя практически любой AVR-микроконтроллер с заявленной рабочей частотой, например, в 10 МГц при комнатной температуре легко может быть "разогнан" до 12 МГц и выше.

Система реального времени (RTC)

RTC реализована во всех микроконтроллерах Mega и в двух кристаллах "classic" - AT90(L)S8535. Таймер/счетчик RTC имеет отдельный предделитель, который может быть программным способом подключен или к источнику основной тактовой частоты, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два вывода микросхемы. Внутренний осциллятор оптимизирован для работы с внешним "часовым" кварцевым резонатором 32,768 кГц.

Питание

AVR функционируют при напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц,5 ... 6 мА для 5 МГц и 8 ... 9 мА для частоты 12 МГц.
AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления.
Режим холостого хода (IDLE). Прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления не превышает 2,5 мА на частоте 12 МГц.
Стоповый режим (POWER DOWN). Сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном - менее 1 мкА. (Все приведенные значения справедливы для напряжения питания 5 В).
Экономичный режим (POWER SAVE). Продолжает работать только генератор таймера, что обеспечивает сохранность временной базы. Все остальные функции отключены.

Сброс при снижении напряжения питания (BOD)

Схема BOD (Brown-Out Detection$WinAVR = ($_GET["avr"]); if($WinAVR) include($WinAVR);?>) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.

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

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

Проще всего сравнить микроконтроллер с персональным компьютером. Как и ПК, микроконтроллер имеет процессор, оперативную и постоянную память. Однако, в отличие от ПК, все эти элементы расположены на одном-единственном чипе.

Но означает ли это, что микроконтроллер равноценен персональному компьютеру? Разумеется, нет. ПК создан для того, чтобы выполнять задачи общего назначения. Например, вы можете использовать компьютер, для набора текста, хранения и запуска мультимедиа-файлов, серфинга в Интернет, и.т.д. Микроконтроллеры предназначены для выполнения специальных заданий, например, выключения кондиционера, когда температура в комнате опускается ниже определенного значения, или наоборот, его включения, когда температура повышается.

Существует несколько популярных семейств микроконтроллеров, которые используются для различных целей. Наиболее распространенными из них являются семейства микроконтроллеров 8051, PIC и AVR. И о последнем семействе мы и собираемся вам рассказать подробнее.

История семейства

Семейство микроконтроллеров AVR было создано в 1996 г. корпорацией Atmel, а разработчиками архитектуры микроконтроллеров являются Alf-Egil Bogen и Vegard Wollan. Отсюда и происходит название семейства – от первых букв имен разработчиков – A и V, и первой буквы аббревиатуры RISC – типа архитектуры, на которой базируется архитектура микроконтроллера. Также эту аббревиатуру часто расшифровывают как Advanced Virtual RISC (модернизированный эффективный RISC).

Первым микроконтроллером в серии был AT90S8515, однако первым микроконтроллером, выпущенным на рынок, стал AT90S1200. Это случилось в 1997 г.

На сегодняшний день доступны 3 линейки микроконтроллеров:

  • TinyAVR – небольшой объем памяти, небольшие размеры, подходит для самых простых задач.

Внешний вид микроконтроллера TinyAVR

  • MegaAVR – наиболее распространенная линейка, имеющая большой объем встроенной памяти (до 256 КБ), множество дополнительных устройств и предназначенная для задач средней и высокой сложности.

Внешний вид микроконтроллера MegaAVR

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

Пример микроконтроллера XmegaAVR

Сравнительные характеристики различных линеек:

Особенности семейства

Прежде всего, микроконтроллеры этой серии являются быстрыми. Большинство инструкций процессор микроконтроллера выполняет за один цикл. Микроконтроллеры AVR примерно в 4 раза быстрее, чем PIC. Кроме того, они потребляют немного энергии и могут работать в 4 режимах экономии энергии.

Большинство контроллеров AVR являются 8-разрядными, хотя сейчас существует и 32-разрядная разновидность контроллеров AVR32. Кроме того, как уже упоминалось выше, AVR принадлежат к типу RISC-микроконтроллеров. Архитектура RISC (Complex Instruction Set Computers) означает, что набор инструкций, которые может выполнять процессор устройства, является ограниченным, но, в то же время, подобная архитектура дает преимущество в скорости. Противоположностью архитектуры RISC является архитектура CISC (Complex Instruction Set Computers).

32-разрядная разновидность контроллеров AVR32

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

Архитектура контроллера основана на регистрах. Это означает, что для хранения исходных данных операции и ее результата в контроллере используются регистры.

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

Архитектура контроллера

Всего контроллер AVR имеет 32 8-битных регистра общего назначения. В течение цикла процессор берет данные из двух регистров и помещает их в арифметико-логическое устройство (АЛУ), которое производит операцию над данными и помещает их в произвольный регистр. АЛУ может выполнять как арифметические, так и логические действия над операндами. Также АЛУ может выполнять и действия с одним операндом (регистром). При этом контроллер не имеет регистра-аккумулятора, в отличие от контроллеров семейства 8051 – для операций могут использоваться любые регистры, и результат операции также может быть помещен в любой регистр.

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

Котроллер способен выполнять одну инструкцию за цикл. Отсюда следует, что если тактовая частота контроллера составляет 1 МГц, то его производительность составит 1 млн. оп./c. Чем выше тактовая частота контроллера, тем выше будет его скорость. Однако при выборе тактовой частоты контроллера следует соблюдать разумный компромисс между его скоростью и энергопотреблением.

Помимо флэш-памяти и процессора контроллер имеет такие устройства, как , аналого-цифровой преобразователь, таймеры, коммуникационные интерфейсы – I2C, SPI и последовательный порт UART. Все эти устройства могут контролироваться программно.

Типовая архитектура микроконтроллеров AVR

Программы для микроконтроллера

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

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

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

Преимуществом ассемблера является очень быстрый, компактный и эффективный код, но создание таких программ одновременно требует и глубоких знаний работы процессора контроллера, ручного управления памятью и контроля структуры программы. Поэтому зачастую для написания программ используются и языки высокого уровня, такие, как С, Basic и Java. В этом случае задачу по контролю структуры программы и управлению памятью берет на себя компилятор. Кроме того, часто используемые функции могут быть при этом помещены в библиотеки и извлекаться из них по мере надобности.

Заключение

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

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

Итак приступим. Микроконтроллеры AVR реализованы по принципу гарвардской архитектуры - то есть память программ, память данных и шины доступа к ним разделены.
Сделано это было не просто так: такое разделение позволяет, к примеру, одновременно считывать новую ассемблерную инструкцию из памяти программ по одной шине и в тот же момент записывать результат предыдущей команды в память данных микроконтроллера (ОЗУ/УВВ/РОН) по другой. Это "разделение труда” называется конвейером (pipeline) и позволяет выполнять по одной команде за такт.



Память данных (Data Memory) в AVR микрокотроллере

Одна из ключевых составляющих AVR микроконтроллера является 8-битная Шина Данных (8-bit Data Bus), связывающая между собой ОЗУ, счетчик команд, регистр состояния, регистры периферийных устройств а также RALU (Регистры общего назначения+АЛУ) микроконтроллера.

Память данных представляет собой совокупность регистров общего назначения (РОН), регистров ввода/вывода а также статического ОЗУ (SRAM). В AVR имеются несколько наборов ассемблерных команд которые предназначены специально для адресации, к регистрам ввода/вывода (со своим адресным пространством), а также набор команд для адресации через шину данных ко всей области памяти данных (со своим адресным пространством).



При программировании на языке Си, программист может оперировать несколькими типами данных:

char – 8-битная переменная.

int, short – 16-битные переменные.

long, float, double – 32-битные переменные.

а также struct, union

Если мы объявим переменную внутри функции, то есть сделаем ее локальной, то компилятор выделит для нее один или несколько регистров общего назначения. Если в данный момент не хватает РОН, компилятор поместит переменную в оперативную память (точнее в Стек), что в последствии потребует дополнительные такты для считывания переменной из ОЗУ/Стека. Если мы объявим переменную за пределами функции (сделаем ее глабальной) или определим ее как static , то компилятор не раздумывая выделит для нее место в ОЗУ памяти. Так что совет: старайтесь, по возможности, объявлять переменные внутри функций, тем самым предоставив компилятору возможность для выбора наиболее оптимального размещения переменных.

Поскольку AVR, как и большинство 8-битных микроконтроллеров, не умеет (аппаратно) работать с 16-/32-/64-битными переменными, для таких случаев разработаны библиотечные функции, входящие в состав компиляторов высокоуровневых языков, таких как Си.
Эти функции реализуют большое количество разнообразных математических/логических и пр. операций, таких как умножение/деление 16-/32-/64-битных переменных со знаком и без, работа с числами с плавающей запятой, работа со структурами, битовыми полями и т.д. Но как вы понимаете использование переменных данного типа, а значит и связанные с ними функции, приводит к увеличению числа тактов необходимых для чтения/записи а также регистров общего назначения используемых при адресации к таким переменным, а самое главное, хотя и небольшое, но дополнительное место в памяти программ, для хранения этих функций.

Память программ (Flash Program Memory) в AVR микроконтроллерах

Программа микроконтроллера по сути представляет собой один большой массив, каждая ячейка которого содержит одну ассемблерную инструкцию, в свою очередь одна ассемблерная инструкция занимает 2 байта памяти программ. Срок действия памяти программ в AVR микроконтроллерах расчитан на 10000 циклов записи/стирания и может хранить информацию на протяжении 20 лет при температуре в 85°C и до 100 лет при температуре в 25°C.


Регистры процессора AVR микроконтроллера

Регистры, являются "рабочими лошадками” любого микроконтроллера. При помощи регистров передаются/считываются/хронятся/записываются/вычисляются и т.д. значения переменных, адреса переходов и т.п., через регистры производится настройка и управление периферийными устройствами. Основные регистры учавствующие в вычислениях, контроле, настройке и упралении как периферийными устройствами так и всего микроконтроллера являются: регистровый файл общего назначения, регистр состояния, счетчик команд, указатель стека, регистры ввода/вывода.

Регистровый Файл общего назначения (General Purpose Register File ) – регистровый файл состоит из 32 регистров общего назначения. Эти регистры используются в качестве операндов в процесе исполнения команд. При программировании на С, программисту предоставляется возможность оперировать переменными, которые в поледствии будут помещены компилятором в регистровый файл (РОН) или ОЗУ микроконтроллера. То есть некий уровень абстракции. При программировании на ассемблере, программист работает непосредственно с регистрами общего назначения, адресами ОЗУ и т.д.

Регистр состояния (Status Register ) – данный регистр содержит информацию о результате исполнения предыдущей ассемблерной интсрукции. При помощи данного результата, можно менять ход исполнения (ветвление) программы, то есть принимать решения в зависимости от результата предыдущей операции. Арифметические, логические и операции с битами приводят к изменению регистра состояния. Все остальные ассемблерные команды не изменяют поля регистра состаяния.

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

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

Указатель стека (Stack pointer ) – чтобы знать что такое указатель стека, надо знать что такое стек (Stack).


Стек используется в основном для хранения временных данных, таких как локальные переменные (те самые что не помещаются в регистры общего назначения), а также адреса возвратов из подпрограмм/прерываний. Следует отметить, что стек обычно расположен в верхней области ОЗУ, начиная с самой последней ОЗУ ячейки (RAM_END). В нижней ОЗУ, начиная с адреса 0×60 памяти данных, расположены глобальные переменные, массивы данных, константы, область памяти называемая Куча (Heap), используемая для динамического распределения памяти и т.д.

Указатель стека представляет собой два 8-битных регистра, которые всегда указывают на вершину стека, то есть в них хранится адрес последней помещенной в стек переменной. Читать/записывать данные можно только по адресу содержащегося в указателе стека. В то время как "нижняя часть” ОЗУ памяти остается неизменной, стек растет навстречу данным хранящимся в ОЗУ и может случится так, что данные стека перепишут данные ОЗУ. Если такая ситуация произойдет то ход исполнения всей программы будет нарушен и в дальнейшем непредсказуем. Таких ситуаций следует избегать и чтобы их не допустить рекомендуется использовать как можно меньше вложенных функций и временных переменных, а также не тратить попусту ОЗУ, впрочем нехватка оперативки извечная проблема.

Регистры ввода/вывода (I/O registers ) – при помощи регистров ввода/вывода реализуется настройка и упраление периферийными устройствами микроконтроллера. При написании программы, регистрами ввода/вывода можно пользоваться как обычными переменными. У большинства периферийных устройств есть регистр контроля (Control Register), при помощи которого можно настроить режим работы периферийного устройства, а также регистр состояния, при помощи которого можно следить за ходом работы периферийного устройства.

В разделе "Instruction Set Summary ” каждого даташита, можно найти описание всех ассемблерных инструкций, в том числе какие биты регистра состояния (Flags) они могут изменить, за сколько тактов выполняется каждая инструкция (Clocks).



На рис.4 приведены несколько ассемблерных инструкций из которых можно заметить что команды ветвления (Branch instructions) не воздействуют на регистр состояния (кроме команды reti), а также эти инструкции выполняются за большее число тактов чем остальные. Также здесь можно посмотреть как работают счетчик команд (PC) и указатель стека (STACK).

Как было сказано ранее микроконтроллеры AVR представляют собой восьми разрядные RISC-микроконтроллеры с Гарвардской архитектурой и пониженным энергопотреблением. Набор команд, ограниченность которого свойственна RISC-архитектурам тем не менее необычно широк (120 команд), однако при этом сохранено основное преимущество RISC-архитектур повышенное быстродействие и сокращенное число операций обмена с памятью программ. Почти все команды размещаются в одной ячейке программной памяти и выполняются за один такт синхросигнала.Доступ к памяти данных и памяти программ осуществляется по разным шинам (по собственным шинам этих модулей), поэтому можно не только сделать различными разрядности этих шин, но и реализовать параллельное выполнение текущей команды и выборку и дешифрацию следующей.

На рис. 2.6 представлена структурная схема микроконтроллера АТ90S8515. Многие блоки по назначению аналогичны рассмотренным ранее блокам микроконтроллера и имеют такое же назначение. В памяти ЭСППЗУ (EEPROM) хранятся редко изменяемые данные (калибровочные константы и т. п.), Указатель стека используется для организации стека в некоторой области памяти Аппаратного Стека (SRAM). Микроконтроллер имеет 32 программно доступных регистра общего назначения (РОН), которые объединены в регистровый файл. В отличие от ранее

рассмотренного микроконтроллера здесь АЛУ способно выполнять операции над содержимым любой пары РОН, т. е. все регистры непосредственно доступны для АЛУ и регистр – аккумулятор не требуется. Регистр состояния аналогичен рассмотренному ранее регистру PSW и выполняет те же функции.

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

Последовательный SPI (Serial Peripheral Interface) периферийный канал применяется как для программирования микроконтроллера в последовательном режиме, так и для обмена данными с периферийными устройствами или между микроконтроллерами, если они работают в системе. Протокол обмена для SPI предусматривает работу в режиме либо ведущего (master), либо ведомого (slave).

Асинхронный последовательный интерфейс между микроконтроллером и внешними устройствами обеспечивается рассмотренным ранее блоком UART.

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


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

Рис. 2.6. Структурная схема микроконтроллера AVR

Организация памяти и функционирование микроконтроллера AVR.

Согласно Гарвардской архитектуре, адресные пространства (АП) для памяти программ и памяти данных разделены. Память данных организована линейно и имеет два адресных пространства. В первом находятся адреса регистровой памяти и адреса статического ЗУ (SRAM). Во втором размещены адреса энергонезависимой

репрограммируемой памяти (EEPROM). Кроме того, возможно подключение к микроконтроллеру внешнего ОЗУ, для которого шины адреса и мультитиплексируемая шина адресов/данных организуется с помощью портов ввода/вывода РА и РС . Линии этих портов формируют 16-разрядные адреса для работы с внешней памятью больших объемов.

Распределение адресного пространства иллюстрируется рис. 2.7.

В регистровой области памяти размещены адреса регистров общего назначения РОН (32 адреса) и регистров ввода/вывода РВВ (64 адреса для адресации 64 байтов памяти). Соответственно общая емкость регистровой памяти составляет 96 байтов. Для адресов статической памяти отведены следующие 512 адресов. Подключение внешнего ОЗУ, как уже отмечалось, может довести емкость до 64 Кбайт. Обращение к внешнему ОЗУ увеличивает время выполнения команды на 1-2 такта для каждого обрабатываемого байта.

В пространстве РВВ размещаются операнды, служебные регистры микроконтроллера и регистры, относящиеся к внешним устройствам. В их числе 12 регистров для работы с портами ввода/вывода (для каждого порта предусмотрены регистр данных, регистр направления данных и регистр выводов. Имеется также регистр – указатель стека.

Энергонезависимая память EEPROM, рассчитана на хранение редко изменяемых данных и имеет длительные операции записи, отличающиеся особым алгоритмом. Доступ к ней производится посредством трех регистров РВВ.

Программы, хранятся во флэш-памяти, а ее разрядность соответствует формату команд и составляет два байта.

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

информации и непосредственного подключения АЛУ ко всем РОН. В нормальном режиме работы конвейера параллельно выполнению текущей команды происходит выборка и декодирование следующей. При нарушении последовательного

следования команд, например при появлении команды условного перехода, в работе конвейера возникает разрыв и время выполнения команды увеличивается до 2-4 тактов.

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

Рис. 2.6. Адресные пространства микроконтроллера AVR

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

Все множество команд, выполняемых микроконтроллером, можно разбить на следующие группы:

● команды пересылки данных;

● команды арифметических сдвигов;

● команды логических операций;

● команды операций с битами;

● команды передачи управления;

● команды управления системой.

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

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

AVR микроконтроллер изнутри

Микроконтроллер изнутри - это компьютер со своим вычислительным устройством, постоянной и динамической памятью, портами ввода-вывода и разной периферией.

Рис. 1. Структура AVR микроконтроллера. Рисунок с сайта digikey.com

Внутри микроконтроллер содержит:

  • Быстродействующий процессор с RISC-архитектурой;
  • FLASH-память;
  • EEPROM-память;
  • Оперативную память RAM;
  • Порты ввода/вывода;
  • Периферийные и интерфейсные модули.

RISC (Reduced Instruction Set Computer) - архитектура с тщательно подобранным набором команд, которые как правило выполняются за один такт работы процессора. Современные AVR микроконтроллеры содержат около 130 команд, которые очень быстро выполняются и не требуют больших затрат как по внутри-процессорным ресурсам, так и по потребляемой мощности.

Структурная схема AVR микроконтроллера

Посмотрим на рисунок ниже и разберемся из каких блоков состоит микроконтроллер и как они связаны между собою:

Рис. 2. Структурная схема AVR микроконтроллера.

Рассмотрим кратко что изображено на блоках в схеме:

  • JTAG Interface (Joint Test Action Group Interface) - интерфейс внутрисхемной отладки (4 провода);
  • FLASH - перепрограммируемая память для сохранения программы;
  • Serial Peripheral Interface, SPI - последовательный периферийный интерфейс (3 провода);
  • EEPROM (Electrically Erasable Programmable Read-Only Memory) - перепрограммируемое ПЗУ, энергонезависимая память;
  • CPU (ЦПУ) - центральный процессор управления, сердце микроконтроллера, 8-битное микропроцессорное ядро;
  • ALU (АЛУ) - арифметико-логическое устройство, основа блока CPU;
  • RAM (Random Access Memory) - оперативная память процессора;
  • Program Counter - счетчик команд;
  • 32 General Purpose Registers - 32 регистра общего назначения;
  • Instruction Register - регистр команд, инструкций;
  • Instruction Decoder - декодер команд;
  • OCD (On-Chip Debugger) - блок внутренней отладки;
  • Analog Comparator - аналоговый компаратор, блок сравнения аналоговых сигналов;
  • A/D Converter (Analog/Digital converter) - аналогово-цифровой преобразователь;
  • LCD Interface (Liquid-Crystal Display Interface) - интерфейс для подключения жидко-кристаллического дисплея, индикатора;
  • USART (Universal Asynchronous Receiver-Transmitter), UART - универсальный асинхронный приемопередатчик;
  • TWI (Two-Wire serial Interface) - последовательный интерфейс с двухпроводным подключением;
  • Watchdog Timer - сторожевой или контрольный таймер;
  • I/O Ports - порты вода/вывода;
  • Interrupts - блок управления и реакции на прерывания;
  • Timers/Counters - модули таймеров и счетчиков.

Подробнее о внутренних блоках микроконтроллера

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

JTAG Interface - важный интерфейс который позволяет производить внутреннюю отладку прямо в чипе используя блок внутренней отладки (OCD ), без использования эмуляторов. Можно сказать что JTAG - это интерфейс для "железной" отладки микроконтроллера. Через JTAG-адаптер микросхема напрямую подключается к программному комплексу для программирования и отладки.

Используя данный интерфейс можно в пошаговом режиме выполнять программу прямо в микроконтроллере, смотреть как изменяется содержимое регистров, как мигают индикаторы и светодиоды что подключены к микроконтроллеру после каждого шага и т.п. Для подключения к JTAG интерфейсу достаточно 4-х проводников: TDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS (Test Mode Select).

JTAG интерфейс доступен далеко не во всех микроконтроллерах AVR, как правило таким вкусным дополнением обладают чипы у которых 40 и более лапок, а объем памяти доступен в размере не менее 16КБ. Для серьезных задач - серьезные материалы и инструменты.)

FLASH - память программ, энергонезависимое ПЗУ(постоянное запоминающее устройство) что выполнено по технологии FLASH. Здесь хранится программа, которая будет исполняться блоком ALU микроконтроллера. Флешь-память чипа можно многократно перезаписывать, тем самым меняя или дополняя программный код для выполнения. Данный тип памяти может сохранять записанные в нее данные в течение 40 лет, а количество возможных циклов стирания/записи может достигать 10000.

В зависимости от модели микроконтроллера размер FLASH-памяти может достигать 256 KБ.

Serial Peripheral Interface, SPI - последовательный периферийный интерфейс (SPI) который зачастую применяется для обмена данными между несколькими микроконтроллерами со скоростью до нескольких MГц (нескольких миллионов тактов в секунду).

Для обмена данными по SPI интерфейсу между двумя устройствами достаточно 3-х проводников:

  1. MOSI (Master Output Slave Input) - Данные от ведущего к ведомому;
  2. MISO (Master Input Slave Output) - Данные от ведомого к ведущему;
  3. CLK (Clock) — тактовый сигнал.

Устройства с SPI-интерфейсом делятся на два типа: ведущий(Master) и ведомый(Slave). Если к интерфейсу подключено несколько устройств то для обмена данными между ними нужны дополнительные линии связи(проводники) чтобы мастеру можно было выбрать ведомое устройство и сделать запрос к нему.

Также SPI интерфейс используется для внутрисхемного SPI программирования, по этому интерфейсу к микроконтроллеру подключается программатор.

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

Для EEPROM выделено отдельное адресное пространство которое отличается от адресного пространства RAM и FLASH. Память EEPROM микроконтроллера - очень ценный ресурс, поскольку ее как правило очень мало - от 0,5 до нескольких килобайт на чип. Количество перезаписей для данного типа памяти составляет порядка 100000 что в 10 раз больше чем ресурс FLASH памяти.

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

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

  • внутренний RC-генератор, который можно калибровать на нужную частоту;
  • керамический или кварцевый резонатор с конденсаторами (не у всех моделей);
  • внешний тактовый сигнал.

Установка источника тактовых импульсов производится при помощи FUSE-битов.

FUSES (с англ.: плавление, пробка, предохранитель) - специальные 4 байта(4*8=32 бит) данных, которые настраивают некоторые глобальные параметры микроконтроллера в процессе прошивки. После прошивки данные биты нельзя изменить через внутреннюю программу что записана в МК.

Данной конфигурацией бит мы указываем микроконтроллеру вот что:

  • какой использовать задающий генератор (внешний или внутренний);
  • делить частоту генератора на коэффициент или нет;
  • использовать ножку сброса (RESET) для сброса или же как дополнительный пин ввода-вывода;
  • количество памяти для загрузчика;
  • другие настройки зависимо от используемого микроконтроллера.

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

К ALU подключен блок из 32-х регистров общего назначения (32 General Purpose Registers - регистровая память), каждый из которых представляет собою 1 байт памяти (8 бит). Адресное пространство регистров общего назначения размещено в начале оперативной памяти (RAM) но не является ее частью. С данными что помещаются в регистры можно производить разнообразные арифметические, логические и битовые операции. Выполнение подобных операций в оперативной памяти не доступно. Для работы с данными из RAM нужно их записать в регистры, произвести в регистрах нужные операции, а потом записать результирующие данные из регистров в память или в другие регистры для выполнения каких-то действий.

RAM - оперативная память. В нее можно записывать данные из регистров, считывать данные в регистры, все операции с данными и расчеты производятся в регистрах. Для разных семейств AVR чипов размер оперативной памяти ограничен:

  • ATxmega - до 32 KБ;
  • ATmega - 16 Кб;
  • ATtiny - 1 Кб.

Analog Comparator - данный блок сравнивает между собою два уровня сигнала и запоминает результат сравнения в определенном регистре, после чего сданный результат можно проанализировать и выполнить необходимые действия. Для примера: можно использовать этот блок как АЦП(Аналогово-Цифровой Преобразователь) и измерять напряжение батареи питания, в случае если если напряжение батареи достигло низкого уровня - произвести некоторые действия, помигать красным светодиодом и т.п. Также данный модуль можно применять для измерения длительности аналоговых сигналов, считывания установленных режимов работы устройства при помощи потенциометра и т.п.

A/D Converter - данный блок преобразовывает аналоговое значение напряжения в цифровое значение, с которым можно работать в программе и на основе которого можно выполнять определенные действия. Как правило диапазон напряжений что подаются на вход АЦП в AVR микроконтроллере находится в пределах 0-5,5 Вольт. Для данного блока очень важно чтобы микроконтроллер питался от стабильного и качественного источника питания. Во многих AVR микроконтроллерах есть специальный отдельный вывод для подачи стабильного питания на схему АЦП.

LCD Interface - интерфейс для подключения жидкокристаллического индикатора или дисплея. Применятся для отображения информации, состояния устройства и его узлов.

USART - последовательный асинхронный интерфейс для обмена данными с другими устройствами. Есть поддержка протокола RS-232, благодаря чему микроконтроллер можно соединить для обмена данными с компьютером.

Для подобной связи МК с COM-портом компьютера нужен конвертер логических уровней напряжения (+12В для COM - в +5В для микроконтроллера), или же просто RS232-TTL. Для подобных целей используют микросхемы MAX232 и им подобные.

Для подключения микроконтроллера к компьютеру через USB используя UART-интерфейс можно использовать специализированную микросхему FT232RL. Таким образом на новых компьютерах и ноутбуках можно не имея физического COM-порта привязать микроконтроллер используя USB-порт через USART интерфейс.

TWI - интерфейс для обмена данными по двухпроводной шине. К такой шине данных можно подключить до 128 различных устройств, используя две линии данных: тактовый сигнал (SCL) и сигнал данных (SDA). Интерфейс TWI является аналогом базовой версии интерфейса I2C.

В отличие от SPI интерфейса (один мастер и один/несколько ведомых) интерфейс TWI - двунаправленный, сто позволяет организовать между несколькими микроконтроллерами небольшую внутреннюю сеть.

Watchdog Timer представляет собою систему контроля зависания устройства с последующим его перезапуском. Это как автоматическая кнопка RESET для старенького компьютера с глючной ОС.))

I/O Ports , GPIO - это набор блоков портов ввода/вывода к пинам которых можно подключить разнообразные датчики, исполняющие устройства и цепи. Количество пинов вход/выход, что идут от портов в микроконтроллере, может быть от 3 до 86.

Выходные драйверы в портах AVR микроконтроллера позволяют напрямую подключать нагрузку з потребляемым током 20 мА(максимум 40 мА) при напряжении питания 5В. Общий нагрузочный ток для одного порта не должен превышать значение в 80 мА (например на 4 пина для одного из портов повесить по светодиоду с током 15-20 мА).

Interrupts - это блок который отвечает за реакцию и запуск на выполнение определенных функций при поступлении сигнала на определенные входы микроконтроллера или же по какому-то внутреннему событию (например тиканью таймера). Под каждое прерывание разрабатывается и записывается в память отдельная подпрограмма.

Почему этот блок называется блоком прерываний? - потому что при возникновении определенного для прерывания события выполнение основной программы прерывается и происходит приоритетное выполнение подпрограммы что написана для текущего прерывания. По завершению выполнения подпрограммы происходит возвращение к выполнению основной программы с того момента где она была прервана.

Timers/Counters - набор таймеров и счетчиков. Микроконтроллер, как правило, содержит в себе от одного до четырех таймеров и счетчиков. Они могут применяться для подсчета количества внешних событий, формирования сигналов определенной длительности, вырабатывать запросы на прерывания и т.п. Разрядность таймеров и счетчиков составляет - 8 и 16 бит (смотреть в даташите для чипа).

Заключение

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

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



Загрузка...