Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить курсы бесплатно
ГлавнаяБлогПрограммирование микроконтроллеров: с чего лучше начать
Программирование микроконтроллеров
20 032
Время чтения: 17 минут

Программирование микроконтроллеров: с чего лучше начать

20 032
Время чтения: 17 минут
Сохранить статью:
Сохранить статью:

Что это? Программирование микроконтроллеров тесно связано с интернетом вещей. То есть вы пишите программу для компактного умного устройства, который управляет, к примеру, десятками девайсов в вашем умном доме или определенными процессами на производстве.

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

В статье рассказывается:

  1. Что такое микроконтроллер
  2. Классификация микроконтроллеров
  3. 3 условия для программирования микроконтроллеров
  4. Программы и алгоритмы для микроконтроллеров
  5. Языки программирования микроконтроллеров
  6. Быстрый способ начать программировать микроконтроллеры
  7. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

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

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

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

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

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

Развитие и программирование микроконтроллеров происходит одновременно с разработкой новых процессоров. Разработанный в далеком 1980 году Intel 8051 до сих пор можно увидеть даже в современных изделиях. Время от времени отличий между этими устройствами становилось меньше.

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

За последние 10 лет наибольшую популярность завоевали такие модели микроконтроллеров:

  • 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel;
  • 16-битные MSP430 фирмы TI;
  • 32-битные микроконтроллеры, архитектуры ARM. Разработчики других компаний могут её приобрести и использовать как базу для конструирования своих наработок.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

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

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 27955 pdf иконка

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

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

  • Тактовая частота колеблется около величины в 200 МГц (чаще даже ниже – не превышая 100 МГц).
  • Объём ОЗУ и памяти программ составляет от нескольких десятков килобайт до 1 Мб.

Классификация микроконтроллеров

Устройства подразделяются по параметрам:

  • разрядность;
  • система команд;
  • архитектура памяти.

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

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

По разрядности различают:

  • 8-бит;
  • 16-бит;
  • 32-бита;
  • 64-бита.

Классификация по типу системы команд:

  • RISC-архитектура, или вычислитель с комплектом редуцированных команд. Этот подход к проектированию процессоров с целью повышения их скорости за счет упрощения декодирования инструкций позволяет повысить тактовую частоту. Часто UNIX-системы работают на устройствах с этой архитектурой.
  • СISC-архитектура (complexinstruction set computer) характеризуется нефиксированным значением длины команд и небольшим количеством регистров, имеющих жестко заданный набор функций. Классическим примером является процессоры Motorola MC680x0. Некоторые процессоры Intel совместимы с СISC, но у них всё же RISC-ядро, и их можно отнести к гибридным.

Типы памяти:

  • Архитектура Фон-Неймана – это принцип одновременного хранения в ячейках памяти и данных. Недостатком такого принципа является ограничение пропускной способности между вычислителем и памятью. Отчасти такая проблема решается кэшировнием, но оно приводит к усложнению всей архитектуры и вызывает когерентность памяти. Основы были заложены Нейманом в 1944 году.
  • Гарвардская архитектура. Отличается от предыдущей тем, что для хранения инструкций и данных предназначены отдельные физические устройства. По такому же принципу построены каналы данных и команд. Была разработана Говардом Эйкеном в конце 30-х годов 20 века.

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

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

Условие №1: Готовность к реализации поставленной задачи

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

Условие №2: Иметь понятие о структуре микроконтроллера

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

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

Условие №3: Уверенное знание инструкций управления микроконтроллером

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

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

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

Программа

В основе программирования микроконтроллеров лежит набор выполняемых в определённой последовательности инструкций. Это и есть программа (в переводе с греческого это слово означает – “запись”), которая, по сути, является последовательными шагами определённого алгоритма действий. Руководствуясь этими предписаниями, устройство и будет осуществлять те или иные действия.

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

Что-то вроде такого:

Активировать светодиод:

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

Выдержать паузу:

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

Потушить светодиод:

  • подать на вывод микроконтроллера логический уровень, гасящий светодиод. Указать число итераций.

Понятие «Программа» тесно связано с другим термином – «Алгоритм».

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

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

Дарим скидку от 60%
на обучение «Инженер-аналитик» до 05 мая
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

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

  • Активировать светодиод.
  • Сделать паузу.
  • Деактивировать светодиод.
Только до 6.05
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

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

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

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

Инструкции, воспринимаемые микроконтроллером, имеют вид последовательности единичек и нулей:

  • 00110101 011000100

