Программирование контроллеров с чего начать
Перейти к содержимому

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

  • автор:

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

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

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

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

Структура и порядок написания программы

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

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

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

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

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

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

Компиляция программы

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

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

Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Программатор

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

Программатор USBASP

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

Теперь давайте подытожим этапы программирования микроконтроллеров.

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

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

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

Необходимый набор программ

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

Все эти программы относятся к IDEIntegrated Development Environment – интегрированная среда разработки. В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

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

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы AVRDUDE .

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

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

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

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

2) Datasheet на ATmega8

5) Программатор USB ASP (+ драйвер на него)

6) Макетная плата

7) Микроконтроллер ATmega8

Если микроконтроллера нет в наличии, не стоит откладывать изучение микроконтроллеров на потом, достаточно скачать и установить:

2) Datasheet на ATmega8

Как стать программистом микроконтроллеров

В Контакте Ютуб Почта

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

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

Это лишь обзор основных моментов, а не полное руководство к действию Назначение этой статьи — дать новичкам представление о том, что им нужно будет изучить, чтобы достичь своей цели. Итак, поехали…

Основы электротехники и электроники

Это первое, что должен знать человек, который хочет стать программистом микроконтроллеров. При чём здесь электроника, а тем более электротехника? Где инженер-электроник, и где программист микроконтроллеров?

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

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

Выбор микроконтроллера

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

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

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

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

И поэтому я советую выбирать для обучения распространённое семейство микроконтроллеров, чтобы потом не пришлось переучиваться. А самыми распространёнными (ну во всяком случае среди любителей) являются микроконтроллеры PIC и AVR.

Документация на микроконтроллер

На начальном этапе обучения документацию на конкретный микроконтроллер можно не изучать. Однако при профессиональной разработке это будет необходимо. Так как чтобы выжать из микроконтроллера все его возможности, надо эти возможности знать на 100%. А узнать их (и при этом быть уверенным, что это соответствует реальности) можно только из официальной документации на конкретный прибор.

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

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

Каждый профессионал должен в совершенстве владеть профессиональным инструментом.

Если солдат плохо владеет ножом или автоматом, то его просто убьют в первом же бою.

Законы выживания программистов не столь суровы. Однако и здесь умение владеть инструментом играет решающую роль.

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

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

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

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

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

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

Заключение

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

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

С чего начать в программировании микроконтроллеров?

Имеется 4 летний опыт разработки веб приложений. Давнее желание пощупать микроконтроллеры. Техническое образование. Готовность к относительному хардкору. Базовые знания в области C/C++ и ассемблера.
Хочется попробовать делать вещи для систем вроде умного дома. То есть автоматизация управления различными вещами, устройствами и взаимодействие с системами связи.
Не хочется собирать плату с 0 самостоятельно, искать под нее транзисторы, резисторы и т.д.

Ожидаю какую-то готовую плату, которая позволит быстро начать и развернуться в широком диапазоне, относительно простая для изучения, хорошо документированная, со своей средой разработки и комьюнити. Однако при этом не хочется чтобы плата затерла фундаментальное понимание «как же оно всё работает», поэтому относительно ардуино есть опасения, и к тому же она весьма дорогая. Вообщем как всегда нужна золотая середина. У кого есть опыт, посоветуйте пожалуйста, на что потратить деньги чтобы утешить свою любопытство в этой области.

  • Вопрос задан более трёх лет назад
  • 7619 просмотров

1 комментарий

Оценить 1 комментарий

Чарльз Платт электроника для начинающих
Решения вопроса 1

trampick

Веб-разработчик

Приветствую. Сам web разработчик и как хобби играюсь с железом. Для работы с микроконтроллером как минимум необходимы какие то знания электронике и схемотехнике. Затем я советовал бы взять arduino. На него очень много уроков и схем плюс среда ide простая для понимания. По цене не соглашусь. Можно саму плату взять за рублей 500 с китая. К нему еще стартовые радиодетальки — светодиоды, резисторы, кнопки и т.д. — тоже не дорого. Все это можно собрать за 1000-1500р — в наше время это не много.
Как более сложный уровень я бы советовал взять какую-нибудь платку stm32. К ней тоже будут нужны компоненты.
За 2000 можно собрать неплохой комплект.
На этому сайте есть недорогие платки

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Ответы на вопрос 7

kashamalasha

Дмитрий @kashamalasha

  • *duino плата (желательно Uno или Mega) — 1шт.
  • Макетная безпаечная плата (solderless breadboard) — 2шт.
  • Резисторы — по 10 шт каждого номинала от 1Ом до 22МОм по ряду Е12
  • Набор светодиодов 3мм. на 20мА — штук 5 лучше разных цветов
  • Тактовые кнопки — штуки 4-6
  • Потенциометры разных номиналов — пара штук
  • Фоторезисторы — пара штук
  • Полупроводниковые диоды — штук 10
  • Биполярные транзисторы npn 222 (для ключей) — штук 10
  • Полевые логические транзисторы для моторов и LED-лент — штуки 2
  • Блоки реле для коммутации 220В — несколько штук опционально
  • Набор конденсаторов электролитических — штук 10 разных номиналов на 12-35В
  • Регуляторы напряжения 7805 или 317 — опционально
  • Батарейка типа Крона — опционально

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

  • Паяльник 30Вт
  • Мультиметр любой
  • Пинцет
  • Узкогубцы
  • Куча обувных коробок, чтобы все это хранить

