Kennismaking: flikkerende ledjes

In deze tutorial maak je voor het eerst kennis met het Dwengo-bord. Stap voor stap leer je hoe je de programmeeromgeving en de compiler moet installeren, hoe je de dwengo-programmer aansluit en hoe je uiteindelijk je eerste programma op het Dwengo-bord zet en uitvoert.

Benodigdheden

  1. Een Dwengo-experimenteerbord
  2. Een Dwengo-programmer
  3. De bijbehorende USB-kabel
  4. Internetverbinding

Installeren van de software

Je begint met het in orde brengen van de programmeer-omgeving. Daarvoor moet je de gratis Microchip MPLAB IDE downloaden External link en installeren. Wij gebruikten voor deze tutorial minimum versie 8.33. Daarin zit ook het pakket HI-TECH C Pro, maar dat hebben we niet nodig.

Vervolgens download en installeer je ook de C18-compiler External link. Hiervoor is het nodig je te registreren op de website van Microchip. De gratis evaluatieversie van de C18-compiler bevat alle functionaliteit die we nodig hebben. De betalende versie bevat ook code-optimalisaties maar die zijn niet nodig om het Dwengo-bord te kunnen gebruiken.

Bij de installatie van de C18-compiler kan je aangeven dat je MPLAB IDE gebruikt. Dat zorgt ervoor dat de C18-compiler onmiddellijk herkend wordt bij het opstarten van MPLAB IDE.

Om het programmeren eenvoudiger te maken, heeft Dwengo een bibliotheek ontwikkeld die de laag niveau detials van de PIC18F4550 microcontroller verbergt, zodat het programmeren eenvoudiger en intuïtiever wordt. In de tutorials wordt dankbaar gebruik worden gemaakt van deze bibliotheek.

Om de bibliotheek te gebruiken moet je enkel het zip-bestand downloaden en extraheren. Het lib-bestand in deze uitgepakte map verplaats je naar de map C:\MCC18\lib terwijl je de header-bestanden verplaatst naar de map C:\MCC18\h. Voor meer achtergrondinformatie over de dwengo bibliotheek verwijzen we naar de dwengo bibliotheek pagina.

Jouw eerste project

Stap 1: aanmaken van het project

We gaan nu een project aanmaken waarmee je de LEDs van het dwengo bord kan aansturen. Start daarvoor eerst MPLAB IDE op. Open vervolgens de Project Wizard in het menu Project. Klik op Next en selecteer het juiste Device: PIC18F4550.

Selecteren van PIC18F4550

Klik nogmaals op Next en selecteer de C18 Toolsuite. Controleer of de locatie naar de C18-compiler juist is aangegeven en corrigeer waar nodig.

Selecteren van de C18 Toolsuite

Klik nogmaals op Next en geef een naam (bijv. BlinkingLeds) en locatie op voor je nieuwe project. Klik een laatste keer op Next en dan op Finish, je eerste project is nu aangemaakt. Merk op dat we stap 4, Add existing files to your project, overslaan.

Tenslotte voeg je dwengo.lib toe aan je project. Dit zorgt ervoor dat de functionaliteit van de dwengo bibliotheek beschikbaar is in je project.

Toevoegen *dwengo.lib*

Stap 2: schrijven van de code

De volgende stap is het aanmaken van een nieuw C-code bestand. Dit doe je door in het menu Project te kiezen voor Add New File to Project. Kies een naam voor je nieuwe bestand en zorg dat het nieuwe bestand de extensie .c meekrijgt (bijv. BlinkingLeds.c), je zal immers C18-code schrijven.

Dit bestand wordt automatisch toegevoegd aan de Source Files van het project. Een overzicht van de toegevoegde bestanden kan je zien door het aanvinken van Project in het menu View.

