Port Register Control | Increase speed of Read/Write - Arduino101

SdĂ­let
VloĆŸit
  • čas pƙidĂĄn 31. 10. 2020
  • $2/5pcs 2Layer & $2/5pcs 4Layer PCBs: jlcpcb.com
    đŸ”„Another class for the Arduino 101 series. These videos will have some more difficult Arduino programming. In this video I show you how use the port register control and why is that better...
    🔀LINKS
    -------------------------------------
    Tutorial Website: electronoobs.io/tutorial/201
    Tutorial: electronoobs.com/eng_arduino_...
    ATmega328p datasheet: bit.ly/3csU1i6
    Get Arduino UNO: www.banggood.com/custlink/mvv...
    đŸ€SUPPORT
    -------------------------------------
    ELECTRONOOBS.io: electronoobs.io
    Help my projects on Patreon : / electronoobs
    my Q&A page: electronoobs.io/forum/index.php
    Facebook page: / electronoobs
    Canal en Español: / electronoobs en español
    Like share and subscribe to motivate me. Thank you
    #Arduino
    #tutorial
    #registers
  • Věda a technologie

Komentáƙe • 292

  • @mmawad100
    @mmawad100 Pƙed 3 lety +167

    PLEASE CONTINUE WITH THE ADVANCED STUFF THERE IS A SERIOUS LACK ON THE INTERNET FOR THAT

    • @willtipton
      @willtipton Pƙed 3 lety +5

      I agree! 114%

    • @MrRijoAlex
      @MrRijoAlex Pƙed 3 lety +4

      Truer words have never been spoken!

    • @Danixu86
      @Danixu86 Pƙed 3 lety +8

      Well there's stuff on internet, the problem is that is not well explained and this videos helps a lot.

    • @AdithyanKNair
      @AdithyanKNair Pƙed rokem +1

      still facing this problem

  • @minusharma1738
    @minusharma1738 Pƙed 3 lety +46

    You are so underrated 😭

    • @sawansihag6974
      @sawansihag6974 Pƙed 3 lety

      Yes, I am amazed by the amount of knowledge I got from this video

  • @DivyanshMMMUT
    @DivyanshMMMUT Pƙed 3 lety +7

    I think programming directly using Register Control is more fun as we are literally seeing what the controller is actually doing.... More like an assembly level Language đŸ”„.
    - Thankyou from India 🙏

  • @ELECTRONOOBS
    @ELECTRONOOBS  Pƙed 3 lety +27

    ERROR: To invert a byte we use "~" and not the "!" Sowy! :)
    Arduino Course (Spanish): bit.ly/3ldW6kO
    Follow me on FACEBOOK for more: facebook.com/Electronoobs
    Help me on Patreon: www.patreon.com/ELECTRONOOBS

    • @bilelhafsi3320
      @bilelhafsi3320 Pƙed 3 lety

      Thank you for the vidéo!!!
      Could you please tell me which software do you use to make video animations ?

    • @monleyson8668
      @monleyson8668 Pƙed 3 lety +1

      Ok

  • @TimNortonGuru
    @TimNortonGuru Pƙed 3 lety +2

    I did not realise the Arduino IDE could accept direct port addressing.
    Thanks

  • @sammflynn6751
    @sammflynn6751 Pƙed 3 lety +7

    Amazing, crystal clear explanation . wow, nobody explains it better than you. You deserve a million subs man.

  • @MarlinFirmware
    @MarlinFirmware Pƙed 3 lety +10

    For our project we used “FastIO” headers that define helpful macros to initialize, read, and write to the port bits using the digital PIN number, concealing all the binary math. They really speed up digital I/O, so we extended them to several platforms. For analog pin reading you can do similar tricks, by first setting up the pin for reading, then starting the ADC, and then going off to do other things and picking up the ADC result later, instead of calling analogRead() and waiting for it to return. That would make a good related subject for a future video. Cheers!

    • @richardlighthouse5328
      @richardlighthouse5328 Pƙed 3 lety

      If you need performance, then write in pure c/c++.

    • @MD-vs9ff
      @MD-vs9ff Pƙed rokem

      @@richardlighthouse5328 I don't know what you mean. Arduino is a pure C++ set of libraries, with just some cosmetic things handled automatically (like function prototypes).

    • @richardlighthouse5328
      @richardlighthouse5328 Pƙed rokem

      @@MD-vs9ff I meant without any framework. Just AVR helpers.

    • @stark_energy
      @stark_energy Pƙed rokem

      @@richardlighthouse5328 What it means: using FastIO is not only having near equal the direct (without any framework) but also platform independent. The hard part is always making the code has near highest performance BUT at the same time platform agnostic (i.e. can be run on Mega, ESP32, etc without changing your code).

  • @padmalayarawal3091
    @padmalayarawal3091 Pƙed 3 lety +20

    This is really a great explanation as well as great presentation. Port manipulation now looks more easy to get understand. Thank you. đŸ€©

  • @scottstevens7569
    @scottstevens7569 Pƙed 3 lety

    Very Good Explanation! We really do need more of this type of thing as there is not much available, and not as easy to understand as yours is. Clear, concise and relevant.

  • @baladshin7100
    @baladshin7100 Pƙed 3 lety +1

    One of the best videos I’ve ever seen on CZcams for arduino tutorial 😍 keep going bro! đŸ’ȘđŸ» love from IRAN đŸ‡źđŸ‡·

  • @saram263
    @saram263 Pƙed 2 lety

    The diagrams of the ports on the arduino board were so helpful and saved me from scrolling through pages of documentation as a noob, thank you!

  • @mdoering
    @mdoering Pƙed 3 lety

    The production value of your videos is next level... I LOVE the motion tracked labels. New subscriber achieved.

  • @ManojSharma-ud3ox
    @ManojSharma-ud3ox Pƙed 3 lety

    You explained it very well. I am a mechanical engineering graduate and have lots of projects which involved heavy use of electronic. This video was very clear and understand everything you said. Well done!!

  • @anonymoususer900
    @anonymoususer900 Pƙed 3 lety

    Last time i honestly told you that the video(internal comparator one) wasnt very understandable for intermediate or new people. DRAMATIC IMPOROVEMENT. Awesome tutorial......i will use this in my led cube project.....Thanks!

  • @kaden56
    @kaden56 Pƙed 3 lety

    I will be a serious follower of this more advanced line of arduino info. This is the stuff that makes all my old projects finally work properly 😂

  • @JBAntiFan
    @JBAntiFan Pƙed 3 lety +3

    Very informative, thanks for putting in the effort to edit the video. I like the inclusion of the result comparison at 6:50 and the video presentation overall looks professional, I bet new players will learn a lot from this Arduino101 series. Looking for more videos like this one to come soon, again, great job mate.

  • @bobvanwagner6099
    @bobvanwagner6099 Pƙed 4 měsĂ­ci

    i've programmed in C since Bell Labs in the late '70-s and know the concepts like this better than the back of my hand, but rarely have I seen such a clear and careful explanation. Great Job!

  • @hrperformance
    @hrperformance Pƙed 3 lety

    I learned so much from this video. This guy has a serious talent.
    Much love from the UK

  • @antibrevity
    @antibrevity Pƙed 3 lety +1

    This is an excellent explanation of boolean port manipulation that should be easy for newcomers to understand. Great work! I see that others have already pointed out some errors, but this is still a great video.

  • @nabilandadamslaboratory3422
    @nabilandadamslaboratory3422 Pƙed 3 lety +1

    This video has finally demystified port manipulation. Thank you!!

  • @halitekmekcioglu7150
    @halitekmekcioglu7150 Pƙed 3 lety +2

    very clear and well explained, I wish I could listen to this in my highschool years :) Lucky newbies

  • @saurabhgawli2167
    @saurabhgawli2167 Pƙed 3 lety +2

    U deserve so much more...
    Just don't stop ur work...
    Luv from India ❀

  • @SaminaZafar270
    @SaminaZafar270 Pƙed 3 lety

    This is the video that I was searching for months. This video is awesome. Please make more arduino tutorials.

  • @Sekhar_Home
    @Sekhar_Home Pƙed 3 lety +1

    Finaly clearly able to know bitwise operator use in Arduino... Thanx for ur awesome graphical presentation which makes the education more fun and interactive

  • @kylemfwelch
    @kylemfwelch Pƙed 3 lety

    I never seen this so clearly explained before. Excellent!

  • @wiktormolzahn736
    @wiktormolzahn736 Pƙed 3 lety

    I love you!!!
    This ist the first Video that explanes everything nicely

  • @richardsteen4340
    @richardsteen4340 Pƙed 4 měsĂ­ci

    Excellent tutorial..!! Did some assembly programming years ago in college.. This has helped me to remember things I forgot I had learned..;)

  • @MrAasi4
    @MrAasi4 Pƙed 3 lety

    This is one clearest tutorial of port manipulation. Good job!

  • @amarjitmoirangcha4521
    @amarjitmoirangcha4521 Pƙed rokem

    You are doing great I really like this. Such type of videos are very rare on internet which is teaching on register level for Arduino. Thanks

  • @bhargavdayal8595
    @bhargavdayal8595 Pƙed 2 lety

    Bro....This is one of the best explanations i have ever listened to..Great work

  • @alirezaahmadian4237
    @alirezaahmadian4237 Pƙed 2 lety

    right now im at the midle of the video and im so excited about this great explanation that made me write this comment. its great.thats exactully what i needed.

  • @null8363
    @null8363 Pƙed 5 dny

    I found this video and channel today, this is extremely amazing, the information and the quallity are top-notch, really thank you for your hardwork

  • @rikvermeer1325
    @rikvermeer1325 Pƙed 3 lety

    Amazing channel. I'm from software engineering and I understand this stuff but just don't know it all works like this. Thank you for clarifying!! I became a subscriber

  • @stephanemuller7032
    @stephanemuller7032 Pƙed 3 lety +6

    Great video man! Best explanation I've seen out there.
    To make your code easier to read you can also use constants like so:
    DDRB |= (1

  • @Tuberkulo1
    @Tuberkulo1 Pƙed 3 lety

    Best explanation about Port Register Control so far !

  • @tcrenegade
    @tcrenegade Pƙed 3 lety

    Loved this!! I felt like I was finally learning how to use arduino as a tool

  • @soekma_aoeliea
    @soekma_aoeliea Pƙed 3 lety

    You also could use , some of its function is pretty useful

  • @PdroAlfMar
    @PdroAlfMar Pƙed 3 lety

    Puro Oro!!!! Saludos y Gracias por tu aporte a esta comunidad!!!!

  • @piiumlkj6497
    @piiumlkj6497 Pƙed 3 lety +21

    This is a masterpiece , I love this kind of videos

  • @myhobbies5965
    @myhobbies5965 Pƙed 3 lety

    Always waiting for such a atmega mcu program learning videos.

  • @justdoingodswork
    @justdoingodswork Pƙed 3 lety

    Thank you so much, its so great to learn these and importance of register. I'll definitely implement these in my codes from now on.
    Please keep making these videos about advance coding.
    Thanks again

  • @moinshaikh6684
    @moinshaikh6684 Pƙed 3 lety

    Very Nice Explaination! Fallen in love with this tutorial!

  • @ChrisLocke1969
    @ChrisLocke1969 Pƙed 3 lety

    One of your best arduino code videos yet, thanks!!

  • @jollyjumper1873
    @jollyjumper1873 Pƙed 3 lety

    Nice video! This is helping me out with my graduation project. Thanks :)

  • @TYGAMatt
    @TYGAMatt Pƙed 3 lety

    Very well explained. Wish you'd don't this video a few months ago so that I wouldn't have had to spend hours reading the datasheet and doing it myself. Excellent stuff

  • @jaroslawpiotrowski210
    @jaroslawpiotrowski210 Pƙed 3 lety

    Very well prepared video about advanced operations on Arduino. Very well explain - THANKS !!!
    PLEASE continue this subjects for advanced operations !!!

  • @CNsongs
    @CNsongs Pƙed rokem

    Super helpful. Thank you very much. My university expected expected us to know these magically.

  • @chefseg
    @chefseg Pƙed 2 lety

    Great video! The explanation was clear and concise!

  • @SusanAmberBruce
    @SusanAmberBruce Pƙed 3 lety

    Thank you, I have been waiting for This tutorial, big help!

  • @skidroadkustom5953
    @skidroadkustom5953 Pƙed 4 měsĂ­ci

    A lot of great info, thanks. I did watch this one at least 15 times

  • @Danixu86
    @Danixu86 Pƙed 3 lety

    Nice tutorial. There are a lot of things that I did not understand until now. Also would be nice to have any tutorial like this talking about Timers and how to change it to change PWM signals for example.

  • @SirLeecher
    @SirLeecher Pƙed 3 lety

    Explained it really well and helped me understand, very nice !

  • @ajeethsuryash5123
    @ajeethsuryash5123 Pƙed 2 lety

    Amazing video... Expecting more of such class...

  • @webslinger2011
    @webslinger2011 Pƙed 3 lety

    Wow! Thanks for a very good explanation on the Arduino ports.

  • @nid274
    @nid274 Pƙed 3 lety

    this is great..i never imagined there would nano to micro variation!!

  • @tanoryjakaperdana1419
    @tanoryjakaperdana1419 Pƙed 3 lety

    Thanks bro.. you explain these stuffs with human language.. subscribed and liked.. 👍👍👍

  • @amnesie6615
    @amnesie6615 Pƙed 3 lety

    This is what I've subscribed for! COOL! Thank you!

  • @littlemadness221990
    @littlemadness221990 Pƙed 3 lety

    Great video ! This is a perfect foundation for future learning.

  • @GrandNecro
    @GrandNecro Pƙed 3 lety

    best tutorial i've found yet! i do have a question though. how do you read analog value? PINC register only stores the digital value of the analog pins.

  • @SudhirKumar-bq4xz
    @SudhirKumar-bq4xz Pƙed 3 lety +2

    Great and informative video as always.... :-)
    Sir, please make a video on how to interface external ADCs, selection of ADC, important specification while selecting a ADC.....

  • @JLCPCB
    @JLCPCB Pƙed 2 lety +1

    Great video as always! 😀

  • @curiouslittledroid1234
    @curiouslittledroid1234 Pƙed 3 lety

    Great presentation. Nice video editing and great use of motion graphics.

  • @sennabullet
    @sennabullet Pƙed rokem

    A,fantastic explanation made easier to understand with superb animations. Thank you for sharing your knowledge.

  • @jstro-hobbytech
    @jstro-hobbytech Pƙed 2 lety

    Cool video man. Optimized code gets me going.

  • @pedroaugusto5995
    @pedroaugusto5995 Pƙed 5 měsĂ­ci

    Nice video, your didactics is something else!

  • @shoumikahmed6373
    @shoumikahmed6373 Pƙed 3 lety

    Waiting for it for a long time......

  • @chiparooo
    @chiparooo Pƙed 3 lety

    Very interesting! Great graphics. Learned a lot. Thanks for sharing!

  • @naikganesh5677
    @naikganesh5677 Pƙed 3 lety +1

    You nailed it đŸ”„đŸ”„

  • @DustinWill
    @DustinWill Pƙed 3 lety

    Best explanation and great animation. Very clearly stated.

  • @nyakoi
    @nyakoi Pƙed 3 lety

    Thank you! Always good to learn something new 😀

  • @rajneeshsingh6639
    @rajneeshsingh6639 Pƙed 4 měsĂ­ci

    This is the best tutorial for port register control

  • @vitorlima2908
    @vitorlima2908 Pƙed 3 lety

    Muito show sua apresentação.
    Curto muito o seu canal.
    Vc Ă© sensacional.

  • @VorpalForceField
    @VorpalForceField Pƙed rokem

    Absolutely Fantastic Content.. Thank You !!!

  • @ChathuraJayasundaraIMD
    @ChathuraJayasundaraIMD Pƙed 3 lety +1

    Wow, awesome vid! please make a vid on timers n interrupts if it's possible. thank you

  • @PJElliot
    @PJElliot Pƙed 3 lety

    Very nice production quality. Using a define for the pin value B0001000 etc would make the code easier to understand, but I understand you were trying to explain bit access for which your method was clearer to someone new to the topic.

  • @FixTronics
    @FixTronics Pƙed 3 lety

    U R absolutely awesome
    I needed these information way long time ago
    Thank you for sharing it
    đŸ„°âš˜

  • @johnni5254
    @johnni5254 Pƙed 3 lety +5

    Great video! At 12:20 in the upper "loop()" commands, shouldn't those be: PORTD |= 0001000 and PORTD &= 00001000 accordingly? We're trying to set bit 3 of the register (Arduino pin D3). If we leave it as is in the video, it sets bit 1 of the register (Arduino pin D1). Do I miss something?

  • @simplyishan06
    @simplyishan06 Pƙed 2 lety

    Incredible is an understatement...

  • @jawwadahmad7774
    @jawwadahmad7774 Pƙed 3 lety

    Hard-Work 👍. Easy to Understand.

  • @gemininyte279
    @gemininyte279 Pƙed 2 lety

    Your videos are amazing and have helped me so much!! Thank you !!! Is there any way to read an analogue signal without using the analogRead function but rather the Port register instead?

  • @Sekhar_Home
    @Sekhar_Home Pƙed 3 lety

    Pls make more and more video on 101 arduino. I need to learn embeded system from you.. you are the best in teaching microcontroller.

  • @stark_energy
    @stark_energy Pƙed rokem

    A very detailed and great explanation to low-level optimization to Arduino. However we should point out that this only works on specific Arduino type, different type might require different configuration (and thus different code on different platform), while on the other hand a common Arduino function like digitalRead / Write is platform agnostic, it can even run on ESP32 or ESP8266 and many other types that conform with Arduino.h standard without changing code (except the pin number). So, for the sake of simplicity and portability there is always performance hit to pay. This is true for all programming language. The more you into performance, the more specific/limited device your code can work.

  • @cpuchip
    @cpuchip Pƙed 3 lety +3

    This is awesome! Have you done DMA on the arm cortex m mcu's I would love to seem more on those. Like the stm32 or samd range.
    Keep up the great work!

    • @rikvermeer1325
      @rikvermeer1325 Pƙed 3 lety

      Yeah!!! I would love to get more insight on how to control DMA

  • @vcrahul
    @vcrahul Pƙed 3 lety

    Dear frnd..excellent explanation...even better than greatscott's...on this subject...nice...

  • @ranaharsh365
    @ranaharsh365 Pƙed 3 lety

    Finally something that I badly needed.....

  • @Taran72
    @Taran72 Pƙed 3 lety +2

    Great explanation!! Thanks.

  • @kendallbarboza6477
    @kendallbarboza6477 Pƙed 3 lety

    Excellent video man, thanks!

  • @jimg9294
    @jimg9294 Pƙed 3 lety

    Thank you, this tutorial is excellent!

  • @KresnaPermana
    @KresnaPermana Pƙed 3 lety

    This video is awesome, thank you to show us

  • @Carlitos_SH
    @Carlitos_SH Pƙed 2 lety

    Masterpiece 💯

  • @sawansihag6974
    @sawansihag6974 Pƙed 3 lety

    Thanks for sharing this precious knowledge â€ïžâ€ïžđŸ”„

  • @jotyhasan4846
    @jotyhasan4846 Pƙed rokem

    You r so great! Love u so much❀❀❀

  • @astrogerard
    @astrogerard Pƙed 3 lety +1

    Very good video and thanks for taking the time to do this. I think the views counter is broken because in my opinion it should be at lease 10 timers higher by now.
    I would like to see more advance content like this. Please consider making an advance video on interrupts using -all- the pins of the Arduino. Thanks!

  • @juanmf
    @juanmf Pƙed rokem

    Great stuff! I bought the starter kit only to get disappointed at the analogRead sample rate. Do you have a similar video for analogRead?

  • @romanm4282
    @romanm4282 Pƙed 3 lety

    great video! you are well done!
    ĐžŃ‚Đ»ĐžŃ‡ĐœĐŸĐ” ĐČĐžĐŽĐ”ĐŸ! Вы ĐŒĐŸĐ»ĐŸĐŽĐ”Ń†!

  • @rikvermeer1325
    @rikvermeer1325 Pƙed 3 lety

    Wow, the reactions you are getting are beautiful :) I recently started as a self-employed software developer / hardware modder. Will check in and hopefully soon become patreon

    • @paulmaydaynight9925
      @paulmaydaynight9925 Pƙed 3 lety

      great, please make a copy of rebol and port it and patch it to esp32 then create a github for this tested code and notify carl and this channel.
      github.com/rebol/rebol

  • @amalsurendran1984
    @amalsurendran1984 Pƙed 3 lety

    You're the BESTT!!

  • @creatorx3795
    @creatorx3795 Pƙed 3 lety

    Thank you for that lesson!

  • @PhamhongDung68
    @PhamhongDung68 Pƙed rokem

    Thanks very much for this clip!

  • @tejaspatil5929
    @tejaspatil5929 Pƙed 3 lety

    please explain even more about the arduino, this video helped me a lot, please make even more videos