Electronic Basics #30: Microcontroller (Arduino) Timers

Sdílet
Vložit
  • čas přidán 15. 07. 2017
  • Support me for more videos: / greatscott
    Previous video: • HACKED!: ATX Power Sup...
    Facebook: / greatscottlab
    Twitter: / greatscottlab
    In this episode of Electronic Basics I will show you how to use the timer of a microcontroller (Arduino Uno -- ATmega328P) to not only create precisely timed events but also generate a PWM signal with variable duty cycle and frequency up to 8MHz.
    Music:
    2011 Lookalike by Bartlebeats
    Killing Time, Kevin MacLeod (incompetech.com)
  • Věda a technologie

Komentáře • 535

  • @Geradovitch
    @Geradovitch Před 7 lety +117

    So different of electronics I earned in the late sixties. Have tried to keep up to date on my own. Learned how to fix digital tv's and am now interested in microprocessors .I have ordered a full arduino kit with sensors and learning Python and Linux. Plus I have been following you on You Tube for the great projects you explain. Keep up the great work, You are a good teacher.

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

      I am interested in old electronics can please share what type of electronic were in 60s

    • @executorarktanis2323
      @executorarktanis2323 Před rokem

      That's great seeing you still learning sir please reach out to me if you require any help also btw they are called microcontroller 😊

  • @pesterenan
    @pesterenan Před 7 lety +189

    This is the basics? wow! And here I was thinking that I was smart by using a previousmillis(); function xD

    • @nishadnadkarni7874
      @nishadnadkarni7874 Před 7 lety +28

      Pesterenan the stuff he's doing is basically what you do when you use the atmega on its own without the arduino ide and its libraries (but with atmel's libraries), its mostly just writing data to registers and reading from them. In the video he goes kinda fast so you will find it overwhelming, but take the time to look at other videos and tutorials about the 328p's timers, its not that hard. The datasheet gives you what bits you need to set in which registers to configure the timers how you want. Obviously you need to look at tutorials and read up on them to understand them well. But once you have an idea of how to configure timers and what registers to use and a few basic modes, figuring out other modes isn't that hard and you can refer to the datasheet. You will need to look up stuff online but its not that hard. I don't know everything about the atmega 328's timers but from what I know its pretty easy. I've moved on from the atmega though.

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

      @@nishadnadkarni7874 what other boards have you moved on to? Just curious. I'm just getting started with the arduino platform but do not know if i should start with the arduino IDE or using atmel studio.

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

      @@SuperNesmaster Start with arduino IDE then move on to atmel studio

  • @JaySilva88
    @JaySilva88 Před 7 lety +339

    I didn't understand a thing, but great video! ahah

    • @kuyanatnatdkrx7
      @kuyanatnatdkrx7 Před 7 lety +18

      Embedded Micro controller Technical Jargon didn't make sense to me at first time I heard it. interrupts, timers etc are just a bunch of built in useful peripherals that does a particular function for a programmable logic device.This stuff is around the second layer of electronic and computer systems you'd have to study the basics of electrical and digital electronics.

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

      +1

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

      Me too!

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

      I watch this for scool haha

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

      feel it

  • @MikeysLab
    @MikeysLab Před 7 lety +16

    Having worked with electronics a lot in my life, I always found timers and interrupts to be kind of a dark art, especially before Arduino and when dealing solely with AVR or PIC. Thanks for addressing this :)

  • @edtix
    @edtix Před 7 lety +5

    Finally! I miss in-depth videos like that. Keep going :)

  • @hybridskeeter
    @hybridskeeter Před 7 lety +4

    This is a great video. Thanks for putting these timers into context with good examples, they make much more sense to me now!

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

    I have been struggling to understand timer interupts. THIS IS THE BEST EVER! I can now control my steppers using either overflows or compare timers. THANK YOU!

  • @raybright5805
    @raybright5805 Před 7 lety +1

    Excellent companion to your previous "Arduino Basics 102: Control Structures, Variables, Interrupts" - Love Your Work...

  • @MikeGecawicz
    @MikeGecawicz Před 5 lety

    I have been working on a project using LCDs and Stepper Motors for the past two weeks and this is the exact video I have been looking for; of course it comes from one of my favorite youtubers. Keep it up!

  • @mrjohhhnnnyyy5797
    @mrjohhhnnnyyy5797 Před 7 lety +4

    Well done, this video has cleared a lot of the confusion I had thinking about timers. Now I know how CTC mode works, thanks for informative video!

  • @klausnielsen1537
    @klausnielsen1537 Před 7 lety +1

    Thank you for doing these videos. I keep coming back and watching and now I even bought a ton of arduino stuff to have a go at some simple stuff. Totally subscribed!

  • @makermonkey6591
    @makermonkey6591 Před 7 lety

    I'm writing an arduino sketch to control a stepper while monitoring some sensors. The accelstepper library did not really cut it, for my application. Using this new timer knowledge I was able to make the hardware act exactly as I intended.
    HUGE THANKS for this tip.
    Awesome GreatScott.

  • @ryanelliott4092
    @ryanelliott4092 Před 7 lety +14

    This is perfect! I have an exam on this today! Thanks for the review Great Scott!

  • @ChrisMuncy
    @ChrisMuncy Před 7 lety

    Scott. Fantastic video. I would not have even known about this without either reading the docs or watching your video. Keep 'em coming.

  • @WarrenGarabrandt
    @WarrenGarabrandt Před 7 lety +1

    I'm about to build a 500 Watt 30V - 42V motor controller for a project I'm working on. I had not yet looked into how to generate stable PWM signals in code without spinning the Arduino in busy waits that eat battery. You've given me some great ideas in this video, so thanks for your time and effort making this.

  • @Bartong666
    @Bartong666 Před 7 lety +2

    Great video! These more advanced videos are great since the amount of videos on how to blink leds is so high and no one really goes that much into advanced arduino / ucontroller functions. Keep at it!

  • @insightfool
    @insightfool Před 7 lety

    SUCH a good explanation of how to use Arduino style interrupts. You're officially AWESOME.

  • @kai7474
    @kai7474 Před 7 lety

    This cleared up a lot of how to understand the timers & documentation about them for me. I was just getting to the point in some projects where I need them too!

  • @zetaconvex1987
    @zetaconvex1987 Před 3 lety

    Thanks for that, very informative. I was looking to create a variable duty cycle at a fixed frequency, and figured I wanted fast PWM mode. Your tutorial helped me put a few things in place.

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

    u can feel the illumunation after watching this 50 time. It is more brighter than the edison's and I'm understanding them now. I loved it!

  • @Tarbard
    @Tarbard Před 7 lety

    Great explanation as always, I like the way you present.

  • @moustafa19997
    @moustafa19997 Před 6 lety

    This is certainly the best kind of videos you make

  • @Jay0neDE
    @Jay0neDE Před 7 lety

    I can't tell you how helpful this video is. thanks!

  • @nihaludeenkaisome2796
    @nihaludeenkaisome2796 Před 6 lety

    Superb explanation about the uses of timer great scott !
    Thank you for this video, it helps me lot.

  • @TheMegaloloful
    @TheMegaloloful Před 7 lety

    Thank you for this video! I made a arduino alarm clock a while ago, but because I didn't use a timer, the clock "lost" about 10 minutes every week.
    With this information I can finally fix the clock! Thank you!

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

    Great video, you've made it so easy to understand, Thank you.

  • @Delali
    @Delali Před 3 lety

    This is just what i need. Thank you Mr. Scott

  • @stevenlittle2384
    @stevenlittle2384 Před 2 lety

    Thank you so much, for helping me tackle this daunting topic.

  • @5minutetimer
    @5minutetimer Před rokem +1

    This is amazing! Thanks for doing these!

  • @NorbertHarrer
    @NorbertHarrer Před 7 lety

    Great tutorial. I have used timers on the Arduino before. But only through libraries. That was a great overview on how that works under the hood.

  • @user-vs1du9tl2p
    @user-vs1du9tl2p Před 7 lety

    GreatScott is really great, Keep up the good work. Thumbs up!

  • @soxxks
    @soxxks Před 2 lety

    Amazing video. This video with Arduino documentation go perfect together. Thank you!

  • @brzydka_i_bestia
    @brzydka_i_bestia Před 7 lety +1

    Great video, very helpful keep up the good work!

  • @ArthurIslamRU
    @ArthurIslamRU Před 4 lety

    Thanks a lot dear Scott for your knowledge

  • @RinksRides
    @RinksRides Před 7 lety

    It is a great video. AVR timers even after explanation are still mysterious and confusing because of how they can interconnect. Respect on a next level! PWM to 8MHz?! Awesome!

  • @MinecraftM0b
    @MinecraftM0b Před 7 lety +21

    Hey,
    the drift off of the millis() function is caused by the Serial.println which takes some clock cycles (depends on baud rate ofc) - the timer is precise in this situation

    • @MD-vs9ff
      @MD-vs9ff Před 7 lety +4

      delta I think that's the point he was making. Delay causes drift because the other code takes some time to execute, so your loop time is delay time + code time.

    • @jort93z
      @jort93z Před 7 lety

      i use an RTC for my clock project i did with the arduino(binary and lcd clock). its the DS3231(M) and its very precise and really cheap(the whole board is literally $1 on ebay). it makes a whole lot of things a whole lot easier. and it has a battery backup.
      And the arduino itself drifts off a lot faster than an RTC.

  • @ix8inside891
    @ix8inside891 Před 2 měsíci

    best Explanation to that topic I've ever heard

  • @luizz1997
    @luizz1997 Před 7 lety

    Holy cow... that is another one of your videos i'm gonna need repeat a lot of times to understand

  • @riassenpai1590
    @riassenpai1590 Před 7 lety +1

    Hello Scott! Remember the clap circuit project? I build it from the first time and put it under my desk and plugged in my pc I enjoy it so much when i come home with one clap I turn on my pc!Greetings from my electronics teacher I showed some your projects to him and he sad:You can learn so much from him.

  • @binaryme335
    @binaryme335 Před 7 lety

    Great video. Some was little over my head, but if I watch things I already know, I'm not gaining​ anything. Thanks again for another excellent video.

  • @RobertMilesAI
    @RobertMilesAI Před 7 lety +67

    I feel like you would want to know this: "Mandatory" is usually only used for things that come from human rules, and usually a better word to use is "necessary". Consider "using a precise timer here is mandatory under EEC regulations for electronic products", vs "using a precise timer here is necessary if you want your alarm clock not to drift a lot over time".
    Like, wearing a motorcycle helmet is always necessary if you want to be safe, but in some parts of the world it is not mandatory.
    I normally wouldn't point that kind of thing out but your English is already pretty excellent so I thought you'd want to perfect it.

    • @DatNerddSwaqq
      @DatNerddSwaqq Před 7 lety +8

      Robert Miles Wasn't expecting to see you here! Love your videos on Computerphile and big fan of your channel!

    • @ganzsichertobi
      @ganzsichertobi Před 7 lety +1

      I also didn't know that. Thanks!

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

      Robert Miles
      I read your comment and understood that you are not nitpicking, but genuinely want to help a good CZcamsr improve his English. So, I checked out your channel, noticed that you produce some excellent content, and I subscribed to you.
      The comment sections to videos like this are a goldmine of extraordinary CZcamsrs.

    • @joelsantiagovalentin2231
      @joelsantiagovalentin2231 Před 6 lety

      There better option with timer

  • @simoncroatia
    @simoncroatia Před 7 lety

    You are a very smart man and although I don't understand everything I still enjoy your videos. Thank you.

  • @erfanelmtalab3426
    @erfanelmtalab3426 Před 3 lety

    I had problems learning the timer counter , but this video helped me enough ... Thank you sir

  • @yusy4501
    @yusy4501 Před 4 lety

    An advanced topic but u make it so easy to understand. Thank u.

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

    Great video as always. I didn't realise just how capable the Arduino was, but please forgive me when I just buy a RTC module for my next project.

  • @markusjuntunen6631
    @markusjuntunen6631 Před 7 lety

    You are my idol, keep ON with gr8 videos, these are diamond.

  • @Frisky0563
    @Frisky0563 Před 2 lety

    Boy that was quick I had to replay many times lol great video I appreciate it

  • @4-n0t-found-4
    @4-n0t-found-4 Před 5 měsíci

    Thank you for this video, it's exactly what I needed to get it 👍

  • @prestonmatheny9756
    @prestonmatheny9756 Před 7 lety +41

    Great video! I really like how you get straight to the point, and pack in as much info as possible. Lengthy videos aren't as entertaining, and even if I have to watch this one a couple times to really get it, I would much rather prefer a shorter video than a longer video. Keep up the good work!

    • @greatscottlab
      @greatscottlab  Před 7 lety +17

      I think the same way :-) Thanks for the feedback.

  • @ankitgupta9008
    @ankitgupta9008 Před 6 lety

    I was finding this video for months very important thanks subscribe to your channel

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

    Thank you for sharing the knowledge :)

  • @jacobpaniagua8785
    @jacobpaniagua8785 Před 7 lety

    Love the alarm tune!

  • @drkastenbrot
    @drkastenbrot Před 7 lety

    Im prettty sure theres many libraries available for this threading/timing approach.
    Very informative, I didnt know much about this. Thanks.

  • @wiko211
    @wiko211 Před 4 lety

    Great video, found it really helpfull while programming the arduino uno in pure C

  • @shubhamadtp
    @shubhamadtp Před 5 lety

    So much information packed in one video. Error data limits exided

  • @remowo_
    @remowo_ Před 7 lety

    thank you for the analysis...This topic has always been fuzzy for me even when reading the datasheet...

  • @CJ-yj1qw
    @CJ-yj1qw Před 2 lety

    Great video! very educational!

  • @Remy561
    @Remy561 Před 7 lety

    Great video, was easy to follow! (as an embedded systems student)

  • @hubercats
    @hubercats Před 3 lety

    Very helpful video. Thank you!

  • @HannesMrg
    @HannesMrg Před 7 lety +38

    You have the perfect timing, always if I finish a project you explain exactly that in a video and it's really easy to understand the little things I didn't know already :)
    Also keep up the great work, I'm always really happy when the "New Video" notification pops up.

    • @greatscottlab
      @greatscottlab  Před 7 lety +19

      Thanks for the feedback :-) I will try to keep it up.

    • @JoaoSilva-jr9ez
      @JoaoSilva-jr9ez Před 7 lety +4

      does it happen to you too? thought it was only me ;D

    • @thepixelshock
      @thepixelshock Před 7 lety

      Same here, just as I finished my audio amplifier project to drive some speakers from an old radio, Scott uploaded a tutorial about that.

  • @jayanthabandara9871
    @jayanthabandara9871 Před rokem

    What a great explanation

  • @brianhackit7900
    @brianhackit7900 Před 7 lety

    hey dude. just wanted to say thanks for all the vids. when i started my degree 2 years ago i found your channel.
    its been a great resource and ur perfect as far a host.
    you get all the info across well and you provide schematics and downloads and everything.
    so i just wanted to say tx.
    would've msgd you but couldve find that on this channel.
    thanks for providing such an incredible FREE resource for education man.

  • @Axelios
    @Axelios Před 7 lety

    excellent video. i learned a lot about how to use an arduino beyond the included libraries

  • @apurvsharma1261
    @apurvsharma1261 Před 7 lety

    LUV U GREAT SCOTT KEEP UPLOADING

  • @SuperFlyCH
    @SuperFlyCH Před 3 lety

    I have so much still to learn, sigh... This is one of those videos where I need to do some research and then come back to to watch the video again to get a much better understanding. Thanks for challenging me with your great videos.

  • @germas369
    @germas369 Před 4 lety

    thanks so much for this. i understand how timers work on microcontrollers and how pwm is generated, this is awesome. I just made a pwm on AT89C2051 chip :))

  • @rahulvc7791
    @rahulvc7791 Před 7 lety +4

    Hi great video

  • @CIOWhitepapers
    @CIOWhitepapers Před 4 lety

    Great explanation. Thanks!

  • @IndieSamurai101
    @IndieSamurai101 Před 7 lety

    Man you are so good at electronics! Wish you were my physics teacher!

  • @TheJay6621
    @TheJay6621 Před 7 lety

    A step inside the arduino functions. Lot of thanks for such detailed explanation. No body cares to explain these basic stuffs only you are the saviour for beginners as well as advance users. as always Love from India. thank you for your time and efforts. keep up the good work.

  • @ratchet1freak
    @ratchet1freak Před 7 lety

    I really enjoy this kind of arduino stuff. It's really hard to find someone willing to poke the control registers directly and go around the arduino's standard library.

  • @williefleete
    @williefleete Před 3 lety

    been driving a large matrix of LEDs from an LED sign I reverse engineered. Using the timer helps to keep the display showing something and still execute other code without having to call the routine regularly, had to use a different prescale value and pre-load the counter to tweak the refresh rate but works great now

  • @sunny90908
    @sunny90908 Před 7 lety +1

    Nice video!!! Has been a fan for long time!!

    • @greatscottlab
      @greatscottlab  Před 7 lety +1

      Thanks mate :-)

    • @sunny90908
      @sunny90908 Před 7 lety

      GreatScott! Have you read Microprocessor in your Undergraduation!!??

  • @MCsCreations
    @MCsCreations Před 7 lety

    Really, really nice!

  •  Před 7 lety

    A very hart topic explained very simple! Good work!!!!

  • @PCBMakerBD
    @PCBMakerBD Před 7 lety

    I am from Bangladesh, Your working is great for new learner.

  • @_ninjax8
    @_ninjax8 Před 7 lety

    mind blowing video!!

  • @wisnuindrawan6496
    @wisnuindrawan6496 Před 5 lety

    thanks great scout :D you are my hero

  • @your.free.electrons
    @your.free.electrons Před 3 lety

    I loved this explanation...I'm presently working on a project with atmega 8a :')

  • @anandhakrishnant6788
    @anandhakrishnant6788 Před 7 lety

    Great!! love ur videos .

  • @kingvarus
    @kingvarus Před 7 lety

    digger ich hab keinen plan wovon du redest, aber ich schau jedes video! weiter so

  • @sonypiplode8750
    @sonypiplode8750 Před 7 lety

    Quality videos thanks for sharing

  • @ferr4226
    @ferr4226 Před 4 měsíci

    holy, finally found my mistake after hours. thank you, good sir.

  • @ferreirasilva101
    @ferreirasilva101 Před 7 lety +1

    hey great scott say hello from Brazil!!

  • @themonkeyminds7252
    @themonkeyminds7252 Před 7 lety

    great scot sir great video...

  • @BillySugger1965
    @BillySugger1965 Před 7 lety

    Great video Scott! I use the atXMEGA series of processors, and always run a 1ms interrupt which does just two things: it sets a sync flag, so I can synchronise main loop processes to the timer without having interrupts disabled for a long time in the ISR; and increments a signed long value called time, which I use to keep track of timeout conditions for processing. Very powerful, takes very little processor resource and ties up the processor in ISRs (which block other interrupts) the least.

    • @HersonBagay
      @HersonBagay Před 4 lety

      The xmegas support multilevel interrupts so you can always interrupt an ongoing ISR. Perfect for ultra time critical task

  • @MrMANOJVELMURUGAN
    @MrMANOJVELMURUGAN Před 5 lety

    Its an awesome video. Thank you

  • @kalifack
    @kalifack Před 7 lety

    like always Dope videos ! :D

  • @programer0713
    @programer0713 Před 7 lety

    Ooookey, first GreatScott video that i dont understand completly.

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

    I thougt i knew everything about arduino, then i saw this.
    Wonderful my friend youre a hacker

  • @Andreipism
    @Andreipism Před 2 lety

    Very good!

  • @IBasilisvirus
    @IBasilisvirus Před 6 lety

    Best tutorial about timers. Tha ks

  • @DwiNoviantoUntidar
    @DwiNoviantoUntidar Před rokem

    Super explanation....

  • @robinsonargumero992
    @robinsonargumero992 Před 7 lety +1

    Hello. Good video, greetings from Colombia

  • @k1ckcyph3r16
    @k1ckcyph3r16 Před 7 lety

    Oh I see what you did there...this is just a guide, but I find it very usefull because you managed to put all the information in 9 minutes so we can see the video search for the information to complement it ans continue watching.
    I guess that's not the format everybody likes, but I find it very interesting because it "forces" me to do more research and learn more than if you just give me the recipe, but that's just my opinion. Thanks for the video, nice job.

  • @cessnachannel4285
    @cessnachannel4285 Před 7 lety

    nice video!

  • @rahim9568
    @rahim9568 Před 2 lety

    Thank you so much, even if i didn't understand some points.

  • @azzu9098
    @azzu9098 Před 7 lety

    Cool video! thnx bro!

  • @Max-hf7fx
    @Max-hf7fx Před 10 měsíci

    Great Video, but keep in mind. (Why inaccuracies can still occur?):
    Clock Source: The accuracy of the microcontroller's internal clock can vary. For precise timekeeping, consider using an external quartz clock source or another stable clock signal.
    CPU Clock Variations: Variations in the microcontroller's CPU clock frequency, not precisely at 16 MHz, can lead to deviations. External factors like temperature changes can influence this.
    Timer Resolution: Microcontroller timers have limited resolution. In your case, using a 16-bit timer means that the smallest time unit you can measure is constrained by the timer's resolution, potentially causing small discrepancies.
    Interrupt Delay: The timing of interrupt processing can introduce slight delays. Other interrupts or additional tasks within your ISR can affect the time it takes for the timer to trigger accurately.