Тёмный

[#4] ESP32 on Zephyr OS: PWM, pinctrl, Timer [Part 4] 

The Pull-up Resistor Channel
Подписаться 1,5 тыс.
Просмотров 7 тыс.
50% 1

Наука

Опубликовано:

 

7 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 57   
@xiaoyi982
@xiaoyi982 Год назад
This video is a gem in the ocean. There are so many points to complain about Zephyr, yet zero complaints in the video. Instead, you turned this frustration into a treasure hunt. Well done, sir.
@MattyJ66
@MattyJ66 Год назад
Amazing tutorial. The story approach with hiccups along the way is effective and insightful. Much appreciated
@thepullupresistor
@thepullupresistor Год назад
Thank you very much for your kind feedback. It's good to know that the story approach is helpful, I will try to continue to find ways to make the learning experience more effective.
@KT819GM
@KT819GM Год назад
Quality content which deserves much more viewers. @creator just don't drop making these videos as subscribers will start to grow at some point.
@thepullupresistor
@thepullupresistor Год назад
Thank you very much for your kind feedback and encouragement! I'm enjoying the process of learning about the technology (and how to make videos) so having more people find the content useful is just an added bonus on top :-)
@ConorMcQuaid
@ConorMcQuaid Год назад
Just finished watching all 4 videos. Superb content, impeccable presentation and excellent pedagogy. I am no longer so afraid of device trees. I may even start drinking tea again.
@thepullupresistor
@thepullupresistor Год назад
It makes me very happy that you found the video useful, and thank you for sharing the kind feedback. Device trees are definitely not easy to get started with, but I find that they do make more sense after a few cups of tea ;-)
@Wayazaexa42
@Wayazaexa42 8 месяцев назад
@@thepullupresistor They definitely make more sense after watching your videos! But maybe the choice of drink was my issue before finding these gems; too much coffee, not enough tea! 😅
@jamjestlx
@jamjestlx Год назад
This series was pristine, thank You! It was very helpful.
@akshaynk130
@akshaynk130 Год назад
Coincidentally I was also looking at pwm and had coding done. Then I bumped to your video. Your video gives precise and deep understanding. Thanks a lot 😊. I wish you keep making more videos. Somehow in my esp32, for 20ms (also set 20ms in DT), setting pulse width using dt_pulse_set() returns invalid parameters.
@thepullupresistor
@thepullupresistor Год назад
That's great, thank you for your feedback. I hope you managed to find a solution to your issue with dt_pulse_set().
@MrMKFreak
@MrMKFreak 5 месяцев назад
Fantastic series, great introcution into using Zephyr OS and how to go about facing challanges during development. Loving this series
@thepullupresistor
@thepullupresistor 5 месяцев назад
Thank you very much! :-) You made my day.
@Duglah
@Duglah Год назад
Very nice video! I really like the part of you showing how to troubleshoot the errors. I think this is a part most tutorials are missing. Thank you! Can‘t wait for the next video!
@thepullupresistor
@thepullupresistor Год назад
That's great feedback, thank you! Working on video number five in the series now, and I think there will be some troubleshooting of issues in that one too, so I hope you'll like it as well :-)
@JorgeYannie
@JorgeYannie Год назад
Finally I am starting to learn Zephyr thanks to your videos! keep the awesome job going! Thanks a lot
@thepullupresistor
@thepullupresistor Год назад
It makes me very happy to hear that you find the videos useful. I think Zephyr has a lot of potential and there are so many facets that I have still not explored.
@JorgeYannie
@JorgeYannie Год назад
@@thepullupresistor I hope you are releasing more videos soon!
@Bananananamann
@Bananananamann Год назад
Absolutely next level content! This is such a difficult concept yet you take us by the hand and even make us take breaks to get tea at the right time! What a great teacher.
@prashkd7684
@prashkd7684 Год назад
thank you for creating this series
@philippsteiner1987
@philippsteiner1987 8 месяцев назад
Great Tutorial! Please keep up your excellent work!
@minhthuan2132
@minhthuan2132 Год назад
Thank you for providing such high-quality content that has helped me to learn more about ZephyrRTOS. I have a question regarding your statement at 14:50, where you mentioned that "any node that wants to use this compatible MUST provide 3 specifier." From what I understand, you meant to say "MUST provide a specifier with 3 cells" instead. Could you please clarify your opinion on this matter please, thanks so much !!!
@andreyparovozz
@andreyparovozz Год назад
For version 3.3.99, you need to add #include to main.c, to *.overlay #include
@thepullupresistor
@thepullupresistor Год назад
Thank you for highlighting this for 3.3.99 and above.
@ParthSarthiSharma
@ParthSarthiSharma Год назад
Thank you, I couldn't find the solution to the error I was seeing. This helped me.
@emoutraspalavras-marloncou4459
I hope you continue the series and show also pwm with servos, serial, i2c, spi communication with some sensors, Bluetooth, Wifi and EspNOW protocol in ZephyrOS
@thepullupresistor
@thepullupresistor Год назад
Thank you for your comment and suggested topics. I am working on the next video already, but I will consider your suggestions for subsequent videos.
@Budiinag
@Budiinag 10 месяцев назад
Excelent explination tnak you so much.
@arunvijay6928
@arunvijay6928 Год назад
What a channel, if I make it big, I'll find you and send you a beer.
@thepullupresistor
@thepullupresistor Год назад
Thank you! Good luck and I hope you make it big! :-)
@ridgeAndcompany-nm7qt
@ridgeAndcompany-nm7qt Год назад
Keep it going! This is a great series. Are you going to do a WiFi tutorial too?
@thepullupresistor
@thepullupresistor Год назад
Thank you very much for your feedback and encouragement! A WiFi tutorial is definitely on my list of potential future videos, but I can't make any promises as to when I'll be able to get around to it, unfortunately.
@ntn888
@ntn888 Год назад
@@thepullupresistor oh i didnt know zephyr did wifi. thats great. hope you cover ble as well... thanks for the content. GOLD.
@sopheaktrachhorn3401
@sopheaktrachhorn3401 Год назад
I hope you cover wifi and network stack soon
@thepullupresistor
@thepullupresistor Год назад
That's a very good idea! I'll start thinking about ways to present the networking portions, since that is probably one of the most common reasons for choosing the ESP32 series ICs in the first place. Thank you for the suggestion! However, I can't promise how quickly I can put something together, so I ask for your patience! :-)
@solowplaysmc9013
@solowplaysmc9013 2 месяца назад
At 18:35 , you put compatible = “pwm-leds”; Would this not be compatible=“espressif, esp32-ledc”? If not where did you get this pwm-leds from. Otherwise very good video though :)
@thepullupresistor
@thepullupresistor 2 месяца назад
That's a great question, thank you! You can certainly use the espressif,esp32-ledc compatible directly if you would like. However, using pwm-leds adds another layer of abstraction so that you could easily change the underlying microcontroller to another family or even manufacturer, without having to make any change to the source code, only a few changes in the devicetree. This comes back to the concept of separating the application code from the hardware that Zephyr is trying to do. If you have a look at the generated devicetree for the application under build/zephyr/zephyr.dts, you can see that the pwmleds node (using the pwm-leds compatible) refers to the node &ledc in its pwms property. If you look up the ledc node in the same file, you will see that it indeed uses the espressif,esp32-ledc compatible: ledc0: ledc@3ff59000 { compatible = "espressif,esp32-ledc"; ...... So, we are just using an extra layer of indirection to separate application code from hardware. Does that make sense? Sorry if I misunderstood your question, and thanks again for making a great point!
@solowplaysmc9013
@solowplaysmc9013 2 месяца назад
@@thepullupresistor Thank you very helpful sir.
@mostafanfs
@mostafanfs Год назад
Very informative
@thepullupresistor
@thepullupresistor Год назад
Thank you for letting me know. I hope you'll have fun with Zephyr and make some projects using it :-)
@nicoladellino8124
@nicoladellino8124 Год назад
Very nice video, TNX.
@thepullupresistor
@thepullupresistor Год назад
Thank you very much for letting me know, it is very motivating :-)
@jamespeterson7979
@jamespeterson7979 Год назад
Because it took me a while to puzzle this together, here is an overlay example for a stm32f411_nucleo_board. With pwm on the build in green user led (PA5): &timers2 { st,prescaler = ; status = "okay"; pwm2: pwm { pinctrl-0 = ; pinctrl-names = "default"; status = "okay"; }; }; / { pwmleds: pwmleds { compatible = "pwm-leds"; status = "okay"; green_pwm_led: green_pwm_led { pwms = ; }; }; };
@jamespeterson7979
@jamespeterson7979 Год назад
static const struct pwm_dt_spec fading_led = PWM_DT_SPEC_GET(DT_NODELABEL(green_pwm_led));
@thepullupresistor
@thepullupresistor 11 месяцев назад
Thank you for sharing!
@Wayazaexa42
@Wayazaexa42 8 месяцев назад
Oh, this might come in very handy, thank you! I'm using the same board, and I'll definitely reference this if I run into too many issues. I'll start off on my own though of course as my purpose when watching these videos is to fiddle around with zephyr and device trees and learn on my own.
@nikoraasu6929
@nikoraasu6929 Год назад
I've been following this video, and It's great, I really learnt alot, but setting up the motor MCPWM drivers just doesn't want to work
@thepullupresistor
@thepullupresistor Год назад
I'm so glad that you learned a lot from the video, and thank you for your kind feedback. I'm sorry if I misunderstood your comment, but would you mind elaborating a bit on your problem with the MCPWM driver? In this video we don't use the MCPWM driver, but rather the LEDC driver. Again, apologies if I misunderstood your problem or if my video was not clear enough on this point. Please do let me know if I can be of further help.
@nikoraasu6929
@nikoraasu6929 Год назад
@@thepullupresistor Oh my problem was that I was following your video as to get the "basic" understanding on how to construct devicetree and bindings, but I couldn't get my own devictree and bindings based on MCPWM to work. My team have moved on to ESP-IDF though as we only plan to release our product on an ESP32 and we decided that going the Zephyr route when it's much harder than anything else is only going to complicate things. Anyways I will still follow this channel because I find the way you explain things much clearer than anyone else and it's also the most up to date guide, and that's important when Zephyr keeps having big changes with almost every update. I hope that when the technology becomes a little more mature I will dive into it yet again, but for now it really proved to be too much for a beginner software engineer like me!
@AhmadFirdausIdris_AFNAN
@AhmadFirdausIdris_AFNAN Год назад
Nice video. I tried using PWM for my project where I have 2 esp32 running pwm to drive led. initially they blink in sync, over time, after few hours, they are out of sync already. do you any idea or work around to solve this?
@thepullupresistor
@thepullupresistor Год назад
Thank you for the feedback. With regards to your project using two ESP32s where the PWM LEDs go out of sync after a few hours, I've not experimented with the accuracy of the different ESP32 clock sources, but the two things that came to mind was either to use a more stable internal clock source (if you're not doing that already), or to use an external crystal that provides the same clock source to both ESP32 ICs. Please do share if you get it working. Out of curiosity, would you mind sharing what your project is for? Using two ESP32s sounds interesting!
@enesalbay9707
@enesalbay9707 Год назад
I think phandle stands for peripheral handle
@thepullupresistor
@thepullupresistor Год назад
I see. If you do happen to find a source, please do share. I wasn't able to find anything definitive in the Devicetree specification, so I thought of the p as standing for "pointer" since phandle references another node in the Devicetree. But peripheral handle would also make sense to me as well. Thank you for sharing!
@Budiinag
@Budiinag 10 месяцев назад
Please make it more videos
@platin2148
@platin2148 Год назад
I do wonder how can i create my own drivers? As i have fpga defined hw..
@thepullupresistor
@thepullupresistor Год назад
I'm working on a custom driver video right now, so I hope that might be helpful when I complete it :-)
@JonathanDeneault
@JonathanDeneault Год назад
@@thepullupresistor can't wait for that video to come out. Subscribed!
Далее
Changing The Flag Of The Countries #countryballs
00:18
Zephyr RTOS Intro - And why I love it
39:37
Просмотров 7 тыс.
Mastering RTOS Debugging Techniques
1:00:04
Просмотров 18 тыс.
Zephyr 101 - GPIOs and PWM
43:26
Просмотров 6 тыс.
Every Developer Needs a Raspberry Pi
27:27
Просмотров 681 тыс.