В мире микроконтроллеров и электроники существует множество различных типов. Одним из самых популярных типов микроконтроллеров является семейство AVR. Эти микроконтроллеры могут использоваться в различных проектах или продуктах, поскольку они имеют множество применений и функций.
Если вы хотите начать работу над проектом Arduino, но не знаете, как запрограммировать микроконтроллер AVR с помощью Arduino, не волнуйтесь! В этом блоге мы рассмотрим все возможные варианты!
Что такое микроконтроллер AVR?
Микроконтроллер AVR — это микроконтроллер, использующий набор инструкций AVR. AVR — это модифицированный однокристальный микроконтроллер с 8-разрядной архитектурой RISC, разработанный компанией Atmel в 1996 году. Микроконтроллеры AVR часто используются в платах Arduino, и при программировании плат Arduino вы будете использовать микроконтроллер AVR.

Полная форма микроконтроллера AVR
Полное название микроконтроллера AVR — Atmel AVR. Это тип микроконтроллера, который изначально был разработан для встроенных устройств, таких как автомобили, мобильные телефоны, бытовая техника, системы домашнего мониторинга и многое другое! Микроконтроллеры AVR часто используются в платах Arduino, и при программировании для плат Arduino вы будете использовать микроконтроллер AVR.
Особенности микроконтроллера AVR
— Низкое энергопотребление — Одной из лучших характеристик микроконтроллеров AVR является их низкое энергопотребление. В зависимости от того, что вы делаете с устройством, оно может варьироваться от незначительного до нескольких ватт.
— Широкий диапазон рабочих температур — хотя температура может влиять на скорость работы устройства, микроконтроллеры AVR могут выдерживать температуры от -40 до 85 градусов по Цельсию.
— 8-разрядная архитектура — Еще одна особенность микроконтроллеров AVR — их 8-разрядная архитектура. Это позволяет вашему устройству иметь больше памяти и большую вычислительную мощность.
— Удобство для программистов — И последнее, но не менее важное: микроконтроллеры AVR удобны для программистов. Это делает их отличным выбором для начинающих и любителей, которые хотят создавать свои проекты.
Архитектура микроконтроллера AVR
Архитектура AVR основана на архитектуре компьютера с сокращенным набором команд (RISC). Архитектура RISC значительно упрощает и повышает эффективность процесса программирования, что является одной из причин популярности AVR.
— Набор команд — Набор команд архитектуры также сокращен. Хотя это может показаться, что это усложнит программирование, на самом деле оно упрощает его, поскольку меньшее количество команд означает меньшую сложность команд.
— 8-разрядный канал данных — 8-разрядная архитектура также означает, что она имеет 8-разрядный канал данных, что позволяет обрабатывать больше данных за раз.
— Память программы — память программы — это место, где хранятся все ваши программы. Это как жесткий диск для вашего устройства.
— Память данных — память данных — это место, где хранятся ваши данные. Например, если вы хотите сохранить число в устройстве, оно будет сохранено в памяти данных.
Схема выводов микроконтроллера AVR
Существуют различные типы микроконтроллеров AVR, и схема выводов зависит от типа. Однако есть несколько схем выводов, которые являются общими для многих типов микроконтроллеров AVR, таких как ATmega328P.
Конфигурация выводов ATmega328P
— RESET — RESET — это линия, которая срабатывает при сбросе устройства. Это может помешать работе вашей программы, если они соединены.
— GND — GND означает «заземление». Это соединение, которое ваше устройство будет использовать для завершения цепи.
— VCC — VCC — это напряжение, используемое для питания вашего устройства.
— RX — RX — это входной контакт, который принимает данные от другого устройства.
— TX — TX — это выходной контакт, который отправляет данные на другое устройство.
Блок-схема микроконтроллера AVR
Блок-схема микроконтроллера AVR — это схема, на которой показаны все внутренние компоненты микроконтроллера. Различные модели имеют разные компоненты, но с точки зрения функциональности все модели в целом одинаковы.
— Память программы — память программы — это место, где хранится ваша программа. Это похоже на жесткий диск для устройства.
— Память данных — память данных — это место, где хранятся ваши данные.
— Счетчик программы — счетчик программы отслеживает, на каком месте программы вы находитесь.
— Регистр команд — регистр команд хранит следующую команду, которая будет выполнена.
— ALU — ALU означает арифметико-логический блок. Он выполняет все математические операции в вашей программе.
— Файл регистров — файл регистров представляет собой набор регистров ALU. — Таймер/счетчик — таймер/счетчик используется для измерения времени или подсчета нескольких событий.
Что такое Arduino
Arduino — это платформа с открытым исходным кодом, которая позволяет людям с небольшим опытом программирования или без опыта вообще легко разрабатывать и создавать электронные проекты. Платы Arduino способны управлять различными световыми устройствами, датчиками и другими устройствами. Для программирования плат Arduino используется специальное программное обеспечение. Если вы хотите запрограммировать микроконтроллер AVR с помощью Arduino, вам необходимо использовать плату, специально разработанную для этой цели.
Программирование микроконтроллеров AVR с помощью Arduino
Если вы хотите запрограммировать микроконтроллер AVR с помощью Arduino, вам понадобится плата Arduino, предназначенная для микроконтроллеров AVR. Эти платы специально разработаны для программирования микроконтроллеров AVR. Программирование микроконтроллера AVR с помощью Arduino так же просто, как загрузка программы на плату. После загрузки программы необходимо перезагрузить плату Arduino, а затем отключить источник питания. Когда вы снова подключите источник питания, микроконтроллер AVR с Arduino будет запрограммирован.
1. Настройте программатор Arduino.
Сначала необходимо настроить «программатор-Arduino» (Arduino, который вы настроили в качестве программатора) в качестве ISP. По умолчанию эскизы (код) доступны в разделе «Примеры кода» в меню «Файл» IDE Arduino. Эскиз Arduino ISP передает необходимые инструкции программатору-Arduino для настройки его в режиме программирования.

