Как делают микроконтроллеры. Что такое микроконтроллеры и зачем они нужны. Где используются микроконтроллеры

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “ “

Общее устройство микроконтроллеров: основа микроконтроллера, периферийные устройства

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

Микроконтроллеры фирмы ATMEL

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

Немножко истории.
Фирма ATMEL была создана в 1984 году, ее полное название – Advanced Technologi Memory and Logic.
Первый МК фирма выпустила в 1993 году.
В 1995 году была придумана новая архитектура процессорного ядра для МК, так называемое RISС-ядро (что это за диво, вы при желании можете ознакомиться в любой популярной литературе, а мы отвлекаться не будем).
Новую архитектуру МК назвали AVR. Идея новой архитектуры ядра оказалась очень удачной, и уже с 1997 года ATMEL начала серийный выпуск МК на основе RISC-ядра.

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

- TINY AVR
MEGA AVR

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

Почему эти семейства МК называются восьмиразрядными (заодно узнаем что такое шины).

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

В МК имеется три шины :
1. Шина данных (Data Bus – по английски).
Шина данных - шина, предназначенная для передачи информации.
Эта шина служит только для передачи различных данных между устройствами. Эта шина двунаправленная: по ней устройство может как передавать, так и принимать данные. МК семейства Tiny и Mega могут за один раз передать или принять восемь бит информации (бит – наименьшая единица измерения данных в цифровой технике, одна логическая единица или один логический ноль – это один бит информации) . Такая шина называется восьмиразрядной (иногда встречается название – восьмибитовая), а отсюда и сами МК – восьмиразрядными (если грубо, то можно сказать, что все устройства соединены жгутами из восьми проводов).
Минимальная разрядность шины данных – 8 бит (меньше не бывает). Современные компьютеры имеют 64-разрядную шину данных. Разрядность шины данных всегда кратна 8 (восьмиразрядная, шестнадцатиразрядная, тридцатидвухразрядная…)
2. Шина адреса (Addr Bus – по английски).
Шина адреса - шина, на которой в ходе выполнения программы выставляется адрес ячейки памяти, к которой в данный момент времени должен обратиться МК чтобы считать или следующую команду, или данные, или в которую необходимо записать данные.
3. Шина управления (Control Bus – по английски).
Шина управления – шина, а точнее набор линий (проводников) по которым передаются управляющие сигналы с помощью которых определяется как будет происходить обмен информацией – или ее считывание из памяти, или запись в память, а также некоторые специальные сигналы – сигнал готовности, сигнал сброса.
Небольшой пример работы шин.
Необходимо записать число 60 в ячейку памяти:
– на шине адреса выставляется адрес ячейки памяти в которую необходимо записать число
– на шине управления выставляется сигнал записи
– по шине данных передается число 60, которое записывается в выбранную ячейку памяти.
Ну вот, как общаются устройства в МК между собой, мы вроде-бы разобрались. Идем дальше.

В современном МК много различных устройств, в каком-то типе больше, а в каком-то меньше, а кроме того, в разных МК эти устройства могут различаться по своим характеристикам. Но в МК есть то, что составляет его основу и присутствует во всех типах – процессорное ядро (микропроцессорная система – по аналогии с компьютером), которое состоит из трех основных устройств:
1. АЛУ – арифметико-логическое устройство (микропроцессор) которое выполняет все вычисления (выполняет нашу программу).
2. Память -предназначена для хранения программ, данных, а также любой другой нужной нам информации.
3. Порты ввода – вывода . Это выводы МК с помощью которых он общается с «внешним миром». При передаче информации МК выставляет на своих выводах соответствующие логические уровни (0 или 1). При приеме информации МК считывает с этих выводов логические уровни, которые выставлены внешним устройством.
Это трио – основа МК:

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

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

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

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

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

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

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

6. Интерфейсы и модули для передачи данных. Мы подробно рассматривать их будем только в том случае, если они потребуются для собираемой нами (в будущем) конструкции. Более подробно о них можно прочитать в популярной литературе.
Последовательный периферийный интерфейс SPI
Имеется во всех моделях МК.
Мы его в 99,9 случаях из 100 применяем для программирования МК.
Кроме программирования МК интерфейс SPI позволяет:
– обмениваться данными между МК и внешними устройствами
– обмениваться данными нескольким МК между собой
Универсальный приемопередатчик
Имеют все модели МК, но разных типов:
– USART
– UART
Предназначены для обмена данными по последовательному каналу.
Последовательный двухпроводный интерфейс TWI Порты ввода/вывода микроконтроллера

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

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

Программы мы будем писать на языке С в среде программирования Keil-C компании ARM. Сразу оговоримся, среда разработки Keil-C платная, но для выполнения всех наших работ достаточно демонстрационной версии этого продукта, demo версию можно скачать либо с официального сайта компании ARM www.keil.com , либо у нас в разделе . В своих примерах я буду использовать версию v812.

Что же такое микроконтроллер? Микроконтроллер можно сравнить с персональным компьютером, он также имеет свой процессор, оперативную память, память для долгосрочного хранения информации, порты ввода-вывода и многие другие периферийные устройства, например, аналого-цифровые (АЦП) и цифроаналоговые преобразователи (ЦАП). Только, в отличие от персонального компьютера, все эти компоненты объединены в одной микросхеме, поэтому микроконтроллер можно назвать "компьютером в одной микросхеме" . Конечно, быстродействие такого компьютера не сравниться с быстродействием ПК, но для большинства задач мониторинга и управления его достаточно.

Рисунок 1 - Внешний вид микрокнтроллера ADuC842 в различных корпусах

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

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