Это код команд. Для того чтобы перевести наши слова в этот вид, существуют специальные программы.

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

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

Существует большое количество языков, но подразделяются они на два типа:

  • Низкоуровневые языки программирования.
  • Языки программирования высокого уровня.

Их отличие состоит в «близости» к микроконтроллеру.

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

01010010
01000110
10010011

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

Наиболее востребованные языки программирования:

  • язык низкого уровня – Ассемблер.
  • язык высокого уровня – С (Си).

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

Приведём абстрактный пример их различия:

Допустим перед нами стоит задача найти сумму чисел: 25 и 35.

Машинным кодом это описывается так:

  • 00000101 1101001

На языке низкого уровня:

  • ADD Rd, Rr

На языке высокого уровня:

  • 25+35

Как видите, разница в наглядности очевидна.

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

Инструкция ADD Rd, Rr ставит перед микроконтроллером задачу сложения двух чисел, находящихся соответственно в Rd и в Rr (но предварительно необходимо их туда записать). Таким образом, контроллер получает чёткое указание: где что находится, что надо просуммировать, и куда записать результат. В этом заключается работа с электронным устройством напрямую.

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

Здесь то и есть главное принципиальное отличие высокоуровневых и языков низкого уровня. Кодирование на Ассемблере независимо от нашего желания подразумевает полный контроль всего процесса: нам известно, в каком месте записаны эти два числа, и мы знаем, где будет результат. Другая картина при использовании языка С: программа сама решает местонахождение чисел и их суммы. В большинстве случаев в этом и нет необходимости, главное получить итог – число 60 на выходе.

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

Эту задачу выполнит компилятор – «переводчик» на машинный код. Тут и скрывается один из недостатков: один и тот же алгоритм, реализованный на Ассемблере и на С после компиляции, будет иметь разный размер. Низкоуровневая программа будет чуть ли не вдовое короче. В некоторых случаях даже делают вставки на Ассемблере в программу, написанную на С.

Быстрый способ начать программировать микроконтроллеры

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

Оперативно получив приемлемый результат, можно более углубленно изучить все тонкости и «подводные камни» этого процесса.

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


Как изучить новый, но необычайно перспективный вид деятельности? Станьте специалистом в сфере интернета вещей.
Вы познакомитесь с основами программирования и создания устройств для Интернета вещей. Научитесь проектировать, разрабатывать и тестировать умные устройства, которые будут управляться через интернет. Курс проводится профессиональными преподавателями, которые помогут вам освоить все необходимые знания и навыки для успешной карьеры в IT-сфере. Не упустите свой шанс стать разработчиком умных устройств!

GeekBrains представляет учебное пособие «Факультет. Инженер умных устройств».

Пройдя этот курс вы можете стать специалистом в области интернета вещей — Internet of Things (IoT) и научиться создавать сеть умных гаджетов. Изучите язык C, способы компилирования, отладки и программирования микроконтроллеров Arduino. Кроме этого, овладев необходимыми знаниями, наработаете опыт работы по технологиям удалённого доступа (Bluetooth, Wi-Fi). Что позволит с лёгкостью конструировать современные встраиваемые системы.

Быстрый способ начать программировать микроконтроллеры
Быстрый способ начать программировать микроконтроллеры

Плюсы прохождения данного курса:

  • Регулярно обновляемая программа. Фундаментом служит принцип experiential learning, или по-русски: «повторение – мать учения», который поможет систематизировать накопленные знания и получить практический опыт. Между теоретическими блоками предусмотрен практикум в 7-14 дней для самостоятельного проектирования.
  • Получение в виде бонуса Starter box. Подаренное оборудование для работы в первой четверти пригодится для практической работы. Теория чередуется с тренировками, закрепляющими полученные знания. Изучите устройство и принцип действия транзисторов, датчиков и др., и, наконец, самостоятельно сможете осуществить программирование микроконтроллеров.
  • Улучшение навыков программирования. В конце каждой четверти в рамках дискуссионного клуба происходит выступление эксперта. Все участники могут напрямую обмениваться опытом и своими наработками.
  • Компетентные учителя. Авторами этой программы являются преподаватели GeekBrains, имеющие опыт запуска проектов в масштабах России. Единственные представители СНГ на международном форуме Arduino Day 2021, объединившим как любителей, так и профессионалов, занятых конструированием умных устройств.

Оцените статью
Рейтинг: 2.09
( голосов 22 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...