Как запрограммировать микроконтроллер ATtiny10 с помощью среды разработки Platform.io
ATtiny10 - это высокопроизводительный 8-разрядный RISC микроконтроллер AVR с низким энергопотреблением, который объединяет 1 КБ флэш-памяти, 32B SRAM, 4 линии общего ввода-вывода, 16 рабочих регистров общего назначения, 16-разрядный таймер/счетчик с двумя каналами ШИМ, внутренними и внешними прерываниями, программируемым сторожевым таймером с внутренним генератором, внутренним калиброванным генератором, 4-канальным/8-разрядным аналого-цифровым преобразователем и четырьмя программно выбираемыми режимами энергосбережения, и все это в крошечном 6-контактном корпусе SOT23. Для энтузиастов и разработчиков, которые хотят создавать изделия с низким энергопотреблением и малым форм-фактором, ATtiny10, безусловно, является одним из лучших микроконтроллеров, который следует учитывать, поскольку он поддерживает уровни напряжения от 1,8 В до 5,5 В.
Однако одной из проблем использования ATtiny10 является сложность программирования. Традиционно требуется знакомство с программным обеспечением, таким как AVR Atmel studio, которое не предлагает легкости, связанной с другими платформами, такими как Arduino IDE.
ATtiny10 можно программировать в Arduino IDE, но для обеспечения большего функционала для сегодняшнего урока мы возьмем вещи на ступеньку выше и рассмотрим, как вы можете программировать эти крошечные микроконтроллеры, используя более надежный инструмент – среду разработки Platform.io.
Platform.io IDE – еще один инструмент, который продолжает расти в репутации среди энтузиастов и даже профессионалов. В этой среде разработки (IDE) используется как расширение для редакторов, таких как Visual Studio Code и Atom, и предоставляет пользователям контроль, отладку, завершение кода и другие интересные функции, которые вы хотели бы использовать в IDE. Итак, для демонстрации мы запрограммируем ATtiny10 для запуска примера с мигающим светодиодом.
Для начинающих пользователей первое, что вам нужно сделать, это загрузить и установить Visual Studio Code или Atom. Многие предпочитают использовать код Visual Studio как более стабильный инструмент. Установив Visual Studio, нажмите значок Extensions (Расширения). Введите Platform.io в строке поиска расширений и нажмите кнопку установки.
Далее нам нужно установить Atmel AVR Platform. При установленном Platform.io домашняя страница Platform.io PIO должна запускаться автоматически. Когда это произойдет, нажмите кнопку «Platforms» и введите Atmel AVR в строку поиска. Это должно вывести список установленных/доступных платформ. Нажмите кнопку установки, чтобы установить платформу. Если вы использовали плату Arduino с IDE platform.io до этого, есть вероятность, что платформа Atmel AVR уже будет установлена. Если это так, просто обновите при необходимости и перейдите к следующему шагу.
Платформа Atmel AVR содержит несколько определений микроконтроллера/платы, которые вы выбираете при запуске нового проекта. Эти типы плат вместе с платформой предоставляют все конфигурации, которые используются для компиляции и загрузки кода в ваш микроконтроллер. По умолчанию тип платы ATtiny10 не указан среди типов плат, поэтому для него нужно создать собственный тип платы. Мы сделаем это, перейдя в папку Platform.io и создав в ней новую папку с именем «Board». В новой папке создайте файл JSON с именем attiny10.json и скопируйте приведенные ниже строки в файл.
{
"build": {
"f_cpu": "1000000L",
"mcu": "attiny10"
},
"name": "ATtiny10",
"upload": {
"maximum_ram_size": 32,
"maximum_size": 1024,
"protocol": "usbasp"
},
"url": "http://www.atmel.com/devices/ATTINY10.aspx",
"vendor": "Atmel"
}
Вы можете создать файл, используя Xcode или любой редактор, с которым вы знакомы. Просто убедитесь, что расширение – «.json». Папка platform.io должна находиться в каталоге «/Users/(ваше имя пользователя)/. Platformio». Папка может быть скрыта, поэтому вам нужно будет отобразить все скрытые папки.
После этого перезапустите IDE, нажмите кнопку PIO home и нажмите кнопку опции нового проекта. Теперь вы должны увидеть плату Attiny10 среди вариантов платы.
Как уже упоминалось во введении, для демонстрации мы будем реализовывать пример мигания, используя светодиод, подключенный к контакту PB0 Attiny10. Подключите светодиод, как показано на следующей схеме.
При подключенных компонентах следующим шагом является написание кода. Как упоминалось ранее, целью проекта является в основном реализация примера мигания для включения/выключения светодиода через определенные промежутки времени, в результате чего код будет короткий и вполне понятный. Перейдите в папку src на левой панели интерфейса VScode, панель обозревателя файлов Platform.io и выберите файл main.cpp. Если файл не был создан автоматически, щелкните правой кнопкой мыши на src, выберите «new file» и назовите файл main.cpp. Это должно открыть пустой код (вкладку), где вы должны ввести свой код. Введите приведенный далее код в панель и сохраните его.
#include <avr/io.h>
int main () {
DDRB = 1; // PB0 как выход
TCCR0A = 1<<COM0A0; // Переключить OC0A
TCCR0B = 1<<WGM02 | 3<<CS00; // Режим CTC и установка предделителя на 64
OCR0A = 3905; // Частота 2 Гц
while (1);
}
После написания кода у нас остался только один последний шаг – прошить (записать) его в Attiny10. У этого шага есть две части: один касается подключения программатора к ATtiny10, а другой заключается в тонкой настройке конфигурации Platform.io.
Для первой части, хотя есть разные типы программаторов, которые можно использовать, для сегодняшнего проекта мы будем использовать довольно популярный и дешевый программатор USBASP, который можно приобрести в онлайн-магазинах электронных компонентов, таких как Aliexpress или Ebay. Исходя из опыта многих разработчиков, большинство из этих программаторов обычно не поддерживают протокол TPI, который необходим для программирования ATtiny10, поэтому всегда нужно выполнять обновление прошивки на программаторе перед его первым использованием.
Касательно второй части Platform.io предлагает различные способы прошивки целевого устройства, но для этого урока мы будем использовать кнопку Upload (Загрузить). По умолчанию, когда используется кнопка загрузки, Platform.io будет запускать задачу загрузки без стирания памяти. Это приводит к ошибкам, поскольку avrdude пытается проверить, правильно ли загружен код, поскольку некоторая часть старой программы все еще будет в памяти. Одна из хороших вещей в platform.io – это контроль, который дает вам множество вещей, от спецификаций версии библиотеки до конфигураций компиляции через файл platformio.ini. Чтобы решить эту проблему с помощью кнопки загрузки, добавьте последнюю строку кода ниже в файл platformio.ini в среде ATtiny10.
[env:attiny10]
platform = atmelavr
board = attiny5
upload_flags = -e ; это строка для добавления
Файл platformio.ini теперь должна выглядеть как на следующей картинке.
Сделав это и подключив USBASP к микроконтроллеру, вы можете нажать кнопку загрузки.
Вы должны увидеть, как светодиод начинает мигать.
Вот и все! Действительно, этот процесс не очень дружелюбен для людей, которые знакомы только с Arduino, а не со стилем программирования C/C++, тем не менее это профессиональный подход, предлагающий больший функционал.
© digitrode.ru