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

Всё популярнее становится тема электронного конструирования. Предлагаем вашему вниманию статью, которая расскажет, микроконтроллеров для начинающих.

Какие микроконтроллеры существуют?

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

Как микроконтроллеры программируются?

Программирование микроконтроллеров осуществляется, как правило, с помощью специальных приспособлений, которые называются программаторами. Программаторы могут быть или покупными или самодельными. Но при прошивке микроконтроллера с помощью самодельного программатора шанс того, что он превратится в «кирпич», довольно высокий. Есть ещё один вариант, который можно рассмотреть на примере платы «Ардуино». Плата работает на МК фирмы Atmel, и в ней осуществляется программирование микроконтроллеров AVR. В плате уже есть заранее прошитый бутлоадер и порт USB, которые позволяют безопасно прошить используемый микроконтроллер, не давая пользователю доступа к данным, что могут этот самый МК вывести из строя. Программирование микроконтроллеров для начинающих не так сложно, как может показаться, и при определённой сноровке и сообразительности избавит вас от необходимости ехать за новым механизмом.

Аппаратные различия разных микроконтроллеров

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

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

В качестве языков программирования микроконтроллеров используется два: С/С++ и ассемблер. Каждый из них имеет свои преимущества и недостатки. Так, если говорить про ассемблер, то он даёт возможность сделать всё очень тонко и качественно, особенно важно это, когда не хватает оперативной памяти или оперативных мощностей (что, впрочем, довольно редко происходит). Но его изучение и написание программ на нём требует довольно много усилий, пунктуальности и времени. Поэтому для разработок на основе микроконтроллеров часто используют языки программирования С и С++. Они являются более понятными, по своему виду и структуре они близки человеческой речи, хотя и не представляют из себя её в полноценном понимании. Также они имеют очень хорошо проработанный функционал, который может запросто взаимодействовать с аппаратной частью, представляя, что это всего лишь элемент программы. При всех своих явных преимуществах на С и С++ создают более объемные программы, нежели на ассемблере.

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

Напутствие

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

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


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

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

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

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


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

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

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

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

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

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


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


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

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


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

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

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

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

1) Atmel Studio

2) CodeVisionAVR

3) WinAVR

Все эти программы относятся к IDE I ntegrated D evelopment E nvironment – интегрированная среда разработки . В них можно писать код, компилировать и отлаживать его.

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

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

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

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

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

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

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

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

Итак, цель этой статьи в том, чтобы описать и по возможности показать весь процесс создания устройства на основе микроконтроллера с «нуля». То есть, от задумки (например, решили мы собрать новогоднюю мигалку, подобную описанной уважаемым alx32 в статье …) до воплощения в железе. Разумеется, минуя все промежуточные стадии: постановка задачи, выбор МК, подбор обвязки, формулировка алгоритма, написание программы, отладка, создание платы и, самое долгожданное – запуск!!!

Обновлено: добавлены файлы. Итак, задача : нам нужно создать устройство, способное зажигать в определенном порядке (пусть будет по очереди) , N-ное количество светодиодов (пускай будет 8 штук).
(это для начала……..)


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

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

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

Значения (последовательность) можно получить :
- набрав все команды вручную;
- из массива;
- математическим методом.

Временной интервал можно задать :
- функциями delay (задержка);
- через таймер.

Поэкспериментируем со всеми этими способами. Но сначала нужна заготовка…

Чтобы создать заготовку программы воспользуемся генератором кода, встроенным в CVAVR . Для этого запускаем программу, нажимаем File -> New , в открывшемся окне выбираем “Project” и жмем OK . На вопрос «Воспользоваться генератором кода?» отвечаем “Yes”.
Появилось окно генератора кода. В нем выбираем тип МК и его тактовую частоту, остальное оставляем как есть:


Далее переходим на вкладку “Ports” и там в “PortB” и выставляем следующее:


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

Жмем “File -> Generate, Save and Exit” , выбираем куда сохранить файлы проекта и видим окно с созданным генератором кодом.

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

delay_ms(x ); - задержка на x миллисекунд

delay_us(x ); - задержка на x микросекунд

PORTB - порт, с которым мы работаем.

PORTB.x - обращение к выводу x порта B

Находим в конце текста такие строки


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

Исключён фрагмент. Наш журнал существует на пожертвования читателей. Полный вариант этой статьи доступен только


Жмем кнопочку Make the project

(в панели инструментов).

Матерится?
И правильно! Компилятор не знает функции delay_ms() , поэтому надо указать ему файл, в котором эта функция описана.
Для этого в самом начале текста программы нужно вставить строку #include (тут точка_с_запятой не нужна! )
Примерно вот так:

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

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

Именно поэтому предлагаю проверить нашу программу в виртуальном режиме, а именно – в таком замечательном и любимом мною продукте от Labcenter Electronics - Proteus VSM Там можно моделировать абсолютно любые схемы (даже примитивы Лапласа есть!). Взять ее можно в прикрепленном архиве, вместе с файлами проекта. Правда версия не совсем крякнутая, поэтому не работает сохранение. Что с этим делать расскажу в отдельной статье.

