Принцип работы микроконтроллера для чайника. Микроконтроллеры Применение микроконтроллеров

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

Итак, микроконтроллер это небольшая микросхема, на кристалле которой собран настоящий микрокомпьютер! Это означает, что внутри одной микросхемы смонтировали процессор, память (ПЗУ и ОЗУ), периферийные устройства, заставили их работать и взаимодействовать между собой и внешним миром с помощью специальной микропрограммы, которая храниться внутри микроконтроллера.

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

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

Так выглядят современные микроконтроллеры.

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

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

Арифметико-логическое устройство (АЛУ) – предназначено для выполнения арифметических и логических операций, на самом деле в совокупности с регистрами общего назначения АЛУ выполняет функции процессора.

Оперативно – запоминающее устройство (ОЗУ) – предназначено для временного хранения данных при работе микроконтроллера.

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

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

Микроконтроллер в своем составе может иметь и другие вспомогательные элементы.

Аналоговый компаратор – предназначен для сравнения двух аналоговых сигналов на его входах

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

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

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

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

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

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

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

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

Видеокурс "Программирование микроконтроллеров для начинающих" более 70 часов качественного видео.

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

AVR - это название популярного семейства микроконтроллеров, которое выпускает компания Atmel . Кроме АВР под этим брендом выпускаются и других архитектур, например, ARM и i8051.

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

Существует три вида микроконтроллеров:

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

Микроконтроллеры AVR 8-bit в свою очередь делятся на два популярных семейства:

    Attiny - из названия видно, что младшее (tiny - юный, молодой, младший), в основном имеют от 8 пинов и более. Объём их памяти и функционал обычно скромнее, чем в следующем;

    Atmega - более продвинутые микроконтроллеры, имеют большее количество памяти, выводов и различных функциональных узлов;

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

Расшифровка: Пин (англ. pin - иголка, булавка) - это вывод микроконтроллера или как говорят в народе - ножка. Отсюда же слово «распиновка» - т.е. информация о назначении каждой из ножек.

Для чего нужны и на что способны микроконтроллеры?

Микроконтроллеры применяются почти везде! Практически каждое устройство в 21 веке работает на микроконтроллере: измерительные приборы, инструменты, бытовая техника, часы, игрушки, музыкальные шкатулки и открытки, а также многое другое; одно лишь перечисление займет несколько страниц текста.

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

В распространенных AVR-микроконтроллерах, например, Atmega328 , который на 2017 году является сердцем многих плат Arduino , но о них позже. Используется 8 канальный АЦП , с разрядностью 10 бит . Это значит вы сможете считать значение с 8 аналоговых датчиков. А к цифровым выводам подключаются цифровые датчики, что может быть очевидным. Однако цифровой сигнал может являться только 1 (единицей) или 0 (нулем), в то время как аналоговый может принимать бесконечное множество значений.

Пояснение:

Разрядность - это величина, которая характеризует качество, точность и чувствительность аналогового входа. Звучит не совсем понятно. Немного практики: 10 битный АЦП, записать аналоговую информацию с порта в 10 битах памяти, иначе говоря плавно изменяющийся цифровой сигнал микроконтроллером распознается как числовое значение от 0 до 1024.

12 битный АЦП видит тот же сигнал, но с более высокой точностью - в виде от 0 до 4096, а это значит, что измеренные значения входного сигнала будут в 4 раза точнее. Чтобы понять откуда взялись 1024 и 4096, просто возведите 2 в степени равную разрядности АЦП (2 в степени 10, для 10 разрядного и т.д.)

Чтобы управлять мощностью нагрузки к вашему распоряжению есть ШИМ-каналы, их можно задействовать, например, для регулировки яркости, температуры, или оборотов двигателя. В том же 328 контроллере их 6.

В общем структура AVR микроконтроллера изображена на схеме:

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

    АЛУ - арифметико-логическое устройство. Нужно для выполнения вычислении.

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

    Прерывания - что-то вроде события которое возникает по внутренним или внешним воздействиям на микроконтроллер - переполнение таймера, внешнее прерывание с пина МК и т.д.

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

    Flash, ОЗУ, EEPROM - виды памяти - программ, временных рабочих данных, долгосрочного хранения независимая от подачи питания к микроконтроллеру соответственно порядку в названиях.

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

    A/D (Analog/Digital) - АЦП, его назначение мы уже описали ранее.

    WatchDogTime (Сторожевой таймер) - независимый от микроконтроллера и даже его тактового генератора RC-генератор, который отсчитывает определенный промежуток времени и формирует сигнал сброса МК, если тот работал, и пробуждения - если тот был в режиме сна (энергосбережния). Его работу можно запретить, установив бит WDTE в 0.

Выходы микроконтроллера довольно слабые, имеется в виду то, что ток через них обычно до 20-40 миллиампер, чего хватит для розжига светодиода и LED-индикаторов. Для более мощной нагрузки - необходимы усилители тока или напряжения, например, те же транзисторы.

Что нужно чтобы начать изучение микроконтроллеров?

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

Следующее что Вам нужно - программатор . Он нужен для загрузки прошивки в память МК, самым дешевым и популярным считается USBASP .

Немногим дороже, но не менее распространенный программатор AVRISP MKII , который можно сделать своими руками - из обычной платы Arduino

Другой вариант - прошивать их через USB-UART переходник, который обычно делается на одном из преобразователей: FT232RL, CH340, PL2303 и CP2102.

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

Одно лишь «но» - в память микроконтроллера предварительно нужно загрузить UART бутлоадер. Разумеется, для этого все равно нужен программатор для AVR-микроконтроллеров.

Интересно: Bootloader - это обычная программа для микроконтроллера, только с необычной задачей - после его запуска (подключения к питания) он ожидает какое-то время, что в него могут загрузить прошивку. Преимуществом такого метода - можно прошить любым USB-UART переходником, а они очень дешевы. Недостаток - долго загружается прошивка.

Для работы UART (RS-232) интерфейса в микроконтроллерах AVR выделен целый регистр UDR (UART data register) . UCSRA (настройки битов приемопередатчика RX, TX), UCSRB и UCSRС - набор регистров отвечающие за настройки интерфейса в целом.

В чем можно писать программы?

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

Официальным IDE от Atmel является AVR Studio, которая на 6 версии была переименована в Atmel studio. Она поддерживает все микроконтроллеры AVR (8, 32, xMega), автоматически определяет команды и помогает ввести, подсвечивает правильный синтаксис и многое другое. С её же помощью можно прошивать МК.

Наиболее распространённым является - C AVR, поэтому найдите самоучитель по нему, есть масса русскоязычных вариантов, а один из них - Хартов В.Я. «Микроконтроллеры AVR. Практикум для начинающих».

Смотрите также подробные обучающие видеокурсы по программированию микроконтроллеров для начинающих Максима Селиванова: .

Самый простой способ изучить AVR

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

Самые распространенные - это Arduino Nano и Arduino UNO, они по сути своей идентичны, разве что «Нано» меньше примерно в 3 раза чем «Уно».

Несколько фактов:

    Ардуино может программироваться стандартным языком - «C AVR»;

    своим собственным - wiring;

    стандартная среда для разработки - Arduino IDE;

    для соединения с компьютером достаточно лишь подключить USB шнур к гнезду micro-USB на плате ардуино нано, установить драйвера (скорее всего это произойдет автоматически, кроме случаев, когда преобразователь на CH340, у меня на Win 8.1 драйвера не стали, пришлось скачивать, но это не заняло много времени.) после чего можно заливать ваши «скетчи»;

    «Скетчи» - это название программ для ардуино.

Выводы

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

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

Для чего нужен микроконтроллер?

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

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

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

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

Внутри корпуса микроконтроллера находятся основные элементы всей его структуры. Существует три класса таких устройств: 8, 16 и 32-разрядные. Из них 8-разрядные модели имеют малую производительность. Она достаточна для решения простых задач управления объектами. 16-разрядные микроконтроллеры – модернизированные 8-разрядные.

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

  1. Арифметико-логическое устройство служит для производства логических и арифметических операций, выполняет работу процессора совместно с регистрами общего назначения.
  2. Оперативно запоминающее устройство служит для временного хранения информации во время функционирования микроконтроллера.
  3. Память программ является одним из основных структурных элементов. Она основана на постоянном запоминающем устройстве с возможностью перепрограммирования, и служит для сохранения микропрограммы управления работой микроконтроллером. Она называется прошивкой. Ее пишет сам разработчик устройства. Изначально в памяти программ завод изготовитель ничего не закладывает, и там нет никаких данных. Прошивку с помощью программатора разработчик устройства записывает внутрь.
  4. Память данных используется в некоторых моделях микроконтроллеров для записи различных постоянных величин, табличных данных и т.д. Эта память имеется не во всех микроконтроллерах.
  5. Для связи с внешними устройствами существуют порты ввода-вывода. Их также используют для подключения внешней памяти, различных датчиков, исполнительных устройств, светодиодов, индикаторов. Интерфейсы портов ввода-вывода разнообразны: параллельные, последовательные, оборудованные USB выходами, WI FI. Это расширяет возможности применения микроконтроллеров для различных сфер управления.
  6. Аналого-цифровой преобразователь требуется для введения аналогового сигнала на вход микроконтроллера. Его задачей является преобразование сигнала из аналогового вида в цифровой.
  7. Аналоговый компаратор служит для выполнения сравнения двух сигналов аналогового вида на входах.
  8. Таймеры используются для выполнения установки диапазонов и задержки времени в функционировании микроконтроллера.
  9. Цифро-аналоговый преобразователь исполняет обратную работу по преобразованию из цифрового сигнала в аналоговый.
  10. Действие микроконтроллера синхронизируется с генератором тактовыми импульсами при помощью блока синхронизации, который работает совместно с микропрограммой. Генератор тактовых импульсов может быть как внутренним, так и внешним, то есть, тактовые импульсы могут подаваться с постороннего устройства.

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

