We accelerate Arduino more than 20 times!

Sdílet
Vložit
  • čas přidán 10. 09. 2017
  • 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/blog/arduino/1.html
    Very useful articles:
    geektimes.ru/post/255744/
    robotosha.ru/arduino/digitalwr...
    microsin.net/programming/avr/a...
    4a4ik.blogspot.com/2014/05/avr...
    easyelectronics.ru/avr-uchebny...
    mkprog.ru/avr/avr-dlya-nachina...
    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
  • Věda a technologie

Komentáře • 364

  • @Vlad_4572
    @Vlad_4572 Před 5 lety +5

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

  • @AlexLink-rb5by
    @AlexLink-rb5by Před 6 lety +55

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

    • @UCanDo
      @UCanDo  Před 6 lety +3

      Да, спутал.

    • @AlexLink-rb5by
      @AlexLink-rb5by Před 6 lety +5

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

    • @UCanDo
      @UCanDo  Před 6 lety

      :))

    • @user-fx9yn2hd2i
      @user-fx9yn2hd2i Před 6 lety +2

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

  • @sergiuolarescu9227
    @sergiuolarescu9227 Před 2 lety +1

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

  • @kirillkv90
    @kirillkv90 Před 6 lety +1

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

  • @alexzshow6314
    @alexzshow6314 Před 6 lety +2

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

  • @servarak
    @servarak Před 6 lety

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

  • @michaelborisenko9232
    @michaelborisenko9232 Před 6 lety +116

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

    • @UCanDo
      @UCanDo  Před 6 lety +1

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

    • @michaelborisenko9232
      @michaelborisenko9232 Před 6 lety +1

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

    • @michaelborisenko9232
      @michaelborisenko9232 Před 6 lety +10

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

    • @UCanDo
      @UCanDo  Před 6 lety +2

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

    • @katetometr
      @katetometr Před 6 lety

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

  • @Ardbot
    @Ardbot Před 5 lety +1

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

  • @Gromo_Z
    @Gromo_Z Před 6 lety +6

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

  • @sailtogether3236
    @sailtogether3236 Před 3 lety +1

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

    • @volvovolvo2641
      @volvovolvo2641 Před rokem

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

  • @zonderdk
    @zonderdk Před 3 lety +2

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

    • @user-og6vn2nz5j
      @user-og6vn2nz5j Před 2 lety

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

    • @zonderdk
      @zonderdk Před 2 lety

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

  • @NikolayBalin
    @NikolayBalin Před 6 lety +14

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

    • @user-og6vn2nz5j
      @user-og6vn2nz5j Před 2 lety

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

    • @user-il4kd9qq3y
      @user-il4kd9qq3y Před 2 lety +2

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

    • @user-il4kd9qq3y
      @user-il4kd9qq3y Před 2 lety +2

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

    • @user-dq2ci5ln5g
      @user-dq2ci5ln5g Před rokem

      @@user-il4kd9qq3y кста, обращаться к переменной одновременно как к байту, так и побитно можно при помощи вот такой конструкции:
      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 Před rokem +1

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

  • @VadRov
    @VadRov Před 5 lety +14

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

    • @UCanDo
      @UCanDo  Před 5 lety

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

    • @victortremov9584
      @victortremov9584 Před 5 lety

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

    • @VadRov
      @VadRov Před 5 lety +1

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

    • @nickbalashov1780
      @nickbalashov1780 Před 5 lety +1

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

    • @nickbalashov1780
      @nickbalashov1780 Před 5 lety

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

  • @SWS-LINK
    @SWS-LINK Před 5 lety +10

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

    • @cutefox8319
      @cutefox8319 Před 4 lety +3

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

    • @user-ju7im5rp4u
      @user-ju7im5rp4u Před 4 lety

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

    • @SWS-LINK
      @SWS-LINK Před 4 lety +3

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

    • @Silver2Storm
      @Silver2Storm Před 3 lety +1

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

    • @user-je1dd2re3d
      @user-je1dd2re3d Před 3 lety +1

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

  • @MrHazur
    @MrHazur Před 6 lety +5

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

  • @Remontnik_
    @Remontnik_ Před 4 lety +1

    Спасибо за ролик, позновательно!

  • @AndrewMikhno
    @AndrewMikhno Před 6 lety +15

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

    • @UCanDo
      @UCanDo  Před 6 lety +3

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

    • @AndrewMikhno
      @AndrewMikhno Před 6 lety +3

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

    • @UCanDo
      @UCanDo  Před 6 lety +6

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

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety

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

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety

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

  • @user-bk1fq8vp7f
    @user-bk1fq8vp7f Před 6 lety +1

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

  • @rudolfsikorsky7900
    @rudolfsikorsky7900 Před 6 lety +11

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

    • @cutefox8319
      @cutefox8319 Před 4 lety

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

  • @melickon
    @melickon Před 5 lety +2

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

  • @SplashT
    @SplashT Před 6 lety +3

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

  • @user-sj9kr7yf6c
    @user-sj9kr7yf6c Před 11 měsíci +1

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

  • @kotikvadik3000
    @kotikvadik3000 Před 4 lety +4

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

    • @Silver2Storm
      @Silver2Storm Před 3 lety +3

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

  • @user-hh3ik4tj5j
    @user-hh3ik4tj5j Před 5 lety +1

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

  • @ibrag2012
    @ibrag2012 Před 4 lety +2

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

  • @user-il4kd9qq3y
    @user-il4kd9qq3y Před 2 lety +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  Před 2 lety

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

    • @user-il4kd9qq3y
      @user-il4kd9qq3y Před 2 lety +1

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

  • @Vlad_4572
    @Vlad_4572 Před 4 lety +5

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

  • @yevhenukrainianer4781
    @yevhenukrainianer4781 Před 4 lety

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

  • @user-lc9mi1pj2y
    @user-lc9mi1pj2y Před 6 lety +1

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

    • @user-lc9mi1pj2y
      @user-lc9mi1pj2y Před 6 lety

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

  • @kooba6205
    @kooba6205 Před 6 lety +33

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

  • @orkoteg09
    @orkoteg09 Před 6 lety

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

  • @user-wq4ft4gy2l
    @user-wq4ft4gy2l Před 4 lety

    Добрый день! Подскажите ,для ардуино нужно добавить какие то библиотеки Аvr чтобы код писать на чистом си? Не получается запустить команду опроса порта на си if (!(PINB&0b00000001)) нужно в порте прерывания дополнительно проверять наличие сигнала на Пине B0 чтобы исключить помехи.
    В коде подключил библиотеку АВР , работает только аналог digitalwrite , а digitalread не работает?

    • @UCanDo
      @UCanDo  Před 4 lety

      Добрый деень. Какой микроконтроллер у вас установлен?

    • @user-wq4ft4gy2l
      @user-wq4ft4gy2l Před 4 lety

      @@UCanDo ардуино нано, на выход все работает

    • @UCanDo
      @UCanDo  Před 4 lety

      Я имел в виду какой конкретно микроконтроллер установлен на вашей Ардуино. Так как могут устанавливать разные микроконтроллеры. Предположу что это либо Atmega168 либо Atmega328. Может посмотреть какая именно?

    • @user-wq4ft4gy2l
      @user-wq4ft4gy2l Před 4 lety

      @@UCanDo атмега328

    • @UCanDo
      @UCanDo  Před 4 lety +1

      Попробуйте простой скетч:
      const int buttonPin = 8; // the number of the pushbutton pin
      const int ledPin = 13; // the number of the LED pin
      void setup() {
      pinMode(ledPin, OUTPUT);
      pinMode(buttonPin, INPUT);
      }
      void loop() {
      if (!(PINB & 0b00000001)) {
      digitalWrite(ledPin, HIGH);
      } else {
      digitalWrite(ledPin, LOW);
      }
      }
      При нажатии на кнопку должен загораться светодиод

  • @antisdalexander7145
    @antisdalexander7145 Před 6 lety

    Мне вот одно непонятно согласно спецификации на Atmega2560 Speed Grade максимальное 16 MHz для Atmega328 20MHz. Что мы достигнем подняв частоту внешнего кварца кроме того что все библиотеки рассчитаны на использования внешнего кварца для внутреннего генератора 16 и задержка 1000 мкс при другом кварце уже таковыми не будут что несет проблемы при настройке обмена данных с двумя или более МК. Что мы в конечном счете достигнем заменив кварц ? кроме как сбоя в настройке задающего генератора.
    Если речь про ускорение то тут я бы сказал что вопрос скорей к штатным функциям IDE Arduino почему они так много времени выполняются (Оптимизация кода функции за примером далеко ходить не нужно тот же IAR за это берет кило баксы). Возможно лучше говорить про варианты замены штатных ванильных функций IDE Arduino на более простые как показанный пример работы на прямую с портами Atmegи.

    • @UCanDo
      @UCanDo  Před 6 lety

      Все верно говорите.

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety

      Antisd Alexander
      Вообще-то, в ардуино есть описание платформ, в котором можно поправить частоту кварца.

    • @UCanDo
      @UCanDo  Před 6 lety

      +Александр Писклов Дело не в описании платформ и частоте кварца, а в том что все библиотеки рассчитаны на конкретную частоту МК. Тайминги в библиотеках сместятся, что вызовет сбой в работе/инициализации того или иного устройства. Если менять кварц (и соответственно менять частоту в описании платформы) то и нужно будет соответственно править и все библиотеки ко всем возможным устройствам... Та ещё головомойка...

  • @3dprinterdoma
    @3dprinterdoma Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @Alex8Zajec
    @Alex8Zajec Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @user-uq3cz5pd9u
    @user-uq3cz5pd9u Před 6 lety

    Вот интересно кто нибудь из авторов таких клипов читал муму на контроллеры ,которые устанавливаются в платы .1-максимальная рекомендованная частота 20 мГц при рабочем напряжении 5 V , ну и маленькое замечание - частота сигналов , при обращении к памяти программ не должна превышать 25 мГц (это относится ко всем контроллерам , оснащённых подобным видом памяти , даже smt - там тот же вид памяти ) 2 - есть ограничения в работе некоторых узлов самого контроллера , 3 - получение стандартных частот для работы ком порта , и интервалы работы АЦП и так далее 4 что в виренге , что и в Си , программный код всегда избыточный , и по производительности медленный 5 полное быстродействие можно увидеть только применив код написанный на родном для этих контроллеров языке - Ассемблер АВР , время на выполнение изменения значения на выходе составляет 2 такта тактового генератора и при 16 мГц составит 0,000 000 125 с или 0,125 микросекунд а команда выглядит так sbi portb,5 И ВСЯ ПРОГРАММА МИГАНИЯ ВМЕСТИТСЯ (ВМЕСТЕ С ЦИКЛАМИ ПРОГРАММНОЙ ЗАДЕРЖКИ И НАСТРОЙКИ )30-40 СТРОК каждая по 2 байта - допустим - и получится - до 80 байт кода(зто с самыми навороченными ходами ),при написании на Си (как у Вас выполнение составит более 8 тактов и будет больше указанного Вами ) , Ускорение работы программ на таких контроллерах возможно И НУЖНО выполнять только на родном для этих контроллеров языке - Ассемблер АВР - 133 команды , прекрасный битовый процессор , непосредственное управление всем железом и ПРЕРЫВАНИЯМИ что ограниченно и урезанно в среде Ардуино . Но Вы лишаетесь такой прекрасной ХАЛЯВЫ -НАЛИЧИЕ ГОТОВЫХ , КРИВЫХ , ЧАСТО ПРОСТО НЕ СПОСОБНЫХ ОРГАНИЗОВАТЬ НУЖНЫЙ ПРОЦЕСС КАК НАДО И С БОЛЬШИМ БЫСТРОДЕЙСТВИЕМ библиотек написанных для среды Ардуино . пример - работа с модулями nrf24l01 в Ассемблере показало такое быстродействие , что получается одновременно получать сообщения на одном канале от 12 источников , такого библиотека NRFmaster или подобные ей не могут -вот это я понимаю быстродействие ! И даже переход на smt не даст прироста в скорости - 25 мГц - обращение к памяти программ ,Всё не больше ,да ядро там работает на 80 но обращение к портам не более 20 мГц + наворот работы компилятора раздувает код просто не прилично . Само определение Ардуино - это игрушка в не опытных руках , учебник КАК НЕ НАДО ПИСАТЬ ПРОГРАММЫ для таки контроллеров , другое дело для smt нет для него хорошего Ассемблера ,не развивали для них это направление

    • @UCanDo
      @UCanDo  Před 6 lety

      Понимаете, угодить всем невозможно. Сделал бы я видео об ассемблере - 99% начинающих ардуинщиков просто не стали бы смотреть... а видео делал именно для них, так сказать, хотел дать толчок к большему развитию
      В то же время писать что-то более простое, тогда знающие начинают говорить о том что что-то не договорил, не оптимизировал, недописал...
      Я не знаю по поводу скорости обращения к памяти (я сам только учусь и не претендую на всезнание), но в моей отладочной плате на STM32F407VET6 скорость на портах можно выставить более 100 мГц. Точно не помню, посмотрел 1 раз и забыл - не придал этому значения.
      По Ассемблеру согласен, язык сильный. В наше время это палка о двух концах. С одной стороны можно написать очень быстрый и оптимизированный код, который "заставит" быстро работать даже "медленный" контроллер. С другой стороны существует столько "мощных" контроллеров/процессоров и множество сред разработки, которые "в два клика" создают нужную программу. И, с учетом существующих мощностей, ко будет все так же быстро выполняться, легко портироваться на другую платформу, легко читаем...

    • @user-os5uk5nc4z
      @user-os5uk5nc4z Před 5 lety +1

      В "пользу" ассемблера говорит тот факт, что хуй кто когда портирует "KolibriOS" на другие платформы. Ассемблера я с лихвой нажрался во времена на Радио-86РК и работой с видеопамятью на i386dx, отладка адовый пиздец, хер когда к нему прикоснусь.

  • @JRichVid
    @JRichVid Před 6 lety +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  Před 6 lety

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

    • @JRichVid
      @JRichVid Před 6 lety

      Если нет осциллографа, можно воспользоваться фантазией и секундомером. Пишется, например, 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 Před 6 lety +1

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

    • @smert_okupantam
      @smert_okupantam Před 6 lety +1

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

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety

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

  • @user-vb4gm1fb7f
    @user-vb4gm1fb7f Před 6 lety

    Где скачать такие красивые карты с описанием портов?

    • @UCanDo
      @UCanDo  Před 6 lety +1

      Добрый день. В Гугле введите "Arduino Uno Pinout" или название той Ардуино что вам нужно. Перейдите в "Картинки". Там и будут распиновки

  • @Raspi8
    @Raspi8 Před 6 lety

    А разве не надо добавлять avr/io.h перед программой?

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @redsunpro.
    @redsunpro. Před rokem

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

  • @user-io3yy9vp9n
    @user-io3yy9vp9n Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

    • @SaLaGaDH
      @SaLaGaDH Před 6 lety

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

  • @farkoppp
    @farkoppp Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @seixx3161
    @seixx3161 Před 6 lety

    подскажите.. у меня ардуино уно. если
    if (!PIND & 0b000010000) {
    s++;
    }
    подключив импульс-генератор я не смог получить и 5кГц?
    а если:
    attachInterrupt(0, DF, RISING) ;
    void DF () {
    s++;
    }
    но attachInterrupt мне не подходит
    получилось в районе 20-30кГц.
    что не так?

    • @UCanDo
      @UCanDo  Před 6 lety

      Добрый день. Код смогу проверить только на выходных.
      Проверять через if в основном цикле программы с такой частотой не получится.
      Только прерываниями. Но надо проверить.

    • @seixx3161
      @seixx3161 Před 6 lety

      мой код такой:
      void setup() {
      pinMode(2, INPUT);
      pinMode(4, INPUT);
      attachiterrupt(0, DF, RISING);
      void DF() {
      if (PIND & 0b00010000) {
      s++;
      }else{
      s - -;
      }
      void loop() {
      // перевод s в градусы
      //далее выводим s на lcd или serial.

    • @seixx3161
      @seixx3161 Před 6 lety

      ститывание импульсов с энкодера происходит с частотой ~5 кГц
      но если из DF убрать
      if (PIND & 0b00010000) {
      s++;
      }else{
      и оставить только s-- то он считывание выполняет с частотой в ~ 35 - 50 кГц

  • @user-fz3ks8ew1p
    @user-fz3ks8ew1p Před 6 lety +4

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

    • @user-uv9rf6qm6f
      @user-uv9rf6qm6f Před 5 lety

      заааачем?

    • @Avazart
      @Avazart Před 5 lety

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

    • @melickon
      @melickon Před 5 lety

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

  • @yaglaleon6064
    @yaglaleon6064 Před 6 lety

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

    • @slava022967
      @slava022967 Před 6 lety

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

  • @aderod100
    @aderod100 Před 6 lety +14

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

    • @UCanDo
      @UCanDo  Před 6 lety +8

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

    • @JRichVid
      @JRichVid Před 6 lety +1

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

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety +1

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

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety +1

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

    • @XxxXxx-rc2nw
      @XxxXxx-rc2nw Před 6 lety

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

  • @Red-gv4bl
    @Red-gv4bl Před 4 lety

    продолжи эту тематику

  • @poweredbysergey
    @poweredbysergey Před 6 lety

    Cool

  • @asasov7090
    @asasov7090 Před 4 lety

    Толково...

  • @nikolaydd6219
    @nikolaydd6219 Před 3 lety +3

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

  • @Heorenmaru
    @Heorenmaru Před 5 lety

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

    • @UCanDo
      @UCanDo  Před 5 lety

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

    • @user-os5uk5nc4z
      @user-os5uk5nc4z Před 5 lety

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

  • @7G763svR6
    @7G763svR6 Před 4 lety +2

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

  • @user-pr3en9db3b
    @user-pr3en9db3b Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

      Данные взяты из разных источников (ссылки на статьи есть в описании). Но можно и просто осциллографом посмотреть.

  • @Mulinby
    @Mulinby Před 6 lety +1

    Автор ты гений! Я запустил батлу на arduino UNO!
    А если серьезно, то вот так можно до 284 байт уменьшить моргалку
    #include
    int main(void)
    {
    DDRB = 0xff;
    start:
    PORTB ^= (1

    • @UCanDo
      @UCanDo  Před 6 lety +1

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

    • @smert_okupantam
      @smert_okupantam Před 6 lety

      Так и заяви в новом ролике, что Ардуино это проект для популяризации микроконтроллеров среди широких масс, первая ступень на пути великих возможностей, которые открывают нам МК.

    • @Alexander_Pisklov173
      @Alexander_Pisklov173 Před 6 lety

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

  • @smert_okupantam
    @smert_okupantam Před 6 lety

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

  • @EugeneAnt
    @EugeneAnt Před 6 lety

    но при замене кварца возникнет проблема совместимости с модулями.. не?

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @krepton85you
    @krepton85you Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

    • @user-lr1dx2mz1e
      @user-lr1dx2mz1e Před 6 lety

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

  • @andreyvashenko9321
    @andreyvashenko9321 Před 4 lety +2

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

  • @FlameWinds
    @FlameWinds Před 4 lety +5

    СветодИод =)

  • @EugeneAnt
    @EugeneAnt Před 6 lety

    да, "оптимизация" библиотек поражает .. интересно, с чем связана такая медлительность при использовании библиотек?

    • @UCanDo
      @UCanDo  Před 6 lety +1

      Да все та же "кроссплатформенность". В библиотеках идет проверка на то, какая ардуина используется, какой стоит микроконтроллер, идет переподстановка многих констант / настроек под конкретный микроконтроллер. Да и еще много чего...
      К тому же основная цель многих библиотек - не скорость, а работоспособность на разных Ардуино.

    • @tihond11
      @tihond11 Před 6 lety

      Это чтобы нубам легче было.

  • @dmytroi5456
    @dmytroi5456 Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @Asmcavr
    @Asmcavr Před 4 lety

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

  • @3d_idea800
    @3d_idea800 Před 3 lety

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

    • @UCanDo
      @UCanDo  Před 3 lety

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

    • @3d_idea800
      @3d_idea800 Před 3 lety

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

    • @UCanDo
      @UCanDo  Před 3 lety

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

    • @3d_idea800
      @3d_idea800 Před 3 lety

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

  • @San_Cone
    @San_Cone Před 6 lety

    Что за музыка, скинте название кто знает

    • @UCanDo
      @UCanDo  Před 6 lety +1

      Музыка: Hevenly - Highway-WQ4FBtyC

  • @GodsHermes
    @GodsHermes Před 6 lety +1

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

    • @zonderdk
      @zonderdk Před 3 lety +1

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

  • @diminddl
    @diminddl Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @xavigarcia5969
    @xavigarcia5969 Před 6 lety

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

  • @user-rn8yc1wx8w
    @user-rn8yc1wx8w Před 6 lety

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

  • @MaxBudkin
    @MaxBudkin Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety

      Да, все верно

  • @Juriy830
    @Juriy830 Před 6 lety

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

  • @Vlad_4572
    @Vlad_4572 Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety

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

    • @Vlad_4572
      @Vlad_4572 Před 4 lety +1

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

    • @user-mb1zq1nj8y
      @user-mb1zq1nj8y Před 3 lety

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

  • @dr_docer
    @dr_docer Před 4 lety +1

    в 20 или в 10?

    • @orest_savitskyi
      @orest_savitskyi Před 3 lety

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

  • @0imax
    @0imax Před 6 lety

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

    • @melickon
      @melickon Před 5 lety

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

  • @Palladln
    @Palladln Před rokem +1

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

    • @UCanDo
      @UCanDo  Před rokem

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

    • @Palladln
      @Palladln Před rokem +1

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

  • @mr_kotik
    @mr_kotik Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety

      3-й бит

    • @mr_kotik
      @mr_kotik Před 4 lety

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

  • @searus7237
    @searus7237 Před rokem +1

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

    • @UCanDo
      @UCanDo  Před rokem +1

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

  • @user-fo6yt6gi8w
    @user-fo6yt6gi8w Před 6 lety +17

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

    • @ms-fair
      @ms-fair Před 5 lety +4

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

    • @ahalaimahalai6205
      @ahalaimahalai6205 Před 4 lety

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

    • @ms-fair
      @ms-fair Před 4 lety

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

    • @Silver2Storm
      @Silver2Storm Před 3 lety

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

  • @Juriy830
    @Juriy830 Před 6 lety +2

    500 гц а не 50 !

  • @user-yb1sv6ls9z
    @user-yb1sv6ls9z Před 6 lety

    3:16 в корне не соглашусь!
    Нужно собрать новый bootloader и загрузить его в мк
    Собрать bootloader можно тут homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

    • @UCanDo
      @UCanDo  Před 6 lety

      А какое отношение имеет бутлоадер до скорости выполнения команд и к библиотекам??? Бутлоадер выполняет только одну цель: через UART получить прошивку и записать ее в конкретный адрес памяти. ВСЕ!
      Если МК будет работать на частоте (допустим) 32 мегагерца то и все команды будут выполнятся быстрее, все тайминги ускорятся, и работа с устройствами нарушится так как тайминги выполнения команд МК будут не соответствовать таймингам команд конкретного устройства (на пример дисплея). Работа нарушится.

    • @user-yb1sv6ls9z
      @user-yb1sv6ls9z Před 6 lety

      Не буду спорить, я говорю что лично проверил на atmega 8, 328 с разным кварцем и собранным бутлодером!
      Но если мои слова вас не убедили, тогда попробуйте залить на 328-ую bootloader собранный для 8 мгц и установите кварц на 16 мгц, после чего загрузите блинк.

    • @UCanDo
      @UCanDo  Před 6 lety

      Вы поймите, вы не привели никаких данных. Лишь намеки. Если я в чем-то не прав, то дайте конкретные данные, ссылки где точно описано о том что вы говорите. А так даже не совсем понятно о чем речь...

    • @UCanDo
      @UCanDo  Před 6 lety

      Кстати, знаете почему у вас блинк в обоих случаях получается одинаковым? Потому что вы в настройках boards.txt прописали значение частоты. Вот только для большинства библиотек этого не достаточно.

    • @user-yb1sv6ls9z
      @user-yb1sv6ls9z Před 6 lety

      Я не сказал что он получается одинаковый!
      Он разный и я прекрасно знаю все про boards.txt, он у меня настроен под целую ахапку атмег и разных частот для этих самых атмег!
      И рас уж такая пьянка пошла, то все толковые программисты делают библиотеки которые подстраиваются под частоту мк.
      А что касается не подходящих библиотек, заменить чило тактов в библиотеке это не такая и сложная задача.
      Библиотеки RF24, MFRC522, Shifty и еще многие другие, прекрасно работали без изменения.

  • @opoffis
    @opoffis Před 6 lety

    Круто

  • @raal8438
    @raal8438 Před 4 lety

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

    • @raal8438
      @raal8438 Před 4 lety

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

  • @user-nq1qx7qt5i
    @user-nq1qx7qt5i Před 3 lety

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

    • @user-nq1qx7qt5i
      @user-nq1qx7qt5i Před 3 lety

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

    • @UCanDo
      @UCanDo  Před 3 lety +1

      @@user-nq1qx7qt5i Я не соглашусь с вами.
      Почитайте историю создания Ардуино, на пример в Википедии: 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 (но не факт). Весь остальной код нужно будет существенно переделывать. А многие библиотеки так и вовсе не заработают! Так что не заблуждайтесь о кроссплатформенности.

    • @user-nq1qx7qt5i
      @user-nq1qx7qt5i Před 3 lety

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

    • @user-nq1qx7qt5i
      @user-nq1qx7qt5i Před 3 lety

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

    • @UCanDo
      @UCanDo  Před 3 lety +1

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

  • @user-wq4ft4gy2l
    @user-wq4ft4gy2l Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety +1

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

    • @user-wq4ft4gy2l
      @user-wq4ft4gy2l Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety

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

    • @UCanDo
      @UCanDo  Před 4 lety

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

    • @user-wq4ft4gy2l
      @user-wq4ft4gy2l Před 4 lety

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

      for (int k=0; k

  • @user-gb2ze8db9b
    @user-gb2ze8db9b Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @neroslava1
    @neroslava1 Před 6 lety +11

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

  • @OMG4WTF4OMG
    @OMG4WTF4OMG Před 6 lety

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

  • @user-zj6wu8hy8x
    @user-zj6wu8hy8x Před 6 lety

    это все хорошо...ГТА 5 то потянет?

  • @zdomovoi6094
    @zdomovoi6094 Před 2 lety

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

    • @UCanDo
      @UCanDo  Před 2 lety

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

  • @Ev3658
    @Ev3658 Před 6 lety

    Bascom AVR на всегда ))))

    • @Ek_Ko
      @Ek_Ko Před 3 lety

      На когда?

  • @Silver2Storm
    @Silver2Storm Před 3 lety

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

    • @nikolaydvornikov397
      @nikolaydvornikov397 Před 3 lety

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

  • @ujinn7248
    @ujinn7248 Před 5 lety

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

    • @cutefox8319
      @cutefox8319 Před 4 lety

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

  • @alexbel5717
    @alexbel5717 Před 5 lety

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

    • @UCanDo
      @UCanDo  Před 5 lety

      А как получить этот Машинный код? Вы сможете написать программу в виде «0» и «1»?

    • @alexbel5717
      @alexbel5717 Před 5 lety

      Есть языки низкого уровня. Все расслабились на С, и тому подобные, еще бейсик вспомните.@@UCanDo

    • @UCanDo
      @UCanDo  Před 5 lety

      Кстати, есть Бейсик для АВР... но это совсем уж извращение :)))

    • @vaa3921
      @vaa3921 Před 4 lety

      Alex Bel, на порядок - значит в 10 раз. Ну ну. Смешно. Хоть раз пробовали декомпилировать код Си? Современный оптимизирующий компилятор генерирует код лучше, чем напишет человек на ассемблере. Только в очень редких случаях удается написать чуть-чуть быстрее.
      Реальный код это вам не ножкой подергать.

  • @mr_tea866
    @mr_tea866 Před 6 lety

    322 оговорка по соло

  • @ZacroyPast
    @ZacroyPast Před 6 lety +1

    OGON!!! LIKE!!!

  • @user-yb1sv6ls9z
    @user-yb1sv6ls9z Před 6 lety +3

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

  • @ODIY_main
    @ODIY_main Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

    • @ODIY_main
      @ODIY_main Před 6 lety

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

    • @UCanDo
      @UCanDo  Před 6 lety

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

    • @ODIY_main
      @ODIY_main Před 6 lety

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

  • @zaharshoihit1183
    @zaharshoihit1183 Před 6 lety +1

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

  • @user-lf4yk8zt8i
    @user-lf4yk8zt8i Před 6 lety

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

    • @user-nq1qx7qt5i
      @user-nq1qx7qt5i Před 3 lety +2

      Плата на первой космической покинет пределы электричества ;))

  • @fdg0d1
    @fdg0d1 Před 6 lety

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

  • @user-mr8dz3tj1j
    @user-mr8dz3tj1j Před 6 lety

    А в примере с кнопкой, читается весь порт целиком вместо одного пина! Зачем путаешь новичков, которые не знают С++! Да и С++ в разных средах программирования отличается!

    • @UCanDo
      @UCanDo  Před 6 lety

      Да к ведь и не возможно считать отдельно 1 бит... Порты потому и разделены по 8 пинов в каждом (0-7) что составляет 1 байт. Это ограничение самого микроконтроллера. Он может дать значение только порта целиком, всех 8-ми бит (портов) сразу. А уж с полученным байтом мы и сравниваем требуемое нам значение и тем самым узнаем в каком состоянии находится тот или иной бит (то есть порт).

    • @user-mr8dz3tj1j
      @user-mr8dz3tj1j Před 6 lety

      Возможно в этой среде и невозможно (надо проверить), а в некоторых других средах разработки это реально сделать.