Контроллер Leonardo
построен на 8-битном микроконтроллере семейства AVR — ATmega32U4. Это
значит, что для нас доступно 32 КБ флеш-памяти для хранения прошивки,
2.5 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM
для хранения данных.
Микроконтроллер ATmega32U4 по классификации Atmel относится к Series 4
USB AVR и имеет в своем составе аппаратный контроллер USB. Это значит,
что для связи с компьютером платформе Leonardo не требуется иметь
дополнительный USB-to-SERIAL преобразователь. При этом она определяется
компьютером как USB HID устройство, а используя стандартные библиотеки
Keyboard и Mouse её можно запрограммировать для управления компьютером
имитируя поведение клавиатуры или мыши.
Плата выполнена в форм факторе Arduino Uno и в целом совместима с ней по
выводам, имея при этом дополнительные контакты SCL и SDA для подключения
по протоколу I²C, а также IOREF о котором будет сказано в разделе
«Питание». Следует обратить внимание, что в отличие от Arduino Uno,
контакты разъема внутрисхемного программирования (ICSP) не дублируются
на цифровые выводы, а значит некоторые платы расширения использующие SPI
и не имеющие снизу ICSP-разъема работать с Leonardo не будут. Кварцевый
генератор 16 МГц, разъем micro-USB.
Питание.
Arduino Leonardo может получать питание через подключение USB или от
внешнего источника питания (источник питания выбирается автоматически).
Питание от внешнего источника может быть как с блока питания (AC/DC-преобразователя),
так и от аккумуляторной батареи. Преобразователь напряжения подключается
посредством разъема 2.1 мм с центральным положительным полюсом. Провода
от батареи подключаются к выводам Gnd и Vin разъема питания.
Платформа может работать при внешнем питании от 6 В до 20 В. При
напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом
платформа может работать нестабильно. При использовании напряжения выше
12 В регулятор напряжения может заметно греться. Рекомендуемый диапазон
от 7 В до 12 В.
Выводы питания:
• VIN. Вход используется для подачи питания от внешнего источника (в
отсутствие 5 В от разъема USB или другого регулируемого источника
питания).
• 5V. Регулируемый источник напряжения, используемый для питания
микроконтроллера и компонентов на плате. Питание может подаваться от
вывода VIN через регулятор напряжения, или от разъема USB, или другого
регулируемого источника напряжения 5 В.
• 3V3. Напряжение на выводе 3.3 В генерируемое встроенным регулятором на
плате. Максимальное потребление тока 50 мА.
• GND. Выводы заземления.
• IOREF. Вывод с рабочим напряжением вход/выходов платы. Для Leonardo
это 5 В. Предполагается к использованию платами расширения для
правильного выбора рабочего напряжения. В зависимости от напряжения,
плата расширения может переключиться на соответствующий источник питания
либо задействовать преобразователи уровней, что позволит ей работать как
с 5 В, так и с 3,3 В устройствами.
Порты ввода/вывода.
Каждый из 20 цифровых выводов может работать в качестве входа или
выхода. Рабочее напряжение выводов - 5В. Максимальный ток, который может
отдавать или потреблять один вывод, составляет 40 мА. Все выводы могут
быть сконфигурированы как входы с внутренними подтягивающими резисторами
(по умолчанию отключены), номиналом 20-50 кОм. Помимо основных,
некоторые выводы Ардуино могут выполнять дополнительные функции.
• Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для
получения (RX) и передачи (TX) данных по последовательному интерфейсу
посредством аппаратного приемопередатчика, встроенного в ATmega32U4.
Обратите внимание, что в Arduino Leonardo класс Serial отвечает за
передачу данных через USB (CDC)-соединение, для передачи данных через
выводы 0 и 1 необходимо использовать класс Serial1.
• TWI: выводы 2 (SDA) и 3 (SCL). С использованием библиотеки Wire данные
выводы могут осуществлять связь по интерфейсу TWI (I²C ).
• Внешние прерывания: выводы 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt
2), 1 (interrupt 3) и 7 (interrupt 4). Данные выводы могут быть
сконфигурированы в качестве источников прерываний, возникающих при
различных условиях: при низком уровне сигнала, по фронту, по спаду или
при изменении сигнала. Более подробно об использовании прерываний см. в
описании функции attachInterrupt().
• ШИМ: выводы 3, 5, 6, 9, 10, 11 и 13. С помощью функции analogWrite()
могут выводит ШИМ-сигнал с разрешением 8 бит.
• Интерфейс SPI: выводы разъема ICSP. C использованием библиотеки SPI
данные выводы позволяют осуществлять связь по интерфейсу SPI. Как уже
отмечалось, линии SPI выведены только на разъем ICSP и не соединены с
выводами платы, как на Arduino Uno.
• Аналоговые входы: выводы A0 - A5, A6 - A11 (на цифровых выводах 4, 6,
8, 9, 10 и 12). В Arduino Leonardo есть 12 аналоговых входов (A0 - A11),
каждый из которых может использоваться как обычный цифровой вывод.
Аналоговые входы A0 - A5 расположены так же, как и на Arduino Uno; а
входы A6 - A11 - на цифровых выводах 4, 6, 8, 9, 10 и 12 соответственно.
Каждый из входов может оцифровать поданное на него напряжение с
10-битным разрешением (1024 различных значения). По умолчанию, измерение
напряжения осуществляется относительно диапазона от 0 до 5 В. Однако,
верхнюю границу этого диапазона можно изменить, используя вывод AREF и
функцию analogReference().
• Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер.
Светодиоды.
RX и TX — мигают при приеме и передаче информации через USB соединение.
ON — индикатор питания.
L — светодиод подключенный к цифровому пину 13.
Память.
Объем памяти программ микроконтроллера ATmega32U4 составляет 32 КБ (из
них 4 КБ отведены под загрузчик). Помимо этого, он имеет 2.5 КБ
оперативной памяти SRAM и 1 КБ EEPROM (для взаимодействия с которой
служит библиотека EEPROM.
Связь.
Arduino Leonardo может устанавливать связь с компьютером, другими
устройствами Arduino или микроконтроллерами несколькими способами.
ATmega32U4 поддерживают последовательный интерфейс UART TTL,
осуществляемый через выводы 0 (RX) и 1 (TX).
Имея аппаратную поддержку USB, ATmega32U4 позволяет также организовать
последовательное соединение с компьютером через виртуальный COM порт.
Leonardo c помощью стандартных драйверов USB COM может подключаться как
USB 2.0 устройство. Мониторинг последовательной шины (Serial Monitor)
стандартной среды разработки Arduino позволяет посылать и получать
текстовые данные при подключении к платформе. Что мы и сделаем в
приведенном под описанием примере.
Библиотекой SoftwareSerial возможно создать последовательную передачу
данных через любой из цифровых выводов Leonardo.
ATmega32U4 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена
библиотека Wire для удобства использования шины I2C. Для SPI может
использоваться библиотека SPI.
Программирование.
Платформа программируется, в среде Arduino IDE, при выборе
соответствующей платы в меню Board (Arduino Leonardo).
Микроконтроллер ATmega32U4 на Leonardo поставляется с записанным
загрузчиком, упрощающим запись новых программ без использования внешних
программаторов.
При желании (или необходимости, например записать загрузчик) имеется
возможность запрограммировать микроконтроллер через выводы
внутрисхемного программирования (ICSP).
Автоматическая перезагрузка.
Leonardo разработана таким образом, чтобы перед записью нового кода
перезагрузка осуществлялась самой программой Arduino на компьютере, а не
нажатием кнопки на платформе. Перезагрузка срабатывает когда виртуальный
CDC COM порт открывается со скоростью 1200 бод, а затем закрывается.
Когда это происходит, микропроцессор уходит на перезагрузку, разрывая
USB соединение. После перезагрузки стартует загрузчик (бутлоадер) и
остается активным примерно 8 секунд. Загрузчик также можно запустить
нажатием кнопки Reset. Обратите внимание, что при подачи питания
контроллер сразу переходит к выполнению загруженной пользовательской
программы без выполнения загрузчика.
Токовая защита разъема USB.
В Leonardo встроен самовосстанавливающийся предохранитель, защищающий
порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя
практически все компьютеры имеют подобную защиту, тем не менее, данный
предохранитель обеспечивает дополнительный барьер. Предохранитель
срабатывает при прохождении тока более 500 мА через USB порт и размыкает
цепь до тех пока нормальные значения токов не |