Здравствуйте Иван, и всем заглянувшим в тему. Есть очень ламерские вопросы по поводу перехода с Arduino IDE. Последняя меня устраивает почти всем, кроме отсутствия отладки. Из-за чего хочу перейти, но со многим не выходит разобраться. 1. Поддерживаются ли многофайловые проекты, где несколько .ino и несколько .h файлов ? В Arduino IDE использую такой вариант, т.к. в случае с кучей .cpp файлов путаюсь с тем кого в кого вложил. Просто такой проект при переносе из Arduino IDE вызвал кучу ошибок, возможно я что-то еще не учел, попробую разобраться еще 2. Для каждого проекта использую отдельную portable-сборку arduino ide, для того чтоб не получить глюки из-за обновлений чего-то, плюс чтоб библиотеки не пересекались. В platformio, насколько я понимаю можно указать зависимости в проекте, и я так понял их нужно указать относительно корневой папки проекта. А можно ли в проект скопировать так-же все стандартные библиотеки, и возможно весь фреймфорк? Чтоб я его обновил в VScode, а в проекте остались старые версии абсолютно всего? 3. Чтобы можно было откатить изменения, в Arduino IDE пересохраняю проект с новым именем. При этом создается копия папки с новым именем, куда копируются все файлы, и когда папок стает много, из них делаю компактный 7z архив. Какой вариант лучше для Platformio? Чтоб не копировать огромный проект со всеми библиотеками? Возможно для этого нужно использовать git? Или есть простые варианты?
если речь о написании кода под стандартные для Ардуино процессоры, например Атмега328 - то куда бы вы не перешли, отладка не появится, так как эта линейка процессоров ее не поддерживает
Алексей, прошу прощения что поднимаю старый пост - не могли бы вы немного подробнее пояснить, может с примерами - как происходит выбор тегов для библиотек, что такое автогенерация исходников и тд... Я понимаю, что вопросы ламерские - но если что-то ответите, буду благодарен
Извиняюсь, я про ESP32. Ну в Visual Studio с плагином Visual Micro можно натыкать точек останова, накидать им условий. Это куда проще, чем ручками добавлять это всё в код, а потом сидеть и вычищать - просто поставил точку, запустил псевдоотладку и видишь каждую итерацию цикла пошагово
Я, лично не пробовал, но в тырнетах пишут обратное You can debug a 328 with JTAGICEmkII or Dragon. It uses the one wire On Chip Debug interface called debugWire. You start using the debugger in ISP mode to set th DWEN fuse (unlike JTAG chips which have the JTAGEN fuse enabled by default the debugWire chips have DWEN disabled by default). Once you have used ISP to switch to dW mod in theory you only need two of the 6 wires in the ISP header but as you need all 6 to get the chip back from dW to ISP mode (you can't change fuses in dW mode) you might as well leave all 6 connected. Having switched the chip to debugWire you just use Debug-Select Platform and Device to select either JTAGICEmkII or Dragon then when you use "Start Debug" Studio will communicate with the chip in dW mode and download the latest build of the code into its flash then start the debug interface with the PC positioned at 0x0000 (Asm window active) or main() (C window active).
Спасибо, надо будет попробовать. Не найдя действительно работающего эмулятора языка Arduino для ПК, я обкатываю куски кода на Mega 2560, в которую мой кривой код залетает быстрее и проще, и уже с помощью псевдоотладки из под VS смотрю что и как работает. Неудобство в том, что все точки останова и отслеживаемые переменные нужно указать заранее, но зато исходник остаётся девственно чистым, без всяких Serial.println
то что написал asam - именно так и будет работать, насколько я знаю. То есть для каждой новой точки останова надо будет заново перекомпилировать и перезалить код в контроллер. Но это вряд ли можно назвать полноценной отладкой. Нормальной внутрисхемной отладки на АВР все равно не будет это решается при помощи условной компиляции
Ну, насколько я понял из этого и других описаний - atmega поддерживает нормальную внутрисхемную отладку, только по окончании отладки надо ее перешить.
Ну я встречал только варианты натыкать везде в код ifndef, от чего ествственно можно сойти с ума (каждый раз писать эту монстроузную конструкцию ) +исходник весь будет усыпан этими лишними строками, что как бы усугубляет задачу, а не решает. Или есть вариант проще?
В общем исходник портит и не разу не лучше, спасибо Спойлер: Чтоб не строить догадок, выдержка из википедии: debugWIRE разрабатывался как более дешёвая альтернатива JTAG, специально для процессоров с ограниченными ресурсами. Он поддерживается большинством современных 8-битных контроллеров AVR. Пользователь получает возможность чтения и записи всех областей памяти (FLASH, EEPROM, Fuse bits) и контроль над выполнением программы внутри контроллера (брэкпойнты в программной памяти). Однако протокол не поддерживает пошагового выполнения. Протокол использует единственную двунаправленную линию Reset для входа и выхода данных. Программные точки останова формируются с помощью входящей в систему команд AVR команды Break. Интегрированная среда разработки обеспечивает сохранение оригинальной команды, заменяемой Break в памяти настольного компьютера, с последующим её восстановлением и продолжением исполнения программы. Таким образом использование программных точек останова тратит ограниченный ресурс данных микроконтроллеров — максимально возможное количество циклов записи стирания программной памяти. Нужно следить, чтобы отладчик не израсходовал его полностью. Поскольку для отладки используется вход внешнего сброса RESET, становится невозможным проверять схемы внешнего сброса. В момент останова процессора, чтобы не нарушить работу системы, надо соблюдать осторожность при обращении через отладчик к регистрам ввода-вывода. В режиме с разрешённой отладкой потребляемая процессором мощность возрастает, поэтому не следует забывать по окончании отладки перевести fuse-переключатель DWEN в исходное состояние. Похоже вариант в Visual Studio даёт тот же результат, но без фьюзов. Я понял одно из обсуждения - для отладки скетчей надо взять какой-нить STM32 за полбакса и не мучатся
Все многоножки поддерживают JTAG - а это полноценная отладка. МК с меньшим количеством ног имеют dWare - полупрограммная, но пошаговая отладка есть. Беда в том, что такие отладчики стоят абсолютно конских денег. Поэтому я перешёл но новые аттиньки. Самая дешманская плата с отладчиком стоит всего 900 рублей. За эти деньги имеем полноценную отладку + 2 аппаратных точки останова. Свыше этого - программные. Ну и поддержку абсолютно всех МК из серии.
Так надо пользоваться нормальными IDE, а не блокнотом. В таких IDE неисполняемый код условной компиляции затеняется.
Ну по форумам порылся, пишут мол JTAG есть в *AT90CAN128 *ATmega128*ATmega16*ATmega162*ATmega169*ATmega32*ATmega323*ATmega64, но в 328ой как-раз таки нету, и похоже теория с кол-вом ног не работает)). Однозначного списка нигде нет, надо на каждый отдельный МК смотреть. Можно ещё придумать вариант - пользоваться нормальными МК и причины заходить на этот форум отпадут сами по себе)))
а сайт атмела/микрочипа не работает? Или брать инфу из первоисточника это моветон? у вышеприведенных МК как минимум 44 ноги. JTAG занимает 8.