Что такое микроконтроллер? Микроконтроллеры. Устройство и особенности. Применение Микроконтроллеры и их применение

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

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


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

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

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

Давайте представим идеальный случай, У нас есть МК и в его память уже записан программный код. Или, как обычно говорят "ушастые перцы", Микроконтроллер "прошит" (при этом программный код кличат "прошивкой").

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

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

Устройство типичного МК

Любой МК, как и любая микропроцессорная система базируется на трёх китах:

Процессор (АЛУ + устройство управления)
Память (RAM, ROM,FLASH)
Порты ввода-вывода.

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


Физическая структура микроконтроллеров разных серий может достаточно сильно отличаться, но общая база у них будет похожа и она будет состоять из следующих блоков: ОЗУ, ПЗУ, АЛУ, таймеры, порты ввода/вывода, регистры, счетчики.

ПЗУ Постоянное запоминающее устройство или постоянная память. Всё, что записано в ПЗУ, остаётся в нем и после отключения питания.
ОЗУ Оперативно запоминающее устройство - рабочая память МК. В неё сохраняются все промежуточные результаты выполнения програмного кода или данные от внешних датчиков.
АЛУ Мозг МК. Именно он вычитает, складывает, умножает, а иногда и делит, сравнивает единички и нолики в процессе выполнения программы..
Порты I/O Порты ввода и вывода: Устройства через которые МК ведет диалог с внешним миром с внешним миром. Наш МК должен общаться с внешним миром. Благодаря портам мы можем посылать в микроконтроллер сигналы от датчиков, клавиатуры и т.п. А МК после обработки таких сигналов отправит через эти устройства свой ответ, с помощью которого можно регулировать яркость свечения лампы или скорость вращения двигателя.
Таймеры Он отсчитывает интервалы, выдает сигнал о срабатывании и т.д.
Счетчики Необходимы, когда нужно что-то подсчитать.
Каждый регистр представляет собой миниатюрную ячейку памяти. И обычно в МК их всего несколько десятков.

Как ты уже знаешь из курса основы цифровой электроники, вся информация в цифровом мире представляется в виде двоичных чисел, которые записываются с помощью всего двух цифр: "нуля" и "единицы" в двоичной системе счисления. Число три в привычной для нас десятичной системе в двоичной будет "11", т.е. 3 10 = 11 2 . Нижние индексы подсказывают о системе счисления. Одна цифра в двоичном числе называется разрядом. У разрядов имеется старшинство. Самый правый разряд называют младшим, а самый левый соответственно старшим. Старшинство разряда увеличивается справа налево:


При работе микроконтроллера в нем "бегают такие же двоичные числа". Они перемещаются от процессора к памяти и обратно, а также к устройствам ввода-вывода (УВВ). Бегают циферки по проводам (в МК они спрятаны внутри микросхемы). Каждый такой проводник в какой-то заданный программой момент времени может передавать только один разряд со значением "0" или "1". Поэтому, для передачи 8-ми разрядного числа от процессора к памяти и обратно понадобится минимум 8 таких проводников.

Несколько таких объединенных проводов, называют шиной. Шины бывают нескольких видов:

Шина адреса
Шина данных
Шина управления

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

Разрядность шины адреса влияет на количество адресов, которые можно по ней пропустить. Допустим, в 4-разрядной системе это 2 4 = 16 адресов, в 64-разрядной, числов адресов будет уже 2 64 =18446744073709551616, т.е чем выше разрядность адресной шины тем к больше объем памяти и больше УВВ можно использовать, с которыми может работать МК. Это очень важный момент.

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

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

Кстати в отличии от привычной системы счисления, 1 байт = 8 бит, 1 килобайт = 1024 байтам, 1 мегабайт = 1024 килобайтам и т.д. Почему именно 1024? Спросите вы. Да потому, что размер памяти кратен степени двойки: т.е 2 3 = 8, 2 10 =1024.

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

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

Если МК необходимо обратиться к памяти он задает на управляющей шине сигнал MREQ, при этом одновременно с ним задается сигнал RD/WR. Если МК будет писать в память, то задается сигнал WR, если чтение, соответственно RD. Тоже случится, когда МК обращается к УВВ.

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

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

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

Одной из первых фирм выпустившей в большой мир микроконтроллеры на ядре ARM Cortex-M3 является компания «STMicroelectronics». Начиналось всё не так и давно в 2007 году с появления двух семейств – «Performance Line» (STM32F103) и «Access Line» (STM32F101). На текущий момент МК STM32 представлены десятью основными линейками для различных задач. Основные их достоинства это «pin-to-pin» и полная программная совместимость по всем возможным линейкам. И это всё уместилось на ядре ARM Cortex-M3. Рассмотрим основные инструменты, для того что бы можно было начать работу с МК STM32.

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

