Рыбку хотя бы посеребренную или позолоченную ?

Harmand
Offline
Зарегистрирован: 21.06.2017

Можно ли не уходя от ардуиновского функционала выбора плат и библиотек, пользоваться какой-либо чуть более удобной IDE, хотя бы на несколько шагов ближе к Atmel Studio ?

Нужна удобная доступность внесения изменений в опции компилятора, возможно пользовательские профили,  работа с фьюзами и битлок  и хотя бы минимальные возможности отладки ...  

Bootloader arduino тоже удобен, но не принципиален.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Harmand пишет:

Можно ли не уходя от ардуиновского функционала выбора плат и библиотек, пользоваться какой-либо чуть более удобной IDE, хотя бы на несколько шагов ближе к Atmel Studio ?

Можно. Самой Atmel Studio с расширением для Ардуино.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Visual Studio Community + Visual Micro

Harmand
Offline
Зарегистрирован: 21.06.2017

ЕвгенийП пишет:
Можно. Самой Atmel Studio с расширением для Ардуино.

Где почитать подробнее про расширения для Ардуино  и их установку на Atmel Studio?  Это вживляемые плагины?

Если используете  расширения Arduino для AS  , расскажите пожалуйста об их удобствах и проблемах.

http://we.easyelectronics.ru/AVR/rasshireniya-atmel-studio-6.html 

https://geektimes.ru/post/284352/

http://sainquake.com/?p=464

http://forum.amperka.ru/threads/arduino-ide-for-atmel-studio-6.5740/

http://e-device.in.ua/arduino_c/

http://www.customelectronics.ru/programmirovanie-arduino-na-c-v-avr-studio/

http://we.easyelectronics.ru/AVR/rasshireniya-atmel-studio-6.html

 

 

 

Harmand
Offline
Зарегистрирован: 21.06.2017

DetSimen пишет:
Visual Studio Community + Visual Micro
К ним есть плагины, дополнения для Ардуино?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Visual Studio это IDE. A Visual Micro - плагин именно для Ардуины. 

Правда, он триальный, через месяц начнет надоедать окном, но я внимания не обращаю. 

И. Arduino IDE все равно должна быть установлена.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Harmand пишет:

Где почитать подробнее про расширения для Ардуино  и их установку на Atmel Studio? 

Ну, как бы в первоисточнике - на сайте atmel.com.

Harmand
Offline
Зарегистрирован: 21.06.2017

DetSimen пишет:
Visual Studio это IDE. A Visual Micro - плагин именно для Ардуины. Правда, он триальный, через месяц начнет надоедать окном, но я внимания не обращаю. И. Arduino IDE все равно должна быть установлена.

Мне интересно Ваше субъективное мнение  - какие у  "Visual Studio +  Visual Micro" основные удобства по сравнению с IDE Arduino?

 

Harmand
Offline
Зарегистрирован: 21.06.2017

ЕвгенийП пишет:
Ну, как бы в первоисточнике - на сайте atmel.com.

Спасибо, Вы сами  используете эти расширения ? 

Можете сравнить их с "Visual Studio +  Visual Micro" ?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Harmand пишет:

Мне интересно Ваше субъективное мнение  - какие у  "Visual Studio +  Visual Micro" основные удобства по сравнению с IDE Arduino?

ты много видишь ползателей форума, юзающих "Visual Studio +  Visual Micro"?

отож - объективное мнение.

Harmand
Offline
Зарегистрирован: 21.06.2017

Клапауций 112 пишет:
ты много видишь ползателей форума, юзающих "Visual Studio +  Visual Micro"?

отож - объективное мнение.

Ползатели хто тахие ?   Я про комплект "Visual Studio +  Visual Micro"  узнал несколько минут назад на форуме.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нуууу... Мне по работе С# нужен, поэтому VS у меня уже стояла, бесплатная, редакции Community. Потом где-то прочитал про Visual Micro, прям из Студии ее поставил. С тех пор (больше полугода) Arduino IDE не запускал ни разу. Только Студию надо ставить с включенной галочкой С++, по умолчанию она выключена

