Начинаем работать с PlatformIO и VSCode

Post Reply
UR5FFR
Site Admin
Posts: 2187
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Начинаем работать с PlatformIO и VSCode

Post by UR5FFR »

Arduino IDE убого. Его то и IDE назвать язык не поворачивается. Если вы попытаетесь работать с проектом который содержит множество файлов то вам это быстро надоест. Особенно если файлов больше чем помещается в закладки над редактором. Сам редактор тоже достаточно примитивен и не настраивается. Походив по тырнету остановил свой выбор на связке Visual Studio Code + PlatformIO.

Установка простая - качаем VSCode, ставим ее, потом в ней же выбираем Extension, находим PlatformIO и там же устанавливаем. В PlatformIO есть визард импорта проекта из формата ардуино, что хорошо. При импорте ставим галочку "Use libraries installed by Arduino IDE". Библиотеки Arduino IDE берет из подкаталога Libraries каталога дефолтного для проектов (задается в настройках). Если этот каталог нестандартный то надо в импортированном проекте открыть в редакторе файл platformio.ini (даблклик по нему в списке слева) и прописать правильное значение для lib_extra_dirs.

При импорте мы утрачиваем возможность открывать проект из Arduino IDE. Это можно исправить следующим образом: предположим у нас есть Arduino-проект C:\Work\Project\Project.ino. Импортируем его и создадим проект PlatformIO в каталоге C:\Work\ProjectPIO. Для того чтобы у нас исходный код не дублировался а был в одном экземпляре удалим папку C:\Work\ProjectPIO\src и создадим символическую ссылку (link) C:\Work\ProjectPIO\src --> C:\Work\Project. Таким образом можно открывать проект как в Arduino так и в PlatformIO. Код при этом будет храниться в единичном экземпляре.

Теперь о плохом. Большой проект синтезатора скомпилировался но памяти потребляет больше:

Code: Select all

RAM:   [======    ]  56.2% (used 1152 bytes from 2048 bytes)
Flash: [========= ]  89.2% (used 27394 bytes from 30720 bytes)
Компиляция в Arduino IDE

Code: Select all

Скетч использует 27052 байт (88%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1106 байт (54%) динамической памяти, оставляя 942 байт для локальных переменных. Максимум: 2048 байт.
UR5FFR
Site Admin
Posts: 2187
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Начинаем работать с PlatformIO и VSCode

Post by UR5FFR »

Иногда у PlatformIO сносит крышу и она начинает утверждать что не может найти стандартные модули типа Wire и т.п.
Лечится прописыванием platformio.ini проекта следующей строки:

Code: Select all

lib_ldf_mode = deep
UR5FFR
Site Admin
Posts: 2187
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Начинаем работать с PlatformIO и VSCode

Post by UR5FFR »

прошивку можно заливать не только через USB COM-порт но и через USBASP. Для этого в platformio.ini проекта нужно добавить строчки:

Code: Select all

upload_protocol = usbasp
upload_flags = -e
Флаг "e" выполняет очистку памяти перед прошивкой. Без этого не проходит верификация и выдается ошибка "avrdude: verification error"
UR5FFR
Site Admin
Posts: 2187
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Начинаем работать с PlatformIO и VSCode

Post by UR5FFR »

Если при попытке прошить нано выдается пачка ошибок типа

Code: Select all

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xdb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xdb
При этом прошивка из среды ардуино работает в режиме ATmega328P (Old Bootloader).
В platformio.ini была неправильно указана борда

Code: Select all

board = nanoatmega328new
лечится указанием правильной борды

Code: Select all

board = nanoatmega328
надо подождать пока VisualStudioCode подгрузит таски для этой борды
либо можно принудительно указать скарость загрузки. Дело в том что новый бутловадер грузит на скорости 115200, а старый - 57600. Скорость порта задается в platformio.ini параметром upload_speed

Code: Select all

upload_speed = 57600
Китайцы продают платы нано со старым бутлоадером

Решение найдено тут https://community.platformio.org/t/cann ... board/4446
Post Reply