Je kan nu C18-code schrijven in het net aangemaakte code-bestand. Het eenvoudige programma dat we gaan schrijven bestaat uit twee delen:

  1. Toevoegen van de bibliotheekbestanden die je wenst te gebruiken, de zogenaamde header-bestanden

  2. De eigenlijke code in de hoofdlus: de main-functie

Voor dit project dienen er drie bibliotheekbestanden te worden toegevoegd. Dit zijn basis bestanden die je in elk project zult gebruiken. Het eerste bestand is dwengoConfig.h, dat er voor zorgt dat de microcontroller correct geconfigureerd wordt. Het tweede bestand is dwengoBoard.h definieert intuïtieve namen voor de diverse aansluitingen van de microcontroller, in overeenstemming met de functionaliteit op het dwengo bord. Tenslotte is er het bestand dwengoDelay.h, dat handige functies voorziet om het programma voor een bepaalde, instelbare tijdsduur te laten wachten. De functies worden toegevoegd met de volgende code:

  1. #include "dwengoConfig.h"
  2. #include "dwengoBoard.h"
  3. #include "dwengoDelay.h"

Nu is het de beurt aan de main-functie van het programma:

  1. void main(void) {
  2. initBoard();
  3. while (TRUE) {
  4. LEDS = 0b11111111; // LED0-7 on
  5. delay_ms(200); // wait 200 ms
  6. LEDS = 0b00000000; // LED0-7 off
  7. delay_ms(200); // wait 200 ms
  8. }
  9. }

Telkens wanneer de microcontroller aangeschakeld wordt, zal de main-functie worden opgeroepen. Deze functie wordt sequentieel uitgevoerd, d.w.z. regel voor regel, net zoals in elke klassieke programmeertaal (bijv. Java, C, C++, Basic, ...). In tegenstelling tot wat gebeurt in klassieke programmeeromgevingen, willen we niet dat het programma eindigt: de microcontroller moet zijn functie blijven uitvoeren totdat de stroom uitgeschakeld wordt. Daarom zorgen we ervoor dat de hoofdlus voortdurend herhaald wordt. Dit gebeurt met de while (TRUE) opdracht. De main-functie kan dus opgesplitst worden in twee componenten. Lijn 2 doet de initialisatie, deze gebeurt slechts éénmaal, na het aanschakelen. Lijnen 4-7 vormen de hoofdlus, deze wordt – eens de initializatie voltooid is – voortdurend uitgevoerd. Deze structuur is typisch voor alle embedded programma's.

In bovenstaand voorbeeld worden de 8 LEDs worden aangesproken als een 8-bits getal. Een 1 in dit getal zet de corresponderende LED aan, een 0 uit. Het is ook mogelijk om elke LED apart aan of uit te zetten (zonder de andere LEDs te beïnvloeden). De LEDs zijn genummerd van 0 tot 7. Het aan- en afzetten van LED0 gebeurt bijvoorbeeld als volgt:

  1. LED0 = ON;
  2. LED0 = OFF;

Om de knippersnelheid in te stellen, plaats je een wachttijd tussen het aan en af schakelen van de LEDs. In bovenstaand voorbeeld bedraagt deze in beide gevallen 200 ms.

Wie het Dwengo-bord gekocht heeft, kan het volledige programma downloaden in de bijlage. Hiervoor moet je ingelogd zijn.

Stap 3: compileren van het programma

Nu je de eerste regels code geschreven hebt voor het Dwengo-bord wil je dat testen. Daarvoor moet je de code eerst omvormen naar binaire code die door de microcontroller uitgevoerd kan worden. Dit proces noemt men compileren. Het proces vereist dat je een linker-script toevoegt aan het project. Dit doe je door in het menu Project te kiezen voor Add Files to Project en vervolgens te navigeren naar de locatie waar de bestanden voor de Microchip C18-compiler geïnstalleerd staan (gewoonlijk onder het pad C:\MCC18). In de map C:\MCC18\bin\LKR vind je het bestand 18f4550_g.lkr dat je moet toevoegen aan het project.

Toevoegen van linker-script