Последовательность установки, сначала 

Visual Studio Community (у меня 2015)

потом Ардуино IDE

а потом Visual Micro

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Цветовая гамма настраиваеца как хочешь. Intellisence работает прекрасно.

Harmand
Offline
Зарегистрирован: 21.06.2017

DetSimen пишет:
Цветовая гамма настраиваеца как хочешь. Intellisence работает прекрасно.
Intellisence не знаю что такое, а что удобного по функционалу по сравнению с  IDE Arduino ?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Harmand пишет:

Я про комплект "Visual Studio +  Visual Micro"  узнал несколько минут назад на форуме.

теперь по любому своему пуку будешь темы на форуме создавать?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нуууу... Как бы абяснить.  Это кабутта ты деревья один пилил двуручной пилой, и вдруг тебе бензопилу дали. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Единственно, что, эта связка не умеет комбинировать с и асм файлы, но я могу просто не владеть информацией, тогда пусть меня поправят.

А AVR Studio  может это искаропки.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Harmand пишет:

Intellisence не знаю что такое, а что удобного по функционалу по сравнению с  IDE Arduino ?

Intellisence и есть главное удобство - то, что Вы не знаете что это такое - беда, но беда легко поправимая при желании.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Harmand пишет:

ЕвгенийП пишет:
Ну, как бы в первоисточнике - на сайте atmel.com.

Спасибо, Вы сами  используете эти расширения ? 

Можете сравнить их с "Visual Studio +  Visual Micro" ?

Нет, конечно. Нафига? Цель-то такого использования какова?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вопрос к уважаемому ЕвгенийП. Я ставил AVR Studio 7 с официального сайта, но без ардуиновского плагина. Не смог разобраться, как заливать прошивку в контроллер, не подскажете как?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

AVR Studio 7 с официального сайта, но без ардуиновского плагина. Не смог разобраться, как заливать прошивку в контроллер, не подскажете как?

Ну, там можно совсем по-разному. Самый сермяжный вариант, просто компилировать в студии, а заливать готовый hex любой программой типа avrdude, но Вас, как я понимаю, интересует как интегрировать заливку в студию, правильно?
Окей, давайте два варианта посмотрим. Первый - по уму, как оно было задумано и второй - "через Альпы", но всё же автоматически, без ручного запуска посторонних программ.

1. По уму - как задумано

Вообще-то студия заточена на использование родной атмеловской платы STK-500 (документация) для всех операций с контроллером. У меня она выглядит вот так:

Плата, к сожалению, недешёвая. У китайцев можно найти клон существенно дешевле, но всё равно дорого. Однако, рекомендую - Вы получаете прошивку всех атмеловских чипов в DIP (если купите STK-600, то и в TQFP) причем как последовательное программирование, так и параллельное. С последним Вы можете, например, назначить Reset как пин ввода-вывода и вообще не бояться ошибиться во фьюзах. 

Сам я покупал напрямую у Atmel, т.к. совсем не понимал как ею пользоваться и хотел, в случае непоняток, быть уверенным, что проблема в кривости рук/мозгов, а не в кривости клона. Сейчас бы я купил клон. 

Подключается она к компьютеру через RS232. Если у Вашего компьютера нет такого интерфейса (как у меня) то потребуется переходник с USB, но это копейки.

Как только Вы её подключите, Студия начнёт её распознавать, и Вы можете пользоваться диалогом прошивки в меню Tools. Вот так:

Как видите в диалоге есть и прошивка, и установка фьюзов c локбитами, и калибровка осциллятора - в общем, всё пучком. Также у Вас появится соответствующие меню в свойствах проекта.

2. Через Альпы

Если нет специальной платы, то можно пользоваться обычным программатором и программкой типа avrdude.

