A
Quick Start Guide: AVR programmeren
In deze guide wordt uitgelegd hoe men kan beginnnen met het programeren van een ATMEL AVR microcontroller. Er zal een testprogramma uit de software library AVRlib van Pascal Stang gecompileerd en geprogrameerd worden in een AVR. Er is gekozen om in deze guide gebruik te maken van een AVRlib programma, omdat met AVRlib op een hoog niveau in C geprogrameerd kan worden en er daarom snel een programma mee gemaakt kan worden. Omdat een aantal extra stappen nodig zijn om AVRlib draaiend te krijgen, wordt daar in deze guide extra aandacht aan besteed. De volgende onderwerpen komen in deze quick start guide aan bod: installatie AVRstudio (ontwikkelomgeving) en WinAVR (C compiler + extra tools) AVRlib installeren en gebruiken aansluiten AVRISP MKII programmer op Atmelboard v 2.0 aanpassingen aan software
A.1
Installatie AVRstudio en Winavr
Atmel biedt een gratis ontwikkelomgeving aan, waarin een text-editor, simulator en programmer in een tool zijn verwerkt. In deze guide wordt gebruik gemaakt van versie 4.14, maar een nieuwere versie kan ook gebruikt worden. AVR studio bevat standaard geen C compiler. Daarom zal de AVR GCC compiler naast AVR studio ge¨ınstalleerd worden. Door het software pakket WINAVR te installeren wordt deze compiler, samen met een aantal andere AVR related opensource tools ge¨ınstalleerd. Deze C compiler wordt automatisch in AVR studio ge¨ıntegreerd. Volg de volgende stappen om de software netjes te installeren: download WINAVR van http://sourceforge.net/projects/winavr/ download AVRstudio van http://www.atmel.com/dyn/products/avrstudio installeer WINAVR, bijvoorbeeld in C:\winavr. installeer AVRstudio. Installeer de USB driver, deze is nodig voor de programmer. Zie figuur 32.
Figuur 32: Installeren usb driver voor programmer Start nu AVRstudio op. In figuur 33 is een screenshot van AVR studio in gebruik. Noot: het lettertype is in de screenshot aangepast in Consolas, standaard wordt gebruik gemaakt van Courier New.
57
Figuur 33: Overzicht AVR studio 4.14
A.2
AVRlib installeren en gebruiken
Het programma LCDtest van AVRlib zal in AVRstudio gecompileerd worden voor een ATmega644p. AVRlib is een uitgebreide C library, waarmee er op een hoger niveau in AVR GCC geprogrameerd kan worden. AVRlib beschikt over een groot aantal library’s voor bv USART, I2 2, ethernet en SD kaarten. Alle code is uitgebreid gedocumenteerd en er worden veel voorbeelden meegeleverd. AVRlib is te downloaden van http://hubbard.engr.scu.edu/avr/avrlib/docs/html/index.html. Installeer AVRLib in een makkelijk te bereiken map, bijvoorbeeld in C:\AVR\AVRlib. Om AVRlib goed samen te laten werken met AVRstudio, moeten er 2 omgevingsvariablen aangemaakt worden. Dit kan via rechtermuisknop op deze computer (of windowstoets+pause) /geavanceerd/omgevingsvariablen. Maak de omgevingsvariabele AVRlib en AVR aan en laat deze verwijzen naar de AVRlib directory en WINAVR installatie, zie figuur 34. Maak een nieuw project aan in AVR studio, zie figuur 35. Noem het lcdtest en klik op finish. Ga naar de map C:\avr\avrlib\examples\lcd en kopieer de .c en .h bestanden naar de projectmap. Ga nu terug naar avrstudio en klik met rechts op source files en kies de optie add existing source file. Zie 36. Selecteer het C bestand lcdtest.c uit de projectmap en voeg deze toe. Doe hetzelfde bij ’header files’ en voeg global.h en lcdconf.h toe. De kloksnelheid is gedefini¨eerd in config.h. Open dit bestand en zoek de regel #define+F_CPU+12000000 op en wijzig dit in #define+F_CPU+20000000).Hiermee wordt de kloksnelheid gewijzigd naar 20Mhz (noot:het programma wordt gecompileerd voor 20Mhz, de fuse bits moeten nog aangepast worden naar een 20Mhz kristal). Het device (in dit geval een ATmega644p) moet vervolgens ingesteld worden. Dit gaat via project/configuration options. Normaal wordt hier o.a. het device en kloksnelheid gekozen, maar dit kan ook gespecificeerd in een makefile. Er wordt nu gebruik gemaakt van een makefile, omdat avrlib gebruik maakt van veel losse bestanden en deze door het gebruik van een makefile goed ge¨ınclude 58
Figuur 34: Instellen omgevingsvariabelen voor AVRlib
Figuur 35: Nieuw project in AVR studio
59
worden in avrstudio.
Figuur 36: Toevoegen source files aan project De makefile komt nu links bij de files te staan onder external files. Open de makefile en wijzig de MCU, zie figuur 37.
Figuur 37: Instellen MCU Het project kan nu gecompileerd worden. Dit kan via de sneltoets F7 of de knop ’build active configuration’. In de projectmap is nu een hex bestand aangemaakt dan in de ATMega644p geprogrameerd kan worden met de Atmel AVRISP MK II programmer.
A.3
Aansluiten AVRISP MKII programmer op Atmelboard v 2.0
Sluit de AVRISP MKII aan op de pc. De programmer heeft een 6 pin stekker, via een adapterprint kan een 10 polige stekker hierop aangesloten worden. Het Deze 10 polige stekker kan op het Atmelboard van Mathieu Odijk aangesloten worden. In figuur 39 is deze adapterprint en programmer weergegeven. De pinout van beide stekker staat in figuur 39 Klik in AVRstudio op de knop Connect, kies in het linkerrijtje AVRISP MKII, selecteer de USB poort en klik op connect. Klik daarna op AVR en selecteer de ISP frequentie. Deze mag maximaal op 1/4 (aanbevolen 1/6 bij hogere frequenties) van de huidige kloksnelheid (1/6 bij hogere frequenties) van de AVR ingesteld zijn. Op fabrieksinstellingen draait de AVR op een interne klok van 1Mhz. Klik op read signature om te testen of het device herkent wordt. Ga vervolgens naar het tabblad Program en selecteer de hex file, zie 40. Klik nu op program om het hex bestand in de ATMega644p te laden. Ga tot slot naar het tabblad fuses. Wanneer een nieuwe uC gebruikt wordt op het bordje, moet eenmalig de AVR op een extern kristal van >10Mhz ingesteld worden en JTAG moet uitgezet worden. Dit kan met de volgende fuse instellingen: lfuse:0xE7, hfuse:0xD9. Deze kunnen onderin worden gewijzigd. Klik vervolgens op program. Als er nu wijzigingen aangebracht zijn en het bestand opnieuw gecompileerd is, kan de knop ’write flash memory using current settings’ gebruikt worden.
60
Figuur 38: Foto AVRISP MKII programmer en adapterprint van 6 naar 10 pin ISP connector
Figuur 39: AVR 6 en 10 pin ISP connector pinout
Figuur 40: Uploaden hex file 61
A.4
Aansluiten hardware
Sluit een lcd aan op het Atmelboard. In het bestand lcdconf.h kan het aantal regels en karakters per regel van het LCD aangepast worden. Sluit ook een het bordje via de seri¨ele kabel of USB aan op de PC. Hiertoe moet de serial conf header ingesteld worden. Verbindt pin 3 en 5 met elkaar, evenals pin 4 en 6 voor seri¨ele communicatie. Verbindt pin 1 en 3 evenals pin 2 en 4 voor USB. In Windows moet de verbinding ingesteld worden op 9600 baud, 8 databits, 1 stop bit, no parity en datatransportbesturing ’geen’ (apparaatbeheer). Met het programma HyperTerminal (start/alle programma’s/bureau-accessoires/communicatie kan de data welke de ATmega644p zend ontvangen worden, zie 41.
Figuur 41: Ontvangen data met HyperTerminal
62