#372

  Рет қаралды 182,418

Andreas Spiess

Andreas Spiess

Күн бұрын

Пікірлер
@RocketManRC-Electronics
@RocketManRC-Electronics 3 жыл бұрын
A great video as always Andreas! I happened to have the C++ dev environment setup on the bench using a Raspberry Pi 4 and therefore was able to quickly measure the interrupt response time with my oscilloscope. This turned out to be 1.1us when built for debug and 1.0us for release. The release version seems to have some jitter of around 0.1us whereas the debug version doesn't which seems a bit unusual.
@RocketManRC-Electronics
@RocketManRC-Electronics 3 жыл бұрын
To add a bit more to my last comment, I did a some more investigation and it appears that the minimum execution time of a GPIO interrupt handler is 5 us (i.e. even if it does nothing) which seems like an awful lot of overhead. I searched the data sheet for the processor and the SDK documentation and source code but could find no explanation for this behaviour. Probably someone more familiar with the ARM processor architecture will know. Cheers!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you for testing it. This seems to be ok. Of the 1.3 us of the STM32, about half was to set the pin (Arduino is not very fast in this discipline)
@nukular2008
@nukular2008 3 жыл бұрын
@@RocketManRC-Electronics How did you measure the execution time of the isr?
@rianderous8761
@rianderous8761 3 жыл бұрын
Micropython seems to have a "hard = true" option when assigning an IRQ to a pin. Maybe this would also make it a bit faster. Maybe I might try this someday.... docs.micropython.org/en/latest/library/machine.Pin.html
@TheEmbeddedHobbyist
@TheEmbeddedHobbyist 3 жыл бұрын
@@rianderous8761 python will always be slower as it needs an interpreter to run.
@vadik1001
@vadik1001 3 жыл бұрын
greets from ukraine! u have very good english, easily understandable even for non english-speaken guys like me. doing electronics as hobby for 20 years, but still can get some new knowledge from any of your videos. so what we can say about newbies. its a heaven for them. keep it up, man
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Cool, thanks!
@cookinsteve9281
@cookinsteve9281 2 жыл бұрын
When you made this video, I was miles away from securing a job in engineering. No degree, no money, self-study. A year later, Mr. Spiess set me on a journey with the pico that allowed me to secure a job as an RF Technician (en route to engineering position) for municipal districts and emergency service radios. Thank you for all the immensely valuable information and education and it is not for granted!
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Congratulations! I am always happy if I can be of help for somebody.
@yeanic
@yeanic 4 ай бұрын
@@AndreasSpiess Hello sir, I am trying to use PIO to measure the timing between two rising edges on two input pins, but have trouble getting the accurate measurement. Whats the best approach I should go with. I need it at least 400ns accuracy. Thanks
@AndreasSpiess
@AndreasSpiess 3 ай бұрын
@@yeanic I never used the PIO functionality 😞
@johnhschuster
@johnhschuster 3 жыл бұрын
As usual a great video with excellent resource links. The Getting started book is worth five pounds, whatever that is in dollars. Threads and interrupts were explained so that mere mortals can grasp it. Keep broadcasting!!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I agree. The foundation does a good job documenting their products.
@mrdrbernd
@mrdrbernd 3 жыл бұрын
Quality content as always. - And not a mix-up of examples from the book, another unboxing, introduction etc. - He sets the bar high for other KZbinrs. Thank you!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are welcome!
@tdtrecordsmusic
@tdtrecordsmusic 3 жыл бұрын
freeRTOS !! Yea, I just started reading the official docs last week. Half way through mastering freeRTOS already. Cool stuff in there. These topics will advance/enhance our lives 4 sure
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
True! But we have to change our programming styles a little...
@AndersJackson
@AndersJackson 3 жыл бұрын
@@AndreasSpiess and changing programming style from Arduino are just fine, and Good.
@dgrantstocker6148
@dgrantstocker6148 Жыл бұрын
Just received some picos yesterday and was interested in using both cores. Perfect timing discovering #372. Thank you!
@AndreasSpiess
@AndreasSpiess Жыл бұрын
Enjoy!
@VakesanM
@VakesanM 3 жыл бұрын
Nothing like your weekly dosage of your guy with the swiss accent. :)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
:-)
@lluisllimargas2637
@lluisllimargas2637 3 жыл бұрын
The cat says: "no more interrupts".
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
:-))
@marklewus5468
@marklewus5468 3 жыл бұрын
Two comments. After I got my pico last month I did a lot of testing with multicore in Python. Globals do get updated across cores. But it’s non-blocking and (other than @ entry) takes about 1 ms so you should use a blocking mechanism if you’re counting on a variable getting updated. Locks, otoh, can be counted on to be updated in real time on both sides. They are probably using an interrupt to do this so you may take a small performance hit when using locks. About the connector: usb-micro connectors are rated for a minimum of 10,000 careful insertion cycles. Detach from the pico side, not from the computer side. It’s way easier to replace a $4 pico than a USB port on your laptop :) I really enjoy your videos, thanks!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I assume the firmware does the blocking. It has all information to do it. I did not measure how long the locks take. Concerning the USB: On those boards the weak point is never the connector. Always the soldering or even the PCB. Another viewer complained that he lost already a few of these boards because of this fact. I added a reset button ;-)
@jerrychan1471
@jerrychan1471 3 жыл бұрын
Fastastic and practical info on the fundamentals of utilizing multiple cores! Your explanations are so clear and concise, thank you!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You're very welcome!
@jstro-hobbytech
@jstro-hobbytech 2 жыл бұрын
I love your deep dives Andreas. I'm glad you exist to do them. I had a chuckle at the arduino c++ designation. Another great video.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Thank you. Glad you like the content.
@rnbpl
@rnbpl 3 жыл бұрын
shorting the pico's RUN pin to ground causes a hardware reset, it's a pity that there isn't a built in reset button, but adding one isn't too hard
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. I still think it should not be the task of the buyer...
@sssxxxttt
@sssxxxttt 3 жыл бұрын
@@AndreasSpiess Reset buttons are also a danger. I've pressed them inadvertently too many times. You could pull the other end of the usb cable to spare the soldered on connector. (Great content and presentation by the way! And that's a cool cat :))
@EvileDik
@EvileDik 3 жыл бұрын
I got so annoyed with having to do this when working on MCU breakout boards, I made a small PCB pass-through board with a gang switch on it to break all USB connections. A small but very nice quality of life improvement.
@richards7909
@richards7909 3 жыл бұрын
I’m not entirely sure, but BenHeck I believe did some magic with the onboard button and a single wire to act as a reset.
@AndersJackson
@AndersJackson 3 жыл бұрын
You don't even need a button. Just connect a Wire from ground to the RUN pin, and you reser the device. I think you need to add that, so we Will stop this nonsens with pulling the USB-cable to reset the device. Just ground RUN pin on the device!
@sunwukong6268
@sunwukong6268 3 жыл бұрын
I really like the quality of your explanations. Great visualization and you show the examples very detailed. Thanks for enlightening me so often. I am still pretty new to the topic, but I had lots of fun so far.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad it was helpful! And welcome aboard the channel!
@rjordans
@rjordans 3 жыл бұрын
If you're afraid of wearing out the connector you can always try unplugging the other end of the cable ;-)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. Theoretically. I used a Raspberry pi with an SSD Ethernet, HDMI, and a mouse. Not really convenient to unplug it there...
@VisDeux
@VisDeux 3 жыл бұрын
@@AndreasSpiess I would use one of those usb cord with an inline power switch in that case.
@DinoFancellu
@DinoFancellu 3 жыл бұрын
​@@VisDeuxMany of those are power only, not data, Finding a data cable with a switch is hard​
@marvintpandroid2213
@marvintpandroid2213 3 жыл бұрын
@@DinoFancellu make your own?
@beware_the_moose
@beware_the_moose 3 жыл бұрын
The easy answer is to use a simple usb extension and pull it there
@pcost
@pcost 3 жыл бұрын
Andreas!!! Lovely video as *ALWAYS!!* After this video you TRIGGERED me to wish that you eventually make a C++ video for Raspberry Pico, please!!!!!!! Thank you for all your hard work.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I wait till it is supported by the Arduino IDE.
@christianvohwinkel7272
@christianvohwinkel7272 3 жыл бұрын
you can reset the pico by connecting the "run" pin to ground.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. This is what I do now.
@jstro-hobbytech
@jstro-hobbytech 2 жыл бұрын
Thanks!
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
You are welcome!
@HariWiguna
@HariWiguna 3 жыл бұрын
Hi Andreas! I learned a lot from you. Thank you for elevating us to the top 1%!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Welcome in the club ;-)
@carltone
@carltone 3 жыл бұрын
Andreas, thanks for this very comprehensive introductory tutorial. Your subject / explanation style is excellent.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad you enjoyed it!
@ncoide
@ncoide 3 жыл бұрын
Awesome video!!! I put a button between ground and PIN run in pico. Now I can connect and disconnect using it
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I know and I did it. But on a beginners board in 2021?
@jvgorkum
@jvgorkum 3 жыл бұрын
Yet Another Gem (YAG for short) thank you Andreas for this, I love the comparison in boards and language.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad you liked it. I tried to start with a typical viewer in mind...
@sv3glx
@sv3glx 3 жыл бұрын
Amazing as always! Thank you. Kisses to your cat from my cat!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are welcome. I will tell her...
@psikogeek
@psikogeek 3 жыл бұрын
We all know who is the star of the show.
@_a_x_s_
@_a_x_s_ 3 жыл бұрын
Great! I have just got an LPC55S69 which also has two cores. I am planning to make a quadcopter flight controller with the feature. Your video makes my idea clearer and more valid.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Good luck with your project!
@_a_x_s_
@_a_x_s_ 3 жыл бұрын
@@AndreasSpiess Thank you!
@olivierhubertolituks
@olivierhubertolituks 3 жыл бұрын
I like the remark about the 5 cents :) By the way, it's always a plaisure to learn something new with your videos.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thanks! 😃
@DraganPanjkov
@DraganPanjkov 3 жыл бұрын
Great tip with the baton, I don't remember reading about it in the book. Thank you Andreas! I also had some issues with threading: it simply did not work when I used VS Code and rshell - but it started to work when I installed Thonny.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I do not think that locks are covered in the book.
@DraganPanjkov
@DraganPanjkov 3 жыл бұрын
@@AndreasSpiess you are correct, they are not covered in the book
@PATRIK67KALLBACK
@PATRIK67KALLBACK 3 жыл бұрын
Grear and informative video, thank you! I have just got my r-pico so I will reproduce the interrupt test you showed in both C++ and python :)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Check the pinned comment about the C++ reaction time...
@ethzero
@ethzero 3 жыл бұрын
Excellent! Regarding the RP "reset", I grabbed an old powered USB hub with a switch and inserted it between the Pico and computer.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
A good idea! As another possibility, in another video I just added a small button switch...
@nickhubbard3671
@nickhubbard3671 3 жыл бұрын
Very detailed and a lot covered - thanks Now... designers that don't believe in a reset button do need to have a serious head examination. I designed a PC modem in the 1990s - used a DSP single chip with a controller 8048. The DSP worked great - until it "fell over" - There was no "begin again" control line. The short term solution - power cycle. The fix - scrap the design and go with another DSP design. (One that did have a reset line.) Thanks for the video!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you. In my age I do not forget a reset pin because, as I said, I am a mere mortal ;-)
@nickhubbard3671
@nickhubbard3671 3 жыл бұрын
@@AndreasSpiess ... and a few flashing LEDs!
@PureAudioTones
@PureAudioTones 3 жыл бұрын
There are few things that warms my heart like a peacefully snoring sleeping cat 💕
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
:-)
@glennpoirier8000
@glennpoirier8000 3 жыл бұрын
Thanks Andreas, very timely and very useful tutorial. Another reason to look forward to the weekend!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad you liked the video!
@mysomervda
@mysomervda 3 жыл бұрын
Fantastic video again. You are a few steps ahead of me, I will get to the 1% soon :). I am testing using the PI Pico as a robotics motor controller with motor encoder monitoring. I could get it to track encoder pulses from an irq up to around 16KHz but was measuring encoder pulses per x amount of time (Using the Timer function in micropython so don't need to calculate time since last pulse), so the code I had in the irq callback was simpler, just a increment of count. Because I want to track two motors for a robotic platform the threading will be useful, hopefully I can run the irq callbacks on separate threads without them impacting the IRQ responsiveness.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Did you check your results with an oscilloscope? 1/50us is 20kHz. So your ISR probably takes most of the processing power... IC++ it is much faster, BTW.
@LupinCorp01
@LupinCorp01 3 жыл бұрын
@@AndreasSpiess - I used a function generator to generate the irq for the test. FYI: Video of the test is here kzbin.info/www/bejne/ioi8eamtZa6oi7M 10:53 in. The plan if the Pico can't keep up with two motors is to switch over to an ESP32 or Blackpill , worst case I will have to code in C (but am trying to avoid it)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
This is probably a little faster than my method. You still can use the second core for that task and use the first core for calculations...
@AdaptivePhenix
@AdaptivePhenix Жыл бұрын
A fine example of why someone needs to break this chicken/egg scenario regarding the Parallax P2. 16KHz is miserable 😁 The best way to use interrupts is _not_ to use them. Apart from the P2's eight parallel processors, its 64 identical "smart-pins" can be pretty much anything one might need. Any pair of pins can decocde/count a quadrature encoder.....even with all eight processors idling. How about a frequency of sysclock/2 ? I am not aware of any dedicated quadrature-counting device that can come close to this. Program in C, BASIC, SPIN, ASM or combine any/all of those languages. If nobody knows about the P2's existence then naturally, nobody will be using it. 😉
@MrMilarepa108
@MrMilarepa108 Жыл бұрын
Ok that's the most adorable snoring cat on the internet. I will become a Patreon now just so you can give her more treats.
@AndreasSpiess
@AndreasSpiess Жыл бұрын
Thank you! Indeed, she is very good in snoring!
@Gabonidaz
@Gabonidaz 3 жыл бұрын
i'm a subscriber of your channel for long time ago and i want you know: your content is always the best, regards from brazil
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you for your nice words!
@McTroyd
@McTroyd 3 жыл бұрын
Come now... we can have a reset "button" by soldering a small jumper to one of the castellated grounds, and just tap the Reset pin. Bonus: If things get too boring, Dishka can start bopping the wire around. 😁 Thanks for the video! Glad to see uPython supports threads on the Pico, even if only in a limited fashion.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Of course I have my reset button now. But does a beginner has to solder in 2021?
@McTroyd
@McTroyd 3 жыл бұрын
@@AndreasSpiess Perhaps not, but they could short the pins... 🤷‍♂️
@sameerk12982
@sameerk12982 3 жыл бұрын
Hello from India Andreas... Thank you very much for all the interesting and easy to understand videos... Please make more videos using Pi-Pico and Python.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
So far my viewers are not very much interested in the Pico as well as in MicroPython :-(
@jjdawg9918
@jjdawg9918 3 жыл бұрын
Great as always Andreas. I do have to say I really dislike the use of interpreted languages(python) on embedded systems since it is such a waste of processing power compared to compiled languages(C/C++). It does however open up the world to people that would otherwise not be able use these products at all. I have worked with RTOSs for over 30 years and remember people getting fired for using blocking functions such as delay loops, sleep, pause, etc instead of interrupts/message queues. Nice to see you re-introducing this concept to the next generation.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
We had this discussion in my video about MicroPython. I predict that high level languages will take over in the next few years for prototype projects where programmer's time is much more expensive than processing time. RTOS are still a very good thing and for me also a "higher level" language where the programmer does not control everything. And you are right: They allow a very different programming style.
@Алимпиец
@Алимпиец Жыл бұрын
Also, it's good for many hobbyists who just create fun trash stuff like me. In such projects, speed often doesn't matter, but the fun and convenient process of development does. I used to program Arduino a lot, but RP Pico is a lot more fun for me.
@Arrowtake
@Arrowtake 3 жыл бұрын
Thanks for digging up all this info. Good prep video while waiting my first picos to arrive any day.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad the content is useful for you!
@zuimelanieforno4654
@zuimelanieforno4654 3 жыл бұрын
To all who want a Reset-Button, I used this technique. I have a Pushbutton connected to the RPi-Pico Pins: PIN No. 30 (RUN) And PIN 28 (GND) -> Any GND will do It works like Charm, no plugin/-out. In Thonny You need only to Press the "STOP"-Button, to notify Thonny about a Reset.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. I also added a 5mm button across the two pins. Concerning Thonny: Usually this works, but for the moment it does not work if you use the 2 core scenarios. and I assume when people start to use C++ and the Arduino IDE they will create some deadlocks...
@wjn777
@wjn777 3 жыл бұрын
Thanks, very useful video. I especially like the footage of your sleepy lab assistant at the end
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I will tell her ;-)
@Average_Geo
@Average_Geo 3 жыл бұрын
Now, to get a Pi Pico so I can officially be in the 99% group by experimenting with the information from this video. I am shocked I haven't picked up 5-10 of them already! Great video, well documented and explained. I will reference it when the Pi Pico arrives.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I hope it will help to get a quick start. Especially the variable thing took me quite some time to discover.
@klif_n
@klif_n 3 жыл бұрын
Thanks for this, it's exactly what I happened to be looking for. I was trying to find something to do with the 5 Pico's I impulse purchased. Now with some Hall effect sensors and this new found task and interrupt info I think I'm off to the races. Cheers! Oh and the cat snoring at the end is just... awww.. :)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Enjoy your project and the new "feeling" of programming MicroPython...
@antonionava7274
@antonionava7274 3 жыл бұрын
Hey Andreas I love your videos, always with interesting information, and thanks for add spanish subtitles, It allows me to share your videos with my studends. Greetings from México
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I do not add the Spanish CCs. It is Luciana, an Argentinean student. I only provide the small fee ;-)
@markj7572
@markj7572 3 жыл бұрын
Agreed, a reset button is important on any board that will go through many development cycles. It's not just about resetting when it locks up, but also about watching what happens when it is powered up. Yes, there are ways of doing it by button, but 5p extra for a reset button is something I'd happily pay. That said, leave the button off but put pads on the board for me to add it.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I agree. Pads would have been a good alternative. I solved the problem differently (in another video)
@javier8246
@javier8246 3 жыл бұрын
Como siempre, señor Andreas, un vídeo muy bueno y muy buena su explicación. Aún no he podido conseguir la placa Pico pero después de ver este vídeo, tengo aún más ganas!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
¡Estoy seguro de que recibirás uno pronto!
@avejst
@avejst 3 жыл бұрын
Great job with the video as always 👍 Thanks for sharing your knowledge to all of us 👍😊
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
My pleasure!
@JeremyChone
@JeremyChone 2 жыл бұрын
Such a nice, informative, and well-produced video. Thanks a lot.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Glad you liked it!
@stephensmith1470
@stephensmith1470 3 жыл бұрын
Great! You've answered 2 of my main pressing questions which are the use of 2 cores and interrupt response time. Disappointed with Micropython slow interrupt response time. I think I'll will wait for the official Arduino IDE support. Hopefully the existing libraries will work as well. Planning to port my application to Pi Pico for more processing power. Currently running on Arduino Uno.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I doubt that all libraries will work from day one on. It took quite a while to get them ready for the ESP8266 or ESP32.
@shadow7037932
@shadow7037932 3 жыл бұрын
Totally agree with you on the reset button lol. Ran in to that exact same issue when playing around with the cores.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I added now one myself ;-)
@theworldisbetternow
@theworldisbetternow 3 жыл бұрын
Twist: now that we have watched the video as all pico users do, we are no more in the 99% club. Because Andreas educated *all* pico users. The 99% already know about interrupts, two cores etc 😎 Hurry up if you want to be in the 1%-range (for a second).
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Interesting point of view. Maybe a topic for a PhD work for a a budding epidemiologist ;-)
@y2ksw1
@y2ksw1 3 жыл бұрын
The weekend I was looking into C++ programming of the Pico and found your example interesting for quick testing a project. C++ is a total overkill for 99% of most projects. But industrial applications may be time critical.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I think, MicroPython is great for prototyping. Creating teh two core synchronization example in C++ is much harder, for example.
@ftfarias15
@ftfarias15 3 жыл бұрын
Excellent video and loved to see you cat in the end!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you very much!
@janseiffert7799
@janseiffert7799 3 жыл бұрын
Thanks for your video! I'm also very interested in the PIO speed, but have no Pico to measure myself. I guess you could build a simple pin-> pin latency test the following way: - Set up a DMA channel to copy the same byte into the IO-space to change the pin (there are different bit manipulation functions at offsets, like set, reset, toggle) - use the PIO to kick the DMA - Maybe you need a second DMA channel or DMA channel chaining to keep the whole engine running
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I wait for the results of the challenge. If this PIO is simple to use I expected many contestants. So far I got none :-(
@jbilander8886
@jbilander8886 3 жыл бұрын
Jan, if you use PIO for example to drive GPIO pins to just generate a square wave the max frequency would be clk_sys/2 (62.5 MHz) since it would take 2 cycles to complete the code below: .wrap_target set pins 1 set pins 0 .wrap
@haves_
@haves_ 3 жыл бұрын
waiting for your RTOS videos!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Coming soon!
@maximus6884
@maximus6884 2 жыл бұрын
This is a great video. You make it sound so simple but I believe you did a lot of hard work to get it done to this level. On a side note, I think that its best we call release() function after accuire() just to release the batton. Just an idea.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Glad it was helpful! Indeed, most of my videos need some research!
@rickhunt3183
@rickhunt3183 3 жыл бұрын
This is a great presentation. Lots of good information to use when I can get my hands on a supply of these boards. The only ones currently available in the US are from scalpers charging 3 times or more than companies taking back orders. Perhaps I'll just have to suck it up and wait until March 17 when legitimate orders are fulfilled at a reasonable price. I think there will be a version at some point with WIFI and Blue Tooth to compete with the Esp-32 if the price is comparable. I hope you have a great day.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
We will see if they are able to add WiFi. This seems not so easy...
@rickhunt3183
@rickhunt3183 3 жыл бұрын
@@AndreasSpiess I would settle for LoRa over wifi. It would be nice to read sensor data over a distance. In fact I think LoRa would be more useful anyway.
@kosmasraptis8374
@kosmasraptis8374 2 жыл бұрын
Well, a WiFi version just came out 2 days ago, not sure if they will make a Bluetooth one too
@rickhunt3183
@rickhunt3183 2 жыл бұрын
@@kosmasraptis8374 I saw that it was available, unfortunately they will only let you buy 1 and I want 10. I guess I can suck it up and buy just one. I just hate to pay huge shipping charges on something that cost 6 dollars..I already have a project in mind so I might as well buy the one before they are all gone. The device is technically bluetooth ready but it's not currently activated.
@kosmasraptis8374
@kosmasraptis8374 2 жыл бұрын
@@rickhunt3183 Perhaps you can get a Bluetooth shield for that
@josemartinzamorafernandez5264
@josemartinzamorafernandez5264 2 жыл бұрын
Excellent, very well explained. You have another subscriber.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Welcome aboard the channel!
@BensWorkshop
@BensWorkshop 3 жыл бұрын
Thank you for alerting me to the Pi Pico. What a useful device for mains powered motor control. I can have one core monitor the mains and set some variables whilst the other one manages the amount of chop the motor gets. Also £4 for an MCU on a board is really cheap.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are welcome!
@eFeXuy
@eFeXuy 3 жыл бұрын
The reset pin is the pin 30, is labeled "run", pull it down for reset.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thanks for the tip. I already have my reset pin. But a beginner?
@eFeXuy
@eFeXuy 3 жыл бұрын
@@AndreasSpiess It is counter intuitive. It also works for accesing the mass storage mode without disconnecting the USB, assert RUN low, hold the button, release RUN. I don't feel like a lot of people know this, would you put a short video about it?
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Did you try with two cores?
@eFeXuy
@eFeXuy 3 жыл бұрын
@@AndreasSpiess I did now, the whole thing resets. Edit: according to RP2040's datasheet: "The chip-level reset subsystem resets the whole chip, placing it in a default state. This happens at initial power-on, during a power supply brown-out event or when the chip’s RUN pin is taken low. "
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I tried it too now. I did not see a difference if I pressed the reset together with the boot button or not. It always resets.
@PhG1961
@PhG1961 3 жыл бұрын
Excellent comparison. I guess I ordered my Pico's a little too soon. The reset button new release is defenately the next step ! Thnxs for this entertaining sunday morning !
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I added a small one myself...
@PhG1961
@PhG1961 3 жыл бұрын
@@AndreasSpiess Indeed a valueble alternative!
@mrtnsnp
@mrtnsnp 3 жыл бұрын
You can add your own reset button on the 'run' pin (pin #30 on the Pico). If that pin is connected to ground the Pico will reset. This will be even more needed once you start with C/C++ on the Pico, as updating the code will require a mount/upload/unmount cycle.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. I solved the issue with a tiny button. I still think it should not be the task of the buyer...
@mrtnsnp
@mrtnsnp 3 жыл бұрын
@@AndreasSpiess Agreed, but a at least we have a workaround.
@tonysfun
@tonysfun 3 жыл бұрын
Just fantastic again Andreas! Thank you!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are welcome!
@dieSpinnt
@dieSpinnt 3 жыл бұрын
Thanks for the video, Andreas:) PIN30 RUN -> RUN is the RP2040 enable pin, and has an internal (on-chip) pull-up resistor to 3.3V of about ~50K Ohms. To reset RP2040, short this pin low. 2021, Raspberry Pi Pico Datasheet, page 7,8. ... RTFD!;)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. See my newest video
@tonygoodhew9536
@tonygoodhew9536 3 жыл бұрын
Brilliant, just what I wanted to know but could not work out from the documentation or the Forum. Thank you.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad it helped
@pedro_8240
@pedro_8240 3 жыл бұрын
Gratuitous comment to boost engagement. Also, snoring cats are cute.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you!
@Bensinn86
@Bensinn86 3 жыл бұрын
Thank you for sharing this global variable 'trick'. That "local variable referenced before assignment" error almost drove me crazy :D
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Me too ;-)
@arnauddurand127
@arnauddurand127 3 жыл бұрын
A video about uasyncio/asyncio for (single core) multitasking would also be useful to many users in my opinion.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Is it available on Micropython?
@arnauddurand127
@arnauddurand127 3 жыл бұрын
@@AndreasSpiess Yes. :-D Have a look at the uasyncio module.
@mahtin
@mahtin 3 жыл бұрын
@@AndreasSpiess yes, I’ve got code working cleanly using uasyncio on the Pico. I’m now, after watching this video, very interested in adding in _threads and seeing how they all work together. Fun times! (PS: great video).
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I will have a look at it.
@РоманОвчаров-р7э
@РоманОвчаров-р7э 3 жыл бұрын
Thanks! a lot has now become clear.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Great to hear!
@electronic7979
@electronic7979 3 жыл бұрын
Helpful information
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you!
@MCChubbyUnicorn
@MCChubbyUnicorn 2 жыл бұрын
This is super helpful. I might use C++ instead for my project if the SNES clock/latch pin is too fast for my project. I hope so, because then i might be able to get away with using 0 shift registers instead of 2 per emulated controller
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Glad you found the content useful!
@frankn5216
@frankn5216 3 жыл бұрын
Loved your video, keep it coming!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you! Will do!
@waylandsmith
@waylandsmith 2 жыл бұрын
Hey, just as a head's up to people using the ESP-32 and Micropython, while many versions of the ESP-32 are dual core, Micropython only runs on one of them and reserves the other to perform peripheral tasks such as managing wifi without it interrupting the main micropython core. This is true even if you are creating multiple threads! So be aware that even though you're getting true preemptive multitasking in multiple threads, all of those threads still run on a single core. For evidence, look in the ports/esp32/mpthreadport.c and you'll see that all tasks/threads are bound to the same MP_TASK_COREID constant.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Thank you for the information!
@HannesMrg
@HannesMrg 3 жыл бұрын
I made myself a cable with a reset button. Works for every mcu =)
@bern047
@bern047 3 жыл бұрын
at least we have some innovative people here, I wish more engineers are like you and well done, problems can be solved easily with a bit of innovation instead of complaining
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I soldered a fitting button across the two pins. But is this my task in 2021?
@bern047
@bern047 3 жыл бұрын
@@AndreasSpiess A great innovative and engineering task accomplished, well done : )
@richardlighthouse5328
@richardlighthouse5328 3 жыл бұрын
Can't wait for raspberry pi pico Wireless version
@christiaang
@christiaang 3 жыл бұрын
Keep an eye on the Arduino Nano RP2040 Connect.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I do not think if will appear soon. What we will see is a Pico and an ESP32 for WiFi from Arduino.
@christiaang
@christiaang 3 жыл бұрын
@@AndreasSpiess maybe an topic for the next video. Using an Esp01 as wifi addon for the Pico...
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I wait for the code for the -C3...
@carlosmontez
@carlosmontez 2 жыл бұрын
Fantastic videos!
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Thank you!
@simoncollins6650
@simoncollins6650 3 жыл бұрын
Great video and you get a nice cat mindful moment as well😀
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you for watching till the end ;-)
@Новости-з3й
@Новости-з3й 2 жыл бұрын
Where in the documentation did you found that multithreading is implemented using multicore ? The MicroPython documentation regarding threads is quite minimalist and point to the CPython page, which does not speak about cores... Beside MicroPython also run on single core platform... Thanks
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
I do not remember where I read about it :-(
@turbotoblast4
@turbotoblast4 3 жыл бұрын
Wow, this video is great, I'll check out your other ones.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad you liked it!
@wayne6220
@wayne6220 3 жыл бұрын
Good video as usual. Thank you so much.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
My pleasure!
@gijsmos1204
@gijsmos1204 3 жыл бұрын
This implementation of the _thread module is specific for the RP2040. In the ESP32 it works differently. The second core is not used there. Then you assume that automatic memory locking is implemented between threads. However, the documentation states explicitly there is no GIL (Global Interpreter Lock) used. Which means that bad things can happen with shared access to objects. It is probably safe to read objects written by the other thread, but mutual writes, deletes etc might give surprises. For interrupts there may be restrictions too. Documentation is a bit sparse in that area. On ESP32 you typically use micropython.schedule() to get out of interrupt mode and continue processing in normal mode. Still need to check how they did this for the rp2 port.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I also do not have more info, but assumed the Pi foundation knows what they are doing by using this example.
@jaskaranbindra9939
@jaskaranbindra9939 2 жыл бұрын
You earned a subscriber.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Welcome aboard the channel!
@kroojohn
@kroojohn 3 жыл бұрын
Another Great Video :) thank you. There are definitely a lot to learn from this short video :)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad it was helpful!
@kroojohn
@kroojohn 3 жыл бұрын
@@AndreasSpiess by the way, have you had any luck yet in using Pico with ESP-01 Module?
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I did not try. But it should work if you load the "AT firmware" on the ESP-01
@kroojohn
@kroojohn 3 жыл бұрын
@@AndreasSpiess Just tried it last night, works well.. but definitely need "AT " firmware as you said. Luckily that is standard factory firmware on esp01s .. :)
@TheEmbeddedHobbyist
@TheEmbeddedHobbyist 3 жыл бұрын
Your professional approach just made the two cores act like a single core. The problem with locks is called deadlock, where the key or keys are not released and the thread process dies. If you want the software to safe all passing of variables needs to be atomic, as in a single atomic particle. If you have to read, modify and write to global variable you would place a lock around it so three actions become the same as one atomic action. So the variable cant be changed by another thread while its being worked on. With deadlocks the reset may be your only friend.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right. We will talk about that in my RTOS video. I think, here, the firmware takes care of the blocking. But still, I needed a reset button from time-to-time...
@TheEmbeddedHobbyist
@TheEmbeddedHobbyist 3 жыл бұрын
@@AndreasSpiess if you deadlock without an RTOS your are dead in the water. only a reset will get you going.
@wrcoyle2024
@wrcoyle2024 2 жыл бұрын
on the pico pi , ctrl D will perform a soft reboot. and if you place a button between Ground and Run pin, it works to program like on the esp8266 and the 32.
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
You are right. I added this button in one of ma next videos ;-)
@carlo_geiss
@carlo_geiss 3 жыл бұрын
sehr schoen gemacht .... und die Katze hilft ... danke
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Sie hilft nicht sehr und verdeckt den halben Bildschirm... Aber sie gehört dazu.
@jamesleetrigg
@jamesleetrigg 3 жыл бұрын
Two 32-bit core running at 1330 x faster than the Apollo 15bit guidance computer. 1960s Apollo engineer: what are you using this awesome power for? Maker: I make LED go on and off! Apollo engineer: wtf 🙄
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Exactly. But the engineer also started small, I assume ;-)
@MatheusFP104
@MatheusFP104 3 жыл бұрын
Nice video! Waiting for someone talks about PIO!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You find alredy people demonstrating some example from the Pi foundation. For the moment I have no example where I could use it.
@mrksaccount123
@mrksaccount123 3 жыл бұрын
Thank you sir! You have now helped me reach the 1%
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Excellent!
@nerdwerx2292
@nerdwerx2292 3 жыл бұрын
Great stuff!That cat is giving me a good idea though, sleeping sounds great!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Definitively we all can learn that from her ;-)
@PH2LB
@PH2LB 3 жыл бұрын
informative video but have to give 2 comments. 1. The absence of the reset button can be easily covert by a external button especially when you work on a breadboard. It may be needed during development but once you past that stage its no use any more. 2. Comparing interrupt service handling speed between python and c++ is like comparing the 0-100 km/h between a Volvo V70 and a muscle car. They both are cars with combustion engines but the V70, although might be more comfortable for most people, isn't up for that job. Phyton != Made for speed because it's interpreted . Try writing the same code with in the Pico C/C++ sdk and compare again. My guess is that they will be in the same range.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right with c++. A commenter already did it.
@PH2LB
@PH2LB 3 жыл бұрын
@@AndreasSpiess Looking at the video I tried to look at the comments but my phone didn't want to expand the comment section. Later I found out that it's was a double comment. Sorry for that 🤭
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
No problem!
@stanhuang689
@stanhuang689 3 жыл бұрын
That's very useful, thanks.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Glad you think so!
@dirkvandenberge5352
@dirkvandenberge5352 3 жыл бұрын
Andreas, I am confused about your example for ‘synchronising’ the two cores. It merely synchronises the stop and start of each core so that they never run together. How useful can that be? What’s the advantage compared to a single core that runs tasks one-by-one?Two tips for a next video: hardware debugging using picoprobe (C, C++) and programming the PIO! The PIO is what sets the RP2040 apart from the rest... and it is not too hard to write short programs for it. Correctly used, the PIO can dramatically increase the speed of the processor. The pin side set feature in fact effectively allows it to execute two instructions per cycle!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
1. Using two cores creates a lot of hassle compared to only one core. Two cores are faster than one core of the same type. 2. I still wait for a useful application for the PIO. This is why I made the challenge. VGA or HDMI on a MCU with this small RAM is nothing for me 3. I will start with C++ when it is Arduino compatible. Right now it is too much a hassle for me :-(
@dirkvandenberge5352
@dirkvandenberge5352 3 жыл бұрын
@@AndreasSpiess Andreas: 1. If speed is the target than the easiest and most effective is certainly just use a faster clock. But this will not necessarily improve precision of timing, which is not rarely the reason why a controller (without os) in used instead of a microprocessor like e.g. the raspberry pi zero. The second core, and even more the second core attending the PIO, should excel in that! 2. I think the demo with the PIO producing HDMI signals is meant mainly as a demonstration of (1). Very impressive that this can be done with a non-specialised microcontroller of a few €, but if you really need HDMI, it is quite likely you also need/want an os and then you’re better off with a microprocessor. I see more applications for the PIO in accommodating serial io that is not supported (or not in enough numbers) in hardware (like eg CAN controller, Serial RGB Led) or when multiple fast precisely timed outputs are needed and for which otherwise a FPGA would be needed. I am thinking of multiple coordinated motor controls like eg. 3D printers, drones and the like. These work with low-power processors as well, but when precision and speed need to improve this won’t work anymore and a processor like the RP2040 is, in my opinion, a fantastic fit. 3. Here I fully agree! It is an incredible hassle to even setup a build and hardware debugging environment for now.
@danielegger6460
@danielegger6460 3 жыл бұрын
What is the issue with the RESET? Since you're already connecting external components to it, you might as well add a tactile button between GND and pin 30 (confusingly called RUN) to reset the chip.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I know and I did it, of course. But is this my job in 2021?
@danielegger6460
@danielegger6460 3 жыл бұрын
@@AndreasSpiess That wasn't quite clear from the video or I missed it. I can totally understand why they haven't added one; if you're a maker and hooking up external components on a breadboard anyway you might as well add a reset button (the pullup is already there) if you need it but if you're integrating the board on your own circuits you may not have a need for it or it could potentially be in the way if you don't want users to fool around with it (I certainly have removed reset buttons in the past). Either way I think it is fine as is and just wasn't sure whether you knew about the exposed NRST pad...
@RoyvanLierop
@RoyvanLierop 3 жыл бұрын
Did someone eventually make the pulse counter PIO? I want to read the LMT01 digital temperature sensor but the interrupts are too slow. I also hard-wired it to GP22 so that's a PWM-A pin. Otherwise I could have used it as a PWM clock input pin. My only hope is PIO at this point.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
I do not know. Yes, 88kHz is probably quite fast for an interrupt. Should be possible with the PIO.
@x_CrossHair_x
@x_CrossHair_x 3 ай бұрын
Andreas👍 Dishka👍👍👍👍👍
@CogGrinder
@CogGrinder 3 жыл бұрын
Great video and extra adorable snoozing Dishka!
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
Thank you for staying till the end ;-)
@Taki7o7
@Taki7o7 2 жыл бұрын
Your accent does not sound swiss, but something undefined :D Thanks for this Video tho, subbed
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
Welcome aboard the channel!
@jeffm2787
@jeffm2787 3 жыл бұрын
Clocking an ASYNC counter works best for the frequency counters. PIC's for example have nice async counters. I've created counters that handle hundreds of megahertz with pre counters and the async counters with no visible jitter. That was ages ago.
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
You are right and I assume the Pico also has counters. I just needed a simple and understandable scenario for demonstration.
@gaius100bc
@gaius100bc 2 жыл бұрын
reset/switch button on the usb cable it self - is the way forward, even if it's not the way we are used to
@AndreasSpiess
@AndreasSpiess 2 жыл бұрын
In the next video I showed how I solved the problem...
@StevenKroeger
@StevenKroeger 3 жыл бұрын
Nice ...you have the Rasta colors on your lights :)
@AndreasSpiess
@AndreasSpiess 3 жыл бұрын
:-)
In-depth: Raspberry Pi Pico's PIO - programmable I/O!
17:19
stacksmashing
Рет қаралды 140 М.
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 53 МЛН
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН
How to use Timers on the RPi PICO
17:05
Making Stuff with Chris DeHut
Рет қаралды 17 М.
Raspberry Pi  Pico PIO  - 8 Little Processors You Can Program
31:55
Gary Explains
Рет қаралды 94 М.
#370 Raspberry Pi Pico vs ESP32 (-S2) and STM32 Blackpill
15:53
Andreas Spiess
Рет қаралды 392 М.
Using PICO Interrupts
25:15
Making Stuff with Chris DeHut
Рет қаралды 20 М.
Turn your Pico into a 400MHz 24 Channel Logic Analyser
25:26
Happy Little Diodes
Рет қаралды 59 М.