Bascom handleiding: Duidelijke instructies voor programmeren

Bram Jacobs

Bascom handleiding: Duidelijke instructies voor programmeren

Je leest dit artikel in 6 minuten

Je hebt besloten om met microcontrollers aan de slag te gaan, waarschijnlijk met de populaire Atmel AVR-familie zoals de ATmega328P. Dat is een mooie stap. Om deze chips echt tot leven te wekken, heb je programmeersoftware nodig. Vaak kom je dan al snel uit bij Bascom (Basis Compiler). Een goede Bascom handleiding is goud waard, want hoewel het programmeren in Bascom relatief eenvoudig lijkt, zit de kracht hem in de details en de juiste instellingen. We duiken erin, stap voor stap, zodat je snel jouw eerste project kunt compileren en flashen.

Wat is Bascom precies en waarom zou je het gebruiken?

✨ AI-EXPERTHULP

Kom je er zelf niet uit?

Beschrijf je probleem hieronder. Onze AI beoordeelt gratis wat er aan de hand is en of we je kunnen helpen. Je betaalt alleen voor een persoonlijk advies.

⚡ Gratis check · klaar in 1 minuut

De check is gratis. Kan je vraag beantwoord worden, dan krijg je optioneel een persoonlijk stappenplan aangeboden voor €4,95.

Waar gaat het over?

⚡ Direct duidelijkheid · 🔒 Gratis check · Geen verplichtingen

Bascom is een BASIC-dialect dat speciaal is ontworpen voor het programmeren van microcontrollers. De naam staat voor ‘Basis Compiler’. Het grote voordeel van Bascom is de toegankelijkheid. Als je al bekend bent met BASIC uit vroegere tijden, voelt het direct vertrouwd aan. Je hoeft geen ingewikkelde C-syntax te leren om simpele taken uit te voeren, zoals het aansturen van een LED of het uitlezen van een sensor. Bascom vertaalt jouw eenvoudige commando’s naar machinecode die de microcontroller begrijpt.

Hoewel de professionele wereld vaak kiest voor C/C++, is Bascom uitstekend voor hobbyisten, beginners, of wanneer je snel een prototype moet bouwen. Het heeft ingebouwde routines voor veel voorkomende taken, wat je veel programmeertijd bespaart. Denk aan de bibliotheken voor I2C, SPI, of het aansturen van LCD-schermen. Een duidelijke Bascom handleiding voor beginners focust zich op deze ingebouwde functionaliteit.

Bascom handleiding: Duidelijke instructies voor programmerenDe installatie van de Bascom IDE

Voordat je kunt beginnen met programmeren, moet je de software installeren. Zorg ervoor dat je de meest recente, stabiele versie van de Bascom IDE (Integrated Development Environment) downloadt. De installatieprocedure is doorgaans vrij standaard.

  1. Download het installatiebestand van een betrouwbare bron.
  2. Voer het installatieprogramma uit en volg de instructies op het scherm. Kies een locatie voor de installatie.
  3. Controleer na de installatie of de benodigde drivers voor jouw programmeerhardware (zoals een USBasp of een andere ISP-programmer) correct zijn geïnstalleerd. Dit is vaak een veelvoorkomend struikelblok bij het configureren van Bascom.

De eerste stappen in de Bascom IDE

Als je de IDE opent, zie je een omgeving die lijkt op andere programmeeromgevingen: een teksteditor, een menubalk en knoppen voor compileren en uitvoeren. Het eerste wat je moet doen, is de juiste microcontroller specificeren voor jouw project. Dit is cruciaal voor de juiste compilatie.

Het instellen van de juiste microcontroller

Elke microcontroller heeft specifieke geheugengroottes en pinconfiguraties. Bascom moet weten met welke chip je werkt om de juiste code te genereren. Dit doe je door middel van het `$regfile` en `$crystal` commando bovenaan je script.

Stel dat je werkt met de populaire ATmega328P op de standaard Arduino-klokfrequentie (16 MHz). Jouw openingsregels zien er dan als volgt uit:

$regfile = "m328pdef.dat"
$crystal = 16000000

Je vindt de juiste definities voor andere chips in de `Inc` map van je Bascom-installatie. Het is essentieel dat je de juiste $regfile gebruiken in Bascom; anders zal je programma niet werken of krijg je vreemde foutmeldingen tijdens het compileren.

Verdiepende links

Maak je reis door het onderwerp Bascom handleiding: Duidelijke instructies voor programmeren compleet met deze links.

Basische syntax en commando’s

