We accelerate Arduino more than 20 times!

Поділитися
Вставка
  • Опубліковано 28 вер 2024
  • Everyone at some point is faced with the problem of low speed of the program on Arduino. But is Arduino really so slow as it seems? Let's try to understand what the problem is: in a weak gland or in an unoptimized code?
    Using Arduino IDE imposes certain limitations in the speed of work. This is the price that we pay for the simplicity of writing commands and the language as a whole. And what if you try to write commands that work directly with the microcontroller? What will be the result? This we will see in the video.
    CyberLib Library: istarik.ru/blo...
    Very useful articles:
    geektimes.ru/p...
    robotosha.ru/ar...
    microsin.net/pr...
    4a4ik.blogspot....
    easyelectronics...
    mkprog.ru/avr/a...
    Friends, support the channel!
    Z422687519909
    U139735106020
    5168 7422 2228 7801 Privat Bank (Ukraine)
    Useful links:
    Micro SD Module: ali.pub/1tkx36
    Arduino Mega 2560: ali.pub/1ny34r
    Cheapest Arduino Pro Mini for crafts: ali.pub/1ny2z4
    Breadbord: ali.pub/1ny3ae
    Lintels: ali.pub/1ny3la
    Quality crosspieces: ali.pub/1ny3j5
    The most convenient cash back:
    LetyShops: goo.gl/Ev5XgI
    The most profitable cash back on aliexpress:
    Ecomerce: goo.gl/3dDc2w
  • Наука та технологія

КОМЕНТАРІ • 364

  • @AlexLink-rb5by
    @AlexLink-rb5by 7 років тому +55

    в начале ролика тот кварц не для меги а для эмулятора порта.. для меги .. он планарный и размер примерно 1*2мм

    • @UCanDo
      @UCanDo  7 років тому +3

      Да, спутал.

    • @AlexLink-rb5by
      @AlexLink-rb5by 7 років тому +5

      да всё норм .. я боялся ты его перепаивать будешь и пытаться разогнать ;)))

    • @UCanDo
      @UCanDo  7 років тому

      :))

    • @ВалСіт
      @ВалСіт 7 років тому +2

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

  • @muctex
    @muctex 7 років тому +116

    Я не гуру и не спец но уже накипело! Автор, попробуй перед тем как снимать новый ролик написать, хотя бы виде заметок, сценарий. Попробуй сократить время ролика но сделать его более содержательным, сейчас много "воды". И я умоляю проверяй информацию которую излагаешь !!! Много неточностей и дизинформации что может навредить начинающим и самому тебе.

    • @UCanDo
      @UCanDo  7 років тому +1

      По поводу "воды" и времени, согласен, есть над чем поработать.
      А по поводу неточностей и дезинформации - напишите что именно, в чем ошибся?

    • @muctex
      @muctex 7 років тому +1

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

    • @muctex
      @muctex 7 років тому +10

      Плюс какой смыслы из arduino IDE писать на чистом avr gcc который так тщательно инкапсулировали (упростили) ребята из компании для начинающих? AVR Studio бесплатна и там гораздо удобнее писать на чистом си если уже так хочется "ускорить" контролер и конечно же есть еще асемблер!!! Можно начинающих путать до опупения =)

    • @UCanDo
      @UCanDo  7 років тому +2

      Да, про кварц, это я потом уже понял что не туда показывал, но ведь все равно часто та та же - 16 мГц.
      Да, все верно, AVR Studio хорошая вещь. С ассемблером и я часто в ступор впадал :)

    • @katetometr
      @katetometr 7 років тому

      на последних минутах автор озвучил точно такие же мьісли.

  • @ПавлЧ
    @ПавлЧ Рік тому +1

    это не какие то команды, это запись на языке С, вместо ардуиновского С++, благодаря использованию библиотек языка С код занимает меньше места в памяти. Можно писать прошивку для ардуино или attiny в Atmel Studio на С, и такой код с теми же функциями что и в ардуино но на С будет занимать меньше памяти МК в несколько раз. Можно использовать attiny 44 там чуть больше памяти, а стоит он копейки по сравнению с ардуино, экономя память будет влезать средняя компактная програмка.

  • @alexzshow6314
    @alexzshow6314 7 років тому +2

    Отлично, как раз искал ускорение и сжатие объема кода в ардуино. Очень интересное видео

  • @kooba6205
    @kooba6205 7 років тому +33

    это не тот кварц!!

  • @kotikvadik3000
    @kotikvadik3000 4 роки тому +4

    Мой совет прост. Хотите быструю программу - пишите на ассемблере. Ну уж точно не в Arduino

    • @Silver2Storm
      @Silver2Storm 4 роки тому +3

      Можно и в Arduino IDE наассемблере писать. Это просто редактор и подключен к нему тот же компилятор.

  • @НикитаМитрофанов-х1и
    @НикитаМитрофанов-х1и 7 років тому +1

    доброго времени суток, решил воспользоваться такими быстрыми командами.
    Но возникает ошибка и не удается компиляция. Единственное из за чего такое может быть, по моему мнению это из за того что я использую вместо ардуино платы, стм32. но с загрузчиком от ардуино и в среде ардуино иде. Может ли в этом быть проблема?

    • @UCanDo
      @UCanDo  7 років тому

      Да, именно в этом и проблема. Команды приведены для контроллеров AVR. STM использует совершенно другие команды, и не известно, поддерживаются они в среде Ардуино ИДЕ или нет. Как пример, посмотрите мое видео ua-cam.com/video/Zrkq6zEgEng/v-deo.html
      Это мигание светодиодом на STM. Там используются совершенно другие команды.

    • @НикитаМитрофанов-х1и
      @НикитаМитрофанов-х1и 7 років тому

      Спасибо) будет время обязательно попробую разобраться)

  • @ДмитрийПантелеев-д9я
    @ДмитрийПантелеев-д9я 7 років тому +1

    Спасибо. Было интересно. Но, несколько сумбурно. Может быть, стоит как-то структурировать?

  • @yevhenukrainianer4781
    @yevhenukrainianer4781 4 роки тому

    У Вас ШИМ выходит софтварный. Процессорное время занято. Есть таймеры и аппаратные моды ШИМа в AVR. Не проаерял, но аналогРид(), возможно, юзает как раз таймер аппаратно делая ШИМ.

  • @dmytroi5456
    @dmytroi5456 7 років тому

    Автор, то кварц от usb-uart преобразователя, сам МК тактируется от крохотного кварца возле пинов 3.3 и 5v. А то что ты сделал программно, называется не "ускорение ардуино", а избавление от лишних комманд при записи в порт GPIO, все остальные действия выполняются со все той же скоростью. И то что оно ускорилось в 20 раз - где измерение? В среде ардуино так же есть функция задержек на микросекунды, без подключения дополнительной бибилотеки - delayMicroseconds();

    • @UCanDo
      @UCanDo  7 років тому

      Спасибо за отзыв. Ваши замечания правильны. Их уже много раз писали в комментариях к видео. Там же я и давал ответы. Как-то не хочется опять все дублировать. Почитайте комментарии

  • @orkoteg09
    @orkoteg09 6 років тому

    DDRD - регистр направления передачи данных порта D. Биты этого порта управляют тем, настроены ли выводы Порта D как входы, или как выходы.
    А потом уже PORTD, PIND.

  • @Palladln
    @Palladln Рік тому +1

    Если цикл ардуиновский убрать (лупп) и использовать чисто СИшные команды еще раз в 30тыс. ускоришься...

    • @UCanDo
      @UCanDo  Рік тому

      Согласен.
      Кстати, видео довольно старое, с тех пор Ардуино ИДЕ обновилась и многое пофиксили, и скорость работы стала приближаться к СИ-шной.

    • @Palladln
      @Palladln Рік тому +1

      @@UCanDo Это сама ИДЕ стала шустрее(т.е. компиляция).. а сама прошивка ардуиновская (код этот) как был кривой, так и остался.. Ребята на форуме "схем нет", наглядно показывали разницу на блинке.. можно в луупе убрать задержку, только вкл. и выкл светик и посмотреть скорость на осциллографе.. там меандр получается не выше 50кГц. и еще помеха (когда цикл Лууп переходит в начало), и можно сделать этот блинк чисто СИшными командами, получим примерно половину тактовой частоты (т.е 8 Мгц при такте 16).. вот те и разница: 50кГц и 8 Мгц..

  • @Alex8Zajec
    @Alex8Zajec 6 років тому

    А где ассемблер взять для атмель или кода?

    • @UCanDo
      @UCanDo  6 років тому

      Писать на ассемблере можно где угодно. Хоть в блокноте. Лучше использовать Нотпад++
      А дольше сгенерировать hex файл и зашить его обычным программатором. Для генерации прошивки можно использовать tavrasm.

  • @Heorenmaru
    @Heorenmaru 6 років тому

    изучи даташит на контроллер, там есть такая вещь как регистры, таймеры, АЦП и прочее
    показанный шим тут правильно работать не будет, для него надо настроить один из таймеров и выводить нужное значение в нужные регистры. в режиме FastPWM можно шим разогнать до 78kHz (с кварцем в 20MHz).
    По поводу кварца: у многих атмег максимальная частота, при которой контроллер будет надежно работать, это 20MHz

    • @UCanDo
      @UCanDo  6 років тому

      Производитель действительно гарантирует стабильную заботу до 20 мГц. Есть еще другой показатель: 16 мГц при питании от 5 вольт. При питании 3.3 вольта стабильная работа производителем не гарантирована. Вот посмотрите это видео: ua-cam.com/video/Waw00Nu-U-M/v-deo.html
      Используется Atmega326, кварц на 16 мГц. Питание - 3.3 вольта. Устройство стабильно работает (круглые сутки, не выключаясь) уже около 9-ти месяцев.
      То есть "не гарантировано производителем" - не значит что вообще не будет работать.
      При частоте 32 мГц важнейшим фактором является внешний частотный генератор. Именно внешний генератор. От всего остального (кварц, внутренний генератор) работает не стабильно. Я проводил разные эксперименты, с использованием обычного кварца стабильная работа была на частоте 27 мГц. Выше никак. Только от внешнего генератора.
      Согласен с тем что это все делается на свой страх и риск. Производителем не даются гарантии работоспособности. А значит вероятность сбоя все равно присутствует.

    • @АлексейХомутников-ц5э
      @АлексейХомутников-ц5э 6 років тому

      Я делал как-то схему на 16Мгц 3.3v, потому что лень было согласовывать уровни 3.3-5V, работа с spi tft и spi флеш памятью, поскольку progmem для графики не хватало вообще. Работало паршиво, флеш читался и писался через раз. После того, как поменял кварц на 8МГц, все заработало идеально.

  • @yaglaleon6064
    @yaglaleon6064 7 років тому

    А BASCOM AVR через среду Ардуино пойдет?

    • @slava022967
      @slava022967 7 років тому

      нет, да и зачем вам это нужно, BASCOM и так не плохо работает

  • @xavigarcia5969
    @xavigarcia5969 6 років тому

    Капец! Уже докатились до оверлока ардуино с жидким азотом. ГТА 5 потянет?

  • @Vlad_4572
    @Vlad_4572 5 років тому

    Проверил время исполнения DigitalWrite, и офигел, порядка 6 мкс! Тогда о чем речь в ролике, о каких 1800?? Автор, поясни, пожалуйста?

    • @UCanDo
      @UCanDo  5 років тому

      Видео не новое. Возможно в новых версиях Arduino IDE код подправили и скорость возросла. Надо проверить.

    • @Vlad_4572
      @Vlad_4572 5 років тому +1

      @@UCanDo , я так же предположил. Сейчас реально за два исполнения 12 мкс. Спасибо за ответ)

    • @ЛевЛевинсон
      @ЛевЛевинсон 3 роки тому

      ​@@UCanDo Я проводил тесты на Arduino Uno порядка 5 лет назад. digitalWrite() - порядка 4-5 мкс.

  • @Простойкакбумага
    @Простойкакбумага 7 років тому +3

    Если совместить способ с заменой тактового генератора и писать скетчи на чистом avr то мк будут летать

    • @UCanDo
      @UCanDo  7 років тому

      Да, скорость будет очень большая! Я видел проекты с частотой 32 Мегагерц! Библиотеки все равно придется править или писать самому.

  • @mr_kotik
    @mr_kotik 4 роки тому

    Или я что-то не понимаю в двоичной системе счисления, или 0b00001000 - это не 3, а 8

    • @UCanDo
      @UCanDo  4 роки тому

      3-й бит

    • @mr_kotik
      @mr_kotik 4 роки тому

      @@UCanDo Да, уже понял)

  • @Juriy830
    @Juriy830 7 років тому +2

    500 гц а не 50 !

  • @сергейбаглаев-ф3х
    @сергейбаглаев-ф3х 4 роки тому

    В Протеусе проверил код ,не работает шимм..

    • @UCanDo
      @UCanDo  4 роки тому +1

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

    • @сергейбаглаев-ф3х
      @сергейбаглаев-ф3х 4 роки тому

      @@UCanDo На счет ускорения шим цикл for
      void loop()
      {
      for (int i=0; i

    • @UCanDo
      @UCanDo  4 роки тому

      В видео я допустил ошибку. Где-то в комментариях уже говорилось об этом

    • @UCanDo
      @UCanDo  4 роки тому

      Нужно дописать k++ перед закрывание скобок

    • @сергейбаглаев-ф3х
      @сергейбаглаев-ф3х 4 роки тому

      так работает но ведь цикл должен всегда крутиться как же другии операции
      #include
      #include
      int PWM_time=200; //Число, которое мы как бы хотим записать в analogWrite(PIN, 32)
      void setup() {
      DDRB=B00000001;
      PORTB=B00000000;
      }
      void loop() {

      for (int k=0; k

  • @OMG4WTF4OMG
    @OMG4WTF4OMG 7 років тому

    А слабо прошивку от пультоскопа ускорить?

  • @ВасилийПупкин-м3з
    @ВасилийПупкин-м3з 3 роки тому +1

    Дядя это не тот, твой мелкий кварц

  • @asasov7090
    @asasov7090 4 роки тому

    Толково...

  • @andrikjustme2871
    @andrikjustme2871 4 роки тому

    Ты бы еще руками меньше махал перед камерой, да код проверял перед тем как показывать! Где у тебя в этих ШИМ циклах переменная к инкрементится? Сама чтоли ?

  • @poweredbysergey
    @poweredbysergey 7 років тому

    Cool

  • @raal8438
    @raal8438 4 роки тому

    ты конечно молодец что понял что в ардуино иде чой то не то ))) но ты бы сначала сам разобрался с этим потом бы объяснил как писать проги на простом Си, а так блеешь что то и сам не понимаешь , но направление правильное, и молодец что разбираешься, но скорее бы ))) надо писать на Си, а некоторые вещи или строки даже на "страшном" Ассемблере! как делают продвинутые прогеры.

    • @raal8438
      @raal8438 4 роки тому

      спасибо, дорогой что правильно понял! значит все получится! я старый инж-электронщик и радиолюбитель, лет 15 назад увлекся AVR и PIC и писал на них управление блоками тьюнеров из телевизоров и автомагнитол на CodeVision, а сейчас полгода назад увидев ардуино решил приобщить к этому делу внука и соседского мальчишку, стал читать и смотреть ютуб, полный дурдом этот ардуино-иде! и эти дебильные скетчи!))) но для начала наверно все таки придется с ним познакомиться или может лучше MariaMole. но все таки хотелось бы подружить CVAVR с ESP32 и с NodeMcu как более продвинутые ардуины)

  • @ODIY_main
    @ODIY_main 7 років тому

    на 11 минуте секунду вы секунду уменьшили до 1мс таким образом уменьшили и код

    • @UCanDo
      @UCanDo  7 років тому

      Задержка так и осталась 1 секунду. Проверьте на своей ардуино.

    • @ODIY_main
      @ODIY_main 7 років тому

      может конечно я и не прав, но _delay_us(1000) это и есть 1000мкс=1мс.

    • @UCanDo
      @UCanDo  7 років тому

      Посмотрел код, точно, должно быть _delay_ms а не _delay_us... но почему-то "_us" работает как "_ms" и у меня получаются нормальные задержки. Может это у меня что-то с самой библиотекой "delay.h"? Вы проверяли у себя? Задержки правильно идут в "_delay_ms" и " _delay_us"?

    • @ODIY_main
      @ODIY_main 7 років тому

      нет я не проверял,
      за видео спасибо.

  • @ВикторЕршов-ъ7ь
    @ВикторЕршов-ъ7ь 6 років тому

    а есть схема переделки пульта

    • @UCanDo
      @UCanDo  6 років тому

      Вы имеете ввиду как сделать радиоуправление на Ардуино?

  • @romanku9222
    @romanku9222 5 років тому

    Макитовская шлифмашинка что на заставке не умеет точить букафки)

  • @ИванАлексеев-ь6б
    @ИванАлексеев-ь6б 5 років тому

    Все гораздо проще звучит, во первых не ускоряем ардуино! а правильно используем микроконтроллер AVR(которые засрали ардуиной), то есть пишем код в человеческой среде, а arduino ide, это априори мусор. странно видеть людей которые этому уделяются, люди которые убили мощность контроллера(а не ардуино) на ровном месте.

  • @Григорий-б5ж
    @Григорий-б5ж 7 років тому

    у вас есть кот? А давайте увеличим ему яйца!

  • @ДанилоТимофійчук
    @ДанилоТимофійчук 7 років тому

    Что будет если впаять кварц на 54000)))

  • @Altai2000
    @Altai2000 4 роки тому

    Да зачем тогда ардуино иде, давайте просто на асемблере писать и все. Зачем это видео вообще? таких видосов как говна в нете, вы че людей с понтолыку сбиваете?, кому надо, тот пишет на асемблере давно. дебилизм и все.

  • @CBRf-kk4uh
    @CBRf-kk4uh 6 років тому

    Почему диииода а не диооода

    • @UCanDo
      @UCanDo  6 років тому

      Потому что так говорят в нашем регионе.

    • @vaa3921
      @vaa3921 4 роки тому

      А дЕлай вместо дилЭй, тоже весь ваш регион говорит?

  • @ZacroyPast
    @ZacroyPast 6 років тому +1

    OGON!!! LIKE!!!

  • @xbevice
    @xbevice 7 років тому +1

    Открой для себя прерывания, binary angle modulation. Arduino IDE ничего не накладывает, накладывают недопрограммисты-недоембедеры

  • @VasyaPupkin999
    @VasyaPupkin999 5 років тому

    Выбрось Ардуино, купи ARM или ПЛИС, учи ассемблер и не страдай *уйнёй))

    • @UCanDo
      @UCanDo  5 років тому +1

      У меня есть и DUE, и ESP8266, и STM32F407VET6...
      DUE хороша только тем, что имеет много пинов. ВСЕ. Забил я на неё.
      Для простых проектов использую ProMini, для чего-то по-круче использую ESP. + начал изучать STM.
      Вы правы, надо развиваться. Тем более есть куда.

  • @rudolfsikorsky7900
    @rudolfsikorsky7900 7 років тому +11

    Ага, заменил команды в Блинк и потерял универсальность. Теперь под другую плату надо переписывать код!
    Да и читаемость .... Вместо человеческих слов какие-то каракули :)
    Ардуино ИДЕ сделана для простоты и универсальности. Плата за это - размер и производительность.
    Если умеешь писать на Си (или Ассемблере), Ардуино ИДЕ не нужна. Просто пиши на Си и лей прошивку программатором. Для Си библиотек готовых не меньше чем для Дуины. А та же Студия хотя бы имеет средства отладки, в отличие от. Кроме того, можно отлаживать прямо в железе, используя JTAG

    • @cutefoxRC
      @cutefoxRC 4 роки тому

      А что мешает написать свои функции, которые будут юзать эти непонятные каракули? Сделаешь библиотеку и код переписывать не придется под каждую плату. Мыслите шире)

  • @Gromo_Z
    @Gromo_Z 7 років тому +6

    Ниже уже написали-смысл тогда кодит в ардуино иде-берем атмел студию или блокнот и начинаем писать как раньше напрямую к портам обращаясь и перефирии.

  • @MrHazur
    @MrHazur 7 років тому +5

    Представь, что нужно обрабатывать неопределенное количество данных, и уже невозможно бутет поймать тайминги цикла. Они будут плавать. Советую учить прерывания , создавать события и разбивать программу на независимые блоки(мультизадачность).
    К примеру, мограем светодиодом не приостанавливая основной цикл, раз в секунду: digitalWrite(13, (millis() / 500 % 2));

  • @AndrewMikhno
    @AndrewMikhno 7 років тому +15

    В ардуино ударение нужно делать на У. ардУино. Проверочное слово - светодИод.
    А вообще програмное ускорение - дичь какая то. Контроллер от этого не стал быстрее работать. Он только стал выполнять совершенно другой код с той же скоростью что и раньше, не более.
    З.Ы. исправльте свой светодИод. У меня уши кровоточат когда слышу такое.

    • @UCanDo
      @UCanDo  7 років тому +3

      +Andrew Mikhno Спасибо за отзыв. Слова - паразиты, трудно избавиться от того чему был научен.
      По поводу ускорения. Все верно, контроллер работает с той же скоростью, НО скорость выполнения программы увеличилась. Стандартные команды Ардуино ИДЕ сделаны универсальными (работают на любом микроконтроллере) а универсальность влечёт за собой усложнение кода для того что бы именно эта команда сработала именно на той Ардуино какую вы используете. В результате контроллер вместо одной операции делает несколько операций. Это влечёт за собой "медленную" работу программы, так как контроллер выполняет действия, которые на самом деле не нужны.
      В видео я привёл пример прямой записи в порт - такой код весит на много меньше (так как не происходит подключения стандартного "универсального" кода Ардуино ИДЕ, он здесь просто не нужен), а если лишний код не добавлен, то и контроллер не будет тратить рабочее время, а сделает только то что ему указали - запись в порт.
      Именно это и является "ускорением" - не делать лишней работы, а только то, что нужно. Код не другой, он тот же, только выглядит иначе. Но весит меньше и выполняется быстрее.

    • @AndrewMikhno
      @AndrewMikhno 7 років тому +3

      Тогда следует говорить про реализацию алгоритма и оптимизацию кода. Но ни в коем случае не о том что контроллер заработал быстрее. Для примера - работу ПК можно ускорить путем некоего API увеличив частоты некоторых подсистем на мат.плате/процессоре. В этом случае получается "без обмана" - софтовое ускорение. По вашей же логике что бы сделать программное ускорение - нужно переписать код всей системы. Повторюсь - это оптимизация реализации алгоритма, не более. Изначально я подумал - вау, какой то программный трюк, недокументированные возможности, какие то заложенные производителем ограничения в виде излишних задержек при выполнении машинного кода, и это можно отключить, но был уверен на 99.9(9)%, что это скорее всего маркетинговый ход - называть вещи не своими именами.

    • @UCanDo
      @UCanDo  7 років тому +6

      +Andrew Mikhno Да, вы правы, правильно говорить "оптимизация" а не "ускорение". Видео рассчитано на заядлых "ардуинщиков", которые ничего другого не знают и не понимают сути процесса. Я просто хотел дать толчок к саморазвитию, к более глубокому освоению МК и т.д. Именно по этому я говорил об ускорении, а не об оптимизации - многие даже не знаю что это такое, а вот "ускорить" "на халяву" - этого многие хотят :)) вот я и попытался "перевернуть умы людей". Не подумайте что я из себя строю всезнающего, нет, наоборот, я сам только учусь. И о том что узнаю - рассказываю другим. И я тоже ошибаюсь. Но и учусь :)

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 7 років тому

      Andrew Mikhno
      Ага. На самом деле это не ускорение, а оптимизация кода.

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 7 років тому

      Home Made - То, что ты можешь сделать
      Вообще-то, это называется оптимизацией.

  • @7G763svR6
    @7G763svR6 4 роки тому +2

    Автору пора лечится от ардуино-зависимости, если он все же желает перейти с уровня начинающего (кому надо минимум ресурсов и знаний в ущерб возможностям) на продвинутый уровень (не используя библиотеки для дурака, а написаем своего кода)

  • @VadRov
    @VadRov 5 років тому +15

    Если есть задача существенно повысить производительность и снизить объем памяти, то только ассемблер. Но есть ощутимый минус: потеря совместимости с другими контроллерами. Именно поэтому и используют всякие IDE. Поэтому ассемблер пойдет для специфичных задач, когда код надо уместить в условиях ограниченного размера памяти, и при этом важна производительность. Для коммерческого использования, например, или в самоделках из разряда "а вам слабо! ". В изучении ассемблера нет ничего сложного. В далеком 1993 году, будучи учеником 8-го класса, я легко освоил ассемблер такого мамонта, как Z-80. Брат, в то время студент университета, подарил мне спектрум совместимый компьютер Sintez-2 (48 кб). Начал с бейсика, но быстро уперся в его ограниченность и медлительность. Поэтому решил перейти на ассемблер. Первая настольная книга "Программирование в машинных кодах. ZX-Spectrum" (перевод с английского). Писал на ассемблере текстовые, музыкальные редакторы, игры (тетрис, L-club, поле чудес и т.п.). Параллельно с изучением ассемблера пришлось изучать и аппаратную часть компа (организация прерываний, порты В/В и т.п.). К примеру, тетрис занимал где-то 1 кб памяти, с учетом текстовой части и музыкальных эффектов. Где-то должны быть кассеты в доме у родителей с записями программ. Библиотека книг точно сохранилась. Эх.... Ностальгия!!! Делал кнопку турбо (7МГц) на триггере К555ТМ2. Расширил память до 128 КБ. Сам комп был подарен племяннику при переходе на IBM, и благополучно почил на свалке по причине полной и безвозвратной потери работоспособности)) (был разломан в хлам).
    Смотрю иногда видео про Ардуино и хочется "встряхнуть стариной" )) Увлекательная это штука. Главное, сейчас все доступно. А раньше приходилось выбираться в город на радиорынок, покупать микрухи непонятного качества. Помню, попадал пару раз с памятью на РУ5... Эх, были времена! ))

    • @UCanDo
      @UCanDo  5 років тому

      О да. Я вас понимаю. Я начинающий, только вхожу в эту сферу. Но все равно это так увлекательно самому что-то создать и видеть как это работает!!!
      Ассемблер вещь крутая. Но в современном мире его будут изучать только те, кто работают в этой сфере. Обычные пользователи не будут его изучать в силу сложности вхождения. Слишком много читать, ещё и даташиты на английском... А на Ардуино можно научиться программировать за час...
      Я не говорю что ассемблер плох. Наоборот, это крутая вещь. Но его сейчас никто не изучает.

    • @victortremov9584
      @victortremov9584 5 років тому

      До сих пор в шкафу лежит Sintez . В своё время , что бы его купить , пришлось откладывать деньги больше полугода .

    • @VadRov
      @VadRov 5 років тому +1

      @@victortremov9584 , брат брал Синтез с рук у "зажиточного" одногруппника, когда тот на Амигу переходил. Ценник сейчас и не вспомню, но если мама не ругалась, то было недорого)). Надо бы у брата спросить, вспомнить молодость))

    • @nickbalashov1780
      @nickbalashov1780 5 років тому +1

      Да парни, я вам покажусь мамонтом)) - мы разрабатывали и кодили аж в середине 90-х для i8081 8битного, и это была серийная продукция))

    • @nickbalashov1780
      @nickbalashov1780 5 років тому

      @@KirillVotrin , угу - чистый asm, никакого Си у нас на контроллеры тогда не было. На си писал для АТ, и без всяких плюсплюсов. Но я больше железо и общее сист.построение.

  • @SWS-LINK
    @SWS-LINK 6 років тому +10

    Вся прелесть и сила урдуинки в том, что ее код легко читаем не программистами -). И переносим. А если кодить такой тарабарщиной, то можно и поинтереснее железо найти -).

    • @cutefoxRC
      @cutefoxRC 4 роки тому +3

      Что мешает написать свои собственные функции и туда засунуть эти непонятные каракули? Будет и простота чтения/писания и скорость.

    • @МовсарХалахоев
      @МовсарХалахоев 4 роки тому

      Насчёт "поинтереснее железо": подскажите, пожалуйста, в каком направлении копать? Где можно почитать что-нибудь на эту тему? Спасибо :)

    • @SWS-LINK
      @SWS-LINK 4 роки тому +3

      @@МовсарХалахоев stm32 как вариант -) цена та же, возможностей больше.

    • @Silver2Storm
      @Silver2Storm 4 роки тому +1

      @@progressivereloaders92 Это не Си++. Это Си

    • @НикичРешетников
      @НикичРешетников 3 роки тому +1

      @@cutefoxRC Я в Atmel studio когда кодю, как раз такие функции типо ардуиновских Digital write Digital read Или даже Аnalog write, analog read и прописываю в виде макросов, обращаясь внутри них напрямую к биту порта или к регистру результатаАЦП илиТаймера в режиме Шим, вернее один раз прописал и потом просто копирую из проэкта в проэкт в заголовочный файл: Получается и Быстрое выполнение команд и одновременно их читабельность:))

  • @melickon
    @melickon 5 років тому +2

    Какой-то треш в комментариях. Всем хочется сказать, что для высокой производительности есть всякие там STM32... Но это вы с точки зрения профессионалов говорите, когда выбор микроконтроллера, одна из опций проекта. В реальности же, что-то делается на Arduino и на каком-то этапе начинает не хватать производительности. И вот тут как раз пригодятся подобные советы, чтобы пожертвовать переносимостью, но заставить проект работать.

  • @aderod100
    @aderod100 7 років тому +14

    loop:
    sbi PORTB, 7
    cbi PORTB, 7
    rjmp loop
    риально мало и быыстро =_=

    • @UCanDo
      @UCanDo  7 років тому +8

      Ассемблер есть Ассемблер. Вот только его Большинство Ардуинщиков совершенно не знает.

    • @JRichVid
      @JRichVid 7 років тому +1

      Можно ещё быстрее:
      .MACRO ONOFF
      sbi PORTB, 7
      cbi PORTB, 7
      .ENDM
      loop:
      ONOFF
      ONOFF
      ONOFF
      ONOFF
      ...
      ONOFF
      rjmp loop

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 7 років тому +1

      Денис Акимов
      На ассемблере куда круче. И всегда понятно, сколько будет выполняться тот или иной код.

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 7 років тому +1

      Home Made - То, что ты можешь сделать
      Ага. Как-то давно делал usb устройство на pic'е с внешним usb контроллером. Писал, естественно, на ассемблере.
      Тут решил опробовать ардуино и понял, что это для детей. Лучше использовать атмел студию.

    • @XxxXxx-rc2nw
      @XxxXxx-rc2nw 7 років тому

      первые 2 инструкции по 2 такта крайняя от 2 до 4. итого нога будет дрыгаться какминимум с 1/4 системной тактовой

  • @Vlad_4572
    @Vlad_4572 5 років тому +5

    9:32 Скорость выполнения команды даже не 0.2, а 0.13! Лично проверил))

  • @nikolaydd6219
    @nikolaydd6219 3 роки тому +3

    18:45 разве шип в ардуино 50Гц, он ведь 500Гц

  • @Vlad_4572
    @Vlad_4572 5 років тому +5

    Давно мечтал это понять. Спасибо, автор! )))

  • @zonderdk
    @zonderdk 3 роки тому +2

    Расходимся, никто ничего не ускоряет. Просто подход к проблеме другой. Да, обращение к регистрам работает гораздо быстрее, и если вам нужно быстро дёрнуть ногой то это отлично работает. Но теряется удобство работы именно с ардуино. А ускорить кварц можно без особых проблем. Всего-то нужно переопроеделить дерективу F_CPU указав новую частоту кварца. Это можно сделать в файле описания доступных плат. Лично ставил кварц 40МГц. И всё работает, но возможно что заведётся не на каждом камне. Больше 40 ставить нет смысла, внутренний генератор больше не разгоняется. Но можно использовать внешний генератор частоты. Если переопределить фьюз биты. Пруфов негде не видел, но теоретически возможно.

    • @ИраФомченко
      @ИраФомченко 2 роки тому

      Как раз работать в Ардуино менее всего удобно.
      Я работаю в разных IDE и Ардуино самый худший.

    • @zonderdk
      @zonderdk 2 роки тому

      @@ИраФомченко Я имел ввиду не само IDE, а фреймворк Ардуино. Он доступен например в PlatformIO. Довольно удобно использовать Ардуино код для быстрого написания программы. Куча встроенных библиотек. Типа матх и сериал. Потом после проверки идеи можно переписать код на регистры, для ускорения быстродействия.

  • @FlameWinds
    @FlameWinds 5 років тому +5

    СветодИод =)

  • @ВадимШевченко-ш1т
    @ВадимШевченко-ш1т 7 років тому +17

    Ох и бред! автору бы матчасть поучить, а потом ролики снимать... (((

    • @ms-fair
      @ms-fair 5 років тому +4

      а можно сначала аргументы а потом советы о учебе матчасти?

    • @ahalaimahalai6205
      @ahalaimahalai6205 4 роки тому

      @@ms-fair Нельзя спорить с диванным экспертом. Ему виднее. ))

    • @ms-fair
      @ms-fair 4 роки тому

      @@ahalaimahalai6205 хорошо. Больше не буду. И мньше тоже.

    • @Silver2Storm
      @Silver2Storm 4 роки тому

      @@ahalaimahalai6205 Ну для начала надо подучить программирование на СИ. А не копипастить хуки с форумов.

  • @SplashT
    @SplashT 7 років тому +3

    25:38 называется оптимизация кода (не увеличение мощности)

  • @searus7237
    @searus7237 Рік тому +1

    Надо не пытаться скетчи оптимизировать, а писать на Ассемблере

    • @UCanDo
      @UCanDo  Рік тому +1

      Кто сейчас пишет на ассемблере?

  • @ИштванГалга
    @ИштванГалга 7 років тому +4

    Еще лучше перейти к такой структуре программы
    int main() {
    init();
    //setup()
    for (;;) {
    //loop()
    }
    return 0;
    }

    • @ВалентинАндреев-л3т
      @ВалентинАндреев-л3т 6 років тому

      заааачем?

    • @Avazart
      @Avazart 6 років тому

      в стандартном loop() дополнительные проверки делаются, ели делать свой цикл быстрее выполняется, так говорят по крайней мере.

    • @melickon
      @melickon 5 років тому

      Так такую структуру программы Arduino IDE добавляет от себя автоматически

  • @NikolayBalin
    @NikolayBalin 7 років тому +14

    Прелесть Arduino IDE в простоте и быстроте написания кода, "с" все немного усложняет, но тем не менее видео очень познавательно, спасибо за труды.

    • @ИраФомченко
      @ИраФомченко 2 роки тому

      Какая же прелесть? Вместо короткой команды PIN писать непонятную DigitalRead?

    • @ЮрийСамофал-ю9ь
      @ЮрийСамофал-ю9ь 2 роки тому +2

      Не си усложняет, а arduino IDE упрощает. Просто в ней есть библиотека и всё. Кто тебе мешает написать раз:
      unsigned char WriteBit(unsigned char In, unsigned char BitNum, unsigned char Val){
      return (Val==0) ? In&(~(1

    • @ЮрийСамофал-ю9ь
      @ЮрийСамофал-ю9ь 2 роки тому +2

      Дошли!!!)
      void WriteBit(unsigned char *In, unsigned char BitNum, unsigned char Val){
      *In = (Val==0) ? *In&(~(1

    • @ГеннадийГром-в8ю
      @ГеннадийГром-в8ю 2 роки тому

      @@ЮрийСамофал-ю9ь кста, обращаться к переменной одновременно как к байту, так и побитно можно при помощи вот такой конструкции:
      union { struct flag_bit { int f0 : 1; int f1 : 1; int f2 : 1; int f3 : 1; int f4 : 1; int f5 : 1; int f6 : 1; int f7 : 1; } b; byte in; } in_f;
      таким образом написав:
      in_f.in = 55; // мы записываем в байт
      а прописывая:
      in_f.b.f0 = 1; in_f.b.f5 = 0; //мы работаем с битовыми полями нашей байтовой переменной in_f!
      Очень легко, просто и наглядно, причём компилятор всё делает чисто и красиво, я в асм'овский код заглядывал! 👍😁 Особенно мне это помогло, когда на плате ввода/вывода 3х8 все входы/выходы "территориально" перепутаны:
      union { struct in_bit { int d17 : 1; int d19 : 1; int d21 : 1; int d23 : 1; int d22 : 1; int d20 : 1; int d18 : 1; int d16 : 1; int d8 : 1; int d6 : 1; int d2 : 1; int d4 : 1; int d0 : 1; int d1 : 1; int d3 : 1; int d5 : 1; int d11 : 1; int d14 : 1; int d13 : 1; int d15 : 1; int d12 : 1; int d9 : 1; int d10 : 1; int d7 : 1; } i; struct in_byte { byte i0, i1, i2; } a; } in, ev;
      Ну-у, разводка платы было такая, что уж тут поделать! 🤔 А так хоть какая-то "понятность" в представлении сигналов и переносимости на другую плату была! Кста, так можно и в Ардуине порты описать! 👍😁🤪

    • @TheMrKotmanul
      @TheMrKotmanul Рік тому +1

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

  • @ЮрийСамофал-ю9ь
    @ЮрийСамофал-ю9ь 2 роки тому +1

    Это шим ногодрыгом и используется по необходимости, если нужна большая разрядность, чем в аппаратном. Аппаратный же шим не влияет на скорость программы кроме записи в него числа. И разогнать его можно, таймеры поправь, возможно даже и командами ардуины, но это не точно:
    8 бит 62 500 Гц TCCR1A = TCCR1A & 0xe0 | 1;
    TCCR1B = TCCR1B & 0xe0 | 0x09;
    7 812,5 Гц TCCR1A = TCCR1A & 0xe0 | 1;
    TCCR1B = TCCR1B & 0xe0 | 0x0a;
    976,56 Гц TCCR1A = TCCR1A & 0xe0 | 1;
    TCCR1B = TCCR1B & 0xe0 | 0x0b;
    244,14 Гц TCCR1A = TCCR1A & 0xe0 | 1;
    TCCR1B = TCCR1B & 0xe0 | 0x0c;
    61,04 Гц TCCR1A = TCCR1A & 0xe0 | 1;
    TCCR1B = TCCR1B & 0xe0 | 0x0d;
    9 бит 31 250 Гц TCCR1A = TCCR1A & 0xe0 | 2;
    TCCR1B = TCCR1B & 0xe0 | 0x09;
    3 906,25 Гц TCCR1A = TCCR1A & 0xe0 | 2;
    TCCR1B = TCCR1B & 0xe0 | 0x0a;
    488,28 Гц TCCR1A = TCCR1A & 0xe0 | 2;
    TCCR1B = TCCR1B & 0xe0 | 0x0b;
    122,07 Гц TCCR1A = TCCR1A & 0xe0 | 2;
    TCCR1B = TCCR1B & 0xe0 | 0x0c;
    30,52 Гц TCCR1A = TCCR1A & 0xe0 | 2;
    TCCR1B = TCCR1B & 0xe0 | 0x0d;
    10 бит 1 5625 Гц TCCR1A = TCCR1A & 0xe0 | 3;
    TCCR1B = TCCR1B & 0xe0 | 0x09;
    1 953,13 Гц TCCR1A = TCCR1A & 0xe0 | 3;
    TCCR1B = TCCR1B & 0xe0 | 0x0a;
    244,14 Гц TCCR1A = TCCR1A & 0xe0 | 3;
    TCCR1B = TCCR1B & 0xe0 | 0x0b;
    61,04 Гц TCCR1A = TCCR1A & 0xe0 | 3;
    TCCR1B = TCCR1B & 0xe0 | 0x0c;
    15,26 Гц TCCR1A = TCCR1A & 0xe0 | 3;
    TCCR1B = TCCR1B & 0xe0 | 0x0d;
    Да ноги кстати под битность тоже разные, например D9-D10 - 10 бит.

    • @UCanDo
      @UCanDo  2 роки тому

      Все верно. На эту тему я делал видео: ua-cam.com/video/UL7PQMs02X8/v-deo.html

    • @ЮрийСамофал-ю9ь
      @ЮрийСамофал-ю9ь 2 роки тому +1

      Да увидел, но есть одно замечание по по поводу шим. Пром. двигатели от частотников пищат от 1300, до 16 000 Гц, иногда 800-1200 частоты фигурируют - тут уже проблема в выходном каскаде скорее всего. А в общем хорошие видео так держать. Сам хотел канал запилить, но хорошая работа, резко всплывшая из ниоткуда, испортила все начинания!!! ) @@UCanDo

  • @ibrag2012
    @ibrag2012 4 роки тому +2

    Раніше у мене ардуїно дригав ногою кожну мікросекунду а зараз кожну наносекунду: дякую! :)

  • @zaharshoihit1183
    @zaharshoihit1183 7 років тому +1

    Бля, какой понос слов!!!
    Почему ролик который можно сделать на 10 минут, растянул на пол часа???
    Вроде бы тема интересная, но пока слушал захотелось спать!

  • @ПорохАнатолий
    @ПорохАнатолий 5 років тому +1

    Настройка ножки на ввод или вывод осуществляется командой DDR Например DDRB = 0b00000001; равно PB1, OUTPUT

  • @JRichVid
    @JRichVid 7 років тому +3

    Откуда информация про 1800 мксек на выполнение "digitalWrite(13, HIGH)"? Посмотрите текст реализации этой функции в Arduino\hardware\arduino\avr\cores\arduino\wiring_digital.c Там куча макросов и текст, конечно, в разы длиннее, нежели "PORTB |= 0x80", но длиннее не в девять тысяч раз. На "Меге" digitalWrite выполняется за 7,8 мксек (~125 тактов), a "PORTB |= 0x80" - за 0,625 мксек (10 тактов).

    • @UCanDo
      @UCanDo  7 років тому

      Был бы у меня осциллограф, промерял бы реальную работу. А так, данные взяты из различных статей. Ссылки на них есть в описании к видео.

    • @JRichVid
      @JRichVid 7 років тому

      Если нет осциллографа, можно воспользоваться фантазией и секундомером. Пишется, например, 100 одинаковых строк digitalWrite на включение светодиода, зацикливаются на повтор 500 раз, следом за циклом пишется цикл 100 digitalWrite на выключение, прокручивающийся 9500 раз. Перед циклами желательно запретить прерывания. Получается, что за один проход двух циклов команда digitalWrite будет выполнена 1 млн раз, а обрабочик цикла всего лишь 10 тысяч раз. Т.о., период вспышек будет определяться в основном длительностью выполнения digitalWrite. Измеряете секундомером длительность, например, 10 вспышек, делите её на 10 миллионов - вот искомая длительность.
      Если лень возиться с секундомером, можно воткнуть снаружи циклов измерение разницы millis() c отсылкой результата в параллельный порт, только тогда прерывания нельзя выключать, и обработчик прерываний внесёт дополнительное время в измеряемый период. На UNO получается 5,15 мксек, а на MEGA 2560 - 7,73 мксек.

    • @smert_okupantam
      @smert_okupantam 7 років тому +1

      есть бенчмарки и мой Нано показывает длительность digitalWrite(3, HIGH); равную 3,67 микросекунды, а PORTB |= 0x80; длится 0,57 микросекунды.

    • @smert_okupantam
      @smert_okupantam 7 років тому +1

      Кстати, если есть Logic Analyser, то можно просто подряд несколько одинаковых команд инверсии пина поставить и посмотреть в графике длительность импульсов.

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 7 років тому

      JRichVid
      Самому было интересно, откуда такие цифры. Я на mega32u4 осциллографом мерил - ~3.7мкС, а прямая запись в порт (out (p, val)) - 62.5нС.

  • @ВячеславВоронов-ы2м

    Зачем ты "подставил" ОТЦОВ АРДУИНО! Скетчи на ардуино выполняются ОЧЕНЬ МЕДЛЕННО!😢

  • @Ardbot
    @Ardbot 5 років тому +1

    Спасибо, столкнулся с аналогичной проблемой на attiny13, вот сижу, оптимизирую

  • @Asmcavr
    @Asmcavr 4 роки тому

    Среда Ардуино из любого камня сделает кусок тормознутого железа (криворуко написанные библиотеки с кучей ненужного шлака). Пишите на норм си и будет вам счастье, иногда приходится пользоваться вставками на asm. Автор вы можете ускорить этот контроллер с 9 этажа))).

  • @kirillkv90
    @kirillkv90 7 років тому +1

    Я сегодня задумывался как ускорить чтение с ик датчиков! Прям в тему видео! Спасибо!

  • @sailtogether3236
    @sailtogether3236 3 роки тому +1

    Спасибо, информация полезная. Палец вверх! Хотелось бы, правда, заметить о несправедливости выражения "на чистом С". Это, как бы, в любом случае "чистый С", просто доступ через прослойку библиотек или доступ напрямую через регистры портов. И ещё, там в программном шиме опечатка: в цикле k не итерируется.

    • @volvovolvo2641
      @volvovolvo2641 2 роки тому

      Серьёзно? Автор явно указывает неправильные компоненты. И чему он научит? Писец.

  • @MaxBudkin
    @MaxBudkin 4 роки тому

    Разве миллисекунды это _delay_us?? Это же уже микросекунды вроде бы.

    • @UCanDo
      @UCanDo  4 роки тому

      Да, все верно

  • @redsunpro.
    @redsunpro. Рік тому

    Здравствуйте, а как аналоговый вход?

  • @sergiuolarescu9227
    @sergiuolarescu9227 2 роки тому +1

    Очень интересное видео, спасибо за труды.

  • @KobalyanTV
    @KobalyanTV 3 роки тому

    Ардуино не оптимизированное дерьмо...

  • @zdomovoi6094
    @zdomovoi6094 3 роки тому

    Ерунда всё это! Ставил кварц на 23 мГц и всё прекрасно работало,но почему то заменил обратно на 16 мГц. Значит не всё так прекрасно как автор утверждает ?

    • @UCanDo
      @UCanDo  3 роки тому

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

  • @GodsHermes
    @GodsHermes 7 років тому +1

    А если писать на ассемблере, то будет еще меньше(на порядок), и максимально быстро.

    • @zonderdk
      @zonderdk 3 роки тому +1

      Не будет), инструкции типа PORTB |= 1

  • @docer_man
    @docer_man 4 роки тому +1

    в 20 или в 10?

    • @orest_savitskyi
      @orest_savitskyi 3 роки тому

      в примерно 10, тоесть даже не 10, не говоря уже о 20

  • @ВасилийПупкин-м3з
    @ВасилийПупкин-м3з 3 роки тому

    После кварца смотреть дальше не стал

  • @АлексейБотов-ц9з
    @АлексейБотов-ц9з 7 років тому

    Ну ты бздец. Научился моргать светиком и стал экспертом. Ты забыл, что эта система разработана для непрограммистов, то что ты показал этим и ограничится так, как весь софт все либы рассчитаны для своеобразного применения. Я в асме ещё быстрей могу переключать порт, но это не для Arduino...

  • @РусланНощенко-ы4щ
    @РусланНощенко-ы4щ 5 років тому

    вот только на 11:27 минуте подождали не секунду а 0,001 секунды потому что us это микросекунда 10 в -6 степени а ms это миллисекунда 10 в -3 степени,автор не делай ошибки грубые и будь внимателен

  • @ОлегРешетник-ь7ъ
    @ОлегРешетник-ь7ъ 7 років тому

    Отвратительное изложение материала, которое только запутывает начинающих. Вот статья на geektimes ru, в которой все нормально изложено: geektimes(точка)ru/post/255422/

  • @Juriy830
    @Juriy830 7 років тому

    Ну всё таки это конструктор чуть ли не для детей. Что бы поиграться вполне хватает. А ШИМ тут получится какой то реального времени, т.е. работает только шим, всё остальное стоит

  • @smert_okupantam
    @smert_okupantam 7 років тому

    тот кварц что показывает автор ролика можно заменить на любой, например 3,2ГГц и АТмега 2560 все равно заработает, можно даже вообще не впаивать ничего

  • @TheDEFCHER
    @TheDEFCHER 5 років тому

    эээ.. ууэээ.аааэээ.... светоДиод. просто супер (нет)

  • @andreyvashenko9321
    @andreyvashenko9321 4 роки тому +2

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

  • @NyanCoder
    @NyanCoder 6 років тому

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

  • @neroslava1
    @neroslava1 7 років тому +11

    Куда скидывать на лечение ?

  • @3d_idea800
    @3d_idea800 3 роки тому

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

    • @UCanDo
      @UCanDo  3 роки тому

      Нужно смотреть Даташит на используемый микроконтроллер. Там все подробно описано, все возможные Настройки. Только неопытному человеку там трудно будет разобраться

    • @3d_idea800
      @3d_idea800 3 роки тому

      @@UCanDo и с чего начать в итоге?

    • @UCanDo
      @UCanDo  3 роки тому

      Что конкретно вас интересует?
      Если хотите посмотреть список доступных команд для Ардуино IDE, то вот здесь можете посмотреть основные Команды: arduino.ru/Reference
      Вот здесь можете посмотреть более расширенный список команд: www.arduino.cc/reference/en/
      Вообще в Ардуино IDE можно использовать практически все от С++, а так же использовать вставки Ассембера.
      Если по каким-то настройкам микроконтроллера (на пример таймеры и т.д.) то нужно либо использовать готовые библиотеки, либо изучать даташит на микроконтроллер.

    • @3d_idea800
      @3d_idea800 3 роки тому

      @@UCanDo команды для ардуино и написание скетчей не вызывает проблем, также как добавление функций в библиотеки ардуины. Хочется большего. Я так понимаю если лезть в глубь то через С++ и далее асемблер.... мне бы ещё примеры кода.

  • @andreyparovozz
    @andreyparovozz 6 років тому

    ПО ардуино - это шляпа. Бестолковая подсветка, подсказок нет совсем. Пишешь функцию, а какие аргументы у неё - хер поймешь. Atmel Studio тоже не подарок, но даже она в разы удобнее.
    Мы то можем писать в ардуино на си, но вот полно библиотек (особенно родные), которые сводят на нет все наши потуги.
    С другой стороны, если программа огромная и быстрее и удобнее её писать в среде ардуино, то имеет смысл сменить платформу.

    • @Avazart
      @Avazart 6 років тому

      Это да, но никто не мешает смотреть исходники библиотеки и смотреть параметры.

  • @brainrolling3259
    @brainrolling3259 Рік тому +1

    Скорость от изменения программного кода не изменяется.
    Изменяются задержки.
    Скорость и задержка - разные вещи.

  • @The__Skull
    @The__Skull 5 років тому

    Дальше неправильного кварца смотреть не стал

  • @0imax
    @0imax 7 років тому

    Ардуино пойдёт для простых, непроизводительных задач. Но что-то серьёзное на ардуино сделать не получится.
    Надо учить ассемблер и потом С, но никак не наоборот. Ну и бросать уже эти Меги - STM сейчас на коне. А то некоторые до сих пор под pic16 свои самоделки пилят, поди найди это древнее г.. мамонта))

    • @melickon
      @melickon 5 років тому

      В Arduino IDE С используется.

  • @servarak
    @servarak 7 років тому

    Спасибо братан. Помог разобраться в этом. Читал это и раньше, но не до конца понимал работу. Тут все понятнее

  • @ВасилийТёркин-г3м
    @ВасилийТёркин-г3м 7 років тому

    Разгонял Мегу16 кварцем до 25МГц. При чём запускалась как при 5В питании, так и при пониженном до 3,6В (разряженный Li-ion акк.). С кварцем 27 МГц отказывалась стартовать при любом питании. Возможно, если выставить фуз-биты на тактирование от внешнего источника, получится разогнать и до 32МГц. Хотя лично у меня имеются сомнения по этому поводу.

    • @UCanDo
      @UCanDo  7 років тому

      Мне встречались устройства с Мегой32, работали на частоте 32 МГц. Только они работали не от кварцевого резонатора (обычного кварца) а от кварцевого генератора.

    • @SaLaGaDH
      @SaLaGaDH 7 років тому

      Запустить это одно, а заставить стабильно работать без глюков совсем другое. плюс сузится диапазон рабочих температур, плюс со временем могут вылезти глюки которые не заметил сразу, т.е. некоторы операции иногда могут выполняться с ошибками... у меня в частности были случаи когда из-за повышенной частоты некорректно работал захват таймера ICP, в другом случае при выходе из сна по прерыванию АЦП значение преобразования иногда бывало с большей ошибкой чем без сна и т.д. короче можно самому себе гемор создать, сразу вроде бы все нормально, продолжаешь дальше писать, а потом бьешься головой об стену не понимая почему правильно написанный код неправильно работает, а оказывается что частота для данного напряжения питания превышает рекомендуемую производителем...

  • @3dprinterdoma
    @3dprinterdoma 7 років тому

    Как вы узнали сколько времени выполняется команда?

    • @UCanDo
      @UCanDo  7 років тому

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

  • @Silver2Storm
    @Silver2Storm 4 роки тому

    Зачем для ШИМ писать в порты. Он сам это сделает. Надо только настроить работу таймера и схемы сравнения.

    • @nikolaydvornikov397
      @nikolaydvornikov397 3 роки тому

      Как?
      Я совсем новенький в Ардуино. Нет ли у Вас ссылок/инструкций по ускорению работы платы?

  • @krepton85you
    @krepton85you 7 років тому

    Эт конечно все хорошо, но нужно к этому вопросу подойти с др. стороны, со стороны Arduino ide и модефицировать ее.

    • @UCanDo
      @UCanDo  7 років тому

      Сомневаюсь что этим кто-то будет заниматься. Лучше переходить на AVR Studio

    • @АнтонКозырев-г9г
      @АнтонКозырев-г9г 7 років тому

      Дмитрий Екименко лучше переходить на stm, и забыть это говно как страшный сон, stm8 дешевле меги8, но лучше.

  • @diminddl
    @diminddl 7 років тому

    а разве _delay_us ето не микросекунды для милисекунды вроде _delay_ms.

    • @UCanDo
      @UCanDo  7 років тому

      +Dimon Luchyn Да, все верно, нужно писать ms. Но у меня почему-то и так и через us работает одинаково.

  • @ДмитрийЗайцев-с7д
    @ДмитрийЗайцев-с7д 7 років тому

    Такая запись и выглядит вроде понятнее

  • @ВасилисаПримудрая-х9ц

    Чтоб пересесть на другую платформу будет опять кодить :(
    Универсальность программы теряется.

    • @ВасилисаПримудрая-х9ц
      @ВасилисаПримудрая-х9ц 3 роки тому

      ...
      Вообще говоря, поступать так - не лучшая идея. Почему нет? Вот несколько причин:
      Код намного сложнее отлаживать и поддерживать, и его намного труднее понять другим людям. Процессору требуется всего несколько микросекунд для выполнения кода, но вам могут потребоваться часы, чтобы выяснить, почему он работает неправильно, и исправить это! Ваше время ценно, правда? Но компьютерное время очень дешево, если судить по стоимости электричества, которое вы его питаете. Обычно гораздо лучше писать код наиболее очевидным способом.
      ...
      www.arduino.cc/en/Reference/PortManipulation

    • @UCanDo
      @UCanDo  3 роки тому +1

      @@ВасилисаПримудрая-х9ц Я не соглашусь с вами.
      Почитайте историю создания Ардуино, на пример в Википедии: ru.wikipedia.org/wiki/Arduino
      Цитирую: "Целью проекта было создание дешевой и простой среды для начального обучения программированию".
      а если более подробно то среда разработки Ардуино разрабатывалась для школьников, чтобы заинтересовать ДЕТЕЙ и чтобы ДЕТЯМ было легко и просто писать какой-то код. Цель была именно в детях, в простоте, в том, чтобы заинтересовать, а не научить.
      Представьте себе человека, который всю жизнь ездил на машине только в симуляторе, а в качестве управления был только геймпад с 8 кнопками. Зато все просто и понятно, угол обзора всего несколько десятков дюймов (экран монитора), управление проще простого, не нужно переучиваться на управление другой машиной, ведь геймпад тот же.... А что будет если такой человек сядет в реальную машину?
      С микроконтроллерами то же самое. Ардуино не учит программированию. Вот скажите, что вы будете делать, если сделали все по инструкции, подключили все необходимые библиотеки, все настройки прописали правильно, компиляция и прошивка прошли без проблем, а в результате устройство не работает, или работает не так. Что вы будете делать? Что сделают те, кто ничего не знают кроме ардуино? Сможет ли кто-то самостоятельно разобраться, найти и устранить глюк? Может несколько человек и смогут, но подавляющее большинство побежит на форум чтобы получить готовое решение, или начнут качать/устанавливать другие библиотеки и пытаться запустить все МЕТОДОМ ТЫКА. Потому что никто не разбирается в том как работают библиотеки, что в них внутри, какие процессы происходят в МК, вот по этому таким людям потребуются МНОГО ЧАСОВ чтобы понять что в коде написано и еще больше часов чтобы найти ошибку. А если ошибка не явная - все! Приехали! Туши свет! Скажите, вы сможете определить ошибку связанную с наползанием "кучи" на область явно объявленных переменных. Вы хоть знаете о чем я сейчас спросил? А сколько еще Ардуинщиков об этом знает? один? два?
      Поймите, все, абсолютно все СЕРЬЕЗНЫЕ среды разработки работают на прямую с портами.
      Еще вопрос: что будет делать Ардуинщик, если у него не хватает памяти МК? Ну вот тупо программа не влазит в Atmega328. То есть 32 килобайта и не хватило... код весь пересмотрели, ничего выкинуть нельзя. Что делать? У меня была такая ситуация. После окончания написания программы код занимал 205% памяти, то есть 65,6 КИЛОБАЙТ! Кто из ардуинщиков с этим справится? Сразу побегут покупать Мегу2560 потому что не способны решит элементарные проблемы и вопросы. Знаний нет. После полу часа оптимизации код стал занимать 90%, то есть 28,8 килобайт. Даже свободное место осталось! И это не максимальная оптимизация. Я ничего не выкинул, не вырезал, все функции остались....
      А на счет универсальности... Это такой спорный вопрос. И им "тычут" в первую очередь, но по факту никто этим не пользуется, и в половине случаев эта кроссплатформенность НЕ РАБОТАЕТ. Попробуйте один и тот же проект проект скомпиллировать и запустить на РАЗНЫХ Платах / Микроконтроллерах:
      Atmega8
      attiny85
      Atmega328
      Mega2560
      Arduino DUE
      Arduino LEONARDO
      Arduino ZERO
      ARDUINO MKR VIDOR 4000
      ARDUINO 101
      ARDUINO YÚN
      ARDUINO M0
      и так далее... Перечислять можно долго.
      Кроссплатформенным в этих всех платах будет только скетч Blink (но не факт). Весь остальной код нужно будет существенно переделывать. А многие библиотеки так и вовсе не заработают! Так что не заблуждайтесь о кроссплатформенности.

    • @ВасилисаПримудрая-х9ц
      @ВасилисаПримудрая-х9ц 3 роки тому

      @@UCanDo
      _Вы хоть знаете о чем я сейчас спросил?_
      Вы умеете играть на пианино?
      Думаю, что да ;))
      Я в начале.
      Уже есть вопросы, но я их приберегу, пока они не оформятся в *понятные* вопросы ;))

    • @ВасилисаПримудрая-х9ц
      @ВасилисаПримудрая-х9ц 3 роки тому

      П.С.
      Минд42 плохо дружит с телефонами/планшетами.
      Комп работает с "картами" нормально.
      Там ссылки по теме. Мож чего пригодится...

    • @UCanDo
      @UCanDo  3 роки тому +1

      Так у меня и видео не начального уровня. Канал рассчитан не на новичков, а на тех кто немного разбирается в программировании.
      И да, я умею играть на фортепиано и немного на гитаре ;)

  • @ujinn7248
    @ujinn7248 6 років тому

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

    • @cutefoxRC
      @cutefoxRC 4 роки тому

      наверное чтобы на экране места меньше занимали.. а не в памяти микроконтроллера.. не?)

  • @farkoppp
    @farkoppp 7 років тому

    Означает ли такое ускорение чипа(программное) , что теперь можно получать на выходе и полноценное качественное аудио?

    • @UCanDo
      @UCanDo  7 років тому

      Лично не делал и не проверял. Есть проекты, где Ардуино воспроизводит звуковые файлы, но это были не MP3 a WAV, да ещё с урезанным битрейтом. На мой взгляд качественный плеер MP3 на базе Ардуино сделать невозможно. Либо использовать внешние модули MP3 - кодировщики, либо переходить на STM

  • @fdg0d1
    @fdg0d1 7 років тому

    это и есть оптимизация о которой юбисофт ничего не знает