Микроконтроллер: определение, задачи, разновидности, применение

Микроконтроллеры

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

История появления

Работы над изобретением микропроцессора велись с начала 1970-х годов. Первой компанией, разработавшей его, была компания Intel. Уже в 1971 году ее был выпущен первый микроконтроллер 4004, который состоял из 2300 полупроводниковых транзисторов, а по размеру был не больше ладони. Это стало возможным, после того как для микросхемы был специально разработан кристалл процессора.

Первый микроконтроллер 4004

Несмотря на маленькие размеры, производительность микропроцессора не уступала компьютеру Eniac, имеющему габариты в 85 м3. Особенностью этого устройства было то, что оно могло обрабатывать только 4 бита информации.

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

К концу 1973 года Intel выпускает 8-зарядный микропроцессор. Он был настолько удачно разработан, что и сегодня считается классикой.

Через несколько месяцев фирма Motorola выпускает свой 8-битовый микропроцессор 6800. Он стал сильным конкурентом интеловской микросхеме, т. к. имел более значительную систему прерываний и одно напряжение электропитания. В 8080 их было три.

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

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

В 1978 году Интел выпустила 16-разрядный микропроцессор, который IBM использовала для разработки персональных компьютеров. Моторола не отстала от своего конкурента и тоже выпустила 16-разрядный микропроцессор, который использовали Atari и Apple.

Сейчас существует более 200 разновидностей микроконтроллеров. Количество компаний, их изготавливающих, перевалило за два десятка. Широкое распространение у разработчиков получили:

  • 8-битные микроконтроллеры Pic компании Microchip Technology и AVR от Atmel;
  • 16-битовые MSP 430 фирмы TI;
  • 32-битные ARM от одноименной компании.
В России пользуются популярностью микроконтроллеры Renesas Electronics, Freescale, Samsung.

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

Микроконтроллер по сути является микросхемой, который состоит из:

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

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

Принцип работы микроконтроллера

Несмотря на сложное устройство принцип работы микроконтроллера очень прост. Он основан на аналоговом принципе действия. Система понимает лишь две команды («есть сигнал», «нет сигнала»). Из этих сигналов в его память вписывается код определенной команды. Когда МК считывает команду, он ее выполняет.

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

Микроконтроллер Atmel

В зависимости от содержащихся в МК набора программ, они делятся на:

CISC – комплекс большого числа базовых команд;
RISC – только необходимые команды.

Большинство контроллеров содержит RISC набор. Объясняется это тем, что такой МК проще изготовить, он дешевле и больше пользуется спросом у разработчиков электронной техники.

Назначение и область применения микроконтроллера

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

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

Это не полный перечень областей применения МК.

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

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

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

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

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

Если у модели несколько вводов и выводов питания, то подключать их нужно все.

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

Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.

Подключение

Через микроконтроллер можно подключить к локальной сети любой девайс. В качестве таковой можно рассмотреть Ethernet. Прежде всего, определимся с понятиями.

Ethernet – это набор стандартов IEEE 802.3, которые описывают разнообразные технологии локальных сетей: общий канальный уровень и набор технологий физического уровня, включающий в себя для передачи информации оптоволокно, витую пару, коаксиал с различными скоростями.

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

Понять, как работает локальная сеть, можно через модель OSI. Она включает в себя несколько уровней:

  1. Физический. Состоит из витой пары, драйверов и трансформаторов, по которым происходит передача данных.
  2. Канальный. Через него передаются Ethernet-фреймы между узлами локальной сети.
  3. Сетевой. По нему происходит передача пакетов. Они могут передаваться через несколько сетей, различающихся по технологиям физического и канального уровней.
  4. Транспортный. Связывает узлы между собой. Перед отправкой данных транспортный уровень представляет их в виде пакета сетевого уровня и передает другому узлу. Он может отправлять и группы пакетов одновременно. Если используется протокол с установкой соединения, то перед отправкой транспортный уровень устанавливает соединение, контролирует его качество, а только потом передает пакет данных.
  5. Прикладной. Решает прикладные задачи, те, ради которых создавался. С внешним миром он обменивается данными по стандартному или эксклюзивному протоколу.

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

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

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