Bascom gebruikt een duidelijke, bijna Engelse, syntax. Hier zijn een paar fundamentele commando’s die je direct nodig hebt:

  • Configuratie: Hiermee stel je de werking van de hardware in, zoals de seriële poort of de configuratie van de timers. Bijvoorbeeld: Config Portb = Output om de pinnen op poort B als uitgang in te stellen.
  • Declaratie: Variabelen maak je aan met het Dim commando. Bijvoorbeeld: Dim Teller As Byte. Byte is ideaal voor getallen van 0 tot 255.
  • Output: Om iets naar een poort te sturen, gebruik je PortB = 255 (wat alle pinnen hoog maakt). Voor een individuele pin gebruik je Set Pinb.0 = 1 (hoog maken) of Reset Pinb.0 = 0 (laag maken).
  • Vertraging: Met Wait 1 pauzeer je het programma een seconde. Voor milliseconden gebruik je Waitms 500.

Jouw eerste programma: Een knipperende LED

Laten we de theorie direct in de praktijk brengen. We gaan een LED laten knipperen op poort B, pin 0 (PB0). Dit is de ‘Hello World’ van de embedded wereld.

Stappenplan voor de knipperende LED

  1. Start een nieuw bestand in de Bascom IDE.
  2. Voeg de configuratieregels toe (zie hierboven voor de ATmega328P).
  3. Configureer de poort: Je moet de betreffende pin als uitgang instellen. Aangezien we alleen PB0 gebruiken, kunnen we een specifiekere configuratie gebruiken, maar voor eenvoud stellen we de hele poort in als output: Config Portb = Output.
  4. Schrijf de hoofdloop: Microcontrollerprogramma’s draaien oneindig. Dit doe je met een Do...Loop structuur.
  5. De instructies: Binnen de loop schakel je de LED aan, wacht je even, schakel je hem uit, en wacht je opnieuw.

Dit is hoe het eruitziet:

$regfile = "m328pdef.dat"
$crystal = 16000000

Config Portb = Output

Do
    Set Portb.0       ' Schakel de LED aan op PB0
    Wait 1            ' Wacht 1 seconde
    Reset Portb.0     ' Schakel de LED uit
    Wait 1            ' Wacht 1 seconde
Loop
End

Dit programma is eenvoudig, maar het demonstreert de basisstructuur: configuratie, een oneindige lus, en het aansturen van hardware. Bij het leren van Bascom programmeren met ingebouwde functies, is dit het perfecte startpunt.

Compileren en flashen: De code naar de chip krijgen

Zodra je jouw code hebt geschreven, moet je deze omzetten naar een bestand dat je microcontroller kan lezen (een HEX-bestand) en dit vervolgens naar de chip schrijven. Dit proces heet flashen.

Compileren

In de IDE klik je op de ‘Compile’ knop (vaak een icoon met een tandwiel of een vinkje). Bascom controleert jouw syntax. Als alles correct is, genereert het de benodigde HEX-file.

Let op: Als je fouten maakt, geeft Bascom vaak een melding met het regelnummer. Oefening baart kunst bij het interpreteren van deze meldingen.

Flashen met een externe programmer

Om de HEX-file op de chip te krijgen, heb je een ISP (In-System Programmer) nodig. Populaire opties zijn de USBasp of een Arduino die je in ISP-modus hebt gezet. Je verbindt de programmer met de ISP-header van je microcontroller (of de ICSP-header op een ontwikkelbord) en met je computer.

In Bascom ga je naar het menu om de programmer te selecteren en de instellingen te configureren. Dit is waar de Bascom instellingen voor hardware programmeren belangrijk worden. Je moet de juiste poort (COM-poort of USB-interface) en het juiste protocol (zoals avr910 of stk500) kiezen.

Als de hardwareverbindingen correct zijn en de Bascom-instellingen overeenkomen met je programmer, gebruik je de ‘Flashen’ of ‘Upload’ knop. De software stuurt het HEX-bestand naar de chip. Zodra dit voltooid is, zal je microcontroller direct beginnen met het uitvoeren van jouw programma – de LED zal nu knipperen!

Vaak voorkomende problemen en oplossingen

Bij het werken met een nieuwe tool zoals Bascom kom je ongetwijfeld tegen wat valkuilen aan. Hier zijn de meest voorkomende problemen en hoe je ze oplost.

1. Foutmelding: “Device signature mismatch”

Oorzaak: De software ziet de chip die je hebt geselecteerd in de code (`$regfile`) niet overeenkomen met de chip die de programmer daadwerkelijk uitleest.

