- Silicon Labs Community
- Welcome and Announcements
- Silicon Labs Knowledge Base
- 8-bit MCU
- 32-bit MCU
- Bluetooth / Wi-Fi
- Other Products Category
- Optical/RH/Temp Sensor
- Other Products
- Hardware and Software Tools
- Simplicity Studio and Software
- General Discussions and Suggestions
- Chinese Forum
- Software Libraries
- Development Kits
- Reference Designs
- Third Party Tools
- White Papers
- Official Blog of Silicon Labs
- Chinese Blog
07-21-2014 03:59 PM
Out of the endless sea of microcontroller tutorials, books, resources, etc, could someone recommend some "more advanced" sources to learn actual microcontroller applications?
A bit of explanation: Imagine you've already followed all the "recommended tutorials", etc, you perfectly know how to blink a led in 15 different ways, you understand volatile, can generate PWM, can use peripherals via their ISRs, know what the different power modes do, can communicate via spi/uart/i2c - all partly based on examples found with the microcontroller, but all with proper understanding etc.
Where to go from there? It looks like a huge step from the "basics" towards a proper application, no? How to organize the application, how to write drivers for accelerometers/memory/this&that so that they work but don't get in the way. How to communicate with devices that require "special" protocol?
I'm looking for a book/tutorial/website where the blinking is simply skipped. Also, I'm guessing on a bit higher level of abstraction which I'm looking for the actual microcontroller architecture might be of secondary importance, or am I wrong?
Sure, looking at existing projects might give some insight, but the architectural choices there are often hidden... FOr example the original sources of the Chronos watch are great, but quite difficult to digest without a theoretical primer.
Any help? Thanks in advance!
07-21-2014 05:19 PM
I can't help you with your actual query, but I note a contraiction in your post
how to write drivers for ....
a bit higher level of abstraction ...
these two do not jive
07-26-2014 04:58 AM
I guess from that point on you just have to start working on a real project. You can always come back and ask questions. You can also show the code and get feedback. Opening a community project might be the right way to go.
One thing you probably need to know is how to build state machines in your software. And something like round-robin scheduling.
07-28-2014 12:21 PM
You can only learn so much about embedded systems and microcontrollers from a book and tutorials.
After some basic understanding, the only way you really learn is just making something or building something. Start building toys, gadgets, remote controls, and robots. Build an LED display panel, then add some wireless controls, then figure out how to add a cap-sense touch panel, a spinning gizmo, and speaker with sound effects.
What I'm getting at is that you just need to build something to learn how to build these applications. Start with something easy like blinking then LED, then expand that to an 16x16 LED array, add peripherals, and so on.
This is what makes embedded so much fun. You just need to come up with the ideas of what to make.
In college, I used to use sparkfun.com for a lot of my project ideas. There's many similar places like adafruit and instructables today.
10-18-2017 01:01 PM
Write you own co-operative multitasking OS.
Split up routines to do things in snippets as state machines as to be nice in sharing,
that goes thru a event-machine in main.c
Battery powered device, sleep in EM2 as much as possible,
You want 1/2sec timeout etc., sleep, don't poll in a loop.
10-18-2017 02:17 PM
besides my own creations, I have been dragged into many projects.
they have all been diffrent and a few things I have found adding to the 'like' has been:
. a well organized file tree
. a coding standard maintained throughout (a standard is more important than what the standard is)
. boilerplate code ('advanced coding' is unreadable)
. use of stateemachines instead of 'stacked' if's