Сообщество Arduino, развивающее серию открытых плат на базе микроконтроллеров, опубликовало релиз интегрированной среды разработки Arduino IDE 2.3, предоставляющей интерфейс для написания кода, компиляции, загрузки прошивок на оборудование и взаимодействия с платами в процессе отладки. Разработка прошивок производится на немного урезанной версии C++ с фреймворком Wiring. Код интерфейса среды разработки написан на языке TypeScript (типизированный JavaScript), а бэкенд реализован на языке Go. Исходные тексты распространяются под лицензией AGPLv3. Подготовлены готовые пакеты для Linux, Windows и macOS...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60588
Используйте Qt Creator + CMake + Clang. Arduino Studio - игрушечный хлам.
А кутекреатор не игрушечный скам?
Серьёзные корпорации собирают свои поделки исключительно самой последней версией Visual Studio :).
> Серьёзные корпорации собирают свои поделки исключительно самой последней версией Visual
> Studio :).Это та серьезная корпорация у которой в проде 70% инсталляций - линухи? А они линух студией смогли собрать? :)
если средстами wsl считается - то да, можно из студии.
> если средстами wsl считается - то да, можно из студии.Студия работает в WSL и может собрать линуксное ядро?
> Студия работает в WSL и может собрать линуксное ядро?студия работает на винде, но для сборки использует средства сборки линуксовые из wsl. ну а все исходники еще и подсвечиваются Intellisense
чисто для сборки ядра есть даже проект VisualKernel, с которым можно дебажить ядро(лол?)
Так можно любым редактором "собрать", если есть запуск внешней команды по кнопочке.
Нет, всего лишь Python Software Foundation, все разработчики AAA игр, все разрабы профессиональных дорогущих проприетарных прог и т.д. Они все имеют привычку собирать Студией и дропать версии винды, когда их дропают редистрибутейблы Студии. хотя могли бы собирать шлангом + MinGW + старый/форкнутый pthreads (они тоже XP дропнули по желанию левой пятки), и заработало бы хоть на хрюше. Также большинство из них любит дропать поддержку старых камней. Ну действительно, если сидит на старье — то прога, цены на лицензию которой больше, чем стоимость компа из верхнего сегмента, у него с высокой вероятностью нелицензионная.
Ох, старые камни...Официально Windows 11 не поддерживает AMD Ryzen 1700, обновить с 10 до 11 нет возможности, но установить 11 версию с помощью официального образа дает, причем ОС работает, получает обновления. Бред же
>обновить с 10 до 11 нет возможностиЭто и так крайне не рекомендуется. Все ценные данные вообще надо держать на отдельном разделе.
> Это и так крайне не рекомендуетсяЭто вы с линуксом перепутали.
Clang может avr?
Могёт, с C++23.
А нормальные перцы используют Emacs.
Может и хлам, но там всё интегрировано. А с кукарекатором ещё возиться настраивать.
Поправил: Используйте Qt Creator + QBS. А Шланг здесь это лишнее.
Это работающая из коробки штука, которая работает. Много таких плат сделано на AVR, а "AVR backend - experimental backend"[1], так что в роли "игрушечного хлама" внезапно оказывается Clang. Из более серьёзного, чем Arduino IDE, для AVR (и ARM Atmel, наверное) есть смысл в AVR/Atmel/Microchip Studio (2 раза переименованная IDE на основе Visual Studio), в ней и плагин какой-то ардуиновский есть.
>так что в роли "игрушечного хлама" внезапно оказывается Clang.Хотите сидеть без современного C++, вычислений во время компиляции - дело барское. А я предпочту "экспериментальный бэкенд", но с magic_enum и DRY-принципом вместо говноскриптов, генерящих C файл.
>>так что в роли "игрушечного хлама" внезапно оказывается Clang.
> Хотите сидеть без современного C++, вычислений во время компиляции - дело барское.
> А я предпочту "экспериментальный бэкенд", но с magic_enum и DRY-принципом вместо
> говноскриптов, генерящих C файл.Только когда вам экспериментальный бэк выгрузит кривой код и что-то где-то как-то пойдет не так (что в управляющих системах ну вот не очень круто) - вы уж там не взыщите, если что. Зато блин с magic smoke :)
Кому нужна высокая надёжность — тот на ada пишет.
Код из под ADA не работает на голом железе -- окружение (run-time) требует, в отличие от си.
а самолёто-ракето-строители и не знали!
> а самолёто-ракето-строители и не знали!НЯП, на всех самолетных БЦВМ _всегда_ есть операционная система, в среде которой работают все программы. Что касается ракетостроения, то там точно такая же ситуация, если мы говорим о тех ракетах, которые запускаются не из Плесецка. А для тех, что запускаются из Плесецка, ничего на языке ADA не пишут. Там свой ЯП.
Но вы можете подтвердить свои слова, предоставив ссылку на соответствующее место в стандарте ISO/IEC 8652. Там должно быть перечислено, что не поддерживается в "standalone" режиме. Это когда выхлоп компилятора мимо компоновщика прямо попадает к загрузчику в голую ОП и там он работает один-одинешенек. Без какой-либо операционки.
> место в стандарте ISO/IEC 8652. Там должно быть перечислено, что не поддерживается в "standalone" режимеА без бумажки оно работать что ли не будет? Будет. Да и пишут, что авиацию и ЖД со своими бумажками существующий freestanding устраивает.
Тут[1] написано: "embedded in certified applications ... no-run time profile (zero footprint) ... certification artifacts for various standards, including DO-178B/C or EN-50128". Это нарушит пункт ISO/IEC 8652 про "shall be provided by every implementation ... RPC [и что-то ещё проблемное]"[2].
[1] https://www.adacore.com/products/certification-materials
[2] https://www.adaic.org/resources/add_content/standards/05rm/h...
Таки да, ada-код собирается для платформ bare-metall, что эквивалентно standalone.
Признаю некомпетентность в данном вопросе.
> Кому нужна высокая надёжность — тот на ada пишет.Сомневаюсь что у гироскутера фирмварь на языке ада. Но если он вас приложит мордой об асфальт - вы врядли это оцените.
> А я предпочту "экспериментальный бэкенд"Нет, ты предпочтёшь написать, что ты предпочтёшь. Ты серьёзно думаешь, что GCC C++ работает вот так, "генерит C файл"? Аналогичные вопросы ко всему остальному.
Нет, я думаю, что официальный тулчейн не поддерживает минимально необходимые (то есть 23) версии языка C++.
Но тогда зачем ты пишешь, не думая ("генерит C файл")? И зачем тебе эксперименты с Clang, который придётся вкорячивать в существующий avr-gcc тулчейн (из-за его libc и прочего), если ты можешь просто собрать/скачать[1] свежий avr-gcc?Не знал, что команда Arduino застряла на старом GCC[2].
[1] https://github.com/ZakKemble/avr-gcc-build/releases/tag/v13....
[2] https://github.com/arduino/ArduinoCore-avr/issues/435
Зачем мне собирать или качать старое дерьмо, если у меня ночной clang установлен из пакетов?
> GCC 13.2.0 (2024-01-04)
> старое дерьмо...
> если у меня ночной clang установлен из пакетов
Если ты его полноценно подружил с AVR, молодец, можешь статью написать. Если нет - хватит флудить.
Сначала не понял как из эклипса такой интерфейс сделали, а оказалось, что это эклипс сделала очередной основанный на хроме редактор.
Эклипс основан на vscode, который основан на хроме
в доме, который построил Micro$oft.
Игрушка для детей и начинающих.
и?
> и?А что не понятного, обычный опеннетчик, кичится как он крут со своим platformIO или Atmel Studio или еще что, чтоб самоутвердится.
В винде это г-но не работоспособно в изначальной обстановке. Лезет зачем-то в инет. Ветка 1.х в этом плане автономна.
А вы пробовали не давать лезть?
Да. Тогда оно не запускается.
При установке и первом запуске RJ-45 можно попробовать выдернуть.
Тогда.
Оно.
Не.
Запускается.
А что не лезет? Visual Studio вроде не лезет, всё остальное лезет.
> А что не лезет? Visual Studio вроде не лезет, всё остальное лезет.а отключение телеметрии в настройках vs зачем?
Хм, я давно не пользовался, тогда ещё vscode только появился. А при установке не спрашивает? Или лезет, если отказаться?
>А что не лезет?Первая ветка.
>Сообщество Arduino, развивающее серию открытых плат на базе микроконтроллеровПацаны Ардуино свободное железо? Столлман бы одобрил?
>>Сообщество Arduino, развивающее серию открытых плат на базе микроконтроллеров
> Пацаны Ардуино свободное железо? Столлман бы одобрил?а вы видели сырцы бутлодера?
Но вот почему, почему VS Code с бесконечно бо́льшим количеством возможностей запускается за секунду, а это подобие турбопаскаля за полминуты?
Потому что Lazarus запускается быстрее VS Code.
Да и Турбопаскаль быстрее запускается. Впрочем давно его не видел.
Те кто хейтит, вы видимо даже не видели сабж кроме как на скрине выше.
Раньше чтобы включить свет ты просто подходил к выключателю и включал. Теперь надо изучить урезанную версию крестов, купить arduino в обход санкций, скачать ide, и может быть, включить свет получится.
Если не получится, то всегда можно обратиться к ардино-фрилансерам. Недорого.
Яндекс.доставке пора предложить новую услугу. Приедем и включим вам свет, недорого!
Когда свидетели эпичного бага 12309 крыли скептиков железным аргументом "у меня всё висит", я просто подключил Ардуину с ЖК экраном и сделал вывод на неё интересной мне информации два раза в секунду. При отсутствии данных (например, когда система не отдавала такты программе вывода) Ардуина работала как автономный секундомер, можно было оценить время. Погонял в разных конфигурациях, попробовал воспроизвести сценарии возникновения этого 12309. Много нового тогда узнал об экспертах.
С SATA-кабеля, с UART жёсткого диска, или прямо к DIMM-модулям подключился?
К "DIMM-модулям" подпаивал пару проводков и втыкал их в Ардуину, когда надо было перешить SPD. Смысл остальной части сообщения не уловил.
Наверное, имелось ввиду, как Ардуина получала сведения о том, чем в данный момент занят CPU материнки.
Ну так наверное стоит посмотреть, как эта Ардуина вообще выглядит и каким местом подключается к ПК. А "вывод на неё интересной мне информации два раза в секунду" некоторым экспертам даже удавалось найти у меня на Гитхапе и пололировать, не догадавшись, зачем оно было надо.Чем там у свидетелей был занят CPU - это и без Ардуины оказалось понятно - повышал энтропию Вселенной заодно с экспертами. Что бы воспроизвести "баг", мне потребовалось не только последовать дурному совету и засунуть подкачку в ZRAM, но и собрать ядро с конфигом от автономной ОС, где 12309 воспроизводился (и был триумфально "побеждён" резервом 256М неподкачиваемой памяти). Что было вполне ожидаемо: у MS есть checked build, а у RH нескучные клоны Fedora.
Можно скачать протеус и включать виртуальный свет. Ничего покупать не надо :).
Раньше, чтобы включить свет, заливали сосуд маслом, ставили фитиль и поджигали его.
Ох уж эти деструкторы, всё бы вам жечь :)
и отправляли к ближнему своему
осталось узнать, что такое язык Wiring и почему о нем никто никогда не знал и не знает..
> осталось узнать, что такое язык Wiring и почему о нем никто никогда
> не знал и не знает..Потому что это такой "C++ для чайников" на самом деле. И вот уже нуб лихо фигачит свой serial.begin(9600); понятия не имея что это так то - плюсота :)
Верно
Нет. Это именно язык. И в новости неверно.
Wiring - это и язык, и фреймворк. Язык с фреймворком, как и написано в новости."Wiring Language" - это то, что в новости описывается как "немного урезанной версии C++"
https://github.com/WiringProject/Wiring
Wiring has three major components:
The Wiring Language: A thin layer on top of C++ which simplifies the process of writing embedded programs.
The Wiring Framework: A C and C++ API for writing embedded programs, either using C++ or the Wiring Language. Currently, a implementation of the Wiring framework exists for 8-bit AVR microcontrollers. Support for the STM32 line of ARM Cortex M3 and M4 microcontrollers is in progress.
Wiring IDE: A cross-platform Integrated Development Environment (IDE) used to write, compile, and upload programs written in the Wiring language to boards which support the Wiring Framework.
Потому что самое свежее
Wiring 1.0 Build 0101 | 28 October 2014
"Arduino programming language (based on Wiring)"[1].Я не знаю, зачем они лгут. Для упрощения? Но это наоборот путает. Для того, чтобы пользователь не выходил за рамки их экосистемы и не осознавал, что пишет на обычном C++ и пользуется обычным GCC? Но это обучающие платы, а не оглупляющие.
upd: "упрощение" есть вот в чём.Можно спросить, "если это обычный C++, то где main(), почему расширение у файлов .ino?". И самый короткий ответ, который заткнёт вопрошающего - "потому что Arduino - это другой язык".
Тогда как правильный ответ - "потому что main() находится в ардуиновской библиотеке, где есть main.cpp, где лежит ожидаемый код `int main(void) {... setup(); ... loop();`...".
> "Arduino programming language (based on Wiring)"[1].
> Я не знаю, зачем они лгут.Тут требуется помощь нэйтив спикеров.
"the Arduino programming language" - вот это означает "язык программирования [железки] Ардуины", или "язык программирования «зе Ардуино»"?
"(based on Wiring)" - Wiring is an open-source programming _framework_ for microcontrollers. Тут вроде всё понятно.
Таки Wiring придерживается позиции, что он двуединый язык и фреймворк.> digitalWrite() \ Language (API) \ Wiring 1.0[1]
> Reference for the Wiring.org.co programming environment and language[1]
> The Wiring Language: A thin layer on top of C++[2]И подобно антитринитариям в христианстве (интересно, что среди них был Ньютон), надо возразить, но, наверное, без повешения кого-либо за ересь.
В общем, там была такая история.
1. Processing
В 2001 художник и дизайнер в MIT решили сделать Processing: комплекс из Java-библиотеки и IDE для рисования-визуализации. От художников для художников, все OpenGL-кишки спрятаны. И даже Java-кишки немного спрятаны - пользователь пишет файл-скрипт с двумя функциями - setup() и вызываемым в цикле draw(), а в "public class ... extends" их заворачивает препроцессор[3], который и другие мелочи делает (свои hex-литералы в джавовские конвертирует, например). И из-за препроцессора авторы с натяжкой назвали Processing новым языком. Пользователь может не думать о настоящей точке входа, о том, что setup() и draw() откуда-то вызываются.2. Wiring
Затем вышеупомянутый художник поехал учить в один итальянский институт. И под его руководством в 2004 появился Wiring как магистерская работа одного студента. Wiring - комплекс для обучения и прототипирования из отладочной платы, IDE и C++-библиотеки, который перенял принцип "пользователь определяет функции setup() и loop()". Снова кишки спрятаны - новичок не не узрит boilerplate-кода, а при желании плавно и безболезненно перейдёт на профессиональные инструменты, разберётся с точками входа в C/C++ (и именно во freestanding C/C++) и т.д. Нового языка нет и с натяжкой, поэтому такое "упрощение для учеников" стало ересью.3. Arduino
Затем в 2005 другие студенты того же института форкнули вышеупомянутый программно-аппаратный комплекс и назвали Arduino. Больше разных плат, больше коммерции. Со временем Arduino показала себя в новом сомнительном качестве - как JavaScript в мире embedded. Родилась идея, что Arduino можно использовать не для прототипирования и обучения, а для серийных изделий. Что его библиотека - это полноценный, хоть и пованивающий Hardware Abstraction Layer, с которого не надо слезать и что Arduino может замкнуться в себе, а не быть обучающим шагом для плавного перехода к профессиональной разработке.На ереси о новом языке команда Arduino не настаивает, но как наследие она местами встречается.
Вообще для микроконтроллеров AVR ещё есть компиляторы (или интерпретаторы) Ada, Basic, Forth, Java, Pascal и Python.
[1] view-source:http://wiring.org.co/reference/digitalWrite_.html
[2] https://github.com/WiringProject/Wiring
[3] https://github.com/processing/processing/blob/master/java/sr...
Ну раз дело дошло до канонов, тогда есть такой:3.32 well-formed program [defns.well.formed]
C++ program constructed according to the syntax rules, diagnosable semantic rules, and the one-definitionrule (6.3)
Остаётся показать, что программа на языке Wiring соответствует well-formed C++ program. Тогда утверждение "пишет на обычном C++" будет верным. Пока что "a thin layer on top of C++" ставит под сомнение предыдущую цитату.
> "a thin layer on top of C++" ставит под сомнение предыдущую цитатуНу, там есть кусок[1], который вставляет такой код (один инклуд и прототипы функций), попутно переименовывая файл в .cpp.
#include "WProgram.h"
void setup();
void loop();> Ну раз дело дошло до канонов, тогда есть такой
> Остаётся показать, что программа на языке Wiring соответствует well-formed C++ program.
> Тогда утверждение "пишет на обычном C++" будет верным.Это не те дроиды, что вы ищете. Я даже не смогу назвать компилятор C++ без расширений, делающих программу ill-formed[2], как __attribute__(()), например. Плюсовые программы в Wiring и Arduino способны быть ill-formed хотя бы из-за GCC.
Предупреждаю - если кто-нибудь скажет, что оба случая (инклуд и гццизм) создают новый язык, достойный отдельного названия, то я немедленно объявлю о создании семейства языков JebanyOpennetowskyDemagogue. JebanyOpennetowskyDemagogue1 будет Qt C++ из-за его Meta-Object Compiler, JebanyOpennetowskyDemagogue2 будет Cи-с-гццизмами, JebanyOpennetowskyDemagogue2A будет Си-с-авээр-гццизмами, JebanyOpennetowskyDemagogue3 будет Си-с-мсвцизмами, JebanyOpennetowskyDemagogue4 будет Си-с-шлангизмами...
[1] https://github.com/WiringProject/Wiring/blob/master/IDE/proc...
[2] 4.1/8: "A conforming implementation may have extensions", "such extensions that are ill-formed according to this document"
Понятие "язык" относится к тому, на чём написан исходный текст. GCC понимает well-formed C++ program? Значит соответствует стандарту (что он там понимает ещё - это поведение, к которому у стандарта нет требований). На этом разговор о трансляторах можно закончить.Если программа на "языке" Wiring без волшебной вставки каких-либо кусков не является well-formed C++, значит, строго говоря, это не С++. Точно так же программу на Qt называют сиплюсплюсом весьма условно. Другое дело, что обычно об этом не спорят, если не стоит задача из разряда завалить на собеседовании.
Если у создателей Wiring стояла цель не пугать сложностью свою целевую аудиторию, а заодно оградить гуру плюсов от инфарктов при просмотре типичного ардуиновго кода, то они поступили правильно. При желании можно обозвать их трендовыми маркетологами, заодно показав "а вот так там можно на асме и Си" [#146]. Называть же их лгунами - это оказывается не по стандарту.
Ну извините, это пустое жонглирование словами. На него сложно ответить, потому что каждое предложение разбирать как-то неприлично, а по существу отвечать не на что.Вот первое предложение -
> относится к тому, на чём написан исходный текстИсходный текст чего? Всех допустимых программ. Тогда второе предложение оказывается не связано с первым. "GCC понимает well-formed C++ program", но он понимает и C++ с гццизмами, который с точки зрения стандарта является ill-formed. Зачем тогда первое предложение? Зачем была ссылка на well-formed в стандарте, а не на conforming implementation?
> Если программа на "языке" Wiring...
Какая программа? Каждая? Хотя бы одна? Нет, нужную мысль ни так, ни так сформулировать не получится.
> Значит, строго говоря, это не С++
Вы тезис подменили, перескочили на "быть C++", хотя в первом абзаце "быть C++ или его надмножеством".
Собственно, во всех трёх примерах (GCC, Wiring, Qt) речь идёт о надмножестве C++. О C++ с расширениями (но первый пример вы почему-то считаете за C++, а вторые два - нет). Подстановку одного #include и генерацию деклараций функций вы считаете за новый язык Wiring - пусть это на вашей совести останется. А если это силами CMake реализовать - тоже новый язык будет?
Последний абзац опирается на некое ошибочное понимание того, что такое Wiring. Вы согласитесь или возразите моим словам из #56: "форкнули вышеупомянутый программно-аппаратный комплекс [Wiring] и назвали Arduino". Всё форкнули, всё. Были платы Wiring - стали платы Arduino. "Был" "язык Wiring", стал "язык Arduino". Были библиотеки (фреймворк) Wiring, стали библиотеки (фреймворк) Arduino.
Ну извините, это пустое жонглирование словами. На него сложно ответить, потому что каждое предложение разбирать как-то неприлично, а по существу отвечать не на что.Вы тезис подменили, перескочили на "быть ill-formed хотя бы из-за GCC", хотя в исходном набросе "зачем они лгут".
> тезис подменили, перескочилиДопустим, это не передразнивание. Я серьёзно перескажу эту ветку комментариев.
Другой анон: "осталось узнать, что такое язык Wiring".
Я: они считают Arduino за язык, и Wiring тоже. Наверное, это ложь для "упрощения".
Вы: нет, Wiring - это фреймворк, а "язык Arduino" может означать "язык для Arduino".
Я: вы ошиблись, вот вся история. Arduino - это форк Wiring, который и фреймворк, и железо, и IDE, и называл себя языком как это делал Processing (в котором были основания называться не-джавой)
Вы: он будет обычным C++, если будет отвечать этому пункту стандарта.
Я: да вы что, этому пункту никакие компиляторы не отвечают так, как вы требуете. Если пытаться создать обоснование для "thin layer on top of C++", то вот нашлась вставка инклуда и прототипов.
Вы: *жонглируете словами*.
Я: я не могу на это ответить, не притворяйтесь ужом на сковородке. Вы ошиблись, вам был нужен другой пункт стандарта, про conforming implementation. Вы ошиблись, всё перечисленное - надмножество C++. Вставку инклуда и прототипов можно назвать расширением C++ (гораздо меньшим, чем расширения компиляторов).> перескочили на "быть ill-formed хотя бы из-за GCC"
Я написал "способны быть ill-formed", потому что вы в тот раз тоже не уточнили, *какая* программа - мысли читать не умею, извините. Это демагогия - избегать строгих формулировок и потом лавировать, чтобы переспорить оппонента.
> хотя в исходном набросе "зачем они лгут".
Так они лгут, сами посмотрите: https://github.com/arduino/language.
"domain-specific language implemented using a subset of the C++ syntax"
- они взяли стандартный GCC, "subset of the C++ syntax" у них родиться не может."The Arduino Language includes: the core API, i.e. a set of built-in classes"
- подключили библиотеки и назвали их частью нового языка."The Arduino Language includes: the official libraries"
- создали репозиторий с проверенными библиотеками и назвали их частью нового языка.
>> тезис подменили, перескочили
> Допустим, это не передразнивание. Я серьёзно перескажу эту ветку комментариев.Это не требуется. Обвинение во лжи - достаточно сильное заявление. На поверку оно оказалось ложным.
>> перескочили на "быть ill-formed хотя бы из-за GCC"
> Я написал "способны быть ill-formed", потому что вы в тот раз тоже
> не уточнили, *какая* программа - мысли читать не умею, извините.Не извиняю. Если хотите уточнение к цитате стандарта, учитесь читать стандарт.
> это демагогия - избегать строгих формулировок и потом лавировать, чтобы переспорить оппонента.
Вот и прекратите отвечать на цитату стандарта чушью.
>> хотя в исходном набросе "зачем они лгут".
> Так они лгут, сами посмотрите: https://github.com/arduino/language.
> "domain-specific language implemented using a subset of the C++ syntax"
> - они взяли стандартный GCC, "subset of the C++ syntax" у
> них родиться не может.Очередное голословное заявление. И ложное. Удачи с std::exception.
>> не уточнили, *какая* программа - мысли читать не умею, извините.
> Не извиняю.Пойду libastral компилять, вы мне иного выхода не оставляете.
Вы занимаете демагогией, игнорируете неудобные тезисы, с демагогами спорить неприлично. Люди могут подумать, что в ваших словах "что-то есть", раз с вами до сих пор общаются. Пусть они:
1. учтут, что Arduino использует компилятор GCC C++
2. прочитают позицию создателя комплекса Wiring: https://arduinohistory.github.io ("“language” or programming “framework”" - фреймворк и язык используются как синонимы)
3. прочитают позицию команды Arduino: https://github.com/arduino/language (о похожем неразличении языка и фреймворка)
4. посмотрят на преемственность, идущую от Processing'а, которая тоже внесла вклад в появление ошибки (мой коммент выше)>> они взяли стандартный GCC, "subset of the C++ syntax" у них родиться не может.
> Очередное голословное заявление. И ложное. Удачи с std::exception.Для поддержки синтаксиса исключений надо написать "-fexceptions", std::exception - это содержимое библиотки <exception>, она где-то была среди "официальных" ардуиновских (но зачем). Я что, тоже должен многозначительно сказать "Удачи", забросив предмет обсуждения? Я лучше не буду словесным навозом перебрасываться.
5. почитают остальные мнения команды Arduino:
- "Arduino language is merely a set of C/C++ functions"[1],
- "some minor pre-processing to turn your sketch into a C++ program"[2],
- "the code that you have written is translated into the C language (which is generally quite hard for a beginner to use)"[3],
- "Arduino API, aka the "Arduino Programming Language""[4]
6. посмотрят на анализ препроцессора[5] (такой же, но теперь не от меня) и решат для себя, имеет оно право называться новым языком или нет ("three lines away from being standard C++")[1] https://support.arduino.cc/hc/en-us/articles/360018448219-Ca...
[2] https://arduino.github.io/arduino-cli/0.36/sketch-build-process
[3] https://www.academia.edu/33554986/Massimo_Banzi_Getting_Star...
[4] https://docs.arduino.cc/learn/starting-guide/getting-started...
[5] https://hackaday.com/2015/07/28/embed-with-elliot-there-is-n...
> Вы тезис подменилиА, я тугодум. Объясню для других как я.
Вы уцепились за "обычный C++", хотя, строго говоря, язык, поддерживаемый GCC (и всеми известными мне компиляторами) - это C++ с расширениями. Хотя я же уже объяснил, что имел в виду: даже они не "создают новый язык, достойный отдельного названия" и предложил тогда назвать его JebanyOpennetowskyDemagogue2. Мне неизвестны компиляторы, совсем не выходящие за рамки стандарта, то есть мне неизвестны реализации обычного C++? Может быть, но это бессмысленная демагогия.
И это я за вас пытаюсь "создать обоснование" для того, чтобы Arduino/Wiring не считались "обычным C++" в строгом смысле. Сами авторы Arduino не считают его новым языком из-за того мелкого препроцессинга. Они его считают новым языком из-за либ и тараканов в голове.
Я "уцепился" за спор, затеянный ради спора. Что такое язык Си++ - описывает соответствующий стандарт, а не эксперт Опеннет. Либо в стандарте ищутся пункты, на основании которых можно что-то утверждать о "языке wiring", либо заявитель попадает под подозрение в троллинге и повышении энтропии.
> в стандарте ищутся пункты, на основании которых можно что-то утверждать о "языке wiring",Главное при этом сделать вид, что слова создателя Wiring о своём творении не важны. Точнее, утверждение о бытии языком вам важно, оно удобное, а остальные нет - они неудобные. После этого гениального логического приёма можете что угодно делать - искать пункты хоть в Приветствиях XXII съезду КПСС.
В разговоре про графику у вас тоже интересная риторика была. Аноним попросил: "простой вопрос: фпс выше частоты монитора сказывается положительно на инпутлаге и скорости вывода кадра или нет?". А вы тем временем рассказывали, что слова блогеров не считаются, что вы владеете паттерном Model–view–controller, понимаете принципиальное отличие веры от знания, не любите слово инпутлаг, предпочитаете версию анонима из соседней ветки и поэтому считаете улучшение отдельным частным случаем кривых игр, что доказывается навыками игры корейца (а не замерами предмета обсуждения как у оппонента).
Вместо цитаты стандарта в подтверждение верности исходного анонимного наброса, ожидаемо вылиты очередные _три_ порции воды.Любопытно осталось лишь одно: зачем блудослов скатился до мата в общественном месте.
Можно поставить точку словами создателя Wiring'а - он просто использует слова "язык" и "фреймворк" как синонимы: "Simple “language” or programming “framework” for microcontrollers"[1].Там же: "...set of commands I created as the language definition for Wiring. pinMode(), digitalRead()..."
Ранее в дипломе: "instructions and commands proposed for the Wiring language", слов "фреймворк" или "набор библиотек" нет.
Годная штука. Поставил, запустил, накодил, залил, работает. Никакой лишней возни с настройками зоопарка как там выше какой-то советовал, всё из коробки. Гениальная вещь.
Никакой лишней возни это platformio, один раз настроил и забыл, плюс спокойно можно шарить проект без тонны мануалов какие версии либ надо и какие настройки
> один раз настроилЯ в сабже из настроек выбрал свою плату. Если твой platformio требует ещё что-то — это точно не для меня. Мне надо чтобы ардуина поливала траву, когда с датчика приходит меньше X, и переставала поливать, когда больше Y.
>>Годная штука. Поставил, запустил, накодил, залил, работает. Никакой лишней возни с настройками зоопарка ...эт ежели одын кнопка ы одна свытодыода.
а как зажелаешь двустрочный дисплей или еще чего, то начинается зоопарк из либ.
> одын кнопка ы одна свытодыода.Почти так и есть. Кнопки только две: ручной запуск и ручной останов. Вместо диода датчик, привод задвижки, и сигнал от батареи «я скоро всё». Но в остальном всё примитивно: X < с датчика или кнопка 1 — открываем, > Y с датчика или кнопка 2 — закрываем. На старте и в любой непонятной ситуации закрываем задвижку. Дисплей цеплять не буду, на нём показывать нечего. Я глазами вижу когда полив идёт, и когда нет.
зачем ардуина тогда тут не понятно
1. АЦП2. устройсва на контроллерах сечас _всегда_ резко сокращают число корпусов МС на ПП.
> зачем ардуина тогда тут не понятноЗатем что на МК это сделаьт проще всего будет - если програмить умеешь. А заодно потом можно и продвинутостей добавить. Типа, например, калибровки - "а как именно по мнению юзера ЗБС?". Ну а с жесткой логикой с этим будет жуткое обломинго.
Потому что паять на голой Атмеге и прошивать ещё - это не две кнопки нажать. А тут человек получил сразу результат, если вдруг будет сильно надо, тогда и начнёт заморачиваться с изготовлением "по канонам".
Затем, что за вечер сделал и ща второй отдебажил. До этого к МК вробще не прикасался и не знаю что это, как и зачем. Учился по туториалу с ютуба. Ещё раз повторюсь: гениальная вещь.
Кодил под атмеги на чистом C. В разы компактнее чем скетчи для ардуинок.
отсыпь ссылок
> отсыпь ссылокЯ поначалу пользовался Atmel Studio. С ней всё само собой получится. И программировал ардуинки через программатор https://sl.aliexpress.ru/p?key=632LOnI.
Нынче Atmel нас банит, может через VPN получится.
А под Linux https://radiokot.ru/artfiles/6736/
Только одна ошибка в статье LDFLAGS д б = CFLAGS.
> Нынче Atmel нас банитНет, работает без всяких VPN
> отсыпь ссылокНу и отладка в родном proteus с рутрекера :)
Я бы пересел для этой грядки полностью на Linux, это всё возможно. Но Proteus не идёт у меня в вайне, а без него ардуинку затыркаешь перепрошивками.
> ProteusЕсть же альтернативы
Буду рад узнать какие.
> Я бы пересел для этой грядки полностью на Linux, это всё возможно.
> Но Proteus не идёт у меня в вайне, а без него
> ардуинку затыркаешь перепрошивками.По минимуму simulide есть например для некоторых авр-ок. Но вообще симуляторы это изврат, а их точность весьма специфичная.
Ковырял прошивку Атмеги, написанную на чистом асме. Так и не понял, зачем автор заморачивался экономией 95% незадействованной памяти. Наверное, просто потому что умеет.
Это из того-же разряда экономить операционную память на сервере с устоявшимся набором софта и нагрузки.А На самом деле, если можешь использовать регистры - зачем лезти в память?
Имел ввиду память под код, там размер прошивки 60 байт (а на "языке Wiring" с доработками 244). Откопал ту idb, рядом авторский исходник. Похоже, автор высчитывал времянки, зная время исполнения команд. Но толку от этого мало - без кварца, на внутреннем генераторе, частота создаваемого меандра отличается от требуемых 75 Гц (для проверки я и сравнивал прошивку на соответствие исходнику). Даже когда в серийном устройстве (https://tes.spb.ru/images/dtinstruction_compressed.pdf) стоит кварц (если там вообще есть Атмега), в любом случае придётся проверять осциллографом, значит можно и подобрать константы.
;HiFreq TES @ Ext 16 Mhz.include "tn25def.inc"
;********
.def Temp = r16 ; Temporary Register.def CntLo = r24 ; Count Register
.def CntHi = r25
;********
.Cseg
.Org $0000;********
Reset:
ldi Temp, $07 ; PortB (0,1,2) as Outputs
out DDRB, Temp
out PORTB, Temp
;********
LoopA:
ldi CntHi, High (323) ; 3.225 mSecs Loop
ldi CntLo, Low (323)ldi Temp, $02 ; 2.5 uSecs Loop
out PORTB, Temp
ldi Temp, 12
dec Temp
brne pc-1
nop
nopldi Temp, $04 ; 7.5 uSecs Loop
out PORTB, Temp
ldi Temp, 38
dec Temp
brne pc-1sbiw CntLo, 1
brne LoopA+2;********
LoopB:
ldi CntHi, High (967) ; 9.675 mSecs Loop
ldi CntLo, Low (967)ldi Temp, $03 ; 2.5 uSecs Loop
out PORTB, Temp
ldi Temp, 12
dec Temp
brne pc-1
nop
nopldi Temp, $05 ; 7.5 uSecs Loop
out PORTB, Temp
ldi Temp, 38
dec Temp
brne pc-1
sbiw CntLo, 1
brne LoopB+2rjmp LoopA
/*
* TES
* см. http://www.ullasmann.eu/
*///#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>#define O1 (1 << PB0)
#define O2 (1 << PB1)
#define O4 (1 << PB2)// пауза в 10 мкс
#define u_pause(_10uS) __builtin_avr_delay_cycles((_10uS) * F_CPU / 10000000)// должно быть 2.5 мкс
// подстроено под внутренний генератор
#define PULSE 26// должно быть 7.5 мкс
// подстроено под внутренний генератор
#define PAUSE 78// длительность сеанса 30 мин
//#define SEANCE (30 * 60 * 77)int main(void)
{
DDRB = O1 | O2 | O4;
// 30 минут
for (unsigned s = 30; s; s-- )
for (unsigned m = 60 * 77; m; m-- ) {
// длина пульса 3.225 мс
for (unsigned ps = 323; ps; ps--) {
PORTB = O2;
u_pause(PULSE);
PORTB = O4;
u_pause(PAUSE);
}
// длина паузы 9.675 мс
for (unsigned ps = 967; ps; ps--) {
PORTB = O2 | O1;
u_pause(PULSE);
PORTB = O4 | O1;
u_pause(PAUSE);
}
}
// экономим питание
PORTB = 0;
MCUCR |= 0x70; // Idle
__builtin_avr_cli();
__builtin_avr_sleep();
}
Асм на атмеге хорош (кайф), а мишка - гадость (пуши/попы регистров на любой чих, например).
*сишка
Вообще не интересно было смотреть, что там сишка генерирует. Это на Спектруме память ограничена, а когда Атмега стоит два часа за килограмм микросхем - выбирай любую.
Можно в чистом дебе. Geany+make+gcc-avr.
версия 1.х работает на 3 пентиуме, а сабж?
> версия 1.х работает на 3 пентиуме, а сабж?Какая разница, это суржик для детей.
> работает на 3 пентиумеЛучше бы промолчали. Такие признания не красят Вас, как востребованного и оплачиваемого специалиста.
За Ардуино где-либо платят?
В магазинах.
Новое ПО не только не обязано работать на 3м Пентиуме, но и это прямо вредно, ибо это игнорирование возможностей доступных на современном железе.
Не смотря что с быстродействием в Ардуине 2х явно намудили, это не критично.Самая главная проблема Ардуины 2х, что под каждую архитектуру и её варианты пользователю предлагается ставить виртуалки, хотя бы в ThinApp.
Или "наслаждаться" library-hell, и тормозами, при размусоливании куч библиотек заведомо не нужных текущему проекту.
> игнорирование возможностей доступных на современном железесерьезно? с точки зрения задач абдурино ИДЕ? :)
>> игнорирование возможностей доступных на современном железеНапример с глубоким анализом кода на лету, во времена Pentuim3 и заморачиваться не стали бы.
> серьезно? с точки зрения задач абдурино ИДЕ? :)
Ардуино - не совсем ИДЕ, а скорее нотепад.
Причем весьма тухлый на фоне других IDE, уже на старте проекта в стародавние времена.
Что плохо.Из хорошего там, только подход с библиотеками. А именно, если некие неведомые железки или платформа поддерживают Ардуино, то при прямых руках это точно будет работать, причем с минимумом усилий.
В Ардуино 2х с тормозами ещё можно смириться, и то на слабом железе, но DOS подобный дизайн, всё о одном экземпляре на всю ОС, в одном окне, с мешаниной библиотек - делит на ноль весть смысл подобной IDE.
Кстати о сишных дыренях, дак для Гарвардской архитектуры пофиг...
> Кстати о сишных дыренях, дак для Гарвардской архитектуры пофиг...Ну покажи как тебе integer overflow какой-нибудь - пофиг?
А еще ардуина тупая как дровина. У проца нет такого понятия как исключения - и абсолютно любая самая дурная ситуация - обработана быть не может.
Вырубился кварц? Ну, это вам не STM32, да. Переполнение стека? Выполнение попало на строку текста (константу) в флеше? Брутальный некорректный доступ в флеш? Ему похрен все. От и до. Может быть - когда нибудь - сработает вачдог.
А о том чтобы на абдурине запустить хотя-бы ubsan (у него есть лайтовая версия, на ARM в фирмварях юзабельно) и прозвонить фирмварь на тему integer overflow и прочего UB - речь не идет в принципе. У тупого как дрова AVR нету "bad opcode" исключений - ну ubsan реализовать низя, во! Так что вы еще и отловить вон то - не сможете на вот именно таргете.
Порча данных и всё, это всё что возможно.
> Порча данных и всё, это всё что возможно.Есть еще "сбои управления" на этой почве. Что для управляющей системы - хреново.
>У тупого как дрова AVR нету "bad opcode" исключенийРазве компилер C++ может генерить несуществующие опкоды? Сомневаюсь. Или ты прям в машинных кодах прогаешь?
> Разве компилер C++ может генерить несуществующие опкоды? Сомневаюсь. Или ты прям в
> машинных кодах прогаешь?Ubsan - довольно низкоуровнево интегрируется в компилер, и таки - может! Он вообще инструментирует поток команд, добавляя проверки! При том на автомате - програмеру делать ничего не надо, инструментация математики будет сделана компилером.
В полной версии он ловит ряд забавных вещей, типа некоторых выходов за пределы массивов, левых поползновений с типами, переполнения integer'ов и проч. И при обнаружении факапа он вырубает прогу и кидает нехилый стектрейс. В gcc/clang это нечто типа -fsanitize=undefined.
Но у него есть как минимум в GCC и лайтовый режим, спецом для МК, когда вместо полновесного рантайма он в инструментированом коде просто провоцирует Bad Opcode и дальше fault handler сам разбирается что это за фигня. Так оно уже подъемно для МК получается. На cortex M работает, фимрвар конечно несколько жирнее и тормознее из-за проверок, но - разница процентов 30 по размеру кода. Скорость - зависит от алго, может существенно просесть, а может и пофиг быть.
p.s. gcc также может САМ добавить вызовы функций memset/memcpy/memmove между прочим. И это документировано. Для freestanding окружение требование такое - предоставить эту троицу. А как вы думали он допустим один struct другому вообще присваивает?!
Авр прощает ошибки ПП, Эдик.
>Ветка Arduino IDE 2.x создана на основе редактора кода Eclipse Theia и использует платформу Electron для построения интерфейса пользователяКак там с телеметрией?
(ветка Arduino IDE 1.x была самодостаточным продуктом, написанным на Java).
Уж лучше продолжать сидеть на этой.
> Как там с телеметрией?всё очень плохо. оффлайн режима тупо нет, можно запустить в неймспейсе без интернета, но тогда оно задалбывает сообщениями "не могу проверить обновления, не могу сохранить твой скетч в облако, не могу вообще ничего дай интернет пж пж пж"
короче, ветка 2.х - [цензура]
>Связанная с компиляцией, отладкой и загрузкой прошивок логика вынесена в отдельный фоновый процесс arduino-cli.К другим редакторам кода где-либо уже прикрутили? (Emacs, Qt Creator, ...)
>>Связанная с компиляцией, отладкой и загрузкой прошивок логика вынесена
>>в отдельный фоновый процесс arduino-cli.
> К другим редакторам кода где-либо уже прикрутили? (Emacs, Qt Creator, ...)Есть вообще такой пакет как arduino-core или как его. Сугубо мэйкфайлы и проч для сбора вот этого всего (.ino файлов) - мануально. А что там у кого редактором при этом уже его дело тогда.
>Arduino IDE 2.x создана на основе редактора кода Eclipse Theia и использует платформу ElectronШьа? Эклипс теперь на Электроне? А как же ecj и миллион eclipse java штучек?
вот когда добавят ESP32 вот тогда может бьыть начну учуть Arduino, а пока я лучше подожду
Куда добавят?. Хочешь esp32 под ардуину бери и добавляй и все будет работать.. (наверное)
да я смеха ради пошутил над собой
Оно уже добавлено и давно :)
Но штуки под есп32 есть и для вс-кода, который порой ощутимо удобнейДа и чего там учить ? Это штука для прототипирования всякого. Нажал несколько кнопок - и в путь
Ну к слову можно и сейчас в ручном режиме добавить URL c package_esp32_index.json для «Additional Board Manager» и собирать прошивки для ESP32.
Устанавливать, компилировать.. А зачем? Если результат все равно загрузить в ESP нельзя.
Ну кроме хелловордов, без разделов данных. Анонизмом отдаёт это.
rip. слез с ардуины именно из-за новой ide на джаве (той, которая хромиум)
Перепиши, ты кажется не понял на что ругатся нужно XD
Этим ктото реально пользуеца?😅
Нередко бывает удобно без тонн гемора просто скачать, запустить и работает
Ещё и пачка работающих примеров для разных плат имеется
Ну и бонусом - большое количество разных модулей на любой вкус
>>>Ветка Arduino IDE 2.x создана на основеНа основе недоDOS.
Принципиально не позволяет несколько экземпляров "IDE" в системе и навязывает сваливание библиотек от всех всех всех архитектур в одно корытце. Одновременно с конфликтами это замедляет и время запуска и время компиляции.
Кто имеет мнение про MounRiver Studio Community применительно к микроконтроллерам WCH CH32V ?
Доводилось сталкиваться, а что конкретно интересует?
Под виндой не работает, а под линуксом ненужно.
Говорим «винда» — подразумеваем минимум Windows 10. Что там не работает в вашей уютной семёрочке, никого не интересует.
> подразумеваем минимум Windows 1010ка тоже умирает, на новые устройства OEMы её не ставят уже года два как.
Примерно со времени выхода 11, такое совпадение. Но это не означает окончания поддержки 10.
В винде всё очень плохо с подключениями внешних устройств. Даже файлы с телефона не перекинешь, соединение валиться при копировании. В линуксе при этом всё работает нормально. Использование флешек это отдельная жопа. Каждая третья флешка не читается или дико тормозит. В линуксе опять же всё нормально.
Извините, но тут взоржал, конечно. У меня из трёх постоянно используемых девайсов (фотоаппарат, телефон, планшет) только телефон более-менее нормально в линуксе подключается (по проводу, про блютус лучше не начинать даже). В винде, естественно, без проблем.
Про флешки дичь. Они либо работают, либо нет.
Почему в таком случае винда не может смонтировать флешку без ОБЯЗАТЕЛЬНОГО форматирования, а в линукс читается без проблем. Пытался вчера скинуть фотки с телефона по проводу: винда что-то начинает высчитывать а потом серет чем-то вроде "Устройство недоступно", в линукс же снова всё без проблем.
Это, случайно, не какая-нибудь васянская лайт-сборка? Мне эти флешки с телефонами приходится подключать чуть ли не сотнями, и никогда проблем не было.
Замечу, что с флешками проблем и в линуксе не было. А вот MTP там сломан изначально, а про PTP лучше вообще промолчу.
> Извините, но тут взоржал, конечно. У меня из трёх постоянно используемых девайсов
> (фотоаппарат, телефон, планшет) только телефон более-менее нормально в линуксе подключается
> (по проводу, про блютус лучше не начинать даже). В винде, естественно, без проблем.А я вот налетел на то что под виндой энный планшет - по проводу подключается, файло по MTP качает, все вроде збс, ошибок нет. Только файлы почему-то бьет с некоторой вероятностью. И вот половина картинок - нечитаемые. До половины картинка норм - дальше шум океанов марса. Т.е. какие-то явно левые данные хзоткуда в жыпеге.
На линухе этой проблемы с тем же планшетом нет. Такая фигня. А блютус - черт его знает - там куча жыпегов с камеры на 300 мегов вмесом качаться будет - неделю. Нафиг оно мне в таком виде?!
> Под виндой не работаетЕсли речь о WinXP, то даже как-то не удивителяет сей факт. Не пробовали обновиться хотя бы на десятку? Она вроде даже на старье типа core 2 quad бегает.