Для того, чтобы студия по завершении компиляции автоматически прошивала Вашу программу в контроллер, нужно в свойствах проекта добавить т.н. Post Build Event. В качестве обработчика вставляете командную строку вызова avrdude, только вместо конкретного пути к прошиваемому файлу, ставите макрос студии. Вот так это выглядит:

То, что начинается со знака доллара - как раз те самые макросы.

При такой записи, студия будет сама прошивать Ваш девайс всякий раз после компиляции.

Ну, вот как-то так.

Думаю, что можно как-то ещё настроить, но меня эти два варианта устроили, нормально работают и больше я не разбирался.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Огромное спасибо, за подробный ответ.  кину в закладки. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Второй вариант больше подходит, ибо дорогущая плата не нужна, я не этим деньги зарабатываю. Мои поделки обходятся ATTiny85, Atmega8 да 328, а их можно через Usb программировать да через другдруга. :) 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Можно, только не параллельно.

Вот Вы сказали про ATTiny85. Я собственно эту плату купил, когда очень захотелось на ATTiny45 иметь 6 GPIO пинов. С помощью параллельного программатора я лекго превратил Reset в GPIO. Последовательным программатором такой фокус невозможен. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

сколько надо прошить 85-х, с 6 ногами, чтоб окупить плату параллельного программатора? 

У мня тиньки трудятся там, где ног много не надо, 1-2 датчика, 1-2 исполнительных устройства. 

а где надо больше 5 ног - там я ставлю Micro на 328

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

установил атмел студию с плагином для ардуинки

очень удобная подсветка синтаксиса, авто дополнение кода ну всем хорош.

но есть недостатки... относительно долго загружается при старте программа и отсутствует возможность создать вкладки как в ардуино IDE

 в итоге если чтото мелко типо блинка быстрее накидаю в IDE и загружу.

сейчас большой проект собираю но тоже остановися на родной иде так как разбил все по вкладкам. пишу в отсновном в notepad++ а потом переношу в иде и заливаю.

в итоге особо не пользуюсьатмел студией

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Baks пишет:

отсутствует возможность создать вкладки как в ардуино IDE

Да, нет, Вы просто не умеете это делать. 

Поставьте мышь на проект и правой кнопкой выберите "добавить айтем". Новый файл появится в дереве проекта. А вкладка вообще не при делах, Вы в любой момент может кликнуть на файл - вкладка откроется, а когда не нужна закрыть её "крестиком".

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

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

плюсанул)))

Peter-91
Offline
Зарегистрирован: 25.06.2017

ЕвгенийП пишет:
в первоисточнике - на сайте atmel.com.

Тоже хотел скачать расширения для Arduino,  но загружается только интернет-установщик ArduinoForAtmelStudio на 5 Мб , а мне нужны непосредственно расширения тк компьютер на который я буду устанавливать принципиально отделен от интернета.  

Где взять программу ArduinoForAtmelStudio  без интернет-установщика ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ЕвгенийП пишет:

Вот Вы сказали про ATTiny85. Я собственно эту плату купил, когда очень захотелось на ATTiny45 иметь 6 GPIO пинов. С помощью параллельного программатора я лекго превратил Reset в GPIO. Последовательным программатором такой фокус невозможен. 

Евгений -совсем маленькое дополнение- у вас наверное мультиформатный программатор, потому что tiny85 шьётся только в режиме HVSP (высоковольтное последовательное программирование). И с обычным ISP ресет можно в ногу порта превратить, но обратно в ресет только высоковольтным :)

LodjiNN
Offline
Зарегистрирован: 25.06.2017

dimax пишет:
tiny85 шьётся только в режиме HVSP (высоковольтное последовательное программирование). И с обычным ISP ресет можно в ногу порта превратить, но обратно в ресет только высоковольтным :)

