Wat is een microcontroller?

We kennen allemaal de computer, een toestel voor allerlei soorten gegevensverwerking. Je kunt er een tekst mee maken door hem als tekstverwerker te gebruiken, maar evengoed kun je hem als rekenmachine gebruiken wanneer je een rekenbladtoepassing start. Zelfs foto- en videobewerking zijn met dit ene toestel mogelijk. Het is dus een universeel toestel, ontwikkeld om gebruikt te worden met de software die er op geïnstalleerd staat.

Een microcontroller is vergelijkbaar met een computer. Het bevat veel dezelfde onderdelen zoals een CPU, geheugen of ALU, maar de opzet van een microcontroller is anders. Een microcontroller is een “dedicated” toestel. Het is ontworpen en wordt geprogrammeerd om één specifieke taak uit te voeren. Dit kan bijvoorbeeld de sturing van een wasmachine of een magnetron zijn, maar kan ook een temperatuurregeling in een 3D printer of het anti-blokkeer systeem van een auto zijn.

Doordat de microcontroller voor één toepassing bedoeld is, zal hij veel minder “resources” zoals rekenkracht, geheugen en opslag nodig hebben in vergelijking met een laptop of PC. Meestal zal er zelfs maar een heel beperkte HMI (human-machine interface) aanwezig zijn. De interactie met de gebruiker beperkt zich dikwijls tot enkele leds die de status aangeven. Scherm en toetsenbord zullen dus dikwijls niet in het systeem aanwezig zijn.

Er bestaan honderden verschillende families van microcontrollers, die elk uit tientallen leden bestaan. Eén van de uitdagingen bij het ontwerpen van een microcontrollersturing is bijvoorbeeld de juiste keuze van controller. Die keuze kan slaan op rekenkracht, beschikbaar geheugen, snelheid maar ook op verbruik en omgevingstemperatuur.

assembler
Zoals we later zullen zien kan een microcontroller op veel verschillende manieren geprogrammeerd worden. De controller zelf verstaat alleen maar machinetaal. Dit is het laagste programmeerniveau. Op een volgend niveau kan de controller geprogrammeerd worden in assembler. Dit is nog steeds een laag niveau waarop de programmeur alles moet programmeren aan de hand van de instructieset. In assembler bestaat bijvoorbeeld geen lus-instructie.

Gelukkig bestaan er ook hogere programmeertalen. Bij het programmeren van de Arduino maken we gebruik van C/C++ om onze programma’s te schrijven. Deze taal en bijhorende compiler bieden heel wat tools om het programmeren gemakkelijker en aangenamer te maken.