Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ардуино что это

Чт сен 17, 2015 22:43:00

С чего ему разбухать, если под ардуиновской средой лежит GCC -- один из лучших оптимизирующих компиляторов для языка С/С++ и самый лучший среди бесплатных. То, что библиотеки порой тяжеловаты, так и функционал, извините, не моргание светодиодом. Не нравятся библиотеки, пишите свои. Ардуина тут никак и никого ограничить не в состоянии. Особо беспокоящимся "развитием", могу предложить сразу начать со стека протоколов TCP/IP. Развиваться без остановки придется до самого смертного одра, независимо от возраста на сегодняшний день.

Re: Ардуино что это

Пт сен 18, 2015 07:14:08

Я один раз написал под ардуину код
Код:
case(...)
оператор;
{
...
}

После этого часа три выяснял почему оператор не выполняется.

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

Re: Ардуино что это

Пт сен 18, 2015 09:08:37

Андрей СШ писал(а):пропускающий такие очевидные ошибки разработку как то не ускоряет.

Компилятор тут не причем. на си можно написать одно и тоже разными способами.

B@R5uk писал(а):то надо хорошо разбираться в вопросе


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

Re: Ардуино что это

Пт сен 18, 2015 09:11:17

Я без кварца запускаю поделия, только частоту ставлю 8 обычно фьюзами. Даже в готовых конфигах есть такие варианты плат или можно свой создать на нужную частоту. Собственно и ардуиной то готовой пользуюсь нечасто, чаще девайс на макетке с подключенным USBAsp и лью без загрузчика... вот как то так привык к ардуине.

Re: Ардуино что это

Пт сен 18, 2015 09:17:02

Компилятор таки смущается :)

Код:
int maint(void)
{
   int a = 0;
   switch (a) {
      case 0
      asm volatile("nop");
      {
         asm volatile("nop");
      }
      break;
   }
   
   return 0;
}


Изображение

Re: Ардуино что это

Пт сен 18, 2015 09:31:18

:))) он тебе говорит что после кейса должно идти двоеточие.

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

Re: Ардуино что это

Пт сен 18, 2015 09:37:44

Извиняюсь перепутал ключевые слова. Код был приблизительно такой

Код:
 switch(a)
  digitalWrite(led, LOW);
  {
    case 0: digitalWrite(led, HIGH);
  }


И компилировался молча. Сейчас баг уже устранили.

Re: Ардуино что это

Пт сен 18, 2015 09:47:07

Не вижу здесь ошибки (в смысле которую должен увидеть компилятор).
Это уже логическая ошибка человека а не компилятора. Может вам нравится когда компилятор загоняет в жесткие рамки, а мне нет.

Re: Ардуино что это

Пт сен 18, 2015 10:06:17

DronVolk писал(а)::))) он тебе говорит что после кейса должно идти двоеточие.
Ну речь и шла об "очевидных ошибках" :))) Я лишь попытался скомпилировать написанное :)))

Новая версия кода никак не могла молча компилироваться. Она опять синтаксически неверна, согласно стандартам Си.
Код:
void nop(void)
{
   asm volatile("nop");
}

int maint(void)
{
   int a = 0;

   switch (a)
   nop();
   {
      case 0: nop();
   }
   
   return 0;
}

Изображение

Конечно же проще всего сказать "пофиксили". Будем проверять в той версии, в которой якобы молча компилировалось? Или слив засчитан?

UPD: Блять, как это я набрал функцию maint :)))

Re: Ардуино что это

Пт сен 18, 2015 10:22:36

это скорее зависит не от версии, а от флагов строгости. (команда --help)

компилятор может тупо убрать все что в свичи если там нет кейсов или может отругать прогера флаги наше все))))

Re: Ардуино что это

Пт сен 18, 2015 10:30:46

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

В дополнение к твоему, в мейкфайле ардуины никаких стриктов не используется. Вот какой-то ардуиновский мейкфайл: http://shallowsky.com/software/arduino/ ... rduino-0.8
Кстати, --help -v, если уж на то пошло :)

