Zijn microcontrollers goud in onze handen?
24 februari 2017
op
op

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.
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.
Read full article
Hide full article
Discussie (7 opmerking(en))
ON7AMI 8 jaar geleden
73 de ON7AMI
Jean Paul
TheEditor 8 jaar geleden
73 de PE1CSI
Jan
ON7AMI 8 jaar geleden
H Tempelman 8 jaar geleden
Maarrr.. Zou het niet leuk zijn om die goedkope en best wel goede KIKA (KlikAanKlikUit) modules van de Gamma te kunnen aansturen? Dan heb je een professionele logica/HMI basis met KIKA modules als "I/O". KIKA heeft een gateway in het programma, en daarvan heb ik van KIKA ook de protocol info gekregen (waarvoor lof). Echter dit is eenrichting. Toen maar een AVR gebruikt (in dit geval een ATMEGA128 op een Propox module met Wiznet Ethernet, extra RAM en EEPROM, maar elke andere AVR had ook gewerkt); seriele interface (RS485) naar de S7-1200, en een 433 MHz transceiver (zenden EN ontvangen) naar de KIKA. Op internet wat rudimentaire protocol info gevonden over KIKA (zowel generatie 1 en 2), en deze geimplementeerd.
Bij inbraak de buitenlampen laten knipperen? Of bij het terrasscherm naar beneden wel eerst even zekerheidshalve de terras heater uitzetten? Tijdklok op de lampen afhankelijk van of je thuis bent of niet? Lampen aan/uit op basis van internet tijd i.p.v. een schemerschakelaar?
Het kan allemaal, en nu vrij eenvoudig in een stukje ladder logica. Wel voor ogen houden dat KIKA geen bewaakt protocol is; het is redelijk betrouwbaar, maar de werking is niet altijd gegarandeerd.
Hennie.
Architect 8 jaar geleden
1802 kit van Lee Hart
in elkaar te zetten. Dat systeem heeft zelfs geen EPROM. Je moet het programma (of een of andere loader) er zelf met schakelaars in-toggelen. Dat is pas "basic". Wel heeft hij 32 KB RAM want een kleiner geheugen neemt niet minder plaats in. Geen SMDs. Development environment? U maakt een grapje?
TheEditor 8 jaar geleden
Jan
Ronald Hofman 8 jaar geleden
Compuboard project van elektuur 8052 een 8032 met een basic rom er op , mooi project was dat ook.
later pc gekocht heb een z80 bus emulator toen gemaakt en daar de eprom programmer van elektuur van destijds op laten werken was ook leuk om te doen.
via centronics poort z80 i/o bus emuleren een i/o dll gebouwd in C en het programma in visual baisc hoop geleerd en het werkte ook.
Dat is niet meer te vergelijken met hoe het nu gaat
ik heb een raspberri 1,2, en 3 en Arduino mega boardje en te kort tijd om er aandacht aan te bersteden, werk in de telecom , doe voip , draadloze telefonie en zorg systemen , net een training gehad bijh Ubiquiti en ben nu bezig met WIFI en USG e.d. en dat slokt ook een boel tijd op , maar het is wel leuk.