Микроконтроллеры и их применение

Сфера их использования постоянно расширяется. Микроконтроллеры применяются в различных механизмах и устройствах. Основными областями их применения являются:

  • Авиационная промышленность.
  • Робототехника.
  • Промышленное оборудование.
  • Железнодорожный транспорт.
  • Автомобили.
  • Электронные детские игрушки.
  • Автоматические шлагбаумы.
  • Светофоры.
  • Компьютерная техника.
  • Автомагнитолы.
  • Электронные музыкальные инструменты.
  • Средства связи.
  • Системы управления лифтами.
  • Медицинское оборудование.
  • Бытовая техника.

В качестве примера можно рассмотреть использование микроконтроллеров в автомобильной электронике. В некоторых автомобилях Пежо встроено 27 различных микроконтроллеров. В элитных моделях БМВ применяется более 60 таких устройств. Они контролируют жесткость подвески, впрыск топлива, работу приборов освещения, стеклоочистителей, стеклоподъемников и других механизмов.

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

Основными факторами подбора микроконтроллера являются:

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

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

  • Информационная поддержка, включающая в себя:

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

  • Надежность завода изготовителя. В этот фактор входит:

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

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

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

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

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

Подключение микроконтроллера

Нижеописанная схема является упрощенным вариантом подключения микроконтроллера AVR. AVR - это семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки - 1996.

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


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

Вывод AREF используется как вход для опорного напряжения АЦП - сюда подается напряжение, относительно которого будет высчитываться АЦП. Допустимо использование внутреннего источника опорного напряжения на 2.56В, или же использовать напряжение от AVCC.

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

На вывод AREF рекомендуется подключить конденсатор, который позволит увеличить качество напряжения АЦП и, тем самым, позволит провести правильные измерения АЦП. Между AVCC и GND установлен конденсатор и дроссель, а между GND и VCC установлен керамический конденсатор с емкостью 100 нФ (поближе к выводам питания схемы) для сглаживания кратких импульсов помех, образующихся в результате работы микросхемы.

Также между GND и VCC устанавливается ещё один конденсатор с емкостью в 47 мкФ для того, чтобы сгладить возможные броски напряжения.

Управление микроконтроллером

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


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

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

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

Микроконтроллеры AVR являются простыми в использовании, имеют низкую потребляемую мощность и высокий уровень интеграции.

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

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

  • Регистратор температуры на Atmega168;
  • Кухонный таймер на Attiny2313;
  • Термометр;
  • Измеритель частоты промышленной сети на 50 Гц;
  • Контроллер светодиодного стоп-сигнала на Attiny2313;
  • Светодиодные лампы и светильники, реагирующие на температуру или звук;
  • Электронные или сенсорные выключатели.

Отметим, что для разных устройств используются разные модели микроконтроллеров. Так, 32-разрядные микроконтроллеры AVR UC3 (а также XMEGA, megaAVR, tinyAVR и т.д.) подойдут для систем общего назначения с технологиями picoPower, QTouch, EEPROM, системами обработки событий и самопрограммированием.

Микроконтроллеры для начинающих

Если вы собираетесь программировать микроконтроллеры, такие как Ардуино, например, а также собирать устройства, которые предусматривают их наличие в схеме, необходимо учитывать некоторые правила и рекомендации :

  • Перед решением любых задач следует делить их на более мелкие, вплоть до базовых действий.
  • Не следует пользоваться кодогенераторами и прочими "упрощающими" материалами, хотя бы на начальных этапах.
  • Рекомендуется изучить язык С и Ассемблер - это упростит понимание принципа работы микроконтроллеров и программ.

Для того, чтобы новичок мог заниматься микроконтроллерами, рекомендуется изучать базовые материалы. К таким материалам можно отнести следующие книги: "Применение микроконтроллеров AVR: схемы, программы и алгоритмы" Баранов В.Н., 2006 год, "Микроконтроллеры AVR: вводный курс" , Дж. Мортон, 2008 год, "Программирование микроконтроллеров ATMEL на языке С" Прокопенко В.С, 2012 год.

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

Рассмотрим внутреннюю архитектуру микроконтроллеров 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 чипов, узнать более детально принципы работы каждого из структурных кубиков МК и изучить как они работают, поиграться с отладкой и т.п.

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