FIR Filter Design and Software Implementation - Phil's Lab #17

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 มิ.ย. 2024
  • FIR (Finite Impulse Response) filter theory, design, and software implementation. Real-time software implementation on a custom STM32-based PCB.
    Overview of digital filtering, use-cases, mathematical theory, convolution, circular buffers, practical considerations, how to design FIR filters, filter design tools, implementation in real-time using C on an embedded system.
    Visit jlcpcb.com/RHS for $2 for five 2-layer PCBs and $5 for five 4-layer PCBs.
    Little Brain Hardware: github.com/pms67/LittleBrain-...
    FIR Filter Design Tools: github.com/pms67/HadesFCS/tre...
    and t-filter.engineerjs.com/
    Circular Buffers: www.allaboutcircuits.com/tech...
    If you're enjoying my content, please consider becoming a patron:
    / phils94
    [TIMESTAMPS]
    00:00 Preview of FIR Filter Implementation
    00:34 JLCPCB Ordering (Custom STM32 PCB)
    01:18 Introduction and Overview
    01:57 Digital Filter Overview
    02:40 Input Signal Representation (Discrete Time)
    03:21 Filter Frequency Response
    04:42 Output Signal
    05:11 FIR Filter Theory (Impulse Response, Convolution)
    08:20 Window-Sinc FIR Filter Design Procedure
    11:17 Choices When Designing FIR Filters
    12:19 Filter Design Tool
    14:06 Implementation: Convolution and Circular Buffers
    16:58 Header File
    17:55 Filter Init and Update Functions
    23:03 Filtering Accelerometer Data (DMA, Callbacks, USB, etc.)
    25:13 Designing a Practical FIR Filter (Low-Pass)
    28:37 Serial Oscilloscope Tool
    28:50 Real-Time Accelerometer Filtering Example
    ID: QIBvbJtYjWuHiTG0uCoK
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 284

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

    New hardware and PCB design course on mixed-signal embedded systems just released!
    ⏵Course content: www.phils-lab.net/courses
    ⏵Course sign-up: phils-lab-shop.fedevel.education

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

      Do you have any plans to look at implementing IIR and FIR filters using the STM32G series FMAC?

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

      Thank you for your work! Also interested in the IIR Filter.
      FWIW I googled the FMAC and found this informational video: st-onlinetraining.s3.amazonaws.com/STM32G4-Peripheral-Filter_Math_Accelerator_%28FMAC%29/index.html

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

      Another great video Phil, thanks for clearing up how to actually obtain the filter coefficients, so far I have just trusted the calculators .. It makes complete sense that it would be the inverse FFT of the filters frequency response. It would have been nice to see the effects of scalloping prior to using the window function, just to really clarify what it does to a signal :)
      -Keep 'em coming, love me some DSP.

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

      Your vid was totally intelligibly explained. IMO the depth of the theory was on point 👍🏻. Also, i am looking forward to hear how IIR differs from FIR

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

      I would also love some more videos on control theory! Starting at PID, which you have, and continuing to LQR and Kalman.

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

    Took my undergrad DSP final 4 days ago, this video would have been incredible to have for my earlier days in that class.
    To all students taking DSP, they are lucky to have your incredible videos, Phil

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

      Thank you so much for your very kind comment, George! Hope all went well with your DSP final :)

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

    This class is increadible, so clear. Wow just wow.

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

    Thank you Paul, you've made this complex topic so much more approachable.

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

    This is exactly the DSP video I needed to bridge the gap in my knowledge between theory and implementation. Keep these videos coming! I also like the fact that you share resources you found helpful.

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

    Another amazing video. Great job! Your stm32 coverage is better than any I've seen on youtube, and you have such a wide breath of topics from initial board layout to fab, testing and implementing drivers and filters!

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

    Really really precious tutorial!
    The git repository is also a treasure as well!
    Great job, Phi!

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

    Just, Thank you for all your time and hard work to educate people. So refreshing to see complex concepts, explained thoroughly and implemented in a place where anyone can see the results. Merry Christmas mate.

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

    Thanks for this quick FIR refresher and for mentioning t-filter. I found it to be extremely easy to understand and utilize for my STM32 projects.

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

    Phil, your video libray of tutorials is absolutely amazing! Thank you for putting together these relatively short, practical, tutorials on extremely valuable information! 🙏

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

      Thank you very much! I'm vey glad to hear your comments on these videos.

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

    Cheers Phil! You make these topics very digestible and encouraging!

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

      Thank you very much, very glad to hear that! :)

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

    Wow, this will come in so handy on the automotive application I'm working on, which will be polling something like 10 signals from various analogue sensors. Thanks for yet another excellent video!

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

    I just discovered this video now. Smooth as butter. It is like a good action movie, well constructed, fluent, interesting and also very informative. Thanks for the great effort.

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

      Thank you very much for your kind comment!

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

    Thank you so much for the content you create. These videos are immensely helpful and I appreciate the time and effort you put into this.

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

    These videos are much clearer and more concise than many university courses and textbooks. Well done Phil!

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

      I just thought about exactly the same!!!!!! Clear problem description, a bit of theory and an easy to understand implementation which makes the solution crystal clear, very very well done

  • @Isabellaa-ms5dk
    @Isabellaa-ms5dk 8 หลายเดือนก่อน

    this is the best video I have watched to explain FIR filters so far. thank you

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

    Thanks for this - you've put a lot of effort into your video! Appreciated.

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

    I'm stunned! Thanks for the class! Absolutly flawless! Keep up the great work!

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

      Thank you very much!

  • @LL-ue3ek
    @LL-ue3ek ปีที่แล้ว

    A superb job in demonstrating from concept and theory to product.

  • @ing.tomasferenc1276
    @ing.tomasferenc1276 3 ปีที่แล้ว

    I just wana thank you Phill to sharing your knowledge with us!
    Appreciated that.

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

      Thank you very much, Tomáš!

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

    Excellent. Looking forward to your new course.

  • @hoodoooperator.5197
    @hoodoooperator.5197 ปีที่แล้ว

    I'm in the last 6 weeks of MSc Digital Systems Engineering at the University of York, they have provided _LITERALLY_ zero DSP content... So thanks to Phil & his lab for actually providing this video.

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

    Thank you once again for the amazing job you put in your videos. First digital control theory, then firmware configuration + hardware design and now this. It's like you are reading my mind or smth. Really amazing stuff. I'm all for a Q&A video!

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

      Awesome, I'm glad you like them, Patrick! Let's see if I can read your mind with the next video :D

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

    Thank you very much for these two superb an clear videos. Please keep teaching us about digital filters with this “hands-on” aproach.
    Cheers!!

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

      Thank you so much, Alberto! Many more videos to come :)

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

    This is amazing. I am still very new and naive to dsp, but it’s amazing to see your content. Thank you so much for your willingness to share. It will not be forgotten ❤

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

      Thank you very much :)

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

    I’ve been looking for such good explanations for a long time!! Thanks!

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

    You have done in 30 minutes what my brain has struggled with for hours - trying to bridge the gap between the practical FIR filtering code that I've examined with the theoretical/maths in Lyons book. This is one of the best tutorials I've seen on any subject - perfectly paced, clear and just the right level. Thanks!

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

      Thank you very much, Robert!

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

      @@PhilsLab One question after playing with your FIR Filter designer: what is the purpose of "Shift Samples"? Once you set the filter length (# of taps) isn't it implied that you will always shift by 1? Or is this a way to do decimation and filtering at the same time?

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

    12 hours of lectures in DSP < this video. Thank you for doing this, it has been incredibly helpful!

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

      Very glad to hear that, thank you for watching!

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

    This is extremely useful as I'm currently working on an application based on imu data and require signals with very little noise. Thanks a ton !!

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

      That's great to hear, thank you. Hope this can help out with your project!

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

    This channel is a goldmine!

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

    Amazing video and as an Eclipse contributor it’s nice to see other people using Eclipse for C/C++ as well :)

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

    pure gold! I just learned at Special maths about convolution and Dirac impulse, Heavyside and so on but never though how to make the connection between theory and practice! As I said, pure gold! THANK YOU!!!!

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

      That's great to hear, thank you very much, Lucian!

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

    Thanks for another awesome video! 😁 I'm love watching your channel while working on my projects 😇

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

      Awesome, thank you very much - very glad to hear that! :)

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

    Great work as usual Phil! Keep up it mate 👍

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

      Thank you very much!

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

    Your channel is a treasure. Thank you

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

      Thank you very much!

  • @nadie-qm8rq
    @nadie-qm8rq 3 ปีที่แล้ว

    Thank you so much! this was so helpful, specially the firt part of the video, so I could better understand the concepts. This video was uploaded only 6 months ago, I'm glad I'm taking this course now

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

      Thank you very much for watching!

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

    Fantastic! Cant wait for the Kalman one!

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

    I repeat what others said: WOW. GREAT STUFF!!

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

      Thank you very much, Sanel!

  • @mdhvdubey
    @mdhvdubey 9 หลายเดือนก่อน

    Excellent explaination and excellent keboard sound.

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

    really clear much more clear than my teacher used to explain this!

  • @qwer.ty.
    @qwer.ty. 3 ปีที่แล้ว +1

    Thank you so much for those very clear explanation ! Your voice is perfect for non English speaker !

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

      Thank you very much!

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

    Nice content Phil, it helped me out a lot

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

    As always love your work ❤️❤️

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

    It was amazing to see this video. Keep up the good work. Please make more of such videos. :)

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

    Great video man! FIR is really powerful, even my total bonehead implementation of 32 values moving average manages to increase DHT11 termometer resolution by more than order of magnitude.

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

    Excellent work man. Thank you for sharing your knowledge in such a good way.

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

      Thank you very much!

  • @supremeleader5516
    @supremeleader5516 7 หลายเดือนก่อน

    amazing video phil

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

    another good educational video, good work phil really enjoyed this.

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

      Thank you, very glad to hear that!

  •  ปีที่แล้ว

    This is really gorgeous. Thank you so much. God bless you.

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

    This is what I needed desperately. Skill upgraded :)

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

      Awesome, glad to hear that, Frank!

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

    Awesome, needed this ❤️

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

      Thank you, glad to hear that!

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

    Thank you very much, Phil!

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

      Thank you for watching, Rodrigo!

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

    Thanks for sharing this awesome thing.

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

    This is awesome! Really hope for some more DSP videos!

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

      Thank you, next video is on Z-transforms!

  • @44mod
    @44mod 2 ปีที่แล้ว

    You are Awesome!! I have been looking at all of your videos, Just finished the ADXL355 build and took 20 pages of notes. I am trying so hard to understand all of this but it is hard for me because I am a self taught and just want to learn. You do a perfect job at teaching what you are doing.

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

      Thank you! Really glad to hear that - many more videos to come :)

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

    Very well explained, thank you. Waiting the next videos...

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

      Thank you very much!

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

    Thank you, useful content again. Additionally, I suggest SerialPlot Real Time Plotting Software to plot your data.

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

    Excelente video. Muchas gracias Phil's

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

      Thank you for watching, Wilson!

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

    Clearer than sun.
    Thanks you.

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

      Awesome, thanks!

  • @emilewepener3716
    @emilewepener3716 2 หลายเดือนก่อน

    This is amazing !

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

    Great video, thanks!

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

    really great video sir!!

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

    Welp, I better pick myself up some stationery then! Superb video :)

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

    Really really great video, thank you for this. Great job

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

      Thank you very much!

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

    That was great Boss, thanks a lot!

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

    In a previous attempt to understand FIR, I used Excel to model a Low Pass Filter. Rather than impulse, I used a step (square wave) and altered the response until it matched a sine wave.
    Having the proper math would probably be better, but it worked as a one-off.

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

    WOW PAUL! I am so happy with this one! You are such a good boy!

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

    great video and great job !!!

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

    Great video! Thanks a lot!

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

    Thanks!
    Kalman filter in discrete time is pretty interesting. May be you can describe in details Madgwick filter?

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

      Also very interested in that! Cheers

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

      Also interested. Cheers

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

    And I'm gonna rewrite them using fixed point arithmetics to make life happier for low end MCUs ! go on mate !

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

    Even though the main topic of these videos seems to be µC programming, they still give the most understandable explanations about digital filters i ever watched. Could you perhaps a video on Fast Fourier Transform FFT and its Inverse (IFFT) implementation in a similar way of your FIR and IIR videos ? Greetings

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

    Really great video, watched the one after it about IIR as well. This is what TH-cam has been missing. Put more math. If people run away then they are your wrong audience. I loved it, I tried to show some how this was done and had difficulty with tools to bring a proper demonstration. This video will be my goto from now on.

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

      Thank you so much! Yeah, I'm always unsure of how much maths to put in with it still being accessible to most people. I'll try and sprinkle in more and more and see when people have had enough :)

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

    This is tremendous!

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

      Thanks, Kadir!

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

    very helpful... many thx

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

    Amazing channel 👏👏👌

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

    Amazing video Phil! The only thing that was getting to me was that your voice was competing with your clicky keyboard, which made it difficult to follow the software as you spoke. But that is by no means an indication of the quality content you share!!... So please keep on sharing your knowledge with us.

  • @11JoeyMy
    @11JoeyMy 2 ปีที่แล้ว

    very good video. Summarizes a lot of hours of explanation by my "signal processing" professor :D Thanks!

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

      Thanks, Joey!

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

    Nicely presented. The C code can be made a lot more performant by storing two copies of the impulse response and dropping the branch in the inner loop.

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

    Thanks for the video!

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

    Very nice!! Thank you!

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

    Thank you for sharing.

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

    Where you format the accelerometer output before calling CDC_Transmit_FS(...) sprintf() returns the number of characters written to logBuf[] so you can save yourself the call to strlen() which is yet another pass over logBuf. I'll keep my comments about using sprintf() in ISR's for another day :-) ... Ok, well, this is relatively low rate stuff so formatting and transmitting from another ringbuffer in the main loop fed by the ISR would be another option to keep the ISR's lean and mean. Great stuff.

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

    Thank you so so much for this!

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

      Thank you for watching, Damola!

  • @titovs2100
    @titovs2100 3 หลายเดือนก่อน

    Thank you. Very instructive. I would've perform the convolution using the Discrete FFT.

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

    Programming tip: If you keep buffer length a power of 2, i.e. 2^4=16, you can reset the index faster using: fir->bufIndex = ++fir->bufIndex&(FIR_FILTER_LENGTH-1)

    • @odissey2
      @odissey2 11 หลายเดือนก่อน

      One comment: if filter length is L=2^N, then the group delay of the output comes in-between the samples: (2^N - 1) / 2. For example, for N=3, the group delay is 3.5.
      This can be important, if filter data need to be combined with the input data.

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

    Great video, perhaps would be nice to see a fixed point Implementation, or maybe compare the two on uC with or without a FPU.

  • @Jules-ki9nx
    @Jules-ki9nx 3 ปีที่แล้ว

    Wow I wish I saw this video a year ago! I hope you continue this series. It would be neat if you did a video using DSP to do hand motion detection on a microcontroller.

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

      Thank you! I'll be making a couple more DSP videos. Next ones on IIR filtering and Extended Kalman Filters.

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

    Cool. I learned a lot.

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

      Awesome, glad to hear that!

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

    Keep it up Subscribed.!

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

    Your keyboard is very passionate.

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

    I wish there was a bit of electronics demonstrations. I don't know actually where all you are talking about is in electronics world.
    1. What hardware setup you are using?
    is it the microcontroller dev board or it's another piece of hardware?
    2. What level of electronics this happens? audio, wifi, bluetooth signals...etc. ?
    What I liked:
    1. The code explanation is very good especially following up other drivers libraries you've done in other videos
    2. Theoretical information about is good even I didn't get a clear idea of where FIR should be implemented?

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

    Two last days I've being reading articles about PCM DSD, and now you have published this video. And this is not a random vid but rather one of my subscriptions. I wonder what does it mean ))) And how do you have time for all these cool things for us?

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

      Haha maybe I can read your mind :D It's getting a bit tough with time but I'm trying my best to get two vids out a month :)

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

    Thanks a lot for the super interesting videos dude! Would you Say that trasforming a continuos time filter from s to Z domain, night be an equivalent workflow?

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

    Nice video bro, tnx 👏👏👏👏

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

      Thank you, Nicola!

  • @sXAPOLLls
    @sXAPOLLls หลายเดือนก่อน

    You are amazing!

    • @PhilsLab
      @PhilsLab  หลายเดือนก่อน

      Thank you!

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

    Very cool training course, so well done, I love it. Don’t forget to setup a PayPal URL to support your activities for me and others.
    Here is some minor programming feedback.
    - for the sprintf use always the snprintf function e.g.: snprintf(logBuf, sizeof(logBuf), …)
    This is a good programming practise to avoid buffer overflows.
    - For circular buffers the wrapping can be made easy via modulo operations.
    e.g.: fir->buf[fir->firbufIndex++ % FIR_FILTER_LENGTH] = inp;
    This way you never need to check if your are at the end of a buffer or at the beginning)
    Again really great stuff you are doing here.
    PS: I would write this as a C++ class where the constructor gets the length of the filter as a parameter and allocates the float array, however for the audience here keeping it simpler with basic C is better because everyone must understand the individual steps.
    Regards from Hannover, Helmut

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

    Amazing tutorial and very clean code. When i handle interrupts, what I do is set a flag when the interrupt is identified, then immediately clear the interrupt. Then that then triggers execution of the appropriate callback in the super loop. I do this to keep the interrupt vector free and clear. What do you think about this approach? Of course if I was using FreeRTOS, I would have some kind of thread safe semaphore or even a queue.
    But damn man your explanation of FIR filter was spot on and probably the best I have ever seen.
    Edit: also, subscribed! Keep up the amazing work!

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

    Very good.

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

      Thank you, John!

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

    Thanks a lot, I will try implement your solution, I have problem in ntc sensor!