Oplossing:

  • Controleer de bedrading tussen de programmer en de microcontroller (vooral VCC, GND, SCK, MISO, MOSI en RESET).
  • Verifieer of je in de Bascom-instellingen de juiste programmer driver hebt geselecteerd.
  • Zorg dat de chip niet al in gebruik is of dat de spanningsregeling correct is ingesteld (de chip heeft stroom nodig tijdens het flashen!).

2. Programma werkt niet, maar compileren ging goed

Oorzaak: Vaak ligt dit aan de kloksnelheid of de configuratie van de fuses.

Oplossing:

  • Controleer je $crystal waarde. Als je een onzekere externe oscillator gebruikt, kan dit afwijken. Voor standaard Arduino-klonen is 16000000 Hz meestal correct.
  • Controleer of je de Bascom fuse instellingen correct hebt gemaakt als je de interne of externe oscillator van de chip gebruikt. Soms moet je eerst de fuses correct zetten voordat de chip de gewenste snelheid gebruikt.

3. Problemen met seriële communicatie (UART)

Als je de seriële poort wilt gebruiken voor debuggen (een veelgebruikte techniek in elke Bascom handleiding voor debugging), moet je de poort configureren.

Bijvoorbeeld: Config Com1 = 9600 , Syncreal

Zorg ervoor dat het programma dat je gebruikt om de data te lezen (zoals de terminal op je PC) op exact dezelfde baudrate staat ingesteld (bijvoorbeeld 9600 baud). Gebruik je de verkeerde poort (COM1 in plaats van COM3)? Dan zie je geen data.

Extra tips voor efficiënter Bascom programmeren

Om jouw workflow te versnellen en betere code te schrijven, zijn hier een paar beproefde tips die je helpen bij het ontdekken van de diepte van Bascom.

Gebruik de ingebouwde helpfunctie

De Bascom IDE heeft een uitstekende ingebouwde helpfunctie. Als je een commando typt, zoals Config, en je drukt op F1 (of klikt op Help), opent de documentatie direct bij dat commando. Dit is veel sneller dan het zoeken naar Bascom commandoreferentie online.

Werken met subroutines

Voor grotere programma’s is het essentieel om je code op te delen in kleinere, beheersbare stukken. Gebruik het `Gosub` commando om naar een subroutine te springen en `Return` om terug te keren naar de hoofdcode. Dit maakt jouw programma veel overzichtelijker.

Do
    Gosub LED_AAN
    Wait 1
    Gosub LED_UIT
    Wait 1
Loop

LED_AAN:
    Set Portb.0
    Return

LED_UIT:
    Reset Portb.0
    Return
End

Arrays en datastructuren

Als je met meer complexe data werkt, zoals het opslaan van tekst voor een display, maak dan gebruik van arrays. Bijvoorbeeld: Dim Tekst(10) As Byte creëert een array van 10 bytes. Je kunt deze cellen individueel vullen en later gebruiken. Dit is cruciaal als je de geavanceerde Bascom instructies wilt toepassen.

Veelgestelde vragen over Bascom

Is Bascom nog steeds relevant in 2024?

Ja, Bascom is zeker nog relevant, vooral voor snelle prototyping op AVR microcontrollers en voor programmeurs die de eenvoud van BASIC verkiezen boven de complexiteit van C. Het wordt nog steeds actief ondersteund en is ideaal voor beginners.

Moet ik altijd een externe programmer gebruiken met Bascom?

Niet noodzakelijk. Als je een Arduino-bord gebruikt, kun je de bootloader gebruiken om direct via de USB-poort te flashen, net als je gewend bent met de Arduino IDE. Echter, voor het instellen van de fuses of het programmeren van ‘blote’ chips, heb je een ISP-programmer nodig.

Hoe kan ik werken met externe geheugenchips (EEPROM) in Bascom?

Bascom heeft speciale commando’s voor de interne EEPROM van de chip, zoals Read ... To Eeprom ... en Write ... To Eeprom .... Voor externe I2C EEPROM-chips gebruik je de ingebouwde I2C-functies, zoals I2cstart en I2cwrite, vaak in combinatie met een bibliotheek voor de specifieke chip.

✨ AI-EXPERTHULP

Nog steeds vastgelopen?

Beschrijf hieronder je specifieke situatie. Onze AI kijkt gratis mee of een persoonlijk advies je verder helpt.

⚡ Gratis check · klaar in 1 minuut

De check is gratis. Kan je vraag beantwoord worden, dan krijg je optioneel een persoonlijk stappenplan aangeboden voor €4,95.

Waar gaat het over?

⚡ Direct duidelijkheid · 🔒 Gratis check · Geen verplichtingen

Geef een reactie