Основы программирования микроконтроллеров AVR

Основы программирования микроконтроллеров AVR

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

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

osnovyi-programmirovaniya-mikrokontrollerov-dlya-nachinayushhih


Стартовый набор начинающего микроконтроллерщика

Для начала я бы разделил начинающих микроконтроллерщиков на три условные группы:

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

Для первой группы все очень просто:
— приобрести программатор и научиться с ним работать

Для второй группы остановлюсь немного подробнее.
Arduino ориентирована на начинающих, непрофессиональных пользователей, и состоит из двух частей — программной и аппаратной.

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

Язык программирования — стандартный С++ с некоторыми изменениями облегчающими работу с этим языком (хотя есть возможность создавать программы или подключать готовые файлы проектов используя стандартный язык С++). Научиться программировать в Arduino очень просто (поэтому программы на Arduino называются «наброски») — весь процесс программирования сводится в основном к выбору необходимых готовых библиотек для получения конкретного результата.

Аппаратная часть состоит из готовой платы с микроконтроллером с необходимой обвязкой для нормальной работы микроконтроллера и плат расширения (шилды). Кроме того выпускается множество готовых датчиков и исполнительных устройств. Весь процесс сборки конструкции на Arduino напоминает конструктор «Лего» — выбираете необходимые платы расширения и устройства и стыкуете их с основной платой. Для загрузки программы отдельный программатор не требуется.

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

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

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

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

А теперь к главному:

1. Для практических опытов нам потребуется микроконтроллер (а лучше три):
— наиболее популярные и востребованные микроконтроллеры — ATmega8A-PU и ATtiny2313A-PU, ATtiny13A- PU. Кстати, ATtiny13 очень популярный МК, и не зря его называют «малюткой» — малые возможности — но серьезные разработки.

2. Для записи программы в микроконтроллер необходим программатор:
— идеальное решение, на мой взгляд, — программатор USBASP, от которого мы к тому-же будем получать напряжение 5 Вольт для будущих конструкций.

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

  • светодиоды;
  • семисегментный светодиодный индикатор;
  • знакосинтезирующий (буквенно-цифровой) LCD дисплей.

4. Для изучения процессов общения микроконтроллера с другими устройствами:
— цифровой датчик температуры DS18B20 и часы реального времени DS1307 (очень практичные устройства).

5. Кроме того нам потребуются транзисторы, резисторы, кварцевые резонаторы, конденсаторы, кнопки:

  • биполярные транзисторы структуры NPN и PNP;
  • набор резисторов различного номинала;
  • кварцы (вот тут я выкинул лишнее) на 32,768 кГц, 8 МГц;
  • керамические конденсаторы на 22 pF;
  • тактовые кнопки.

6. Для сборки конструкций на микроконтроллере понадобится макетная плата для монтажа без пайки и набор перемычек к ней:

  • макетная плата МВ102 (идеально иметь две такие платы — они стыкуются между собой, что очень пригодится в дальнейшем);
  • соединительные перемычки к макетной плате трех типов — гибкие (мама-мама, папа-папа) и жесткие П-образной формы.

Получается вот такой набор:

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

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


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

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

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

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

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

Микроконтроллеры AVR выпускает фирма Atmel, она же предоставляет в наше распоряжение бесплатную среду программирования «Atmel Studio» (бывшая AVR Studio). На ней мы и остановимся.

Интегральная среда разработки (IDE — Integrated development environment) Atmel Studio позволит нам:

  • писать программы как на Ассемблере, так и на Си (Почему на Си. Программа «Atmel Studio» позволяет писать программы на трех языках (О чем мы и погорим в первой статье), но есть одно но: программы на Си++ мы рассматривать не будем, по одной причине, и в следующей статье я расскажу об этом;
  • отладить программу;
  • перевести программу в машинный код (откомпилировать);
  • записать программу в микроконтроллер.

Все, выбор мы сделали:


Теперь осталось выполнить два пункта:

1. Обзавестись каким-нибудь стартовым набором (для начала хватит и микроконтроллера ATmega8, нескольких светодиодов, пары кнопок и сопротивлений к ним).

2. Установить (именно установить, а не скачать, и с регистрацией) с официального сайта Atmel (http://www.atmel.com/ru/) программу Atmel Studio.

Программировать микроконтроллеры мы будем с использованием программатора USBASP.

Отдельной статьи по Atmel Studio я писать не буду, будем изучать ее постепенно, по мере надобности и в связке со статьями по устройству и программированию микроконтроллеров.

3. Я добавил в набор очень нужную вещь, она Вам в дальнйшем очень пригодится — USB-TTL преобразователь (конвертер). Почему пригодится:
— русифицируя программу мы установили «Visual Studio-2015», кто не русифицировал программу — установите последнюю версию «Visual Studio», мы не только будем изучать базовую программу «Atmel Studio». К сожалению, на сегодняшний день только программа 2015 года позволяет перейти на русский язык в «Atmel Studio», но а мы с Вами, в «Visual Studio», будем создавать оболочки для работу с МК.


Следующие статьи

1. Русификация программы Atmel Studio


Примечание: к этой записи прикреплена форма для оценки. Чтобы оценить её, зайдите на сайт.
Устройство и программирование микроконтроллеров AVR в среде Atmel Studio на языках Ассемблер и Си
Published by: Мир микроконтроллеров
Date Published: 10/01/2016

11 ответов к “Основы программирования микроконтроллеров AVR”

Здравствуйте!
А почему при попытке зайти на сайт по ссылке http://www.atmel.com/ru/, выскакивает страница компании Microchip?)) Или это только у меня такое? Заходил с VPN-ном и без него. Живу в Одессе..

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

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

Как ушел? А статьи тогда там кто добавляет? Самая свежая статья опубликована там совсем недавно — 21 декабря 2021 года.

Там же где и описание СИ. AVR Studio это среда разработки, а не обучение ассемблеру. Команды ассемблера написаны в даташите на нужный контроллер.

ищи литературу и учебники по асму для авр. как пример книги Белова, Ревича и др.

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

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