AVR microcontroller programmeren, wat heb je daarvoor nodig?

Als je niet weet wat je precies nodig hebt om een AVR microcontroller te programmeren dan heb ik hier een simpel lijstje met benodigdheden. Aan het einde van dit artikel kan je een Atmega328 programmeren in de taal C.

Je hebt nodig:

  • Een Atmega328 microcontroller
  • Een AVR programmer
  • Een ontwikkelomgeving

Atmega328 microcontroller

De Atmega328 microcontroller is een processor met 32KB programmageheugen en 2KB werkgeheugen.

Ze zijn er in een aantal varianten. Kies er een in DIP formaat zodat je het kan gebruiken in een breadboard.

De makkelijkste manier is om een Arduino aan te schaffen. De Arduino is een kant en klare printplaat met een Atmega328 erop. Kies bijvoorbeeld een Arduino nano. Er zijn ook Arduinos met andere processoren erop.

Arduino heeft een eigen ontwikkelomgeving waarbij je geen aparte programmer nodig hebt, maar die gebruik ik niet in dit artikel.

AVR programmer

Een AVR programmer is een klein apparaatje wat je aansluit op je computer en de atmega328. De programmer zorgt ervoor dat je programma die je hebt geschreven terecht komt in je microcontroller.

Je hebt ze in een aantal varianten, namelijk een programmer en een debugger. Beide kunnen naast de atmega328 een groot aantal AVR microcontroller programmeren. Een debugger kan naast het programmeren ook je programma live debuggen in de microcontroller. Dat betekent dat je per programma regel je code kan laten uitvoeren en zien wat dat tot gevolg heeft in de microcontroller.

Ik heb er zelf een aantal verzameld in de loop der tijd:

De Elektuur Handyman programmer was een van de eerste zelfbouw programmers voor de AVR microntroller. Je sloot het aan op de seriële poort en kon met behulp van een DOS programma de microncontroller programmeren. Het kon er maar 1 programmeren: AT90S1200. Dat was gelijk ook de aller eerste AVR microcontroller die Atmel had gemaakt.

Door de jaren heen heb ik doordat techniek steeds verandert (nieuwe windows, geen parallelle poort meer) steeds andere programmers gemaakt of gekocht. Uiteindelijk ben ik terecht gekomen bij de Atmel AVRISP mkII programmer en de Atmel AVR dragon debugger.

 
Dat zijn ook gelijk degene die ik je aanraad om aan te schaffen. Ik gebruik te beiden. Maar een van twee is goed genoeg. De AVRISP is wat meer hufter proof. De AVR dragon kan je erg makkelijk opblazen als je iets verkeerd aansluit, dat is mij een keer overkomen. Gelukkig zijn er dan ook weer sites die je helpen om de AVR dragon te repareren.

Een USBasp of USBprog zullen ook voldoen als programmer, maar die werken niet (goed) in de ontwikkelomgeving. Je kan ze echter prima gebruiken met andere software zoals AVRdude.

Ontwikkelomgeving

Je hebt een ontwikkelomgeving nodig om de atmega328 microcontroller te programmeren.

Vroeger had je AVR studio 3. Daarmee kon je in assembler de aller eerste versie microcontroller programmeren. Assembler programmeren is niet mijn hobby is gebleken. Gelukkig niet veel later werd AVR studio 4 uitgebracht en kon je met behulp van WinAVR de taal C toevoegen om daarin te programmeren.

Nu is Atmel studio 6 de ontwikkelomgeving om AVR microcontrollers te programmeren.

Download en installeer Atmel studio 6. (je hebt de “Installer – Full” variant nodig.)

Ontwikkelomgeving configureren

Sluit je Arduino nano aan op de AVRISP mkII met de 6 polige stekker.

Arduino met 6 pin ISP connectorZet 5 volt op de Arduino. Het ledje op de AVRISP  gaan nu groen branden.

AVRisp mkII groen lampjeStart Atmel studio op.

Kies voor File->New->Project.

atmel studio file new project

Kies voor “C/C++” en dan “GCC C Executable Project”, vul eventueel het pad in naar het project. Druk “OK”.

atmel studio new project

Kies in het “Device Selection” scherm voor de juiste microcontroller. In het geval van de Arduino nano is dat een Atmega328P. En kies OK.

atmel studio device selection

Kies Project->…Properties. Klik links op “Tool”. In het vakje met “Selected debugger/programmer” Kies de debugger die je hebt aangesloten.

atmel studio project properties tool tab

Ga daarna terug naar je bronbestand.

Je hebt nu alles wat nodig is om een Atmega328 te programmeren.

Je eerste programma

#include <avr/io.h>

#define F_CPU 16000000UL
#include <util/delay.h>

int main(void)
{
  //Configureer PB5 als uitgang.
  DDRB |= _BV(PB5);

  while(1)
  {
    //Wacht 500 ms
    _delay_ms(500);

    //Toggle LED aangesloten op PB5
    PORTB ^= _BV(PB5);
  }
}

Voer het bovenstaande programma in en druk dan op Debug->Continue.

Onderin het scherm flitst er eventjes voorbij dat microcontroller word geprogrammeerd. Er knippert nu een ledje.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *