Bootlin course materials are amazing IMO. Also using the book : Embedded Linux driver development is a pretty good way to start writing device drivers.
have you considered the stm32 family? it's far more popular with wide applicability. your effort is stretched further...
also i'd imagine it's easier to find good resources to learn it. i used the warren gay's book [https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238 ] which used parts easy to source.
​
now to be reaching into other micros like the above, i plan on picking on rust programming. it's ecosystem has a generalised framework for all architectures! again more bang for your effort.
I've got a book suggestion for you. There's probably some better ones out there but it's the one I happened to read recently.
I think it's exactly what you're talking about doing and does a decent job of holding your hand to get you started while still showing you exactly what's going on.
The way things are explained in the book easily translates to using other AVR chips.
If you like Maths and Circuits, look into embedded systems. Depending on how deep you want to go, you can work with circuits, maths (especially embedded is getting popular in AI, Digital Signal Processing etc etc). A lot of what you do here is low level and you dont always have the luxury of nice IDEs for e.g
I switched from a software engineer to embedded systems. I am currently doing my masters in it, I didn't enjoy software engineering. I always enjoyed tinkering with electronics as a kid, so this is something I really enjoy.
I do find it a bit more challenging, because my adhd makes it hard for me to read, a lot of embedded is going through pages and pages of datasheet, so that is kind of a bummer.
I would suggest you get a starter arduino kit or what I did was get this book: AVR Programming: Learning to Write Software for Hardware and an AVR programming kit, there are plenty of them, get a beginner one and then have a go at it, see if you enjoy it.
Sounds like you might like:
https://www.amazon.co.uk/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238
But it does expect you are comfortable with the GNU/Linux ways of gcc and Makefiles. Though I recommend you get so anyway.
i was figuring things my self. if setting up the make / linker you could just use PlatfromIO. before moving on to the native builds.
remember there is no start guide for zyphr. you need to study linux device drivers first!!
https://www.amazon.com.au/Linux-Driver-Development-Embedded-Processors/dp/1729321828
Since you are not using the arduino libraries I highly recommend this book. I use it for reference all these time
AVR Programming: Learning to Write Software for Hardware (Make: Technology on Your Time) https://www.amazon.com/dp/1449355781/ref=cm_sw_r_apan_glt_fabc_2V54V80BPRGZ8J37F2PS
From one Noob to another.. If you haven't already, pick up a good reference book, or a good book for beginners. Its helped me tremendously. I too am familiar with some electronics components, can solder, etc. I know what I want to do with the hardware, but dont know how to write it. Programming Arduino by Simon Monk 2nd edition is great for noobs. ISBN 978-1-25-964163-3. https://www.amazon.com/dp/1259641635/ref=cm_sw_r_cp_awdb_imm_ADEEJJ27YEF8VBH504D2
https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238
Programming microcontrollers is kind of a big topic, I'd go with books over tutorials.
Yes, an Arduino is good for a very basic introduction. There is a lot of hate on them which has some points in that people make big projects with Arduino and think they understand more than they do.
Do you know any C/C++ already?
I would get this book with the associated board: https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238/ref=sr_1_3?dchild=1&keywords=mastering+stm32&qid=1608692716&sr=8-3
Either one will work for this encoder project. Logic level is most important when you're interfacing with other ICs (integrated circuits). Logic level is basically an indication of what voltages are considered to be "high" or "low" in a digital circuit. If you connect a 5v arduino to a 3.3V IC the IC may be damaged by the higher voltage, whereas if you connect a 3.3V arduino to a 5v IC the arduino output voltage may not be high enough to be considered high by the IC.
In the case of the encoder there's no such risk.
I first started learning about electronics and arduino on instructables.com. If you'd like a book recommendation this was my first Arduino book: https://www.amazon.com/dp/1449363334/ref=cm_sw_r_cp_awdb_imm_t1_vcY2Fb52DQ927?_encoding=UTF8&psc=1
And this one focuses more on the programming side: https://www.amazon.com/dp/1259641635/ref=cm_sw_r_cp_awdb_imm_t1_q6X2FbYRTE1SA?_encoding=UTF8&psc=1
I’m not current with the specific kits anymore but I would start with these 3 things... 1. An arduino. I’d get one with built in WIFI. The Nano BLE sense is a good option has it also has a few onboard sensors 2. A good book. I started with this one 8 years ago. It was really fun and easy to progress thru the chapters and by the time you finish it you’ll have knowledge and experience with a bunch of common sensors and actuators and feel like you can build anything. Getting Started with Arduino: The Open Source Electronics Prototyping Platform (Make) https://www.amazon.com/dp/1449363334/ref=cm_sw_r_cp_api_glc_i_6UmZFbZ9RH290 3. A kit with more hardware like a variety of resistors, sensors, actuators, little breadboards, and maybe some wire. You can buy this all separately and eventually you will buy separate parts based on the projects you pursue. So I’d get one of the smaller kits ($40-60). 4. Lastly, there’s a ton of free example code everywhere on the net. The official Arduino forums are a good first stop. As a beginner, your questions have already been asked and answered. When you pick up a new sensor to try, you can usually find nice small working examples that you can literally cut and paste into your Arduino IDE to run with minimal modification making learn g very fast. But read the book above and don’t skip chapters as it’ll give a foundation on the fundamentals like digital pins bs analog pins, PWM, etc.
Have fun!
have you given this book a read? thoughts? from a description, it seems like it's fairly practical as in it's got examples to actually interface with different HW which I like the most about it
When you say old, you're referring to the APIs in particular? I'm a bit puzzled as to whether I should still go for it or instead get another book that focuses on a relatively newer kernel like this one perhaps?
So basically you're suggesting not to delve into the API implementation since they have been changed? I was thinking of just getting straight to this book
Might as well get a book on a relatively newer kernel -- something like this perhaps...
It's not just the code but I wanna get some understanding of the theory as well which I feel I'd find better in a book.
How does this look? Seems to have practical examples plus theory
The link you gave just above my comment.
I am considering purchasing this book: https://www.amazon.co.uk/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238 .
I would love to learn all about the blue pill, including running FreeRTOS and using it as an interface for serial communications. I'm also hoping this will help me learn how to find a genuine blue pill!!
What do others think of this book? Any others to consider?
This books was pretty helpful for me: https://www.amazon.com/Getting-Started-Arduino-Electronics-Prototyping/dp/1449363334/
Once you have output (controlling the LED blinking patterns), you can move to input. Most kits come with a photoresistor (a light sensor); you can use that to turn on the light when it's dark.
Once you have input and output, you have everything you need to make a sentient robot with a dream of becoming the world's best ballet dancer. He'll lacks grace, but he'll makes up for it with passion.
Those projects should be enough to keep you busy for awhile.
Arduino is a great space to get some experience coding because the programs are generally short and self-contained. Also, there’s a ton of tutorials and examples as well as active forums where your question has probably already been asked or can be answered within minutes. Plus you already have some understanding of hardware (which is not a requirement when you first start with Arduino).
The only question is, what are you waiting for? ;)
Getting Started With Arduino is a great book with short projects that introduce you to the code.
For Arduino, I have read only one book, i.e. [Jeremy Blum](u/sciguy14)'s "Exploring Arduino" (Amazon Link) Alongside you can also watch his videos which demonstrate the making and working of many circuits.
For electronics in general, there's a book called "Design and Technology" by James Garrat. It has a chapter on electronics. I don't think that book's available right now (at least not in my country) as it's quite old. You can still find a PDF online or maybe find it in a library.
There's another book which has a great theme based approach for learning. It's called "The Maker's Guide to the Zombie Apocalypse: Defend Your Base with Simple Circuits, Arduino, and Raspberry Pi" (Amazon Link) It's by by Simon Monk. But I think you can keep that gift for Halloween.
I'm in a similar boat, VSCode + PlatformIO seems to be the best option that I've found.
Also this book is a good place to start, although they're focusing on the Blue Pill instead of a nucleo board - https://www.amazon.com/Beginning-STM32-Developing-FreeRTOS-libopencm3/dp/1484236238
the 328p is a great chip to start out with... a lot of tutorials and guides out there. Also they have very good data sheets on everything. I suggest this book if you want a good place to start
I already use Linux Mint on a VM for general use. Would you suggest something like a Linux From Scratch or Gentoo setup to learn more about these things?
Any particular book/resource recommendation? Should I start with the arduino libraries (which I know are training wheels in the professional world) or jump straight to bare metal?
I'm looking at these:
or
The one book I would recommend for any people getting into Arduino would be Simon Monk's Programming Arduino: Getting Started with Sketches.
For your books, I'd start with the jumpstarting Arduino 101. Skip the breadboard one - just watch a 5min youtube video to learn how it works.
I was in a similar situation a little while ago, and I decided to learn to program AVRs directly in C. I bought this book, and I think it's a really good resource.
On a Mac, you can use any text editor you like, then flash the code to the AVR from the terminal.
AVRs are really cheap by the way! Here on Digikey, you can get them for $2 each.
https://www.digikey.com/product-detail/en/microchip-technology/ATMEGA328-PU/ATMEGA328-PU-ND/2271026
Thanks very much. Do you know about this book? I have found it really useful. https://www.amazon.com/AVR-Programming-Learning-Software-Hardware/dp/1449355781/ref=sr_1_1?ie=UTF8&qid=1500993136&sr=8-1&keywords=AVR+programming
I posted this a few days ago:
I recommend Programming Arduino: Getting Started with Sketches by Simon Monk. He also wrote a sequel to it called Programming Arduino: Next Steps. Both of these books focus on the coding aspect of arduino.
Jeremy Blum has a book called "Exploring Arduino" that I also recommend. This is more general arduino learning and doesn't go as in depth into coding as Simon Monk's books do. He also has a youtube series that teaches Arduino.
I agree, for transitioning from Arduino AVR makes a lot of sense. AVR is pretty nice to work with and will teach you a lot of stuff that is useful on other platforms while keeping complexity down. AVR studio is nice for transitioning because it lets you easily include Arduino libraries as well.
Also, I highly recommend the Make book on AVR. It's a very good introduction and one of the few programming books I would actually recommend buying.