Управление МК может осуществляться двумя способами:

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

Сигналы беспроводного соединения могут быть:

  • Оптическими. Подобными сигналами управляется домашняя бытовая техника: телевизоры или кондиционеры.
  • Радио. Есть несколько вариантов: Wi-Fi, Bluetooth и др.

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

Обеспечивает поддержку cети Wi-Fi МК ESP 8266. В продаже он может быть в виде микросхемы или распаян, как arduino. У него 32-битное ядро, программировать его нужно через последовательный порт UART. Бывают более продвинутые платы с возможностью прошивки по USB – это NodeMCU. Они могут хранить информацию, записанную, например, с датчиков. Такие платы работают с различными интерфейсами, в т. ч. SPI, I2S.

Поддерживает большое число функций:

  • планировщик задач;
  • таймер;
  • канал АЦП;
  • формирование на выходе ШИМ сигнала;
  • аудиопроигрыватель и многое другое.

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

Тактирование микроконтроллеров

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

Микроконтроллеры

Существуют несколько способов тактирования МК. Они зависят от использования:

  • Внутреннего RC-генератора. Он может работать только на частоте 1, 2, 4, 8 МГц. Если нужна другая частота, то он не подойдет. При необходимости использования точных временных интервалов тоже нельзя пользоваться этим методом, т. к. его задающая частота колеблется в зависимости от температуры.
  • Внешнего кварца. Этот способ имеет более сложное подключение. Емкость конденсатора должна находиться в интервале 15–22 пФ. Один выход присоединяется к резонатору, а другой заземляется.
  • Внешнего генератора. Этот генератор также нестабилен при разной температуре, как и внутренний.
  • RС-цепочек. Для данной схемы подойдет конденсатор емкостью от 22 пФ, резистор 10–100 кОм.

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

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

Все МК объединяются в семейства. Основная характеристика, по которой происходит это деление, — структура ядра.

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

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

Объединяют все МК в семейства одинаковость двоичного кода программирования.

Семейства делятся на:

  • MSC-51, производства Intel. Монокристальный МК на основе Гарвардской архитектуры. Основной представитель этого семейства 80С51, созданный по технологии CMOS. И хотя эти контроллеры разработаны еще в 80-х годах прошлого века, но до сих пор широко применяются. И сегодня многие компании, такие как Siemens, Philips и др. выпускают свои контроллеры с подобной архитектурой.
  • PIC (Microchip). МК Гарвардской архитектуры. В его основе лежит архитектура с сокращенным набором команд, встроенная память команд и данных, низкое энергопотребление. В это семейство входят более 500 различных МК (8-ми, 16-ти, 32-битные) с различными наборами периферии, памяти и прочими характеристиками.
  • AVR (Atmel). Высокоскоростные контроллеры разработаны на собственной архитектуре. Основой контроллера является Гарвардский RISC-процессор с самостоятельным доступом к памяти программ и баз данных (Flash ПЗУ). Каждый из 32 регистров общего назначения может работать как регистр-аккумулятор и совокупность 16-битных команд. Высокая производительность в 1 MIPS на каждый МГц тактовой частоты обеспечивается за счет порядка выполнения команд, который предусматривает выполнение одной команды и одновременную подготовку к следующей. Для поддержания своей продукции компания Atmel выпускает бесплатную и качественную среду разработки Atmel
  • ARM (ARM Limited) разработаны на собственной архитектуре. В семейство входят 32-х и 64-битовые МК. ARM Limited занимается только разработкой ядер и их инструментов, а лицензии на производство продает другим компаниям. Эти процессоры потребляют мало энергии, поэтому находят широкое применение в производстве мобильных телефонов, игровых консолей, маршрутизаторов и т. д. К компаниям, выкупившим лицензии, относятся: STMicroelectronics, Samsung, Sony Ericsson и др.
  • STM (STMicroelectronics). 8-разрядные контроллеры (STM8) относятся к категории высоконадежных с низким энергопотреблением изделий. В это же семейство входят контроллеры STM32F4 и STM Их основу составляет-32 битный Cortex. Такие контроллеры обладают отлично сбалансированной архитектурой и имеют большие перспективы развития.