Для обмена информацией с внешним миром в контроллере предусмотрены порты ввода и вывода информации. Часто порт ввода объединяется с портом вывода, и образуют порт ввода-вывода информации.

С внешним миром микроконтроллер обменивается информацией в цифровом виде. Основой логики работы микропроцессора служит двоичная система счисления, состоящая всего из двух цифр – единицы "1" и нуля "0". Эти две цифры двоичной системы позволяют записывать практически любые числа. Для электрических сигналов, несущих эту цифровую информацию, двоичная система счисления соответствует двум состояниям, или двум "логическим" уровням: высокому и низкому. Как правило, напряжение высокого логического уровня близко к напряжению питания микросхемы, например, 5 В или 3 В. Напряжение низкого логического уровня – логического ноля "0" - может составлять несколько десятых вольта, например, 0,3 В, и в идеальном случае равняется 0 В. С помощью загруженной в него программы микроконтроллер может установить на любой ножке порта вывода требуемый уровень напряжения. Также микроконтроллер может программно определять состояние сигнала на своих ножках, высокое ли напряжение на ней или низкое (ноль или единица).

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

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


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

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

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

Всю память можно разделить две большие группы: это ПЗУ - постоянно запоминающее устройство, и ОЗУ - оперативно запоминающее устройство, или просто - оперативная память. В персональном компьютере роль ПЗУ выполняют жесткие диски, оптические диски, карты памяти и флешки. Особенность этого типа памяти заключается в том, что после отключения питания устройства записанная информация сохраняется на носителе, и после возобновления подачи питания снова может быть считана. В оперативной же памяти информация сохраняется только пока подано питание. Но быстродействие ОЗУ может превосходить быстродействие ПЗУ в десятки и даже сотни раз. Поэтому удобно исполняемую программу держать в ПЗУ, а все переменные, к которым требуется быстрый доступ - в ОЗУ. Если в ПК объем памяти измеряется в ГБ (приставка Гига – 10 9), то в микроконтроллерах все гораздо скромнее. Так, в микроконтроллере ADuC842, который мы будем использовать в практической части урока, имеется всего 62 кБ (килобайта) ПЗУ и 256 байт ОЗУ.

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

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


Рисунок 3 - Порядок выполнения команд

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

Предположим вам поставили задачу — заставить мигать светодиод.
Рассуждаем, как решить эту задачу:

Вариант 1 — самое простое, взять тумблер/кнопку, рядом посадить раба, который тумблером будет включать/выключать светодиод. Обычно в России большинство задач именно так и решается. А что ведь мигает)))
Вариант 2 — собрать мультивибратор. Уже интереснее. Для того чтобы помигать, одним светодиодом вполне даже хорошее решение. К тому же просто, дешево, надежно.
Вариант 3 — собрать на микроконтроллере. Дороже чем собрать мультивибратор, но на мой взгляд проще. Написал программу, прошил, получил результат. Без настройки. Конечно это идеальный случай.

Теперь усложним задачу. Например, 5 светодиодов и 5 вариантов их мигания (изменяется скорость и порядок их мигания). Первый вариант сразу отпадает, способом 2 сделать можно, но размеры устройства резко увеличатся. Вариант 3 останется примерно тех же размеров, достаточно дописать пару строк кода. Следовательно есть разные случаи, где то без микроконтроллера невозможно, а где то он излишество. Поэтому всегда оценивайте трудозатраты, время и финансовые затраты.

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

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

Программируют микроконтроллеры обычно на языке Си или на ассемблере. На чем писать по большому счету разницы нет. Из-за большого количества готовых примеров, я свой выбор сделал в пользу Си. Кроме того, существует несколько программ позволяющих писать на Си. Например бесплатная, фирменная AVR Studio, CodeVision, WinAVR и т.п. Несмотря на то, что я пишу в CodeVision, очень активно использую AVR Studio как отладчик.

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

Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2015 года составляет
80 000 рублей).

Чтобы понимать то, о чём я буду говорить, желательно, чтобы вы хотя бы на начальном уровне знали электронику или хотя бы более-менее помнили школьный курс физики. Если этим вы похвастаться не можете, то тоже не страшно, так как я буду стараться объяснять всё максимально доступно. Ну а если какие-то вещи останутся для вас непонятными, то задавайте вопросы . Только прошу описывать вашу проблему как можно более подробно, чтобы не тратить своё и моё время на переписку с дополнительными уточнениями.

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

Итак, микропроцессор и микроконтроллер - это специальные микросхемы. Но чем они отличаются друг от друга?

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

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

Мне довелось работать на первой советской автоматической телефонной станции (АТС) с программным управлением. Её процессор был собран на микросхемах 155-й серии (электронщики меня поймут). Эта АТС занимала целую комнату.

Но со временем элементная база становилась всё меньше и меньше по размеру. То, что раньше собирали из нескольких десятков микросхем, удалось впихнуть в одну микросхему. Так и получился микропроцессор.

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

Однако техника не стояла на месте. Учёным и инженерам удалось сделать кристаллы микросхем ещё меньше. И кому-то пришла идея объединить все элементы микропроцессорной системы в одну микросхему. Так появился микроконтроллер .

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

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

  • Разработать схему устройства
  • Выбрать микроконтроллер
  • Написать программу для микроконтроллера
  • Загрузить программу в микроконтроллер (“прошить” микроконтроллер)
  • Собрать устройство
  • Наслаждаться результатом

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

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

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

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

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

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

Какой из этого вывод?

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

Но об этом мы ещё поговорим в следующих статьях. Ждите писем. А если вы ещё не подписаны, то

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 драйвера не стали, пришлось скачивать, но это не заняло много времени.) после чего можно заливать ваши «скетчи»;

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

Выводы

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