Als het goed is, wordt dit linker-script nu vermeld onder Linker Scripts. Je kan nu je project compileren door in het menu Project te kiezen voor Build All. Wanneer het compileren succesvol is verschijnt er Build Succeeded op het scherm.

Als je één van de stappen niet goed uitvoerde zal er verschijnen Build Failed. Je moet dan uitzoeken wat er fout ging. Voor eenvoudige programma's zoals dit is de meest voorkomende fout een typefout. Mocht je zeker zijn dat je de voorgaande stappen allemaal goed doorlopen hebt (geen typefouten, linker-script goed toegevoegd) en je krijgt steeds volgende fout:
Error - could not find file 'c018i.o'
dan kan het zijn dat MPLAB IDE de C18-bibliotheek en linker-bestanden niet goed kan vinden. Dit kan je oplossen als volgt:

  1. Navigeer in het menu Project naar Build Options
  2. Selecteer Directories
  3. Kies in Show directories for voor Include Search Path
  4. Klik op New en geef het pad naar de h map op van de C18-bibliotheek, gewoonlijk is dit C:\MCC18\h
  5. Kies vervolgens in Show directories for voor Library Search Path
  6. Klik op New en geef het pad naar de lib map op, gewoonlijk is dit C:\MCC18\lib (zie figuur)
  7. Kies tenslotte in Show directories for voor Linker-Script Search Path
  8. Klik op New en geef het pad naar de lkr map op, gewoonlijk is dit C:\MCC18\bin\LKR
  9. Klik op Apply en dan op OK

Build opties

Probeer nu het project opnieuw te compileren, normaal gezien zou alles in orde moeten zijn.

Stap 4: programmeren en testen van het programma

Je bent nu klaar om het programma op het Dwengo-bord te programmeren. Dit doe je door middel van de Dwengo-programmer. Sluit hiervoor de programmer aan op de computer met de USB-kabel. Sluit vervolgens de programmer aan op het Dwengo-bord. Let hierbij op dat de programmer correct wordt aangesloten (zie figuur)!

Aansluiten van de programmer

Kies in het menu Programmer onder Select Programmer voor de PICkit2. Als je de programmer en het Dwengo-bord goed hebt aangesloten verschijnt er op het scherm nu PICkit 2 Ready, bovendien zal de Power-LED branden op het Dwengo-bord om aan te geven dat het bord onder spanning staat.

Om het bord te programmeren kies je nu in het menu Programmer voor Program. Even later is het bord geprogrammeerd. Om het te testen kan je nu via MPLAB het bord resetten, kies daarvoor in het menu Programmer voor Hold in Reset en daarna kies je voor Release from Reset. Je kan nu alle 8 de LEDs zien flikkeren op het Dwengo-bord.

Stap 5: loskoppelen, code bijwerken, verder experimenteren

Nu het Dwengo-experimenteerbord geprogrammeerd is, kan je de programmer loskoppelen van het bord. Je zal merken dat de LEDs ophouden met flikkeren. Het experimenteerbord krijgt nu immers geen stroom meer. Koppel het bord rechtstreeks aan de computer met de USB-kabel. De LEDs zullen opnieuw beginnen te flikkeren.

Je hebt de eerste tutorial met succes afgerond. Je kan nu zelf verder experimenteren.

Probeer misschien eens de snelheid van het knipperen aan te passen. Als je de code hebt aangepast, kan je ze opnieuw compileren (Build All) en programmeren. Voor die laatste stap moet uiteraard de programmer opnieuw aangesloten worden. Nadat die fysisch aangesloten is, moet je in MPLAB in het menu Programmer kiezen voor Connect. Pas daarna verschijnt er op het scherm nu PICkit 2 Ready.

BroncodeBronbestanden zijn enkel toegankelijk voor geregistreerde gebruikers. Als je al een account hebt op de Dwengo site, gelieve dan in te loggen, anders kan je je eerst registreren.