Re: Ардуино что это

Пт сен 18, 2015 10:45:30

hybroid, ну прокололись вы один раз на моей схеме, с кем не бывает. Теперь будете до скончания интернета ходить за мной по форуму и обижаться?


Я всё таки совсем не дружу с Си - второй раз тоже код с ошибкой запостил.

Проблема выглядела так:
Код:
switch(a) 
  {
    digitalWrite(led, LOW);
    case 0: digitalWrite(led, HIGH);
  }


Вот эта фигня молча компилируется в Arduino 1.0.1, хотя должно быть предупреждение "недостижимый код".

Re: Ардуино что это

Пт сен 18, 2015 11:00:39

Я когда учился программировать и не такие конструкции скармливал компилятору и он это собирал. Вопрос лишь в том как это будет исполнено))) здесь четко прослеживается логическая ошибка и компилятор тут ни причем потому что ему и не такие костыли скармливают а он обязан это собрать.

Re: Ардуино что это

Пт сен 18, 2015 11:16:11

Ну вот я перешёл с Arduino на компилятор, который такую конструкцию принципиально не компилирует, и освоение MK пошло значительно быстрее.

Причём слово "принципиально" тут не для связки предложения. Это именно ключевой принцип: никогда не компилировать, то что не выражено однозначно и отчётливо.

Re: Ардуино что это

Пт сен 18, 2015 11:40:44

У тебя мания приследования :)
А мсье знает, что в ардуино используется gcc? Перешёл с gcc на gcc и всё поменялось? :shock: Или, что ещё хуже, не на gcc :))) Весь мир пользуется им не в одной сфере деятельности далеко не первый год, а он, оказывается, не годный..

Re: Ардуино что это

Пт сен 18, 2015 12:01:49

hybroid писал(а):А мсье знает, что в ардуино используется gcc? Перешёл с gcc на gcc и всё поменялось?


Мусье а вы не в курсе что в Ardunio C++ используется, а он говорит про Cи это огромная разница.

Re: Ардуино что это

Пт сен 18, 2015 12:21:48

В чём? Вообще никакой разницы в данном случае.

А конструкция выше не запрещена ISO9899. Даже круче, там вот такой пример фигурирует:
Код:
switch (expr)
{
        int i = 4;
        f(i);
case 0:
        i=17; /* falls through into default code */
default:
        printf("%d\n", i);
}


UPD: у нас же всегда так.. Стандарты мы не читаем, справку к компилятору обычно тоже не читаем, пишем с учётом того, что компилятор за нас проверит :))) А не получилось - значит компилятор говно. А gcc, между тем, хоть каким-то стандартам соответствует. А в чём не соответствует - оговорено, но это тоже никто не читает.
Как много людей, интересно, запустив Arduino IDE, читали вообще про компилятор..
Кстати, вот это - одна из причин торможения развития при использовании Arduino. Но виновата не плата. Плата ничо такая, но была нацелена в первую очередь на аудиторию "домохозяек". Результат - виден везде, даже на этом форуме. :)))

Re: Ардуино что это

Пт сен 18, 2015 13:31:43

Ну соответствует стандарту, а дырка всё равно есть.

Из этого следует только то, что дырка в стандарте.

Я конечно понимаю, что стандарт там писали боги программирования и они никогда не допускают таких глупых ошибок, но Arduino платформа не для них.

Re: Ардуино что это

Пт сен 18, 2015 14:01:44

Для доказательства, что ардуино -- дерьмо, пришлось дерьмом измазать один из лучших компиляторов, стандарт языка Си и "богов программирования". Даже интересно, до чего еще могут дотянутся руки в фекалиях ради доказательства недоказуемого.

Re: Ардуино что это

Пт сен 18, 2015 14:15:17

Вот уж действительно, ну не винить же дыру в голове :)))
И ни капли смущения, что "дыра" в стандарте документирована, с описанием и примером использования, с указанием всех "зачем" и "почему". Обычно люди эти дыры называют "возможности" :)))
Ответить