2. Подключение светодиода к Arduino
В качестве второго шага состояние Programmer-Arduino можно контролировать с помощью подключенных светодиодов, как показано на рисунке. Код Arduino ISP заранее запрограммирован для этой функции.

Примечания по светодиодам:
Контакт 7 = программирование (загорается при программировании)
Контакт 8 = ошибка (светится при ошибке программирования)
Контакт 9 = Нормальный режим (светится после включения питания программатора)
После настройки Programmer-Arduino устанавливается соединение между Programmer-Arduino и целевым устройством Arduino. Конфигурация контактов должна быть выполнена в точном соответствии с описанием в коде Arduino ISP.
3. Настройка SPI-связи
Arduino ISP использует протокол последовательного периферийного интерфейса (SPI) для программирования микроконтроллера AVR. В SPI-связи используются 4 логических сигнала: MOSI, MISO, SCLK и SS. Наряду с I2C, SPI является одним из наиболее распространенных режимов связи для микроконтроллеров. SPI следует архитектуре «ведущий-ведомый», что означает, что ведущее устройство может обмениваться данными с несколькими ведомыми устройствами, используя одни и те же контакты данных, а целевое ведомое устройство выбирается с помощью линии выбора ведомого устройства.
Если есть карта памяти, выбор используется для выбора конкретного чипа из нескольких чипов. Однако, когда вы используете Arduino в качестве инструмента программирования, сигнал выбора ведомого устройства используется только для сброса микроконтроллера. Сбросьте микроконтроллер в состояние приема команд от Arduino программатора.
На программаторе Arduino контакты 10, 11, 12 и 13 используются в качестве контактов данных. Конфигурация следующая:
контакт 10 = сброс
Контакт 11 = MOSI
контакт 12 = MISO
контакт 13 = SCK
4. Настройте контакты разъема ICSP.
Последовательное программирование в цепи (ICSP) — это возможность программировать микроконтроллер без разъединения цепи. Разъем ICSP представлен в виде 6 контактов на плате Arduino. Соедините контакты 11, 12 и 13 целевого Arduino с контактами 11, 12 и 13 программатора Arduino. Обратите внимание, что контакт 10 программатора Arduino должен быть подключен к контакту сброса целевого Arduino. В качестве альтернативы контакты разъема ICSP могут использоваться для связи SPI.

5. Настройте Arduino в качестве ISP
После подключения всего вышеперечисленного необходимо указать, что вы используете режим программиста на хост-компьютере. Перейдите в меню «Инструменты» и выберите «Arduino как ISP» в опции «Программист».

6. Запишите загрузчик на Arduino
Затем загрузите загрузчик в память целевого Arduino и определите «предохранитель». В мире Arduino предохранитель — это набор инструкций, используемых для определения нескольких функций в микроконтроллере. Например, частота чипа и источник тактовой частоты определяются в предохранителях. Микроконтроллеры чувствительны к рабочему напряжению и могут работать некорректно, если уровень напряжения ниже указанного. Минимальное рабочее напряжение также определяется в предохранителе.

Меры предосторожности
#1. Если микроконтроллер или плата Arduino могут взаимодействовать с программой Arduino IDE, это дает ряд преимуществ, например, возможность использовать последовательный монитор Arduino IDE для проверки результатов во время выполнения. (Последовательный монитор открывается в отдельном окне и действует как отдельный терминал для приема и отправки последовательных данных.)
#2. Если загрузчик не загружен в микроконтроллер, он не сможет использовать функции Arduino и не сможет взаимодействовать с Arduino IDE. Загрузчик занимает часть памяти. В некоторых случаях нет необходимости использовать Arduino IDE, поэтому загрузчик не нужно программировать. Если загрузчик не запрограммирован, для основной программы можно освободить больше памяти. Например, в Arduino UNO общий объем памяти составляет 32 КБ, из которых 0,5 КБ выделено для загрузчика. Если загрузчик не установлен, общий объем памяти, доступный для основной программы, будет больше.
Резюме
Микроконтроллер AVR — это простой в использовании и мощный чип, который можно запрограммировать для широкого спектра применений. Это отличный чип для начинающих, которые хотят освоить микроконтроллеры и электронику. Платформа Arduino — отличный способ начать работу с микроконтроллерами, она разработана специально для начинающих.




