This post was originally published on Predictable Designs, the original article can be found here
If you are designing an electronic product, chances are that it will have a microcontroller (MCU) embedded into it.
In order to control, process, easily change parameters of the design on demand and keep the design tidy and relatively low complexity, it is unpractical to approach a solution using purely discrete analogue and digital components. For this reason, a natural choice is the use of a microcontroller. A microcontroller is basically a computer shrunk to a chip. It contains a CPU, memory, I/O pins and peripherals, all in a single package.