Это не все семейства микроконтроллеров. Здесь мы привели только основные.

Типы корпусов микроконтроллеров

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

  • Корпус DIP имеет два ряда выводов. Расстояние между ними 2,54 мм. Выводы вставляются внутрь отверстий на контактных площадках.
  • Корпус SOIC. Он подходит для монтажа, который предполагает поверхностную припайку выходов к контактной площадке. Расстояние между выходами 1,27 мм.
  • Корпуса QFP (TQFP). Выводы расположены со всех сторон. Расстояние между ними в 3 раза меньше, чем в DIP. Корпус имеет квадратную форму. Предназначаются только для поверхностной пайки.
  • Корпус QFN. Самый маленький по сравнению с предыдущими. Контакты выходят в 6 раз чаще, чем в DIP. Имеют большое распространение в промышленном производстве, т. к. позволяют значительно уменьшить габариты выпускаемых приборов.

Микроконтроллер в корпусе QFP

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

В чем отличие микроконтроллера от микропроцессора?

Весь компьютерный функционал микропроцессора (Micro Processor Unit — MPU) содержится на одном полупроводниковом кристалле. По характеристикам он соответствует центральному процессору компьютера ЦП (Central Processing Unit — CPU). Область его применения – хранение данных, выполнение арифметико-логических операций, управление системами.

МП получает данные с входных периферийных устройств, обрабатывает их и передает выходным периферийным устройствам.

Микроконтроллер совмещает в себе микропроцессор и необходимые опорные устройства, объединенные в одном чипе. Если нужно создать устройство, коммуницирующее с внешней памятью или блоком ЦАП/АЦП, то понадобится только подключить источник питания с постоянным напряжением, цепь сброса и источник тактовой частоты.

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

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

На МК могут быть следующие устройства:

  • Аналоговый компаратор. Основная его задача сравнивать поступающее (измеряемое) напряжение с идеальным. Если измеряемое напряжение выше, чем идеальное, то компаратор выдает сигнал логической 1 (прибор отключается), если ниже, то логический 0 (прибор продолжает работать).
  • Аналогово-цифровой преобразователь (АЦП). Измеряет аналоговое напряжение в период времени и выдает его в цифровой форме. Есть не у всех МК.
  • Таймер/счетчик. Представляет собой сочетание 2-х форм таймера и счетчика. Таймер формирует интервалы времени, а цифровой счетчик считает количество импульсов, идущих от внутреннего генератора частот, или сигналы от внешних источников. Одним из представителей работы таймера /счетчика может быть ШИМ (широтно-импульсный модулятор). Он предназначен для управления средним значением напряжения при нагрузке.
  • Сторожевой таймер. Его задача перезапускать программу через определенный временной промежуток.
  • Модуль прерываний. Он сообщает МК о наступлении какого-либо события и прерывает выполнение программы. После завершения события возобновляет прерванную программу.

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

Что нужно для программирования микроконтроллера

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

Путь программирования проходит несколько этапов:

  1. Перед тем как приступить к написанию кода программы, надо определиться с конечной целью.
  2. Составляется алгоритм работы программы.
  3. Непосредственное написание кода программы. Коды пишутся на языке Си или Ассемблере.
  4. Компиляция программы, т. е. перевод ее в двоичную или шестнадцатеричную систему 1 и 0. Только так ее сможет понять МК.
  5. Откомпилированный код записывают в память контроллера.
  6. Прошивают МК с помощью программатора. Они бывают двух типов подключения: через COM или USB порт. Самый простой и дешевый программатор USBASP.
  7. Тестирование и отладка МК на реальном устройстве.

Программирование микроконтроллеров

Радиолюбители иногда обходятся без прописывания алгоритма работы программы на бумаги. Они держат его в голове.

