Переход на следующей уровень в Arduino или PlatformIO

Тема в разделе "Микроконтроллеры AVR", создана пользователем debager, 27 июл 2017.

  1. debager

    debager Нерд

    Адуно IDE проста но тупа однажды каждый понимает что надо найти что то лучше .
    Тут нам на выручку приходит (спасибо хохлам) PlatformIO в интернете нет почти
    материалов на русском.
    Сам я только начал учить ардуино и С трудновато пока но понял одно самого C в коде мало
    30-60% остальное это регистры библиотеки и команды препроцессора и прочая хрень.
    Arduino IDE делает нас просто беспомощных отладки просто нет.
    PlatformIO дает много плюсов там и отладка и авто обновления и библиотеки сами ставятся и главное можно избежать конфликта библиотек .
    Размещая их в папке проекта для каждой платы свои .
    ########################################################
    Тут результат моих усилий надеюсь пригодится людям.
    Вводные:
    OS: UBUNTU 16.04 32bt
    Команды вводить в терминале или Ctrl+T

    ########################################################

    http://docs.platformio.org/en/latest/ide/atom.html#clang-for-intelligent-code-completion
    sudo apt-get update
    sudo add-apt-repository ppa:webupd8team/atom
    sudo apt install clang
    sudo apt update; sudo apt install atom

    запускаем атом !!! дальше все из него
    Menu: Edit > Preferences > Install // platformio-ide
    http://docs.platformio.org/en/latest/ide/atom.html#clang-for-intelligent-code-completion
    первый проект на arduino:
    Menu: Edit > Preferences/ PlatformIO/project example/ > atmelavr/arduino-blink //мигаем лампочкой на ардуине
    проект должен появится в главном меню
    становимся на проект и
    arduino-blink /src/ // тут ваш исходник
    а лежит он тут
    /левой кнопкой на проекте/show in file manager // он тут родной
    в этой папке лежит и platformio.ini важный файл читай в help
    и тут же папка /LIB тут надо сложить свои библиотеки читай readme.txt в папке или
    help на сайте.
    компиляция:
    становимся на проект и идем.
    Menu: Menu >PlatformIO / Initialize or update platformio project // select board выберем нашу плату
    ждем иногда долго
    Menu: Menu >PlatformIO /Run other target //или F7 //выбираем свою плату можно набрать несколько букв названия + в названии!! build просто компиляция Upload загрузит пошивку на плату.
    посмотреть что собралось можно нажав // F8
    Теперь можно править скетч (исходник ) не забывайте нажать сохранить в верху появляется подсказка
    F7 -> ваша Upload плата
    ############# среда заточена на работу с командной строкой и мы дальше пойдем этим путем #################
    Запуск консоли Ctrl+' (на букве Ё)

    как найти какие порты активны :
    pio device list

    для каких плат установлена платформа
    platformio run -e xx // выдаст ошибку и выведет все подключенные платы
    далее пример
    platformio run -e nanoatmega328 //мой случай
    другие варианты

    # Build specific environment
    > platformio run -e due

    Upload firmware for the specific environment
    > platformio run -e due --target upload

    # Clean build files
    > platformio run --target clean

    //################## ПРОДОЛЖЕНИЕ КОМАНДЫ ТЕРМИНАЛА ##################

    - на примере Arduino-mega
    1) PlatformIO / platformio Home → import arduino project
    в меню выберем скетч(исходник) и плату Arduino-mega 2560 → импортируем ардуино сетч
    1.1) platformio.ini //это файл в проекте важный тут пишем пути до нужных библиотек итд
    команды для терминала:
    2) cd полный путь до папки с исходником
    (можно скопировать в меню Project / ваш проект /пр.кн.мыши / copy full path )
    3) platformio boards avr //выводит все доступные платы
    4) platformio init --board megaatmega2560 // установим плату для нашего проекта
    5) platformio run -e megaatmega2560 -t upload // компилируем и загружаем на плату
    6) platformio run --target t /dev/ttyACM0 upload //загрузка в конкретный порт
    7) platformio device list // находим все доступные порты
     
    Последнее редактирование: 15 сен 2017
  2. NikitOS

    NikitOS Король шутов Администратор

    Вам не сюда...
     
    Tomasina нравится это.
  3. vvr

    vvr Инженерище

    90 , а может и 99 % участников этого форума родная среда дуни вполне устраивает.
     
    NikitOS нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Переход на следующий уровень - это программирование МК непосредственно, а не применение сомнительных сред программирования.
     
  5. rkit

    rkit Гуру

    Среда замечательная, и большие проекты пишутся только в ней.
     
  6. mcureenab

    mcureenab Гуру

    Непосредственно?? Проволочками пины на чипе замыкать?
    Непосредственно программировался калькулятор МК 52

    [​IMG]

    К стати, пришлось заняться программированием на PostScript и навыки работы со стеком на этом калькуляторе очень помогли.
     
  7. SergeiL

    SergeiL Оракул Модератор

    В МК-52 программу можно было загрузить из модуля памяти.;)
    А Б3-34, программировался, непосредственно, каждый раз, когда нужно было что-то посчитать по программе.
    Только что включил, проверил - работает еще старичок.:)

    Б3-34.JPG
     
  8. ostrov

    ostrov Гуру

    AVRS уже фуфло?
     
    NikitOS и ИгорьК нравится это.
  9. Airbus

    Airbus Радиохулиган Модератор

    Следующий уровень это как я понимаю "чистый Си" ?Под него много компиляторов.Ну и асм.Хотя это для трушных кристальщиков настоящих фанатов.Вот попробуйте на тини 13 сделать вольтметр и термометр в одном флаконе с выводолм на LCD дисплей используя лишь только 6 выводов портов.
     
  10. Limoney

    Limoney Гик

    Запросто LCD с модулем I2C и по пину на АЦП и датчик температуры
     
  11. ostrov

    ostrov Гуру

    Тини13 глючная до жути. Хотя, может мне партия попалась неудачная.
     
  12. AlexU

    AlexU Гуру

    Текст читать тяжеловато (хоть бы через раз запятые ставили, код и команды бы в специальные теги обёртывали, да и с форматированием беда) и похоже, что сами в теме не особо разобрались, просто накопипастили текст из других источников.
    Так же есть замечание:
    если верить оф.сайту clang не поддерживает платформу AVR, что касается поодержки платформы AVR на уровне LLVM, то разработчики говорят, что поддержка сырая и бинарный код на выходе может быть жутко глючным (но люди над этим работают и может быть в скором времени всё поправят). Так зачем использовать связку clang + LLVM для создания потенциально глючной прошивки?
    Штука мощная, но только под Win, что минус немалый.
     
  13. Airbus

    Airbus Радиохулиган Модератор

    Там без I2C ацп да по прерываниям.
    Да нет нормальный чип.Для простых задач больше чем.Да и работает четко.В Кетае покупали?
     
  14. Limoney

    Limoney Гик

    можно I2C программный.
     
  15. Unixon

    Unixon Оракул Модератор

    @debager , PlatformIO, конечно, интересная штука, такой своеобразный универсальный менеджер проектов, но для подсистемы Arduino, насколько я понял, она принципиально ничего не меняет, кроме внешнего удобства.
     
  16. rkit

    rkit Гуру

    Удобство там не внешнее, а функциональное. Автодополнение, подсветка ошибок, конфиги для разработки под несколько плат сразу, итд. Если пишете что-то больше 1000 строк, то жизнь упрощает здорово.
     
  17. Unixon

    Unixon Оракул Модератор

    @rkit, а PlatformIO так же пытается умничать и автоматом составлять список компилируемых объектов и путей поиска инклудов, или там как в обычных IDE можно опции сборки детально расписывать руками?
     
  18. rkit

    rkit Гуру

    Не знаю. Я пользуюсь автоматикой. Для каждого проекта можно указать индивидуальный набор библиотек, можно свою патченную версию закинуть в специальную папку, так что проблем с конфликтами разных версий быть не должно. Опции для комплиятора-линкера можно прописать в конфиге, в принципе, но я не пользовался за пределом -O2.
     
  19. Unixon

    Unixon Оракул Модератор

    Автоматика автоматике рознь. Вот если бы библиотеки сопровождались некоторым манифестом, где перечислен правильный способ сборки (включения в проект) и вся автоматизация заключалась только в склеивании опций, то это было бы полезно. А так, как это сделано в Arduino IDE, делать не стоит, это зло. Ну и соответственно повторять эту же логику в других системах тоже.
     
  20. debager

    debager Нерд

    Когда читаю комментарии я понимаю почему у нас с it все грустно.