Итак, запускаем ISIS (среда разработки принципиальных схем). В этом окне нажимам кнопочку “P”.

В строке “Keywords” вводим “attiny2313” и справа получаем:


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


Это значит, что элемент добавлен.

Теперь введите в поле “Keywords” слова “LED-RED” и “RES” . Добавьте резистор и светодиод в проект и закройте окно выбора элементов.

Пробуем собрать схему (вывод RESET обязательно подключите к +5V, иначе ничего не заработает! и в жизни это тоже желательно!)

Вот небольшая подсказка :

А для редактирования свойств элементов достаточно щелкнуть по ним дважды.

Собрали? Надеюсь, не покалечили при этом себя, близких и окружающие предметы.

Простите за издевательство, просто если разберешься сам – уже не забудешь, так что, постигайте, программа очень мощная и она стоит того, чтобы ее освоить! :laughing:

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

Рассказывает об опыте введения программирования микроконтроллеров в школьную программу для детей с ОВЗ. Текст публикуется с разрешения автора.

Почему робототехника с Arduino?

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

Уважаемые коллеги, еще раз хочу обратить ваше внимание. Робототехника — это не только информатика, но и физика, химия, биология и т. п. И в этих предметных областях можно столько интересных проектов с учениками сделать, если еще раз хорошенько присмотреться к робототехнике. Подсказка: датчики. Их можно смастерить самим (материала предостаточно в интернете), некоторые можно купить. Плюс к этому — плата (или любой аналог), Troyka Shield и лаборатория готова (ну почти готова, нужно не забыть откалибровать собранный прибор).

Но многие почему-то все же обходят эту тему стороной, считая ее сложной для понимания. Кто-то все никак не может решиться, ведь это отнимает уйму времени. А кто-то надеется, что когда-нибудь в школе появится Lego или цифровые лаборатории (с датчиками PASCO, например), вот тогда уж… или ждут, когда учебник напишут, да методические пособия с планированием. Но посмотрим, что происходит — пока мы тут раскачиваемся, наши с вами ученики уже и в этом вопросе обходят нас (они самостоятельно осваивают эту тему, строят собственных роботов и конструируют 3D-принтеры).

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

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

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

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

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

Если смотреть со стороны технического оснащения, использовать было решено CMPC (я рассчитывал, что это ускорит работу и позволит избежать потерю времени на уроке) и платы Freeduino Nano с платами расширения.

Но включив компьютер, на первом же уроке я понял, что нужно срочно сносить лишний софт (особенно e-Learning 6.0 очень замедляет работу, интересно, что, когда я помогал проводить уроки по другим предметам, оказывая техническую поддержку, меня это так не раздражало). А вообще, у меня в мыслях установить Linux , но пока проблемы со временем.

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

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

Программирование микроконтроллеров. Обучение продолжается

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

Набор «Матрешка Z»

Набор «Матрешка Z»

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

В первый день, когда дети увидели сей набор, восторга было словами не передать. Особенно мне понравилась реакция моей девичьей группы. Для каждой детальки они тут же придумали свое название (стульчик, кроватка, жучок, шашлычок, паучок и т.п.). И пока переустанавливали программное обеспечение под Arduino Uno (нужна была более свежая версия), они разыграли целый спектакль (вот такие творческие у меня ученицы).

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

В результате мною был приобретен еще один набор, только уже Матрешка Y , а с ним еще:

  • IO Shield,
  • соединительные провода,
  • трехосный акселерометр,
  • инфракрасный датчик движения,
  • латунные стойки, 2 комплекта,
  • Breadboard Mini, 2 штуки,
  • Proto Shield в сборе,
  • датчик газа,
  • блок питания.

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

  • (довольно дешевый вариант, правда, паять придется все от начала до конца),

  • датчик магнитного поля,
  • датчик линии (QTR-8A Reflectance Sensor Array более глазастый),
  • датчик линии (этот датчик для начальных экспериментов),
  • Freeduino USB complete KIT (а-ля спаяй сам Freeduino, взял, чтобы потренироваться перед пайкой робота, ну и в хозяйстве пригодится (про процесс пайки подробно в ближайшее время тоже расскажу, все заснял на фотоаппарат)),
  • iPodEXT Assembled (дает возможность подключится к Ipad и Iphone, но пока не знаю, насколько это получится),
  • датчик температуры и влажности.

Но это все железная сторона вопроса.