Высоковольтный программатор из Ардуино :   http://arduino.ru/forum/apparatnye-voprosy/universalnyi-avr-programmator...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dimax пишет:

у вас наверное мультиформатный программатор,

Вы, навероне, пропустили начало диалога. Он начался с того, что у меня атмеловская плата STK-500 и я порекомендовал её коллеге.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

ЕвгенийП пишет:

Baks пишет:

отсутствует возможность создать вкладки как в ардуино IDE

Да, нет, Вы просто не умеете это делать. 

Поставьте мышь на проект и правой кнопкой выберите "добавить айтем". Новый файл появится в дереве проекта. А вкладка вообще не при делах, Вы в любой момент может кликнуть на файл - вкладка откроется, а когда не нужна закрыть её "крестиком".

ставил на рабочем компе атмел студию и приложение для ардуинки. был затык что не появлялось окно для ввода папки со средой IDE(не добавлялся компонент в среду Atmel Studio). нашел решение тут http://forum.amperka.ru/threads/arduino-ide-for-atmel-studio-6.5740/

подскажите пожалуйсто какой файл нужно создать чтобы глобальные переменные и функции можно было видеть из главного во второстепенном и из второстипенного в главном.

или нужно както обьявить чтото типа этого?

#include "blink.h"    #include "CPPFile1.cpp"

заранее благодарю за ответ....

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Для простого программирования из студии можно использовать STK500v2 от Petka, простой, компактный и не стоит, как Зенит-Арена.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Baks пишет:

подскажите пожалуйсто какой файл нужно создать чтобы глобальные переменные и функции можно было видеть из главного во второстепенном и из второстипенного в главном.

или нужно както обьявить чтото типа этого?

#include "blink.h"    #include "CPPFile1.cpp"

Ну, общее правило таково. В любом .cpp файле, все глобальные объекты (переменные, функции), которы НЕ должны быть видны из других файлов объявляются со словом static, а те, которые должны быть видны - без этого слова.

Затем для этого .cpp файла делается .h файл. В нём все объекты, которые должны быть видны снаружи объявляются со словом extrern.

После этого в любом другом .cpp файле в котором нужно видеть те объекты, просто включаете тот .h файл при помощи #include

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП, а что происходит с теми переменными из *.cpp, которые не помечены атрибутом static и не вынесены в соответствующий *.h файл?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, ничего не происходит. Доступны отовсюду. Объявляйте их в любом другом файле с атрибутом extern и "доступайтесь".

Только Вы-то это и без меня знаете, не понимаю для чего спрашиваете.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну не знаю. Вообще после #include " __.h", все переменые из .h  уже видны в основной программе.  И для того что бы убрать из файла .h лишние переменные их делают в static. A если в .h файле нужны внешние(внешие по отношению к .h) переменные то extern. Переменые в срр не видны нигде вне файла. Ведь обычно #include " __.cpp" не делают. Но делают в .сpp  #include " __.h" и  переменые из .h видны и в .ссp и в осноном файле. Ну где-то так. так что static надо писать для невидимых переменных только в .h файле.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

так что static надо писать для невидимых переменных только в .h файле.

Простите, но Вы не правы.

Попробуйте и расскажете, что получилось.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Только Вы-то это и без меня знаете, не понимаю для чего спрашиваете.

Нет, Евгений, я программирую на разных языках, и С++ для меня не родной. Поэтому в общих чертах я его, конечно, себе представляю, а тонкости черпаю в основном из Ваших постов.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

нужна консультация..

создал файл global.h

вот его содержимое

// global.h

#ifndef _GLOBAL_h
#define _GLOBAL_h

#if defined(ARDUINO) && ARDUINO >= 100
	#include "arduino.h"
#else
	#include "WProgram.h"
#endif
extern boolean flag ;
#endif

и global.cpp

#include "global.h"

flag = false;

компилятор выдает ошибку что переменная не определена в cpp файле,

а если пишу boolean flag = false; то все компилируется, 