Можно все купить одним набором, например так: amperka.ru/product/matryoshka-z выложив 4 стоимости от составляющих комплекта, либо все по кускам покупать на eBay.

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

Ответ написан более трёх лет назад
Нравится 4 2 комментария

nitro80

Дмитрий Дмитрий, а аналог этому набору на aliexpress можете подсказать, но только не
>выложив 4 стоимости от составляющих комплекта

kashamalasha

Дмитрий @kashamalasha

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

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

Для Ардуины действительно существует куча шилдов и примеров кода на своем упрощенном языке(хотя это по-прежнему C++), что для старта очень даже неплохо — при наличии желания можно разобраться в том, как все устроено еще до того, как возьмете в руки паяльник.
И никто не мешает вам, при достижении определенного уровня, перейти на программирование контроллеров с помощью других компиляторов, исключая Arduino IDE и lazy coding. При этом на первых порах по-прежнему можно использовать Arduino-загрузчик и не париться со всеми проблемами сразу.

Сразу же рекомендую кроме Ардуино купить на будущее что-нибудь типа STM32 Nucleo. У этой платы есть совместимость с Arduino-шилдами, mbed-загрузчик(заливка прошивки происходит простым копированием на виртуальную USB-флешку), а так же полноценный STLink-программатор с пинами для программирования внешних контроллеров — это значит, что в последствии вы можете собрать собственный девайс на STM32 микроконтроллере и с помощью встроенного в Nucleo SLink-программатора его запрограммировать, просто подсоединив пару проводков(SWD).

И впоследствии, если не растеряете желание расти, вполне сможете создавать уже свою электронику и при этом, к примеру если остановитесь на STM32 контроллерах, все еще использовать STLink от Nucleo для программирования своих девайсов.
Выглядеть это будет приблизительно так: 5.101.107.156/Habr/IMG_1235.JPG
Здесь две Nucleo-платы слева используются как STLink-программаторы для двух плат справа соответственно )

Ну а дальше все зависит только от вас.
Удачи )

Микроконтроллеры. Основы. Базовые принципы. Освоить, изучить

Вам просто необходимо сперва посмотреть на характеристики, почитать документацию, набор команд одного и другого типа, чтобы решить для себя, на чем остановиться. Да, да. Остановиться придется, если вы не собираетесь каждый день разрабатывать новые устройства. И не только на семействе, но и на моделях. Лучше знать одну-две модели микроконтроллеров на «отлично», чем 10 посредственно. Это скажется на качестве ваших разработок.

Я для себя остановился на семействе AVR. Мне оно показалось как-то роднее, что ли. Я начинал еще с процессоров Z80, Intel 8088 и во мне простенькая 8-битная архитектура вызвала какие-то теплые чувства. Вот, признался в любви к процессорам. Прочитала бы это моя жена.

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

Вашему вниманию подборка материалов:

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

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

С чего начать. Основы

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

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

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

В моем случае мне просто повезло. Си знаю, с основами электроники и электротехники знаком. На самом деле моих познаний в электронике, программировании и микропроцессорах оказалось (о чудо!) вполне достаточно, чтобы через два дня изучения материалов я принялся нечто создавать. Забегая вперед, скажу, что мое ‘нечто’ в итоге оказалось весьма навороченным трехблочным устройством с дисплеем и сохраняемыми настройками, которое (тьфу-тьфу) превосходно работает по сей день.

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

Преимущества схем на микроконтроллерах

Теперь о хорошем. Вам, наверное, повезло. Первоначально планировалась небольшая статья о микроконтроллерах. Я ее написал почти в том виде, как вы сейчас читаете. Лишь для того, чтобы рассказать некие основы и где, что искать. Но, как говорится, аппетит приходит во время еды. После того, как я отправил статью в редакцию, было принято решение о цикле статей, в которых будет более исчерпывающая информация с примерами схем и кода. Что я и буду пытаться сделать. Если у вас возникнут какие-то пожелания по содержанию будущих статей, пишите, пожалуйста, в редакцию. Я постараюсь их учесть. Сразу скажу – проектирование и описание сложных схем не входит в наши планы. Все примеры я буду делать на базе сборки ATMega 16, фото которой вы сможете увидеть ниже по тексту. Там у меня есть и динамик, и светодиоды, и кнопки, и дисплей.

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

Если что-то непонятно, обязательно спросите!
Задать вопрос. Обсуждение статьи.

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

Повышающий импульсный преобразователь напряжения. Силовой ключ — бипол.
Как сконструировать повышающий импульсный источник питания. Как выбрать мощный т.

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

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

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

Мощный полевой транзистор irfp2907. МОП, MOSFET. Свойства, параметры, .
Применение и параметры IRFP2907, мощного полевого транзистора, рассчитанного на .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *