Программирование микроконтроллеров семейства Atmega на базе системы Arduino
Автор: Очкуренко Г.О.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Основной раздел
Статья в выпуске: 4 (46), 2019 года.
Бесплатный доступ
В статье рассмотрена электронная платформа Arduino и ее преимущества, а также один из микроконтроллеров atmega вместе со способом его программирования.
Микроконтроллер, программатор, плата
Короткий адрес: https://sciup.org/140274448
IDR: 140274448
Текст научной статьи Программирование микроконтроллеров семейства Atmega на базе системы Arduino
Arduino - это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. Платы Arduino способны считывать входы - свет на датчике, палец на кнопке или что-нибудь еще. Вы можете сообщить своей плате, что делать, отправив набор инструкций на микроконтроллер на ней. Для этого вы используете программное обеспечение Arduino и официальную среду программирования Arduino (IDE).
Arduino уже успел стать мозгом тысяч проектов, от повседневных предметов до сложных научных инструментов. Мировое сообщество производителей - учеников, любителей, программистов и профессионалов.
Arduino родился в Институте дизайна взаимодействия Ivrea как простой инструмент для быстрого прототипирования, ориентированный на студентов, не имеющих опыта работы в области электроники и программирования. Как только это достигло более широкого сообщества, Arduino начал меняться, чтобы адаптироваться к новым потребностям и задачам, меняя свое предложение от простых 8-битных плат для продуктов до приложений для трехмерных и встроенных сред. Все платы Arduino являются полностью открытыми, позволяя пользователям создавать их. Программное обеспечение также является открытым исходным кодом, и оно растет благодаря вкладу пользователей во всем мире.
Преимущества Arduino:
-
• Они недорогие - платы Arduino относительно недороги по сравнению с другими платформами микроконтроллеров. Самая дешевая версия модуля Arduino может быть собрана вручную, и даже предварительно собранные модули Arduino стоят менее 50 долларов США.
-
• Кроссплатформенность. Программное обеспечение Arduino (IDE) работает в операционных системах Windows, Macintosh OSX и Linux. Большинство систем микроконтроллеров ограничены Windows.
-
• Простая и понятная среда программирования. Программное обеспечение Arduino (IDE) легко осваивается новичками, но оно достаточно гибкое, чтобы продвинутые пользователи могли воспользоваться
преимуществами. Для преподавателей это удобно на основе среды программирования Processing, поэтому учащиеся, обучающиеся в этой среде, будут знакомы с тем, как работает IDE Arduino.
-
• Открытое и расширяемое программное обеспечение. Программное обеспечение Arduino публикуется как инструменты с открытым исходным кодом, доступные для расширения опытными программистами. Язык может быть расширен через библиотеки C ++, и люди, желающие понять технические детали, могут сделать скачок от Arduino до языка программирования AVR C, на котором он основан. Аналогично, вы можете добавить код AVR-C непосредственно в свои программы Arduino, если хотите.
-
• Открытый исходный код и расширяемое оборудование. Планы плат Arduino публикуются под лицензией Creative Commons, поэтому опытные дизайнеры могут создавать собственную версию модуля, расширяя его и улучшая его. Даже относительно неопытные пользователи могут построить макетную версию модуля, чтобы понять, как он работает и сэкономить деньги.
Что из себя представляют микроконтроллеры atmega и какие они бывают? Микроконтроллер позволяет нам гибко управлять, системами, процессами и т.п, имеет небольшие габариты, по функциональности это миникомпьютер. Микроконтроллеры выпускаются разными фирмами. Одна из разновидностей микроконтроллеры AVR фирмы Atmel. Почему чаще всего выбирают именно эти микроконтроллеры? Их довольно просто найти в магазине, легко найти примеры готового кода, встроенный функционал позволяет решать даже сложные задачи.
Небольшой пример использования микроконтроллера: Предположим вам поставили задачу — заставить мигать светодиод. Решить ее можно разными способами: к примеру, взять тумблер или кнопку и посадить рядом человека, чтобы он включал и выключал его. Однако никто в здравом уме не будет этого делать. Второй вариант - можно собрать мультивибратор. Для того чтобы помигать, одним светодиодом вполне даже хорошее решение. К тому же просто, дешево, надежно. Ну и, наконец, также можно использовать микроконтроллер. Хотя это будет немного дороже чем собрать мультивибратор. Нужно будет написать программу, прошить, получить результат, и, если нужно, выполнить настройку. Но что если усложнить задачу? Например, 5 светодиодов и 5 вариантов их мигания (изменяется скорость и порядок их мигания). Первый вариант сразу отпадает, вторым способом сделать можно, но размеры устройства резко увеличатся. Третий же вариант останется примерно тех же размеров, достаточно дописать пару строк кода. Следовательно, есть разные задачи и пути их решения, но в большинстве сложных задач всегда используются микроконтроллеры потому что они оптимальны по затрачиваемым ресурсам и предоставляемому функционалу.
Конкретно семейство atmega имеет следующие характеристики:
megaAVR ( ATmega xxx):
-
• Флеш-память до 256 Кб; SRAM до 16 Кб; EEPROM до 4 Кб;
-
• Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
-
• Аппаратный умножитель;
-
• Расширенная система команд и периферийных устройств.
Под xxx в ATmega xxx имеются в виду разные версии устройства с разными характеристиками, например: atmega8 и atmega16 с 8 и 16 килобайтами флеш-памяти соответственно. Это средний класс устройств. Есть и другие семейства, tinyAVR (ATtinyxxx) и MEGA AVR (ATxmegaxxx), которые отличаются от atmega8 характеристиками, но рассматривать сейчас мы их не будем.
ATmega8 предоставляет следующие возможности: 8 Кбайт встроенной программируемой памяти с возможностями чтения-записи, 512 байт EEPROM(энергозависимая память), 1 Кбайт SRAM(полупроводниковая энергозависимая оперативная память), 23 линии ввода-вывода общего назначения, 32 основных регистра общего назначения, три гибких таймера. Счетчики с режимами сравнения, внутренние и внешние прерывания, последовательный программируемый USART, байтовый ориентированный последовательный интерфейс Twowire, 6-канальный АЦП (восемь каналов в пакетах TQFP и QFN / MLF) с 10-разрядной точностью, программируемый сторожевой таймер с внутренним осциллятором, последовательный порт SPI, и пять программных режимов энергосбережения. Режим Idle останавливает CPU, позволяя продолжить работу SRAM, Timer / Counters, SPI и прерывания. Режим Powerdown сохраняет содержимое регистра, но замораживает осциллятор, отключая все остальные функции чипа до следующего прерывания или аппаратного сброса. В режиме энергосбережения асинхронный таймер продолжает работать, позволяя пользователю поддерживать базу таймера, пока остальная часть устройства спала.
Устройство изготовлено с использованием технологии энергонезависимой памяти Atmel с высокой плотностью. Память Flash Program может быть перепрограммирована внутрисистемно через последовательный интерфейс SPI, обычным энергонезависимым программным обеспечением памяти или программой загрузки на чипе, работающей на ядре AVR.
Программа загрузки может использовать любой интерфейс для загрузки прикладной программы в флэш-память приложения. Программное обеспечение в разделе Boot Flash продолжит работу во время обновления раздела Flash приложения, обеспечивая истинную операцию Read-While-Write. Объединив 8битный RISC-процессор с встроенной самопрограммируемой памятью на монолитном чипе Atmel.
ATmega8 - это мощный микроконтроллер, который обеспечивает очень гибкое и экономичное решение для многих встроенных приложений управления. Также он поддерживается полным набором программных и системных средств разработки, включая компиляторы C, макроассемблеры, программные симуляторы и оценочные комплекты.
Теперь можно рассмотреть простую задачу по программированию микроконтроллера семейства AVR. Вспомним пример со светодиодами который я приводил, и поставим себе задачу заставить мигать светодиод который находится на отладочной плате atmega8. Для этого нам понадобятся: программатор USBasp с шлейфом, отладочная плата atmega8, и сам микроконтроллер atmega8, а также программа для прошивки Khazama AVR Programmer и среда проектирования IDE Atmel Studio.
Первым шагом будет установка программатора и обновление его драйверов, для этого нужно в диспетчере задач найти во вкладке «другие устройства» сам программатор(USBasp) и обновить его драйвер. Следующим этапом потребуется установить саму программу для прошивки Khazama AVR Programmer. Далее собираем комплектующие в одну схему: программатор – шлейф – отладочная плата AVR с микроконтроллером, и подключаем к компьютеру через USB, на программаторе должны будут засветиться светодиоды – это значит, что питание было подано. Дальше нужно будет прошить программатор, выбираем файл прошивки и загружаем его. После обновления прошивки в программаторе и считывания данных с платы AVR, если все прошло без каких-либо ошибок – можно считать все успешно работает.
Теперь необходимо установить среду проектирования (IDE Atmel Studio), выбираем все необходимые настройки и выполняем установку. После установки в среде проектирования добавляем наш программатор в нее и теперь можно создать проект. При создании проекта выбираем необходимые настройки, такие как корневую папку, тип проекта, выбор самого девайса для проекта и т.д. Для данной задачи удобно будет использовать язык C++. После того как вы напишете свою прошивку для платы AVR на которой будет находиться светодиод, можно прямо из программы запустить ее и увидеть результат. Разумеется, для этого нужно чтобы программатор с платой AVR были подключены к компьютеру. Вот такими не сильно хитрыми манипуляциями и решается эта простая задачка. Выполнив ее, считайте вы уже сделали первый шаг к программированию микроконтроллеров.
Микроконтроллеры сравнительно недавно вошли в нашу жизнь, но мы уже очень сильно зависим от них во многих областях. В этой статье я рассмотрел один из простейших и доступнейших микроконтроллеров для того, чтобы было понятнее с чем мы часто имеем дело, а также чтобы было понятно откуда начитать свое ознакомление с миром средств для построения простых, и не очень, систем автоматики, или даже робототехники. Очевидно, Arduino Software, создали свои средства для того, чтобы множество людей могли познакомится и углубиться в создание интересных проектов, и раскрыть свои таланты. Поэтому если и начинать свой путь к разработке электронных устройств и программированию, то вполне стоит сделать это с Arduino. В конце концов, чем больше заинтересованных и талантливых людей будут совершенствоваться в этом, тем больший прогресс ждет человечество.
Список литературы Программирование микроконтроллеров семейства Atmega на базе системы Arduino
- Техническая спецификация «ATmega8» [Электронный ресурс]. - Электронные данные. - Режим доступа: http://www.atmel.com/avr
- Информационный портал. [Электронный ресурс] - Электронные данные. - Режим доступа http://www.gaw.ru
- Информационный портал. [Электронный ресурс] - Электронные данные. - Режим доступа http://cxem.net