Языки программирования

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

  • Ассемблер. Самый низкий уровень языка. Программы, написанные на нем, получаются громоздкими и труднопонимаемыми. Но несмотря на это он позволяет наиболее полно раскрыть все возможности контроллеров и получить максимальное быстродействие и компактный код. Подходит преимущественно для маленьких 8-битных МК.
  • С/С++. Более высокий уровень языка. Программа, написанная на нем, более понятна человеку. На сегодняшний день есть много программных средств и библиотек, позволяющих писать коды на этом языке. Его компиляторы есть практически на любой модели МК. На сегодня это основной язык для программирования контроллеров.
  • Еще более удобный для восприятия и проектирования язык. Но он мало применяется для программирования МК.
  • Старинный язык программирования. На сегодня почти не применяется.

Выбор языка для программирования зависит от решаемых задач и необходимого качества кода. Если нужен компактный код, то подойдет Ассемблер, для решения более глобальных задач выбор ограничится только С/С++.

Среда разработки

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

Вот несколько сред программирования:

  • FlowCode – универсальная графическая среда. Программируется с помощью построения логических структур блок-схем.
  • Algorithm Builder. Тоже графическая среда. Но написание кода проходит в 3–5 раз быстрее, чем в FlowCode. В ней совмещены графический редактор, компилятор, симулятор МК, внутрисхемный программатор.
  • В ней объединены Ассемблер и С/С++. Функционал среды позволяет самостоятельно прошивать МК.
  • Image Craft. Как и предыдущая поддерживает Ассемблер и С/С++ языки. В ее составе есть библиотека, позволяющая работать с отдельными устройствами МК.
  • Популярная среда для любителей. Имеет Си-подобный язык, но отличающийся от других. Он более понятен человеку. Поддерживает библиотеки, в составе которых есть драйвера для подключения некоторых платформ.

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

Основы программирования

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

Программирование

Если Ассемблер окажется сложен, то можно начинать с Си. Одной из сильных его сторон является то, что он хорошо переносит коды с одного вида МК на другой. Но для этого надо правильно все прописать, разделив рабочие алгоритмы и их реализации в машине по разным частям проекта. Это позволит переносить алгоритм в другой контроллер, переделав всего лишь интерфейсный слой, в котором прописано обращение к «железу», оставив рабочий код без изменений.

Далее действуют по следующей схеме:

  1. Выбор компилятора и установка среды (подробнее о них писалось выше).
  2. Запуск среды и выбор в ней нового проекта. Необходимо будет указать место расположения. Путь нужно выбирать наиболее короткий.
  3. Настройка проекта. Классическим действием будет создание make-файла, в котором прописываются все зависимости. На первой странице указывают еще частоту работы МК.
  4. Настройка путей. В них надо добавить директорию проекта. В нее можно добавлять сторонние библиотеки.
  5. Постановка задачи.
  6. Сборка схемы. На этом этапе надо соединить модуль USB-USART конвертера с аналогичными выводами МК. Это позволит прошить микроконтроллер без программатора. Нужно накинуть джамперы, соединяющие LED1 и LED2. Этим действием мы подключим светодиоды LED 1 и 2 к выводам PD4 и PD5.
  7. Пропись кода.
  8. Добавление библиотек и заголовков с определениями.
  9. Главные функции. Язык Си состоит из одних функций. Они могут быть вложенными и вызываться в любом порядке относительно друг из друга и разными способами. Но все они имеют три обязательных параметра: 1) возвращаемое значение; 2) передаваемые параметры; 3) тело функции. В зависимости отданных, все возвращаемые или передаваемые значения должны быть определенного типа.
  10. Компиляция и запуск эмуляции.
  11. Отладка программы.

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

Советы начинающим программистам микроконтроллеров

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

  • Начинать с изучения периферии и ее особенностей.
  • Каждую большую задачу надо разделять на максимально количество мелких.
  • В начале пути не стоит упрощать себе жизнь и пользоваться кодогенераторами, нестандартными фичами и т. п. вещами.
  • Обязательно нужно изучать языки программирования (Си и Ассемблера).
  • Читайте Даташит.
  • Соберите необходимый набор инструментов. Это стоит определенных денег, но окупит себя экономией времени и качеством работы.

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

future2day.ru