ES1 Project 1: Microcontrollers Les 1: Installeren en verifiëren van de SDE Door Hugo Arends, augustus 2012 Microcontrollers Een microcontroller is een elektronische component dat gebruikt wordt om (complexe) besturingen te realiseren. Elektrische signalen van sensoren die binnen komen worden door de microcontroller bewerkt en omgezet naar elektrische stuursignalen. De bewerking van de data in een microcontroller wordt geschreven door programmeurs. Zij programmeren de microcontroller middels een Software Development Environment (SDE). De microcontroller waarvan gebruik gemaakt wordt tijdens project 1 is de ATmega32A van de firma Atmel. Dit wordt een 8-bit microcontroller genoemd, omdat er met 8-bits parallel gewerkt wordt. Het programmeren van deze microcontroller gebeurd met een SDE die ook afkomstig is van Atmel: AVR Studio. Meer informatie over deze microcontroller vind je in de datasheet: http://www.atmel.com/dyn/products/product_card.asp?pn=atmega32a AVR Studio In deze eerste les starten we met het downloaden en installeren we AVR Studio. Download de laatste versie van de installer van AVR Studio 6 van de website van Atmel. http://www.atmel.com/avrstudio Installeer AVR Studio 6. Dit kan even duren, want de installatie van de huidige versie AVR Studio 6 kent erg veel files. De mogelijkheden van een SDE leren kennen doe je het beste door deze veel te gebruiken. Dat is exact wat we tijdens de komende lessen en in project 1 gaan doen. Start AVR Studio. Het volgende scherm verschijnt: Toolbars Inhoud van files Files binnen een project Messages 1
Hello World! Bij het programmeren is het gebruikelijk een zgn. Hello World! programma te schrijven op het moment dat je met een nieuw project begint. Op die manier verifieer je snel of de setup van je SDE en/of hardware correct is. In een microcontroller project betekent dat vaak dat er wordt geprobeerd een LED te laten knipperen. Bij deze eerste les gaan we dat simuleren. De volgende les gebruiken we de hardware. Start een nieuw project door op de Start Page op New Project te klikken. Selecteer C/C++ en vervolgens GCC C Executable Project. Geef het project de Name: HelloWorld (De Solution name veranderd automatisch mee) Druk op OK. 2
Er verschijnt een window met de vraag voor welke microcontroller we software willen ontwikkelen. Selecteer ATmega32. Druk op OK. In de Solution Explorer is het project HelloWorld te zien. Daaronder staan twee mappen en één file: Dependencies: In deze map komen de files te staan waarvan het project afhankelijke is. Denk bijv. aan header files. Dit gebeurd zodra een project gecompileerd is. Output Files: In deze map komen de output files van het project. Denk bijv. aan de file die geprogrammeerd kan worden in de target hardware. Ook dit gebeurd pas zodra het project succesvol gecompileerd is. HelloWorld.c: Een source file welke automatisch toegevoegd is aan het project. Tevens is de file HelloWorld.c geopend in de editor. Er is zelfs al een begin gemaakt met de code. Verander de inhoud van de file HelloWorld.c zoals hiernaast staat aangegeven. Save de file. 3
Open de Properties van het project (ALT+F7). Klik op de tab Toolchain en vervolgens het kopje Symbols. Voeg het volgende symbol toe: F_CPU=1000000 Hiermee is binnen het hele project de define F_CPU bekent, waarmee de klokfrequentie van het systeem wordt geduid. Pas ook nog het optimalisatie level aan. Klik op de tab Optimization en vervolgens het kopje Optimization Level. Selecteer het level None (-O0). Hiermee wordt de code niet geoptimaliseerd, wat in dit geval niet wenselijk is, aangezien het om een erg eenvoudig project gaat. Save de instellingen (CTRL+S) en sluit het venster. Om van de C code een executable file te creëren, moet de solution gebuild worden. Build de solution (F7). Bekijk na het builden de inhoud van de Solution Explorer nogmaals. In de mappen Dependencies en Output Files zijn nu de files zichtbaar. Gefeliciteerd! Dit is je eerste project in AVR Studio!! Simulator Maar wat doet dit project nu eigenlijk? Laten we dat eens gaan bekijken met de simulator. Een simulator is een krachtig middel om je code te debuggen. Het simuleert namelijk de hardware waardoor je de code kunt testen zonder dat je daadwerkelijk hoeft te beschikken over de hardware. Eerst laten we AVR Studio weten welke debugger we willen gebruiken. Selecteer in de toolbar de optie No tool selected. 4
De properties van het project HelloWorld wordt geopend met het tabblad Tool geselecteerd. Selecteer bij het selectievak Selected debugger/programmer de AVR Simulator. Save de file en sluit af. Merk op dat de eerder optie No Debugger in de toolbar veranderd is naar AVR Simulator. Voordat we de debugger starten moeten we aangeven waar we willen dat de debugger stopt. Dit wordt een Breakpunt genoemd. Plaats een breakpunt in de file HelloWorld.c. Selecteer de regel zoals hiernaast aangegeven en druk op F9. Er verschijnt een rode bal in de kantlijn en de regel wordt rood gemarkeerd ter indicatie dat de debugger hier zal stoppen. Start de debugger (ALT+F5). De file HelloWorld.c komt naar de voorgrond en we zien een gele pijl in de kantlijn verschijnen. De debugger is nu gestopt met het uitvoeren van code. We kunnen nu stap-voor-stap door de code gaan en bekijken wat het effect is. 5
Eerst openen we de I/O View. Hiermee kunnen we o.a. het effect van de instructies bekijken op de poorten. Druk op in de toolbar. Het venster van hiernaast verschijnt. Selecteer PORTB. Run de code met F5. De debugger stopt bij het breakpunt. Ga vervolgens stap-voor-stap door de code met de optie Step Over (F10). Bestudeer het effect van de instructies op de I/O View. Samenvatting Aan het einde van deze eerste les heb je AVR Studio geïnstalleerd en heb je een eerste project gemaakt en gedebugged. Experimenteer met de SDE door verschillende opties uit te proberen en nieuwe projecten aan te maken. Kijk ook nog eens op de site van Atmel, daar staan aardige video tutorials. Ben je tijdens de les nog niet zover gekomen dat je alles af hebt gekregen, voer de opdrachten dan voor de volgende les thuis uit. Tijd over Als je nog wat meer wilt oefenen, probeer dan het volgende. Looplicht Maak een nieuw project met de naam Looplicht en zorg ervoor dat er op PORTB een looplicht te zien is. Follow me Maak een nieuw project met de naam FollowMe en zorg ervoor dat: PB0 aan gaat zodra PA0 aan gaat PB0 uit gaat zodra PA0 uit gaat. TIP1: Lezen van poort A kan met de define PINA. TIP2: Tijdens het debugger kun je PINA0 een andere waarde geven door er in de I/O View op te klikken. In deze onderwijspublicatie is géén auteursrechtelijk beschermd werk opgenomen. 6