Vergeef me, Cortex-M[x]-fans, maar mijn actieve bemoeienissen met microcontrollers dateren nog uit de tijd dat het programmeren ervan niet alleen spannend was, maar ook een ‘kunstvorm’ op zichzelf. Stelt u zich een groepje mannen voor die meer dan 150 km rijden om elkaar in een vervallen gebouwtje te ontmoeten en zich te verheugen over de complexiteit en de abstracte schoonheid van een ingewikkelde configuratie van een 8-bits systeem, die je misschien aan de gang zou kunnen krijgen als je alle ins en outs en DMA-kanalen kende. 
Zo ging het ongeveer in onze CDP1802 gebruikersgroep. We waren blij dat er software was die datgene in de gaten hield waar we bang voor waren: de software! HID’s waren er niet, behalve misschien een druktoets, een kleine buzzer en de gebruikelijke 5-mm-led. Ondanks de primitieve middelen waar we in 1985 over beschikten, realiseerden we ons allemaal de fantastische mogelijkheden van de techniek die we in onze handen hadden. Als je immers een led onder softwarebesturing kunt laten oplichten, dan kan je ook een raket lanceren. En geloof me, een van ons heeft inderdaad ‘iets soortgelijks’ gedaan bij CERN – hoewel ik denk dat daar een andere microcontroller voor werd gebruikt. 

Er was in die tijd zeer veel lof voor twee begaafde clubleden die er in slaagden om een cold-boot-sequentie in 256 bytes statisch RAM te persen, met een batterij-backup van twee AA-cellen. Je kon deze opstarten, wachten tot die ene led op het board ging branden, en dan een stukje programma van een beduimeld cassettebandje afspelen naar de zeer minimale audio-ingang van het systeem. Het programma controleerde ‘automatisch’ zijn eigen integriteit en die van de data op de cassetteband, pakte deze uit en installeerde en configureerde vervolgens een 4-Kbyte systeemmonitor, die op zijn beurt de led twee keer liet knipperen en dan een groter OS van floppy-disk in een 48 Kbyte DRAM-kaart laadde. En daarna... kwamen Tiny Basic, bier en spellen zoals COSMAC Space Invaders.

Het was een knappe prestatie, deze besparing op statisch RAM dat in die tijd peperduur was. Ik bekeek de code op machineniveau en verbaasde mij over de compactheid: elke byte en elke klokcyclus was maximaal benut – of moet ik zeggen minimaal – om dit allemaal mogelijk te maken. Zoals u al aanvoelt was het programma direct in machinetaal geschreven (zelfs niet in assembly language) — en geen enkele compiler zou dit in netto 256 bytes hebben kunnen persen. 

We waren echter niet zo goed in de praktische toepassing van onze systemen, en hebben nooit indruk kunnen maken met een echte ‘killer application’ waarvoor de buren zich naar de winkel zouden haasten. Onze beste prestatie was een verkeerslichtbesturing in 1 Kbyte, geheel in CMOS uitgevoerd, verbazend laag in energieverbruik en zeer storingsbestendig. 

Tegenwoordig gaat het programmeren van microcontrollers eenvoudiger en comfortabeler. De gigantische omvang van de ontwikkeltools, compilers, broncodebestanden, debuggers en databestanden die u via het net naar uw pc verplaatst, kan makkelijk oplopen tot 10.000 keer die van het object dat u in uw AVR-, PIC- of ARM-microcontroller wilt branden. Maar dat is geen enkel probleem, want RAM is tegenwoordig bijna gratis, en de tools zijn dat ook. Voor de rest kost het een kleinigheid voor de hardware en een paar cent in het maandabonnement van uw internetprovider, waarvan de rekening ook nog met uw familieleden wordt gedeeld. Dit is een goed uitgangspunt voor de business-case: programmeer een ‘killer application’ (geen ‘app’) voor uw favoriete microcontroller. 
Welke toepassing voor dagelijks gebruik die geld oplevert (of geld en/of tijd bespaart) hebt u met uw microcontrollersysteem thuis ontwikkeld? Alleen als deze echt nuttig was, druk dan op de toets 'Voeg reactie toe' hieronder er vertel het aan iedereen.