В зависимости от стоимости и габаритов устройства, которым требуется управлять, определяются и требования к контроллеру. Если объект управления занимает десятки метров по площади, как, например, автоматические телефонные станции, базовые станции сотовых систем связи или радиорелейные линии связи, то в качестве контроллеров можно использовать универсальные компьютеры. Управление при этом можно осуществлять через встроенные порты компьютера (LPT, COM, USB или ETHERNET). В такие компьютеры при включении питания заносится управляющая программа, которая и превращает универсальный компьютер в контроллер.

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

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

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

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


Рисунок 1 Узлы автомобиля, в которых применяются микроконтроллеры

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



Рисунок 2. Малогабаритная радиостанция с применением микроконтроллеров

Рисунок 3. Малогабаритная радиостанция с применением микроконтроллеров

Как выглядит носимая радиостанция внутри показывает фотография, приведённая на рисунке 4.



Рисунок 4. Печатная плата приёмопередатчика носимой радиостанции.

Наиболее распространёнными в настоящее время являются микроконтроллеры семейства
http://сайт/dsp/DSP/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Общий вид микроконтроллера

Впервые такое устройство как микроконтроллер, которое тогда называлось еще однокристальной микро-ЭВМ, было разработано в 1971 году сотрудниками компании Texas Instruments, инженерами М. Кочрену и Г. Буну, которые и предложили интегрировать изобретенный незадолго до этого микропроцессор на один кристалл со всеми необходимыми компонентами.

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

Микроконтроллеры выпускаются очень большим количеством разнообразных компаний, для перечисления которых не хватило бы даже целой статьи, так что я расскажу о микроконтроллерах, которые производит корпорация Атмел (Atmel), основанная в далеком 1984 году. Семейство этих микроконтроллеров зовётся AVR - это восьмибитные микроконтроллеры, разработанные в 1996 году. Фирма Atmel выпускает несколько семейств микроконтроллеров:

  • 4-разрядные
  • 8-разрядные: MCS-51, AVR
  • 32-разрядные: ARM, AVR32

Само семейство микроконтроллеров AVR делится на две большие группы микроконтроллеров : Tiny и Mega . Отличаются они между собой набором функций, которые в них заложены. Основным же различием внутри группы является внутренняя частота и объём памяти, используемый для хранения программы. Большее распространение среди радиолюбителей получили микроконтроллеры семейства Mega по причине того, что они имеют больше возможностей и функций, конкретнее – ATmega8 , который имеет тактовую частоту 16 МГц и объём памяти в 8 Кбайт.

Возможности и особенности микроконтроллеров

Так что же могут микроконтроллеры ? Благодаря тому что микроконтроллер является маленьким компьютером — его возможности очень широки. К примеру, микроконтроллеру можно поручить измерение разнообразных величин, обработку различных сигналов и управление широким спектром разных девайсов. Во многом возможности микроконтроллеров ограничены только вашим воображением и умениями работать с ними. Но у микроконтроллеров есть и определенные особенности, одной из которых является то, что все микроконтроллеры поступают с завода в продажу «пустые», то есть, если на них подать напряжение, то мы не получим ровным счетом ничего. Просто кусок кремния . Для того, что бы микроконтроллер начал выполнять какие-то операции, начиная с включения светодиода, заканчивая ШИМ-регулированием напряжения - ему нужно «объяснить» как это сделать, т.е. прошить микроконтроллер исполняющей программой, которую можно написать на ассемблере или на Си.

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

Микроконтроллеры можно «научить» считывать сигнал с таходатчика (датчика скорости вращения) вентилятора или помпы и выводить значения на LCD или индикаторный дисплей. Таким же образом микроконтроллер может послужить для вычисления основных электрических величин: сопротивления, напряжения и силы тока. Всё это так же можно вывести на LCD дисплей.

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

Термометр на основе светодиодных индикаторов

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

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

Индикатор, собранный на основе микроконтроллеров

Использование микроконтроллеров

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

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

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

Программу для микроконтроллера пишете на языке программирования Си (кстати, Си намного проще, чем ассемблер), после чего создаёте файл прошивки и с помощью программы прошивальщика прошиваете ваш микроконтроллер данной прошивкой. На самом деле всё довольно просто и, при желании, достаточно легко осваивается! Лично я использую для всех этих действий программу CodeVisionAVR так как она очень удобна и поддерживает практически все виды программаторов. От себя - очень советую!

Собирать устройство на основе микроконтроллера можно как на протравленной плате, так и на макетной или даже методом навесного монтажа , в зависимости от того, как вам удобней и сложности предполагаемого устройства.

Выводы про микроконтроллеры

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

Из плюсов микроконтроллеров я бы выделил:

  • широкий спектр применения
  • минимум материальной базы для изготовления устройств
  • нет трудностей с приобретением

Ну, куда без минусов:

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

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

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

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

Программы мы будем писать на языке С в среде программирования 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 - Порядок выполнения команд

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