правильно ли я понял что надо 2 раза обьявлять переменную и в .h файле и в /cpp ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так, давайте Вы поймёте общий принцип:

Объявлять надо один раз - в cpp файле.

Запись с ключевым словом "extern" обявлением не является - это инофрмация о том, что где-то (в другом файле) переменная с таким именем и типом уже объявлена.

Поэтому, так как Вы делаете (когда работает) и надо делать.

Теперь немного о директиве #include - запомните, в ней нет ничего магического. Если Вы её уберёте, а вместо неё просто вставите копипастом содержимое того файла на который она указывает, ничего не изменится. Она именно это и делает - вставляет содержимое файла. Используется она для того. чтобы одинаковые куски кода вставлять в разные файлы. Это понятно?

Теперь смотрите примеры (в т.ч. и ошибочные).

Пример №1
Файл a.cpp Файл a.h Файл b.cpp
//
// Честно объявляем переменную
//
int kaka = 0;
//
// Указываем, что переменная int kaka 
// где-то уже объявлена 
//
extern int kaka;
#include "a.h" // Вставили текст из файла a.h
//
// Теперь можно использовать переменную кака,
// обявленую в файле a.cpp
//
int mumu = kaka + 1;
В этом примере всё нормально должно работать

Пример №2
Файл a.cpp Файл a.h Файл b.cpp
//
// Честно объявляем переменную
//
int kaka = 0;
//
// неважно 
//
//
// Тоже объявляем переменную кака
//
int kaka + 1;
Линкер нас обругает за то, что переменная объявлена дважды

Пример №3 (любимая ошибка новичков)
Файл a.cpp Файл a.h Файл b.cpp
#include "a.h" // Вставили текст из файла a.h
//
// Используем переменную кака, объявленую в a.h
//
int n = кака;
//
// Указываем, что переменная int kaka 
// где-то уже объявлена 
//
extern int kaka;
#include "a.h" // Вставили текст из файла a.h
//
// Теперь можно использовать переменную кака,
// объявленую в файле a.h
//
int mumu = kaka + 1;
Линкер обругает нас, т.к. переменная кака на самом деле не объявлена нигде (это Ваш случай)

Пример №4 (ещё одна любимая ошибка новичков)
Файл a.cpp Файл a.h Файл b.cpp
#include "a.h" // Вставили текст из файла a.h
//
// Используем переменную кака, объявленую в a.h
//
int n = кака;
//
// Статически объявлем 
//  int kaka 
//
static int kaka;
#include "a.h" // Вставили текст из файла a.h
//
// Теперь можно использовать переменную кака,
// объявленую в файле a.h
//
int mumu = kaka + 1;
Ура! Никто не ругается, всё классно! Я - крутой! Тока .... оопс ... глюки какие-то ... При таком объявлении переменные kaka в файлах a.cpp и b.cpp - просто разные переменные! Никакого отношения друг к другу они не имеют!

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

спасибо большое за разяснение, очень доходчего все разяснили.

я кстати кое что нашел по моему вопросу...

Спецификатор extern сообщает компилятору, что следующие за ним типы и имена переменных объявляются где-то в другом месте. Другими словами, extern позволяет компилятору знать о типах и именах глобальных переменных без действительного создания этих переменных. Когда два модуля объединяются, все ссылки на внешние переменные пересматриваются.

Если при объявлении выделяется память под переменную, то процесс называется определением. Использование extern приводит к объявлению, но не к определению. Оно просто говорит компилятору, что определение происходит где-то в другом месте программы.

.. а по вашему примеру последнему мне все понятно, про static читал,  но за то что освежили в памяти тоже благодарен :)

плюсанул.....

и да не думали написать этюд на эту тему? довольно таки поучительно (очень не много инфы про атмел студию, и много вопросов не всегда есть на русском ответы, и видео в основно на забугорном) и у Вас хорошо получается....