Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel

Hogeschool Gent : Departement Muziek & Drama


<Terug naar inhoudstafel kursus>

2500:

Microcontrollers

 

Wanneer een bepaalde taak vaak weerkeert -of wanneer het een taak is die we welhaast permanent uitgevoerd willen weten, dan blijkt het vaak overkill te zijn om daarvoor onze gewone desktop of notebook PC in te zetten. Immers, ook al is de taak klein en op het eerste gezicht onbeduidend, dan nog zal zij wanneer we haar bvb. in een multitasking omgeving aan onze gewone PC toevertrouwen, deze voor een deel belasten en 'bezet' houden.

Dergelijke taken zijn bvb.:

Wanneer de taak eenvoudig is, dan konden we gebruik makend van de kennis vergaard in de vorige hoofdstukjes, vaak wel een hardwarematige oplossing verzinnen. Zo kan voor het omzetten van kodes bvb. een geprogrammeerde EPROM worden gebruikt: de adreslijnen gebruiken we voor de ingangsdata, terwijl de datalijnen de omgezette uitgangsdata weergeven.

Voor tijd en alarmfunkties kunnen we hardwarematige klokken met delers en komparators gebruiken, terwijl voor regelsystemen analoge schakelingen heel goed bruikbaar zijn.

Er is echter een punt waarop het lonend wordt, deze hardwarematige aanpak te verlaten, en minstens deels, over te schakelen op software. Hiervoor gaan we dan niet een hele heuse PC inzetten, maar wel de in overvloed op de markt voorhandene 'microcontrollers'. Eigenlijk zijn dit heuse volledige komputers: ze bevatten -meestal in een enkele chip- een CPU (mikroprocessor), een ROM gedeelte (soms EPROM of EEPROM), een IO-bus en wat RAM geheugen.

Zoals te verwachten valt, kan je met een microcontroller-chip, zelf wanneer je die behoorlijk op een printplaat hebt gesoldeerd en van de nodige voedingsspanning voorzien, helemaal niets beginnen. Vooraleer het systeempje ook maar een vin verroert moet het met een programma geladen worden en moet de eventueel nodige hardware periferie zijn aangesloten.

Mikrokontrollers bestaan in een grote verscheidenheid: gaande van eenvoudige 4- en 8-bit systemen op klokfrekwenties tussen 1Mhz en 80MHz, tot en met RISC en DSP systemen in 64-bit en met klokfrekwenties tot 200MHz. Zonder uitzondering kunnen ze alleen worden gebruikt voor eigen doeleinden wanneer je ook over een ontwikkelingssysteem beschikt. Zo'n ontwikkelingssysteem (development system in het standaard jargon) bestaat minstens uit een terminal programma dat loopt op een PC of een workstation en een programmeeromgeving. Dit programmeren verloopt uiteraard in een komputertaal. De meest gebruikte komputertalen voor de programmering van mikrokontrollers zijn assembler, C, Forth, Pascal en... Basic. Hoewel assembler het meest wordt gebruikt, is het toch wel de langste weg, vooral omdat elk type mikrokontroller van een eigen assembleertaal gebruik maakt. De leertijd voor het omgaan met een bepaald type kontroller beloopt dan ook al gauw meer dan een jaar... Het zal duidelijk zijn dat dit geen erg aanlokkelijk vooruitzicht is voor de experimenterende muzikus.

Gelukkig echter brengen heel wat fabrikanten ook mikrokontrollers op de markt die in hogere programmeertalen kunnen worden geprogrammeerd. Dit kan ofwel rechtstreeks gebeuren, wanneer namelijk de mikrokontroller een interpreter of compiler in ROM aan boord heeft, ofwel onrechtstreeks, wanneer de fabrikant van het ontwikkelsysteem zelf een kompiler meelevert waarmee de nodige bestanden in machinekode kunnen worden aangemaakt. Voor heel wat mikrokontrollers bestaan er op de markt overigens ook een hele reeks zogenaamde cross-compilers, met behulp waarvan bronkode in een bepaalde taal, kan worden gekompileerd voor verschillende kontrollers en processors. Dergelijk cross-compilers zijn evenwel eerder prijzig en zelden zomaar ergens te kopieren...

Eens het programma is geschreven dient het te worden getest. Nooit gebeurt het dat een programma het zomaar meteen perfekt doet. Nu is dat bij een mikrokontroller wel bijzonder vervelend, omdat zo'n systeem nu eenmaal niet over een scherm, toetsenbord of welkdanige output dan ook beschikt met behulp waarvan het systeem ons foutmeldingen zou kunnen geven. Alleen wanneer wij zelf ten behoeve van het debuggen in onze kode instrukties opnamen waarmee het systeem fouten aan ons terminal programma op de PC kan melden, kunnen we aan het debuggen gaan. Maar, in dat geval presteert het systeem natuurlijk niet zoals het dat aan zijn lot overgelaten en zonder seriele navelstreng zou doen... (timing!)

Om aan deze moeilijkheid tegemoet te komen werden dan ook door de fabrikanten 'emulators' ontwikkeld. Dit zijn software-programmas lopend op de PC of het workstation die zich gedragen zoals de betreffende mikrokontroller dat zou doen. Zij laten toe alle processorregisters te bekijken, de toestand van de IO-bus, het geheugen enz..., terwijl ook precieze tijdsmetingen kunnen plaatsvinden. Dergelijke emulatoren zijn echter zelden goedkoop te verkrijgen! Een tussenoplossing die door fabrikanten ook vaak wordt aangeboden bestaat erin het te debuggen programma in de doel-processorchip te laten lopen onder kontrole van een door de fabrikant geschreven monitor-programma voor de PC. Deze oplossing vergt een tamelijk uitgebreid stuk hardware, o.m. inklusief een insteekkaart voor de PC-bus. Immers het seriele kanaal is daarvoor in elk geval veel te traag.

In de hiernavolgende paragrafen gaan we telkens een andere mikrokontroller -met een praktisch toepassingsvoorbeeld- voorstellen.


 

Terug naar inhoudstafel kursus

Naar homepage dr.Godfried-Willem Raes