Самое главное, пожалуй, это то, что за это время стало вырисовываться, что и в каком порядке давать (в смысле какие темы). Подбираются практические задания, которые я постепенно оформлю и опубликую. Да, отдельное спасибо хочу сказать Паршеву Александру Анатольевичу (не только от меня, но от моих учеников), его личный блог меня очень выручил. По приезду из Лондона дел успело накопиться много (помимо урочной деятельности), а здесь — готовые задания и как раз в нужный момент: Занятие 2 , Занятие 4 , Занятие 5 .

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

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

  • самый оптимальный вариант на сегодня для школы это Матрешка Y и Матрешка Z ,
  • с одним комплектом работать могут не более одного ученика,
  • если у вас 2 часа в неделю робототехники и занятия не спаренные, то комплектов понадобится в двое больше
  • количество датчиков в наборах не достаточное (только на начальный уровень), поэтому нужно планировать их закупку дополнительно, а также специальных плат (IO Shield) для возможности подключения нескольких датчиков, двигателей, сервоприводов к Arduino,
  • дополнительно придется докупить и сервоприводы (по одному на набор Матрешка),
  • плюс к этому нужно выбрать уже готовые робот-платформы (это может быть и рука манипулятор), которые в заключение ученики будут иметь возможно обучить чему-то (собрать робота реально только в рамках дополнительного образования, хорошо, когда параллельно есть уроки по программированию микропроцессоров и кружок по робототехнике).

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

В набор входит комплект перемычек.

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

Программирование микроконтроллеров. Еще раз про Матрешку

Матрешка Y и Z версии хорошо использовать — в основном из-за удачной комплектации, а также ко всему прочему существует Амперка/Вики в поддержку данного проекта, где выложены замечательная подборка видеоуроков по Arduino от Джереми Блюма , переведенных на русский и много других интересных проектов, некоторые из которых можно без какого-либо изменения использовать на уроке.

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

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

Начался урок, я рассказываю детям, чем мы будем заниматься на уроке. Они открыли страницу со схемой подключения, достали макетную плату детали, провода и микросхему-драйвер. Ни о чем не подозревая, разместили два индикатора по бокам, как показано на схеме, разместили драйверы. И тут мои ученики посчитали количество ног у микросхемы и в один голос с недоумением говорят мне: «А двух ног не хватает. Что делать?». Мне осталось констатировать тот факт, что при комплектации была положена другая микросхема, ее аналог. В место CD4026 положили К176ИЕ4 (но нигде в описании об этом не упоминалось.)

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

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

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

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

Управление осуществляется при помощи специальных программ.

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

  • встраиваемые;
  • 8-, 16- и 32-разрядные;
  • цифровые сигнальные процессоры.

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

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

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

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

Чаще всего встречаются микроконтроллеры следующих семейств:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (Microchip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

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

  • Mega - семейство мощных микросхем с развитой архитектурой.
  • Tiny - недорогие изделия, имеющие восемь выводов.

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

Изделия компании «Атмел» просты и понятны. Однако для использования всего функционала придется разработать программное обеспечение. Приступать к программированию микроконтроллеров AVR для начинающих рекомендуется с загрузки специализированной среды Atmel Studio. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.

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

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

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

На самом деле, можно использовать практически любые языки программирования микроконтроллеров. Но популярнее всех С/С++. Это язык высокого уровня, позволяющий работать с максимальным комфортом. Более того, в разработке архитектуры AVR принимали участие создатели Си. Поэтому микросхемы производства «Атмел» адаптированы именно к этому языку.

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

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

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

Первые микроконтроллеры PIC появились во второй половине прошлого века. Быстрые 8-разрядные микросхемы компании Microchip мгновенно завоевали популярность. Двухшинная гарвардская архитектура обеспечивает беспрецедентную скорость. Ее разрабатывали на основе набора регистров, для которого характерно разделение шин.

Выбирая язык программирования микроконтроллеров PIC, необходимо учитывать, что в основе микросхем семейства лежит уникальная конструкция RISC-процессора. Симметричная система команд позволяет произвольно выбирать метод адресации, выполнять операции в любом регистре. На данный момент компания «Микрочип» выпускает 5 разновидностей МК, которые совместимы по программному коду:

  1. PIC18CXXX (75 команд, встроенный аппаратный стек);
  2. PIC17CXXX (58 команд 16-разрядного формата);
  3. PIC16CXXX (35 команд, большой набор периферийных устройств);
  4. PIC16C5X (33 команды 12-разрядного формата, корпуса с 18–28 выводами);
  5. PIC12CXXX (версии с 35 и 33 командами, интегрированный генератор).

В большинстве случаев МК PIC имеют однократно программируемую память. Встречаются более дорогие модели с Flash или ультрафиолетовым стиранием. Ассортимент из 500 наименований позволяет подобрать изделие для любой задачи. Сейчас производитель концентрирует усилия на развитии 32-разрядных версий с увеличенным объемом памяти.

Языки программирования микроконтроллеров PIC - это Ассемблер и Си. Для кодирования подходят любые интегрированные среды разработки (IDE). Программировать с их помощью очень удобно. Они автоматически переводят текст программы в машинный код. Важной характеристикой IDE является возможность пошаговой симуляции работы готового ПО. Мы рекомендуем пользоваться средой разработки MPLAB. Ее созданием занималась компания Microchip.

Перед началом работы в MPLAB советуем каждый раз заводить отдельную папку. Это нужно, чтобы не запутаться в файлах проектов. Интерфейс программы интуитивно понятный, и трудностей с ним возникнуть не должно. Для отладки используются фирменные отладчики Pickit, ICD, REAL ICE, IC PROG. В них имеется возможность просмотра содержимого памяти, установки контрольных точек.