Reliable data transmission

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024

ความคิดเห็น • 1.1K

  • @janismac314
    @janismac314 6 ปีที่แล้ว +2371

    The Bob Ross of computer engineering is back! :)

    • @MrSumkinFedor
      @MrSumkinFedor 6 ปีที่แล้ว +66

      But in computer science theres no "Happy little accidents" errors might cause a disaster.

    • @TheHerpthatderp
      @TheHerpthatderp 6 ปีที่แล้ว +100

      "Happy little segmentation faults"

    • @wmhilton-old
      @wmhilton-old 6 ปีที่แล้ว +35

      Dude, that's exactly what I thought of as he casually laid down his first blue wire, perfectly cut to length. "And... we'll just add some happy little wires here..." Mr. Eater, the amount of planning you must do to make it look so easy is formidable!

    • @facingmydragons
      @facingmydragons 6 ปีที่แล้ว +1

      Some nice exceptions.

    • @UpcycleElectronics
      @UpcycleElectronics 6 ปีที่แล้ว +5

      MrSumkinFedor
      I don't know... an out of frame switch seems like one of those 'happy accidents' to me ;)
      -Jake

  • @MarkButQuestion
    @MarkButQuestion 5 ปีที่แล้ว +790

    This guy prepares all his perfect length jumper wires in advance, I'm effin' calling it.
    Great video.

    • @QualityDoggo
      @QualityDoggo 5 ปีที่แล้ว +21

      ZecoRho you can get kits with various lengths, he probably picks from those

    • @philipgwyn8091
      @philipgwyn8091 5 ปีที่แล้ว +49

      @@QualityDoggo In other videos, the wires are also perfectly prebent.

    • @markwiygul6356
      @markwiygul6356 5 ปีที่แล้ว +30

      and he did all that programming with only one goof up, missing a period :-)

    • @pklongutoobe
      @pklongutoobe 5 ปีที่แล้ว +7

      It's called editing ;)

    • @doctorpropain8902
      @doctorpropain8902 5 ปีที่แล้ว +45

      The errors he makes along the way are also prepared in advance, I'm guessing. The guy is very skilled, but he also goes in depth enough so that a newbie can get into the videos, understand them, and avoid common pitfalls. Really great vids.

  • @AmeanAbdelfattah
    @AmeanAbdelfattah 6 ปีที่แล้ว +2675

    Creating a basis CPU wasnt good enough for him, he is creating the basis internet.

    • @DarthMakroth
      @DarthMakroth 6 ปีที่แล้ว +94

      if he made a cpu and a basic web server internet in the same year (2017-2018) that is super super freaky that is literally my 2 big projects i have been doing

    • @syedsouban6946
      @syedsouban6946 6 ปีที่แล้ว +2

      Samuel Miller that would be super fascinating 😍

    • @DRSDavidSoft
      @DRSDavidSoft 6 ปีที่แล้ว +150

      Next up: TCP/IP, routing, How to design a web-server in 8-bit assembly, and an embedded HTTP server entirely from logic gates and transistors!

    • @rikschaaf
      @rikschaaf 6 ปีที่แล้ว +4

      Samuel Miller funny, I also worked on some pc and OSI model simulations 2 or 3 years back. To see Ben make videos about both really brings back memories. Its basically a practical implementation of the course I followed called Computer Architecture and Networks.

    • @mariomatovina4
      @mariomatovina4 6 ปีที่แล้ว +15

      That's preparation for when the government starts to control this internet.

  • @antopolskiy
    @antopolskiy 6 ปีที่แล้ว +403

    the quality of the content is over the roof on this channel. I really appreciate the smooth transitions, consistency of explanation, no steps are skipped, everything is explained. amazing, Ben, keep up the great work!

  • @ivan_prime
    @ivan_prime 6 ปีที่แล้ว +1052

    Hello, w≡rld!

    • @GWigWam
      @GWigWam 6 ปีที่แล้ว +100

      Ah, I guess TH-cam doesn't do error checking either.

    • @SugarBeetMC
      @SugarBeetMC 6 ปีที่แล้ว +87

      @GWigWam Explains the comment sections under some videos.

    • @--_9623
      @--_9623 5 ปีที่แล้ว +2

      @@SugarBeetMC what do you mean??

    • @taureon_
      @taureon_ 5 ปีที่แล้ว +7

      how the hell did you do the three stripes!

    • @taureon_
      @taureon_ 5 ปีที่แล้ว +1

      @@--_9623 the comment section is not so grammar friendly

  • @jdam1228
    @jdam1228 5 ปีที่แล้ว +131

    The thing I really appreciate about your videos is the "stream of consciousness" style where you let us see your thought process and problem solving internal voice. I learn so much more hearing you think aloud through these problems.

    • @imho2278
      @imho2278 3 ปีที่แล้ว

      He is our own Tech Teddy.

    • @Chayin77
      @Chayin77 3 ปีที่แล้ว

      Yes

  • @brians.103
    @brians.103 6 ปีที่แล้ว +381

    It fails at Hell, it will never transmit more than 666 bits correctly..... What have you done...

    • @gorillaau
      @gorillaau 6 ปีที่แล้ว +91

      Opened the Logic Gates of Hell?

    • @fjack765
      @fjack765 5 ปีที่แล้ว +15

      DOOM!

  • @ratclit
    @ratclit 6 ปีที่แล้ว +249

    Bit shifting finally makes sense! Thank you Ben.

    • @DRSDavidSoft
      @DRSDavidSoft 6 ปีที่แล้ว +33

      I love the way he introduces a problem, calmly explains what to be expected, and how close everything is to reality (not just in an academic way). Then he presents us with a solution and an explanation on why/how it works.
      These videos are really educational and informative, and he's truly a great professor!

    • @Osmanity
      @Osmanity 6 ปีที่แล้ว +2

      I also finally understand bit shifting and feel mindblowww. He is the best!

    • @ratclit
      @ratclit 6 ปีที่แล้ว +8

      Actually keeping the compiler errors in the video is probably the closest thing to reality!

    • @hexane360
      @hexane360 6 ปีที่แล้ว +4

      Now wrap your head around this one: en.wikipedia.org/wiki/Fast_inverse_square_root#Overview_of_the_code

    • @nathanramanathan3644
      @nathanramanathan3644 6 ปีที่แล้ว +2

      which part of the video did bit shifting "shift" your sense?

  • @Alex-bj9lf
    @Alex-bj9lf 5 ปีที่แล้ว +533

    These videos made me realise that LED's is the electronics engineers console.log()

    • @davidt01
      @davidt01 4 ปีที่แล้ว +2

      XD

    • @maskedredstonerproz
      @maskedredstonerproz 4 ปีที่แล้ว +3

      well , what would you use if not an led light , an led screen is too complex to set up to be used for this purpose

    • @miles7267
      @miles7267 4 ปีที่แล้ว +12

      sort of, but if electrical engineering was a language, I think it would be C++, because electrical engineering is by no means a scripting language, so LEDs are more like:
      std::cout

    • @Quantris
      @Quantris 4 ปีที่แล้ว +8

      @@maskedredstonerproz Buzzers are fun

    • @petermarshall1634
      @petermarshall1634 4 ปีที่แล้ว

      😁

  • @oldblokeh
    @oldblokeh 6 ปีที่แล้ว +34

    Ben, I think you're doing a really great job teaching about some of the fundamentals. The importance of having at least a basic understanding of how all the components of a system work is often underestimated. People want to skip over it to the tasty stuff and then find troubleshooting hard. Keep up the good work!

  • @UpcycleElectronics
    @UpcycleElectronics 6 ปีที่แล้ว +88

    By far the best fundamental communication protocol explanation I've watched.
    I've finally begun to learn to stick to one task a bit longer (ok.. OK..a few tasks at once), but I really want to try this out myself just to see it first hand....I must not get distracted.... I must not get distracted... where did I put that other nano...crap
    -Jake

  • @MichaelWillems
    @MichaelWillems ปีที่แล้ว +43

    I love how you constantly make us think we’re ahead of you, thinking “wait, that won’t work”, which is exactly what you intended of course. Great teaching, Ben.

  • @Hacker-at-Large
    @Hacker-at-Large 6 ปีที่แล้ว +42

    I’m an old hand with this stuff, but I’ve found these videos quite inspirational. I find myself tinkering much more than I used to before I discovered them. Colleagues that I’ve shared them with feel the same. Keep uo the excellent work!

  • @alextotheroh8071
    @alextotheroh8071 6 ปีที่แล้ว +6

    You are TH-cam evolved. This is the first of your videos I've watched, and I'm absolutely thrilled to go back and watch the rest of your stuff. I hope to have your teaching skill one day. Thank you.

  • @toncho1986
    @toncho1986 6 ปีที่แล้ว +194

    Dude, i really love your work!!
    You are AMAZING...
    Keep it up :)

    • @gorillaau
      @gorillaau 6 ปีที่แล้ว +3

      Toncho 1 I could not have said it better.

  • @antagonistictherapy
    @antagonistictherapy 6 ปีที่แล้ว +11

    I'm sure you've covered this before in another video but I appreciate the way you describe these topics. You allow the viewer to take the path that someone might take if they didn't have a priori knowledge of computers. It not only helps someone learn the problem but hopefully they come to appreciate how elegant some of the solutions are.

  • @di3g04
    @di3g04 6 ปีที่แล้ว +7

    Man, this is one of the most educational videos I've seen on TH-cam

  • @lsubscribe3984
    @lsubscribe3984 6 ปีที่แล้ว +57

    Is it just me or is this guy SIMPLY AMAZING! Watching him for a while now. Loveeee his videos 😍

    • @MaciejTrebacz
      @MaciejTrebacz 6 ปีที่แล้ว +5

      It's not just you. Ben has a gift of conveying knowledge in a really accessible and engaging manner. Even though I know much of the stuff he's talking about I still find his videos very interesting.

    • @kiowablue2862
      @kiowablue2862 4 ปีที่แล้ว

      Completely agree. It's not just the content. His delivery of the subject matter makes the difference. I've been an Electronics Technician since 1974 and have seen only a VERY small number of tutorials that match the quality seen here.

  • @jakecanter06
    @jakecanter06 6 ปีที่แล้ว +21

    I've spent more time than I care to admit on TH-cam over many years. This may be the best electronics/programming video I've ever seen. Truly a work of art.

  • @ontheborderofbored
    @ontheborderofbored 5 ปีที่แล้ว +2

    The consistency of the wiring between the tx and rx boards is extremely satisfying. My favorite sub this year.

  • @jwrm22
    @jwrm22 5 ปีที่แล้ว +10

    This video is a good overview of communication.
    Note: As you a measuring the crystal oscillator you are changing the circuit.
    (It's a very delicate circuit, I'm amazed it even works when measured.)
    Even the worst oscillators will likely not be beyond 100ppm.
    To improve NRZ you can do oversampling at the receiver.

    • @jnevercast
      @jnevercast 5 ปีที่แล้ว +2

      I was expecting to see some phase locking of the timers each time the NRZ state changed, or some oversampling or some other asyncronous tricks. But nope, just a clock line.

    • @GrahamStw
      @GrahamStw 4 ปีที่แล้ว

      @@jnevercast It's a basics video looking at the fundamentals. There has to be some limit to the scope!

  • @MortenSlottHansen
    @MortenSlottHansen 5 ปีที่แล้ว

    Blown away by the elegant way on which you explain this. Everything evendown to your hand gestures is so great.
    Love how you break this down to such a basic level.

  • @kxp06
    @kxp06 6 ปีที่แล้ว +4

    I love how at first I was screaming at my screen that his is now how you do this... and then you fixed it, showing both common beginner mistakes and a feasible solution to it. Good balance on the detail and being engaging.

  • @QDWhite
    @QDWhite 4 ปีที่แล้ว +53

    “I missed a semicolon?”
    The answer is yes. Always yes.

  • @AlbertoEAF
    @AlbertoEAF 2 ปีที่แล้ว +13

    Ben Eater, this videos are insanely well made! Everything is SO clear. Perfect flow of speech and videos. The level of tidiness on your circuit layouts with straight and pre-prepared wires is unparalleled, you make electronics look as simple as assembling LEGOs, well done!

  • @MrGlocksrfun
    @MrGlocksrfun 3 ปีที่แล้ว

    I let youtube play as background while I work on projects. When your videos come on, I stop my project and watch your videos. Subscribed.

  • @foxroulette8016
    @foxroulette8016 5 ปีที่แล้ว +134

    25:05 Everything was going great, then everything went to Hell^X@

    • @codetutor6593
      @codetutor6593 5 ปีที่แล้ว +1

      It's actually not that hard. The extra processing required (in the loop) on the receiving can arbitrarily take too much time, whereby the receiver is getting only part of the signal, therefore the bits are a little off, and then you get jumbled characters.

    • @foxroulette8016
      @foxroulette8016 5 ปีที่แล้ว

      @@codetutor6593 I love stuff like this. I've watched some more videos and all of this is making much more sense. I was initially making fun of the garbled characters, but i think i understand why that happens now.

    • @codetutor6593
      @codetutor6593 5 ปีที่แล้ว

      @@foxroulette8016 Good for you. When you see the theory put into practice it's mind blowing. Happy creating!

    • @foxroulette8016
      @foxroulette8016 5 ปีที่แล้ว

      @@codetutor6593 indeed! Thanks, you too!

  • @jayturner5242
    @jayturner5242 ปีที่แล้ว

    Your videos helped me understand bread boards. In school, I was never tought how they work, just told where to put bits with no knowledge of the circuits or how they work

  • @Yotanido
    @Yotanido 6 ปีที่แล้ว +38

    So I just watched an almost 45 minute video full of stuff I already knew. Your videos are amazing :D

    • @Alulaa
      @Alulaa 4 ปีที่แล้ว +1

      woah same, I'm just an experienced software engineer and haven't really messed much with hardware but I somehow knew where and why stuff will break :^)

    • @nexus42x
      @nexus42x 4 ปีที่แล้ว

      same here :)

  • @NiddNetworks
    @NiddNetworks 3 ปีที่แล้ว

    The coolest thing here to me is the way we're all sat watching this via a method which is just a few steps away from what he's demonstrating. Data in, data shoved down wire, data out. These are tests and lessons you can do in your own home, and gain a real appreciation for the fundamentals behind how this stuff works.

  • @BestCrazyShow
    @BestCrazyShow 3 ปีที่แล้ว +3

    As a network technician with little to no knowledge regarding programming and circuits, I can figure out some of the quirks and theories surrounding the network fundamentals by seeing this material. Now I'm much more interested on studying circuits and low-level programming thanks to you! God bless!

  • @uhlersoth99
    @uhlersoth99 3 ปีที่แล้ว

    I love this guy, HE is to the point no Special video effects, no look at me " I'm on yout tube" type of videos like others do. He is to the point and knows what he is talking about and best of all he is not presumptions. Ben you are the best out there.

  • @korishan
    @korishan 6 ปีที่แล้ว +6

    Excellent walk-through and explanation!! Basically creating an I2C type interface. As a beginner programmer with mcu's and jumping head first into this coding/designing world (I have yet to go through the arduino tutorials), I find this type of teaching very informative and easy to follow. I learn much faster by working with "real world" applications, rather than the simulated pseudo ones that are the tutorials (hard to make the cross applications). This type of teaching helps me bridge those gaps. Much appreciated and subbed! 😁 Look forward to part 2+!

  • @ropersonline
    @ropersonline 3 ปีที่แล้ว +2

    27:10: It's very clear that since ! is ASCII 33 (00100001) and " is ASCII 34 (00100010), it's just the final bit that arrived a little too soon, so the delay was almost long enough but not quite.

  • @swapnilmankame
    @swapnilmankame 5 ปีที่แล้ว +20

    Please do a video explaining the intricacies of CAN bus transfer, just like you showed in this video,

  • @neoweithiam7106
    @neoweithiam7106 6 ปีที่แล้ว

    This video is a MUST WATCH for all new Elect Eng undergrads doing communication major. Save the lecturers lots of explanation. Even a you kid can understand.

  • @DasIllu
    @DasIllu 6 ปีที่แล้ว +23

    I remember back in the 90's i got my first PC and a cross assembler to write code for my C-128. Since floppy disk formats were incompatible i hooked the PC parallel port up to the C128's userport. I quickly learned that i cannot do without some sort of handshake. But for some odd reason i did it the other way around. The userport's current output is to low to pull the parallel ports data pins to its level except for one (i think it was the paper sense line). I had the commodore sending the clock pulses and the PC would send a byte via parallel port to the userport.
    I had a little machine code routine on the C128 watching for a ready signal from the PC and then start to send the pulses. First 2 bytes were the number of bytes to transmit.
    One variety of the receiver code would also start the program right after finishing receiving it.
    Good times :)

    • @jamessowin2505
      @jamessowin2505 6 ปีที่แล้ว +2

      DasIllu woah that's really interesting. How old were you when you figured out to do that. Way to think outside of the box

  • @KiraDidNothingWrong
    @KiraDidNothingWrong 2 ปีที่แล้ว

    I'm no programmer, I'm not educated enough to understand 3/4 of this video. I still deeply enjoy it and appreciate the effort 👌

  • @souravzzz
    @souravzzz 6 ปีที่แล้ว +4

    Fantastic work, Ben! Loved your explanations and the way you built it step by step. Planning to build this to show my students how physical data transmission works.

  • @garydunken7934
    @garydunken7934 6 ปีที่แล้ว

    Sunday morning, turned on my computer sipping a warm coffee and saw a new video from Ben. Loved it.
    I like the way how you present your videos. For example, you demonstrate the data reception error due to async transmission, and thus creating a learning moment and then coming up with a solution. Great, I'm looking forward to more videos.

  • @crittermoded
    @crittermoded 3 ปีที่แล้ว +5

    "Man, I really enjoy this videos!" I say, on my third hour of watching Ben Eater videos without understanding a fucking thing in any of them

  • @antiikadad917
    @antiikadad917 5 ปีที่แล้ว +1

    Your video is one of the best about basic communication. The thoroughness of your explanation is amazing.
    I'd be more than happy to have you for teacher when i was taking basic comm classes.

  • @gjmpeeters
    @gjmpeeters 6 ปีที่แล้ว +4

    Couldn’t stop watching although I already know this stuff. Great way of explaining things, building it up gradually and also showing the path from overly simple ‘non-working’ solutions to (probably) why the I2C bus is what it is.

  • @madejustforcomment
    @madejustforcomment 6 ปีที่แล้ว +1

    I always like the way you explain underlying concept through examples and problem scenarios.
    Nice way of explaining effect of unsynchronized clocks on data transmission.

  • @KingJellyfishII
    @KingJellyfishII 6 ปีที่แล้ว +6

    Another 40minute video about interesting electronics? Hell yeah!

  • @jwo7777777
    @jwo7777777 6 ปีที่แล้ว

    This is the correct speed and detail level for viewers interested in the subject matter and basic familiarity with electronics and programming. Presentation is excellent. Very professional.

  • @maxlee3838
    @maxlee3838 6 ปีที่แล้ว +5

    I greatly appreciate your process, your talking through all the points, and the detail that you go into. It’s awesome. Thank you!

  • @y2ksw1
    @y2ksw1 6 ปีที่แล้ว

    This is sort of the best ever explanation of digital communication I ever have heard. It was and still is my daily bread, but one thing is using it, one thing is to explain it. Very well done!

  • @yello171
    @yello171 5 ปีที่แล้ว +60

    "It is a very important aspect of engineering; to design systems which can deal with things going wrong or deal with imperfections."
    - Ben Eater

    • @BillAnt
      @BillAnt 5 ปีที่แล้ว

      No sh*it!! xD

    • @imho2278
      @imho2278 3 ปีที่แล้ว

      Marriage.

  • @brianl2607
    @brianl2607 ปีที่แล้ว

    im so glad i found this channel... love understanding low level stuff, and i dont understand how there are so many programmers that go through their days writing code and not understanding these low level basics. i guess its just the way my brain works

  • @TeganBurns
    @TeganBurns 6 ปีที่แล้ว +8

    This the the type of information I wish I had in High school. I learned the "fun" way...

  • @Bengadeer
    @Bengadeer 6 ปีที่แล้ว

    Well done. I think your patience to give a complete explanation without leaving details up to the listener is very valuable, since I assume this is for the beginner. You have to get the details at least the first time. Excellent visual recording of your presentation and the drop-in windows add a lot. Can't wait for the follow-ons.

  • @micycle8778
    @micycle8778 4 ปีที่แล้ว +22

    15:20 "Looks like I missed a semicolon"
    Me, programming in any C-like language

  • @saycrain
    @saycrain 6 ปีที่แล้ว +1

    I found you for about a year ago and i love every little thing you'r making, and i can't wait to see more from you.
    Much love from Denmark :D

  • @mikeb1596
    @mikeb1596 5 ปีที่แล้ว +81

    Me: writes a "hello world" program
    Ben: hold my beer

    • @necromancer2367
      @necromancer2367 5 ปีที่แล้ว +3

      Perfectly cut and bent jumper wires*

    • @BillAnt
      @BillAnt 5 ปีที่แล้ว +7

      You write "Hello World"... while Ben builds an HTTP server out of logic gates. xD

  • @Ryan-xc8uh
    @Ryan-xc8uh 4 ปีที่แล้ว

    My brain went nuts at 31 mins when you explain the clock channel, all the small electronics where I have seen the data and clock pins makes so much sense now. What a cool project and way of demonstrating data encoding.

  • @haythemzidi2232
    @haythemzidi2232 6 ปีที่แล้ว +107

    15:22 That's what she said

    • @kindlin
      @kindlin 6 ปีที่แล้ว +8

      OMG I'm DYING

    • @theodoros_1234
      @theodoros_1234 6 ปีที่แล้ว +3

      Omg😂😂😂

    • @jawadtahmeed
      @jawadtahmeed 4 ปีที่แล้ว

      ha ha ha. genius !!

  • @roboticsguyy
    @roboticsguyy 5 ปีที่แล้ว

    His soothing voice coupled with his ability to break down such a complex topic makes his videos enjoyable. I have a bachelor's in computer engineering and 30 mins of Ben Eater has made me understand more about data transmission than 5years in the university. I honestly never fully understood what the point of the clock signal was before now!

  • @emilyy-dev
    @emilyy-dev 6 ปีที่แล้ว +6

    Funny thing is I need to transmit data from a bunch of Arduinos (Nano) to a single 'central' Arduino (Mega, it will most probably ask for the information so I will multiplex through the Nanos) for a school project. I was thinking about the built-in shiftOut and shiftIn functions, but they wouldn't work as I wanted to. This videos will be extremely helpful so I can get this little project done.

    • @ajinkyapasalkar9563
      @ajinkyapasalkar9563 6 ปีที่แล้ว +9

      Using the method shown in the video is good for illustration purposes, but, you'll be much better off using SPI/I2C protocols. It's much easier to use and a lot more reliable.
      Not trying to discourage you from building your own transmission protocol from scratch, it's a pretty awesome thing to do. It's just that your comment "they wouldn't work as I wanted to" made me feel like you tried using the inbuilt functionality and failed, and now think that they are not capable of proper reliable transmission. That's not the case. SPI and I2C are specifically made for communication between multiple devices. Thousands of engineers have worked on building those protocols so there is not much that they can't do in their domain of functions.
      So yeah, building your own communication system is cool and good for understanding the basics, but, at the end you are much better off using the already in use protocols.

    • @emilyy-dev
      @emilyy-dev 6 ปีที่แล้ว +1

      Oh, I didn't try to use the shiftIn/Out functions, I just looked the code of what they actually do and it's kind of what I want but not exactly.
      My idea was to 'create' my own protocol, I don't have the idea completely structured yet, that's why I try to avoid (in a certain way) SPI (or other serial protocols). Maybe it's the idea of having complete control over what I do bit by bit? I don't know, I'll probably end up copycating it or something :d

    • @vylbird8014
      @vylbird8014 6 ปีที่แล้ว

      Just use the UART - you can combine multiple serial data sources into one with a simple AND gate. So long as only one ever transmits at a time, you will need a protocol to avoid or handle collisions.

    • @simonbaxter8001
      @simonbaxter8001 6 ปีที่แล้ว

      For multinode networks, use CAN !

    • @Loundre3
      @Loundre3 6 ปีที่แล้ว

      Use I2C if you need to communicate with multiple Arduinos with the least among of wires required, since the serial protocol is build into it. Define the addresses of the slave Arduinos, and use your master Arduino as the main one to communicate with them.

  • @JohnnySchaap
    @JohnnySchaap 5 ปีที่แล้ว

    Excellent work! You have answered many questions I've had. No I2c, no extra hardware. You just know your stuff!!

  • @ruadeil_zabelin
    @ruadeil_zabelin 6 ปีที่แล้ว +7

    Hey Ben, Did you know that scope you have can be unlocked to twice the sample rate and have some other additional features through an online key generator? It was a pleasant surprise when I found out mine could do way more when it unlocked all the features.

    • @ShadowHunter120
      @ShadowHunter120 5 ปีที่แล้ว +1

      Wait so to get the hardware you already own to work fully you need a key?

  • @jrthhfdff
    @jrthhfdff ปีที่แล้ว +1

    Isnt it crazy engineers have been doing this for like the past 50 years and we are just now blown away by it

  • @tbbw
    @tbbw 6 ปีที่แล้ว +8

    "so let's slow it down a bit"
    Oooh... i see what you did there ;)

  • @francoisdastardly4405
    @francoisdastardly4405 4 ปีที่แล้ว

    Sr. You are the best teacher of TH-cam. 44 minutes of gold. Thank you very much !!!!

  • @Stierguy1
    @Stierguy1 5 ปีที่แล้ว +5

    @3:18 using strlen to convert a linear algorithm into a quadratic algorithm. use `for(char * tx_byte = message; *tx_byte; tx_byte++)`.

    • @b4l1x
      @b4l1x 5 ปีที่แล้ว

      Its not quadratic, only two times the length of the message. And the code is more readable for people not familiar with pointers

    • @SimonBuchanNz
      @SimonBuchanNz 5 ปีที่แล้ว +1

      @@b4l1x the condition is re-evaluating every time, including computing the length, which is in the order of the length of the string if the compiler didn't optimise (which many do for strlen)

    • @gottfriedschuss5999
      @gottfriedschuss5999 3 ปีที่แล้ว +1

      Ben, this is a great video. I did something similar when I taught a data communications class as a clinical/adjunct professor. Your demonstration is better than what I did.
      I was looking for this thread; I spotted this issue when I watched this morning.
      Ted, you are completely correct. As written, this code fragment is O(n^2) in the length of the message. However, might I suggest for pedagogical purposes (many viewers don't have our experience):
      msg_len = strlen(message); /* Could be written as: for(int byte_idx = 0, msg_len = strlen(message); byte_idx .... ) */
      for(int byte_idx = 0; byte_idx < msg_len; byte_idx++) {
      char tx_byte = message[byte_idx];
      }
      Balazs Oczot, unless the compiler did the above optimization, this fragment is, indeed, O(n^2). C _guarantees_ that the conditional in a 'for' loop will be evaluated every iteration. strlen() determines the length by marching along the string searching for the null character, '\0', that marks the end of a C string. So, finding the length of the string is O(n). Because the for loop is executed n times and at each iteration the length of the string is calculated, this fragment is, as Ted stated, O(n^2). Your point regarding pedagogy is well taken.
      Simon, you are absolutely correct.
      I worked for a large, well known company, as an industrial mathematician doing queueing theory and performance engineering. A large project was nearly cancelled because it didn't meet performance requirements. None of the software engineers could find the problem. I never knew the exact details, but I guess perhaps 50 staff-years of work ready to be flushed down the toilet. One of my colleagues and I were given the task of finding the problem, else the project would be scrapped. It turned out that this exact problem, buried at the bottom of several nested loops, was the culprit. After fixing this, just as above, and recompiling, the project went from failing abysmally, about sixty times slower than required, to exceeding the performance requirements by about 50%. I often wonder how many projects are saved today simply by throwing more or faster silicon at it, rather than finding the root cause.
      Be well & Best regards, Gottfried

  • @randar3
    @randar3 3 ปีที่แล้ว

    I learnt more in the first 10 mins of this video than I did in my whole GCSE IT.

  • @jackdaniel8269
    @jackdaniel8269 5 ปีที่แล้ว +4

    oooofff! Oh God, Where was Ben all these years when I was young learning electronics and communications? Have you tried for America Got Talent Ever?
    .... You building up to Data and Parity Bits?

  • @johntamplin
    @johntamplin 4 ปีที่แล้ว

    Excellent video; pace, content, preparation, no fluff/bulls**t. Quite jealous of the oscilloscope too, but that's another thing.

  • @Inquire98
    @Inquire98 5 ปีที่แล้ว +4

    Hello, your presentation was REALLY, Really, really good 😉 "Thank You", thank you very much; I am going to try this with an Arduino Uno 😎

  • @solosailorsv8065
    @solosailorsv8065 4 ปีที่แล้ว +1

    Makes me love the UARTs and their HW bit-banging all the more !

  • @AliensInc.
    @AliensInc. 6 ปีที่แล้ว +3

    This is gonna be perfect to try out with my Arduinos, thx :D

  • @hadireg
    @hadireg 4 ปีที่แล้ว +1

    I love watching your videos over and over even they's crystal clear from the first shot! thanks a lot for this awesome channel!

  • @patrykmierzynski6221
    @patrykmierzynski6221 6 ปีที่แล้ว +3

    You are awesome! You are inventing internet and computers again!

    • @mb106429
      @mb106429 6 ปีที่แล้ว +1

      Patryk 2005
      They definitely need reinventing, certainly at present they are an amalgamation of patches and add-ons to stuff that is donkeys' years old

  • @naheelazawy
    @naheelazawy 6 ปีที่แล้ว +1

    Even though I'm fully aware of the concepts explained in this video and probably the next one as well, it is always fun to watch your videos!

  • @TheFloatingSheep
    @TheFloatingSheep 5 ปีที่แล้ว +18

    25:17 Ben shows us how to receive messages from the realm of the demons.
    Hell dwdaw90adwjjawoidojiaewoiewe

  • @1yasin6
    @1yasin6 5 ปีที่แล้ว

    in my cs modul we also had clocked latches and stuff and you are the first that actually gave a reason what we need the clock for

  • @777wsu
    @777wsu 6 ปีที่แล้ว +3

    Hey everyone, Ben is back!

  • @411sev
    @411sev 2 ปีที่แล้ว

    Thanks for the video. Your method of teaching micro electronics is the best I have seen so far. The way you play dumb by letting errors happen and then fix them is such a teaching style which can only be done by a genius.

  • @alessi4249
    @alessi4249 6 ปีที่แล้ว +5

    I'd love a hardware implementation of your Manchester encoding video, great work.

    • @BenEater
      @BenEater  6 ปีที่แล้ว +6

      Just XOR the clock and data!

  • @erygion
    @erygion 4 ปีที่แล้ว

    I had fun with this one, mine wouldn't work and I checked the code over and over but then I saw I didn't have a certain ground in place on a split breadboard... thanks Mr. Eater, great video!

  • @zeusnitch
    @zeusnitch 6 ปีที่แล้ว +3

    25:04
    Looks like a classic case of the Satanic possession bug. I'd recommend a code exorcist but I imagine Ben will purge the spirits by the end of the video.

    • @coolguy284_2
      @coolguy284_2 4 ปีที่แล้ว

      Apparently all he had to do was interrupt their thinking process.

  • @ahmedgaafar5369
    @ahmedgaafar5369 5 ปีที่แล้ว +1

    this is a wonderful tutorial , one of the best on youtube ....my favorite was shahrayar on the signalpath, but these videos by Ben are far better in detail.

  • @sdegueldre
    @sdegueldre 6 ปีที่แล้ว +6

    Have you tried simply setting the bps high enough to start seeing 'natural' errors? It seemed kind of odd that you mentioned it but didn't test it considering how easy it ought to be.

    • @BenEater
      @BenEater  6 ปีที่แล้ว +14

      With the clock, this design will be error free up to rates well above the speed of an Arduino. That is, if I removed the delays altogether, you'd just see the correct message appear "instantly" (at least to the eye) on the other side. The "natural" errors I mentioned start to show up in wireless communication (where there's more interference) and at very high bitrates (multiple millions or billions of bits per second).

    • @sdegueldre
      @sdegueldre 6 ปีที่แล้ว

      Ben Eater Makes sense, excited for the next video!

    • @ommiabbin
      @ommiabbin 6 ปีที่แล้ว +1

      You could also introduce errors by adding noise to the transmission line. This could be done by a white noise generator and a restive adder circuit. By adding noise and messing with different coding schemes, you can attempt to get close to the Shannon limit of the channel.

    • @KingJellyfishII
      @KingJellyfishII 6 ปีที่แล้ว

      I ran into errors at around 2KB/s with a raspberry pi

  • @FailedSquare
    @FailedSquare 2 ปีที่แล้ว

    I really appreciate all your videos. They are super thorough and I rarely have any questions at all after you cover a topic. I know this is an older video but its actually one of my favorites in terms of explanations. Nice work Ben! I think i may finally pull the trigger and order one of your kits.

  • @stephensu4371
    @stephensu4371 6 ปีที่แล้ว +100

    hello, worリネB, when did you learned Japanese?

    • @heartlessalice5801
      @heartlessalice5801 6 ปีที่แล้ว +20

      And since when Japanese caracters are on the extended ASCII table ?!

    • @foxfyre3600
      @foxfyre3600 6 ปีที่แล้ว +21

      Before Unicode existed, the extended ASCII table was a free-for-all in other parts of the world and completely up to the region to define them. Some models of LCDs with HD44780 controllers have Japanese letters. I owned one, and remember doodling them in a table on paper for future reference.

    • @igrewold
      @igrewold 6 ปีที่แล้ว +1

      +HeartLess HackCell
      MAN! get OpenMSX emu, tamper with it, see the DATES there.
      en.wikipedia.org/wiki/OpenMSX
      openmsx.org (for ROMs and BIOSes try archive.org )

    • @igrewold
      @igrewold 6 ปีที่แล้ว

      +HeartLess HackCell try playing knightmare I & II
      en.wikipedia.org/wiki/The_Maze_of_Galious th-cam.com/video/mxk-M7Ey7fQ/w-d-xo.html
      I remember buying the cartridge ;D ages ago, and was typing japanese to save/load game without knowing what the character(katakana/heragana=kana) were ;D

    • @RFC3514
      @RFC3514 6 ปีที่แล้ว +7

      Those LCD controllers come with either Japanese (HCD44780UA00) or Latin accented characters (HCD44780UA02) in the second half of their character table. It's actually quite difficult to get LCDs with the European controller ROM online, since they are generally assembled in / shipped from Asia. Even the A02 controller on its own can be tricky to find.
      You can download the datasheet (with both character sets) here:
      www [dot] sparkfun [dot] com/datasheets/LCD/HD44780.pdf
      .

  • @squirrel1620
    @squirrel1620 3 ปีที่แล้ว

    Just explained my first 2 semesters in college within 40mins. Awesome setup, super clean and quick!

  • @TheJeb52
    @TheJeb52 5 ปีที่แล้ว +5

    try how TI sends data in between calculators.

  • @Trevorm15
    @Trevorm15 4 ปีที่แล้ว

    Awesome content, man. I love your video style. Very easy to follow, thorough, but you get to the point. I particularly enjoy how you explore the typical thought process of how to go about solving a problem during your explanations of the problem itself. After reading the title to this video and not having a great understanding of how reliable data transmission is achieved, I went through the same thought process as you explored through your video. I appreciate your content and am looking forward to watching what's next on the queue.

  • @spectralcodec
    @spectralcodec ปีที่แล้ว +15

    What a great teacher!

  • @harrybeta
    @harrybeta 3 ปีที่แล้ว

    I want to say thanks to you a lot because I always watch your video when I have a sleepless until I fall asleep.

  • @fillerbloch
    @fillerbloch 6 ปีที่แล้ว +17

    Looks nice, is that possible for Raspbery Pi to Raspbery Pi , with Python and via GPIO Pins ? :-)

    • @BenEater
      @BenEater  6 ปีที่แล้ว +21

      Absolutely

    • @madejustforcomment
      @madejustforcomment 6 ปีที่แล้ว

      I was also thinking along same approach

    • @r6u356une56ney
      @r6u356une56ney 6 ปีที่แล้ว +3

      Filler Bloch fwiw, raspberry pi already has a built in serial interface.

    • @Gr4cer
      @Gr4cer 6 ปีที่แล้ว +5

      Actually, the pi already has some logic included which could handle that kind of job. :)
      Such like I2C, SPI and UART - those interfaces are able to take care of reading/writing, while your CPU isn't occupied by bit-banging.

    • @AndersJackson
      @AndersJackson 6 ปีที่แล้ว +1

      But this is about bit-banging, handling it "manually" and not by all other hardware.
      So yes, you can use the hardware to manage all this, but you can also use C, C++ or Python (or even Scratch) to do this on a RPi with Raspberian.

  • @matthewbarnard461
    @matthewbarnard461 6 ปีที่แล้ว

    I just came across your channel and it is very interesting and helpful! I'm a computer science major and I'm taking assembly this semester so a lot of these videos have shown me more real world examples of what I can use assembly for.

  • @bluekeybo
    @bluekeybo 6 ปีที่แล้ว +3

    What a quality video!!

  • @easymac79
    @easymac79 4 ปีที่แล้ว

    31:30 A huge concept just sank in and solidified to memory at this moment. I love your videos because they break down complicated concepts into understandable steps and let the viewer follow along and make the connection naturally.
    34:05 To demonstrate how much this is actually makes sense: now I'm thinking about how you would add a second data line and modify the code to alternate which one the receiver reads from at a given moment. Obviously you could increase the transmit rate, but for some reason the former seems more interesting, at least for learning.

  • @trengineer5348
    @trengineer5348 6 ปีที่แล้ว +3

    great video ! thank you

  • @softdorothy
    @softdorothy 6 ปีที่แล้ว

    Love the naive approach to solving the problem. Stumbling to the answer. Very easy for anyone to follow along.

  • @bluekeybo
    @bluekeybo 6 ปีที่แล้ว +3

    At @22:50 , line strncat(), when you're sending infinite zeros in the demo right after, wouldn't you be overwriting the message char string passed it's allocated 16 chars? So pushing zeros beyond the end of message?

    • @BenEater
      @BenEater  6 ปีที่แล้ว +4

      In C, strings are null-terminated, so writing a null at the end of the message just "overwrites" the null that was there anyway and doesn't make the string any longer. But it would definitely be a problem if it kept receiving more data (beyond 16 characters). So you're right that if we were doing anything serious, we ought to check for that.

  • @ali709aliali
    @ali709aliali 6 ปีที่แล้ว

    This taught me more than 2 years of IT lessons on my high school. But that says more about you than about my school, great video!

  • @AmeanAbdelfattah
    @AmeanAbdelfattah 6 ปีที่แล้ว +22

    Wait are you done with the entire cpu project?

    • @BenEater
      @BenEater  6 ปีที่แล้ว +53

      I'll probably come back to it at some point, but I want to take a break and do some other stuff. The CPU covers all the basics I set out to cover when I started the project, though there will always be more I could do.

    • @Young0maker
      @Young0maker 6 ปีที่แล้ว +4

      I would vote for some GPIO hardware and/or interrupt hardware. Could be just a register that stops the clock and sets the PC when a trigger is seen. I'm currently building a version of the CPU and eventually will try to include this hardware.

    • @RifqiPriyo
      @RifqiPriyo 6 ปีที่แล้ว +3

      Build two computer that talk each other? :)

    • @octagoncake2560
      @octagoncake2560 6 ปีที่แล้ว

      So the CPU is complete for now, if I understand you right? If so could you please update your website with the link to the last video "Conditional jump instructions", so it doesn't always say "more coming soon!" and everyone is thinking that the series isn't finished yet.

  • @caffeinatedinsanity2324
    @caffeinatedinsanity2324 ปีที่แล้ว

    This video is a great way of saying that hardware communication interfaces are a miracle. UART, I2C, SPI, CAN bus, etc...