Assembler und AVR Studio
Assembler und AVR Studio
Assembler und AVR Studio
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Teil 201 - Experimentierboards<br />
1 Experimentierboards zum Testen <strong>und</strong> Programmieren von <strong>AVR</strong>-Mikrocontroller<br />
1.1 Mit welchen Mitteln <strong>AVR</strong>-Mikrocontroller programmiert werden<br />
1.2 Starterkit STK500<br />
1.3 Entwicklungs-Tool <strong>AVR</strong> Dragon<br />
1.4 ATM18-Controllermodul <strong>und</strong> ATM18-Testboard<br />
1.5 <strong>AVR</strong>-ALE-Testboard<br />
Teil 202 - ISP-Programmieradapter<br />
2 ISP-Programmieradapter<br />
2.1 ISP Bezogen auf die verschiedenen Schnittstellen<br />
2.1.1 Serielle Schnittstelle<br />
2.1.2 Parallele Schnittstelle<br />
2.1.3 USB-Schnittstelle<br />
2.2 CC2-<strong>AVR</strong>-Programmer alias USBprog<br />
2.2.1 Aufbau<br />
2.2.2 Arbeitsweise<br />
2.2.3 Firmware-Änderung<br />
Teil 203 - <strong>AVR</strong>-ALE-Testboard<br />
3 Beschreibung des <strong>AVR</strong>-ALE-Testboard<br />
3.1 Schaltungsaufbau<br />
3.2 Stromversorgung<br />
3.3 Einsatz verschiedener <strong>AVR</strong>-Mikrocontroller<br />
3.4 Anzahl LEDs <strong>und</strong> Tasten<br />
3.5 LCD-Interface <strong>und</strong> 20x4-LCD<br />
3.5.1 Erzeugung des Enable-Signals für das LCD<br />
3.5.2 LCD-Backlight<br />
3.6 Ansteuerung von Relais<br />
3.7 RS-232-Schnittstelle<br />
3.8 USART-Testboard-Schnittstelle<br />
Teil 204 - <strong>AVR</strong> <strong>Studio</strong><br />
4 Einsatz des <strong>AVR</strong> <strong>Studio</strong><br />
4.1 <strong>AVR</strong> <strong>Studio</strong> installieren<br />
4.2 Testboard <strong>und</strong> Programmer zusammenschalten<br />
4.2.1 Treiber <strong>AVR</strong>ISP mkII neu installieren<br />
4.3 Starten von <strong>AVR</strong> <strong>Studio</strong><br />
4.3.1 <strong>AVR</strong> <strong>Studio</strong> <strong>und</strong> CC2-<strong>AVR</strong>-Programmer<br />
4.3.2 Mikrocontroller-Einstellungen im <strong>AVR</strong> <strong>Studio</strong><br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
5 <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
5.1 Der Übersetzer (<strong>Assembler</strong>)<br />
5.2 Ein neues Projekt erzeugen<br />
5.2.1 Der Projekt-Bereich<br />
5.2.2 Bearbeiten der <strong>Assembler</strong>datei<br />
5.2.3 Assemblieren des Quell-Codes<br />
5.3 Simulation des Codes<br />
5.3.1 Programmausführung im Einzelschrittverfahren<br />
5.3.2 Debugger-Stopp-Punkte<br />
5.4 Verändern des Programmtextes<br />
Tools_205 03.06.2013 Seite 1 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
5.4.1 Überwachen von Variablen<br />
5.4.2 Anzeigen der Prozessordetails<br />
5.4.3 Speichern des Projekts<br />
5.5 Erzeugen eines weiteren ASM-Projektes im Schnelldurchgang<br />
5.6 Flashen eines ASM-Programms in ein Mikrocontroller ATmega88<br />
Teil 206 - C-Compiler <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
6 CodeVision<strong>AVR</strong> C-Compiler <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
6.1 CodeVision<strong>AVR</strong> C-Compiler installieren<br />
6.2 Erzeugen eines C-Projektes<br />
6.2.1 Ein neues Projekt beginnen<br />
6.2.2 Ein C-Projekt generieren<br />
6.3 Einbinden von <strong>AVR</strong> <strong>Studio</strong> in den CV<strong>AVR</strong><br />
6.4 <strong>AVR</strong> <strong>Studio</strong> Debugger für CV<strong>AVR</strong><br />
6.5 Flashen eines C-Programms in ein Mikrocontroller ATmega88<br />
Teil 207 - Editor - UltraEdit<br />
7 Editor - UltraEdit<br />
7.1 Kopf- <strong>und</strong> Fuss-Zeile<br />
7.1.1 Einstellungen für <strong>Assembler</strong>-Programme<br />
7.1.2 Einstellungen für C-Compiler-Programme<br />
7.2. Einträge in das WORDFILE.TXT<br />
7.2.1 Gr<strong>und</strong>sätzliches Format<br />
7.2.2 Syntax Befehle<br />
7.3 Wortsammlung für <strong>AVR</strong>-<strong>Assembler</strong><br />
7.4 Wortsammlung für CodeVision<strong>AVR</strong> C-Compiler<br />
Hinweis<br />
Externe Anschaltungen <strong>und</strong> Hardware-Erweiterungen werden in der Gruppe 400 - ASM-Projekte <strong>und</strong><br />
in der Gruppe 600 - C-Projekte detailliert beschrieben.<br />
Tools_205 03.06.2013 Seite 2 von 31
Vorbemerkung<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Nichts ist vollkommen - <strong>und</strong> nichts ist endgültig! So auch nicht dieses Tutorial! Deshalb bitte immer<br />
erst nach dem neuesten Datum schauen. Vielleicht gibt es wieder etwas Neues oder eine Fehlerbereinigung<br />
oder eine etwas bessere Erklärung. Wer Fehler findet oder Verbesserungen vorzuschlagen<br />
hat, bitte melden (info@alenck.de).<br />
Immer nach dem Motto: Das Bessere ist Feind des Guten <strong>und</strong> nichts ist so gut, dass es nicht noch<br />
verbessert werden könnte.<br />
Bild-, Beispiel-, Form- <strong>und</strong> Tabellen-Nummern sind nach folgendem Schema aufgebaut, damit bei<br />
Einfügungen/Löschungen nicht alle Nummern wieder geändert werden müssen (hier bunt dargestellt):<br />
Darstellungsart Abschnitt-LfdNummer: Beschreibung allgemeines Schema<br />
Bild 5.1.4-02: Daten-Adress-Raum Benummerung eines Bildes<br />
Beispiel 5.1.4-03: EEPROM-Speicherung Benummerung eines Beispiels<br />
Form 5.1.3-01: Diemain-Funktion Benummerung einer Formdarstellung<br />
Tabelle 5.1.4-01: Schlüsselwörter vom CV<strong>AVR</strong> Benummerung einer Tabelle<br />
Gravierende Änderungen gegenüber der Vorversion<br />
1.<br />
Völlig neue Strukturierung in Gruppen <strong>und</strong> Teile, um das Tutorial umfassend ordnen zu können. Die<br />
Abschnitte in den Teilen sind weitgehend erhalten geblieben.<br />
Gruppenbezeichnung Kurzbezeichnung<br />
Gruppe 100: Technologie der <strong>AVR</strong>-8-Bit-Mikrocontroller Technologie<br />
Gruppe 200: Einsetzen von <strong>AVR</strong>-Tools Tools<br />
Gruppe 300: Arbeiten mit <strong>AVR</strong>-<strong>Assembler</strong> ASM-Programmierung<br />
3xx_Programm_yyyyy ASM-Programm-Beispiel<br />
Gruppe 400: <strong>AVR</strong>-ASM-Projekte ASM-Projekte<br />
4xx_Projekt_yyyyy ASM-Projekt-Bezeichnung<br />
Gruppe 500: CodeVision<strong>AVR</strong> C-Compiler C-Programmierung<br />
5xx_Programm_yyyyy C-Programm-Beispiel<br />
Gruppe 600: <strong>AVR</strong>-C-Projekte C-Projekte<br />
6xx_Projekt_yyyyy C-Projekt-Bezeichnung<br />
xx steht für die laufende Nummer innerhalb des Teils, in dem das Programm bzw. das Projekt erscheint<br />
<strong>und</strong> yyyyy steht für die Programm- bzw. Projekt-Kurz-Bezeichnung.<br />
2.<br />
Notwendige Änderungen auf Gr<strong>und</strong> Neuinstallation von Windows 7.<br />
3.<br />
Windows 7 machte eine Installation von CodeVision<strong>AVR</strong> V2.60 als Vollversion notwendig. Daraus<br />
leiten sich auch viele Änderungen im Detail für die C-Programmierung (Gruppe 500) ab.<br />
4.<br />
Neu-Installation von <strong>AVR</strong> <strong>Studio</strong> Vers. 4.19 unter Windows 7<br />
5.<br />
Zur Demonstration des Tools <strong>AVR</strong> <strong>Studio</strong> ist in Gruppe 200 eine Trennung in Teil 205 - <strong>Assembler</strong><br />
<strong>und</strong> <strong>AVR</strong> <strong>Studio</strong> <strong>und</strong> Teil 206 - C-Compiler <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong> vorgenommen worden.<br />
6.<br />
ASM- <strong>und</strong> C-Projekte werden jeweils in eigenen Gruppen gesammelt (Gruppe 400 für <strong>Assembler</strong><strong>und</strong><br />
Gruppe 600 für C-Projekte).<br />
Tools_205 03.06.2013 Seite 3 von 31
5 <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Anmerkungen:<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
1. Dieser Teil 205 setzt eigentlich Programmierkenntnisse in <strong>Assembler</strong> zur Erzeugung lauffähiger<br />
Programme voraus. Da hier allerdings nur die Handhabung von <strong>AVR</strong> <strong>Studio</strong> <strong>und</strong> des integrierten <strong>Assembler</strong>s<br />
beschrieben werden soll, werden die Schritte anhand von fertigen kleinen Programmen erläutert.<br />
2. Wer nicht in <strong>Assembler</strong> programmieren möchte kann den Teil 205 auch ganz überspringen <strong>und</strong><br />
gleich zum Teil 206 - C-Compiler <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong> springen.<br />
3. Von der Seite http://lehrer.schule.at/Doblinger/files/<strong>AVR</strong> <strong>Studio</strong> 4 Tutorial.pdf sind in diesem Abschnitt<br />
einige Anregungen entnommen worden.<br />
5.1 Der Übersetzer (<strong>Assembler</strong>)<br />
<strong>AVR</strong> <strong>Studio</strong> beinhaltet neben vielen anderen Ressourcen auch ein Übersetzungs-Tool für <strong>Assembler</strong>-<br />
Programme - dem sog. ASSEMBLER, meist abgekürzt ASM. Der wird automatisch herangezogen,<br />
wenn ein neues Projekt mit <strong>AVR</strong>-<strong>Studio</strong> eingerichtet <strong>und</strong> dabei Atmel <strong>AVR</strong> <strong>Assembler</strong> ausgewählt<br />
wird.<br />
Wenn <strong>AVR</strong> <strong>Studio</strong> neu gestartet wird, erscheint das Fenster Welcome to <strong>AVR</strong> <strong>Studio</strong> 4 (Einrichten<br />
eines neuen Projektes). Sollte das Fenster nach dem Start nicht zur Verfügung stehen, so wird zur<br />
Wiederherstellung des Dialogfensters Project => Project Wizard angeklickt <strong>und</strong> das Häkchen Show<br />
dialog at startup sollte für das Arbeiten mit <strong>Assembler</strong> wieder gesetzt werden.<br />
Bild 5.1-01: Startfenster des <strong>AVR</strong> <strong>Studio</strong><br />
Der Dialog zum Erstellen eines neuen Projektes kann entweder im Willkommensdialog mit dem Knopf<br />
New Project oder im Menü Project des <strong>AVR</strong> <strong>Studio</strong> Hauptfensters über die Option New Project aufgerufen<br />
werden.<br />
Tools_205 03.06.2013 Seite 4 von 31
5.2 Ein neues Projekt erzeugen<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Mit dem <strong>AVR</strong> <strong>Studio</strong> wird die Programmierung ausschließlich in Projekten abgewickelt. Das Aufrufen<br />
einer *.asm-Datei allein funktioniert nicht! Für jedes <strong>Assembler</strong>-Projekt wird eine Projekt-Datei (Projektname.aps)<br />
angelegt, die alle wichtigen Daten über das Projekt enthält:<br />
Welche Dateien dem Projekt zugeordnet wurden,<br />
die <strong>Assembler</strong>-Optionen,<br />
persönlich angepasste Formate usw.<br />
Die Projekt-Datei garantiert, dass das Projekt jederzeit in gleicher Form aufgerufen, geändert <strong>und</strong><br />
assembliert bzw. kompiliert werden kann. Wenn man mit der praktischen <strong>Assembler</strong>-Programmiertätigkeit<br />
beginnt, sollte man für seine ASM-Projekte einen eigenen Ordner vorsehen, in dem jedes<br />
Projekt seinen eigenen Unterordner erhält - dem Projektverzeichnis (Folder name), in dem <strong>AVR</strong> <strong>Studio</strong><br />
alle zum Projekt gehörenden Dateien abspeichert. Nach dem Motto "Ordnung hält nur der, der zu<br />
faul ist zum Suchen" wird für das erste Projekt gewählt:<br />
L:\ALEs_ASM_Progs\ALE_0001<br />
Es soll zunächst ein simples Demonstrations-Programm ALE_0001.asm mit <strong>AVR</strong> <strong>Studio</strong> erstellt <strong>und</strong><br />
in dem gleichnamigen Projektverzeichnis abgelegt werden: das Programm soll den Wert eines PORT-<br />
Registers so erhöhen, dass ein Binärzähler entsteht.<br />
Bild 5.2-01: Projekt-Startfenster Bild 5.2-02: Neuen Ordner erstellen<br />
Die angezeigte Location: zeigt beim ersten Aufruf wahrscheinlich auf das Systemlaufwerk C:\...<br />
Das soll geändert werden! Ein Klick auf öffnet das Menü Ordner suchen (Select folder), in dem<br />
der Ordner L:\ALEs_ASM_Progs\ALE_0001 auf dem Laufwerk KINGSTON (L:) neu eingerichtet<br />
werden soll (=> Neuen Ordner einstellen). <strong>AVR</strong> <strong>Studio</strong> stellt fest, dass der Ordner noch nicht existiert<br />
<strong>und</strong> hinterfragt, ob der Pfad neu erzeugt werden soll. Die Antwort muss lauten: Ja.<br />
Bild 5.2-03: Neuen Unterordner erstellen Bild 5.2-04: Die Lokation ist eingestellt<br />
Tools_205 03.06.2013 Seite 5 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Durch Anklicken von Atmel <strong>AVR</strong> <strong>Assembler</strong> wird das Feld Project name: freigegeben, so dass das<br />
Projekt einen Namen bekommen kann. Hier wird der Name ALE_0001 gewählt. Darüber hinaus wird<br />
der gleiche Name (automatisch) für das zu archivierende <strong>Assembler</strong>-Quell-Programm bestimmt:<br />
Initial file:ALE_0001.asm<br />
Bilder 5.2-05 <strong>und</strong> 5.2-06: Projekt- <strong>und</strong> Datei-Name festlegen<br />
Durch die Wahl Atmel <strong>AVR</strong> <strong>Assembler</strong> wird dem<br />
<strong>AVR</strong> <strong>Studio</strong> mitgeteilt, dass es sich bei der späteren<br />
Übersetzung des Quellprogramms nicht um<br />
eine C-Kompilierung (z.B. <strong>AVR</strong> GCC), sondern<br />
um eine <strong>AVR</strong> Assemblierung handelt. Wenn der<br />
Dialog mit dem Knopf Next>> bestätigt wird, erscheint<br />
nach einer Weile ein weiterer Dialog:<br />
Bild 5.2-07: Wahl des Mikrocontroller-Chips<br />
Damit <strong>AVR</strong> <strong>Studio</strong> später das Programm simulieren<br />
kann, muss hier <strong>AVR</strong> Simulator als Debug-<br />
Plattform ausgewählt <strong>und</strong> der verwendete Mikrocontroller-Typ angegeben werden. Im Beispiel wird<br />
der ATmega88 gewählt.<br />
Finish schließt die Projekt-Erzeugung ab <strong>und</strong> ermöglicht die manuelle Eingabe des Quell-Codes bzw.<br />
das Zuladen eines <strong>Assembler</strong>-Quell-Programms von der Festplatte im Editor-Fenster (integrierter<br />
Editor).<br />
Bild 5.2-08: Abschluss der Projekt-Erzeugung<br />
Tools_205 03.06.2013 Seite 6 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Eine Anmerkung am Rande zum Neustart von <strong>AVR</strong> <strong>Studio</strong>: Beim Neustart einer unterbrochenen<br />
Sitzung "denkt" <strong>AVR</strong> <strong>Studio</strong>, dass man ein neues Projekt beginnen möchte, wenn das Häkchen bei<br />
Show dialog at startup gesetzt war <strong>und</strong> öffnet wieder das Dialogfenster. Da <strong>AVR</strong> <strong>Studio</strong> sich aber<br />
auch "gemerkt" hat, dass die Projekt-Datei L:\<strong>AVR</strong>_ASM_Progs\ALE_0001\ALE_0001.aps als<br />
letzte in Bearbeitung war, so wird dieses Projekt auch mit dem Willkommensfenster wieder angeboten:<br />
5.2.1 Der Projekt-Bereich<br />
Bilder 5.2-09 <strong>und</strong> 5.2-10: Wiedereröffnung des Projektes<br />
Die Datei ALE_0001.asm wird automatisch als Hauptdatei des Projekts markiert. Dies ist erkennbar<br />
an dem kleinen roten Pfeil auf dem Icon neben dem Dateinamen im linken Feld - dem Projekt-<br />
Bereich Project. <strong>AVR</strong> <strong>Studio</strong> beginnt die Programmübersetzung immer bei der Hauptdatei, von der es<br />
im Ordner Source File immer nur eine geben kann.<br />
Merke: Die im Projekt-Bereich von <strong>AVR</strong> <strong>Studio</strong> angegebenen Ordner sind nicht identisch mit den Ordnern<br />
des Windows-Explorers! Da sucht man die Ordner vergeblich. Sie sind "versteckt" in der Projekt-<br />
DateiALE_0001.aps vorhanden.<br />
Wenn in einem ASM-Projekt mehrere Dateien<br />
benötigt werden, so können neue<br />
oder bestehende Dateien dem Projekt hinzugefügt<br />
werden. Nach einem Rechtsklick<br />
mit der Maus auf den Ordner Source File<br />
im Projekt-Bereich wird mit der Option<br />
Create New File eine neue Datei erstellt,<br />
deren Name danach angegeben werden<br />
muss. Durch die Option Add Files to Project<br />
können weitere bestehende Dateien<br />
hinzugefügt werden, <strong>AVR</strong> <strong>Studio</strong> fragt automatisch<br />
nach dem Ort der Datei.<br />
Bild 5.2.1-01: Hauptdatei des Projektes<br />
festlegen<br />
Eine neue Hauptdatei des Projektes wird festgelegt, indem auf ihren Dateinamen im Projekt-Bereich<br />
mit der rechten Maustaste geklickt wird <strong>und</strong> dann die Option Set as Entry File gewählt wird. Die neue<br />
Hauptdatei erhält dann den kleinen roten Pfeil .<br />
Erklärung der linken Ordner-Struktur im Projekt-Bereich<br />
Das neue Projekt heißt ALE_0001.aps <strong>und</strong> beinhaltet (schon für die zukünftige Assemblierung) die<br />
Ordner:<br />
Tools_205 03.06.2013 Seite 7 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Source Files<br />
Der Ordner enthält bereits die noch leere neu zu erstellende QuelldateiALE_0001.asm.<br />
In diesem Ordner werden alle Quelldateien aufgeführt. Ein Doppel-Klick auf ein beliebiges<br />
Programm in diesem Ordner öffnet es im Editor-Fenster zur weiteren Bearbeitung.<br />
Included Files<br />
Alle zum Projekt zugehörigen Include-Dateien, d.h. Dateien, die per <strong>Assembler</strong>-Direktive<br />
.INCLUDE in dem Hauptprogramm eingefügt werden, werden hier gelistet. Ein Doppel-<br />
Klick auf eine beliebige Datei in diesem Ordner öffnet sie im Editor-Fenster zur weiteren<br />
Bearbeitung.<br />
Labels<br />
Alle im <strong>Assembler</strong>-Quellprogramm verwendeten Labels werden hier gelistet. Ein Doppel-<br />
Klick auf ein beliebiges Label in diesem Ordner öffnet das betreffende Quellprogramm im<br />
Editor-Fenster an der Stelle des Labels zur weiteren Bearbeitung.<br />
Output<br />
Alle Ausgabe-Dateien werden hier aufgelistet.<br />
Object File<br />
Das erzeugte "Maschinen-Programm" wird hier abgelegt.<br />
5.2.2 Bearbeiten der <strong>Assembler</strong>datei<br />
Nachdem nun ein neues Projekt mit einer leeren Datei erstellt wurde, wird mit der Eingabe des <strong>Assembler</strong>-Programms<br />
begonnen. Sollte die Datei ALE_0001.asm nicht geöffnet sein, so kann diese im<br />
Editor-Fenster geöffnet werden, indem im Projekt-Bereich mit Doppelklick auf den Dateinamen geklickt<br />
wird. Die Datei ist zunächst leer, der Programmtext muss manuell ergänzt werden. Es soll der<br />
folgende Text eingetippt oder durch Kopieren eingegeben werden:<br />
Nach der Eingabe des Programms sollte es gespeichert werden. Dazu ist aus dem Menü File die<br />
Option Save zu verwenden.<br />
Tools_205 03.06.2013 Seite 8 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.2.2-01: Fertig editiertes <strong>und</strong> abgespeichertes <strong>Assembler</strong>-Quellprogramm<br />
Das <strong>AVR</strong> <strong>Studio</strong> Hauptfenster sollte nun nach der Eingabe des Quellprogramms wie in Bild 5.2.2-01<br />
dargestellt aussehen. Kleine Abweichungen sind möglich, da jedes Feld individuell eingestellt werden<br />
kann. Die farbliche Kennzeichnung der Syntaxhervorhebung weicht vom Beispieltext erheblich ab, da<br />
der integrierte Editor von <strong>AVR</strong> <strong>Studio</strong> für die Syntaxhervorhebung nur wenige Einstellmöglichkeiten<br />
bietet (siehe Teil 207 - Editor - UltraEdit).<br />
Die Include-Datei (partfile) m88def.inc für den einzusetzenden Mikrocontroller (hier: ATmega88)<br />
wird automatisch aus dem bei der Installation von <strong>AVR</strong> <strong>Studio</strong> vorgesehen Programm-Ordner zugeladen<br />
<strong>und</strong> braucht nicht mehr im selben Ordner wie das <strong>Assembler</strong>-Quellprogramme aufgeführt zu werden.<br />
Für den aktuellen <strong>Assembler</strong> (in den Programm-Ordnern steht Avr<strong>Assembler</strong>2 mit der Ordnungszahl<br />
2 ! im Gegensatz zum ebenfalls noch vorhandenen älteren <strong>Assembler</strong> ohne Ordnungszahl)<br />
stehen die Include-Dateien für alle <strong>AVR</strong>-Mikrocontroller, die von <strong>AVR</strong> <strong>Studio</strong> bedient werden<br />
können, im Ordner<br />
C:\Program Files (x86)\Atmel\<strong>AVR</strong> Tools\Avr<strong>Assembler</strong>2\Appnotes<br />
Die umständliche vollständige Pfadangabe wird<br />
weder in Additional Include path des Menüs für<br />
die <strong>Assembler</strong>-Optionen noch in der .INCUDE-<br />
Direktive im Quellprogramm angegeben.<br />
In den <strong>Assembler</strong>-Optionen wird noch der Haken<br />
gesetzt, um ein Listen-File zu erzeugen. Die <strong>Assembler</strong>-Optionen<br />
werden aufgerufen durch:<br />
Project => <strong>Assembler</strong> Options<br />
Create Map File ist Standard-Einstellung <strong>und</strong><br />
Create List File erhält einen zusätzlichen Haken<br />
Bild 5.2.2-02: <strong>Assembler</strong>-Optionen aufrufen<br />
Tools_205 03.06.2013 Seite 9 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Mit der Einstellung Version 2 (Default-Einstellung) wird der neueste <strong>Assembler</strong> eingestellt. Sollte ein<br />
älteres ASM-Programm assembliert werden, welches nicht mit dem <strong>AVR</strong>-<strong>Assembler</strong>2 kompatibel ist,<br />
so hilft ggf. die Markierung bei Version 1<br />
5.2.3 Assemblieren des Quell-Codes<br />
Die Assemblierung wird eingeleitet im Menü Build =><br />
Build (F7) oder => Build and Run (Strg+F7), je nach<br />
dem, ob man nur assemblieren oder auch gleichzeitig<br />
das Programm in den Mikrocontroller übertragen<br />
(flashen) <strong>und</strong> dort ablaufen lassen will.<br />
Bild 5.2.3-01: Assemblierung aufrufen<br />
<strong>AVR</strong> <strong>Studio</strong> übersetzt nun den Quelltext des Programms<br />
in die für den Mikrocontroller ausführbaren<br />
Befehle. Das Hauptfenster sollte danach wie folgt aussehen<br />
(im Projekt-Bereich sind die Ordner jetzt geöffnet):<br />
Bild 5.2.3-02: Nach der Assemblierung (Bildvergrößerung)<br />
Bei der Programmübersetzung kam es zu keinen Fehlern. Das fertige Objekt-Programm ist im Unterverzeichnis<br />
L:\ALEs_ASM_Progs\ALE_0001\ unter dem Dateinamen ALE_0001.hex<br />
abgelegt. Diese Datei könnte mit dem ICC2-<strong>AVR</strong>-Programmer in den Mikrocontroller übertragen<br />
(geflasht) werden. Zuvor soll jedoch das Programm in <strong>AVR</strong> <strong>Studio</strong> durch eine Simulation auf sein Verhalten<br />
untersucht werden.<br />
Tools_205 03.06.2013 Seite 10 von 31
5.3 Simulation des Codes<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bis hierher sind alle Dateien erstellt worden, die zur Simulation des Programms benötigt werden. Fehler<br />
(Errors) <strong>und</strong> Warnungen sind nicht aufgetreten, d.h. das <strong>Assembler</strong>programm ist ohne formale<br />
Fehler. Das heißt aber noch lange nicht, dass das Programm auch in seinem logischen Ablauf unseren<br />
Wünschen entspricht. Das Programm macht nur das - ggf. auch Unsinniges - was wir ihm per<br />
Coding mitgeteilt haben. Um das heraus zu bekommen, ob unser Wollen mit unseren Befehlen übereinstimmt,<br />
wird jetzt mit einer Simulation des Codes begonnen.<br />
Mit der Simulation kann man jeden einzelnen Programmschritt - aber auch eine einstellbare Sequenz<br />
aus mehreren Befehlen - mit seinen Wirkungen für Registerinhalte, Ports- <strong>und</strong> Timer-Funktionen usw.<br />
verfolgen. Veränderte Bits können so genau beobachtet werden.<br />
Um die Simulation anzustoßen, wird aus dem Menü Debug die Option Start Debugging aufgerufen:<br />
Bild 5.3-01: Debugger aufrufen<br />
Es wird nun im Editor ein gelber Pfeil auf der linken Seite des Programms angezeigt. Dieser Pfeil ist<br />
der Befehlszeiger (Instruction Pointer) <strong>und</strong> zeigt auf den nächsten auszuführenden Befehl. Im linken<br />
Bereich ist nun der Processor aktiv <strong>und</strong> zeigt die internen Strukturen des simulierten Prozessors an.<br />
Tools_205 03.06.2013 Seite 11 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.3-02: Beginn der Simulation<br />
Die Details werden im rechten Bereich I/O View angezeigt, z.B. was mit Port B während der Programmausführung<br />
geschieht. Es werden alle I/O-Einheiten des simulierten Prozessors angezeigt. Um<br />
nun die Details für Port B anzusehen, muss mit der linken Maustaste auf das kleine "+" nebenPORTB<br />
geklickt werden:<br />
Tools_205 03.06.2013 Seite 12 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.3-03: Detail-Anzeige vonPORTB<br />
Es werden alle Register, die mit Port B zusammenhängen, angezeigt. Dazu gehören das Port B Daten-Register<br />
PORTB, das Port B Eingangsregister PINB <strong>und</strong> das Datenrichtungsregister DDRB.<br />
Jedes Bit in den Registern wird durch eine Checkbox dargestellt. Eine logische Null (0) wird durch<br />
eine leere Checkbox <strong>und</strong> eine logische Eins wird durch eine ausgefüllte Checkbox angezeigt. Diese<br />
Checkboxen werden während der Programmausführung ständig aktualisiert <strong>und</strong> zeigen den jeweiligen<br />
Zustand der einzelnen Bits. Die einzelnen Bits können zwischenzeitlich auch durch Anklicken der<br />
Checkboxen mit der linken Maustaste gesetzt oder gelöscht werden, z.B. um Taster-Aktivitäten zu<br />
simulieren. Links neben den Checkboxen stehen die aktuellen Werte der Register in hexadezimaler<br />
Notation.<br />
5.3.1 Programmausführung im Einzelschrittverfahren<br />
Es gibt zwei Kommandos, um das Programm im Einzelschrittverfahren auszuführen. Dies sind Step<br />
Over (Funktionstaste F10) <strong>und</strong> Step Into (Funktionstaste F11) im Menü von Debug. Der Unterschied<br />
zwischen diesen Kommandos ist, dass Step Over nicht in Unterroutinen hineinläuft. Da das Beispielprogramm<br />
keine Unterroutinen besitzt, macht es im Beispiel keinen Unterschied, ob Step Over oder<br />
Step Into benutzt wird.<br />
Durch wiederholtes Betätigen von Step Into (F11) wird das Programm in Einzelschritten bis zur letzten<br />
Programmzeile rjmp LOOP ausgeführt, um dann lustig in der Programmschleife seine "Loopings"<br />
zu machen. Die Register wechseln ihre Farbe von schwarz auf rot, sobald ihr Wert verändert wird.<br />
Dadurch lässt sich einfacher beobachten, welche Register während der Programmausführung aktiv<br />
beteiligt sind.<br />
Durch weiteres Betätigen von Step Into oder der Funktionstaste F11 wird die Endlosschleife mehrfach<br />
durchlaufen. Dabei kann beobachtet werden, wie der Wert von Port B erhöht wird. Mit Reset (Umschalt+F5)<br />
wird wieder ganz von vorn beirjmp START angefangen.<br />
Tools_205 03.06.2013 Seite 13 von 31
5.3.2 Debugger-Stopp-Punkte<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.3.1-01: Einzelschritte mit Funktionstaste F11<br />
Hinweis: Trotz Zwischenspeicherung fallen nach Abbruch des Ablaufs der Debugger-Demonstration<br />
alle Assemblierungs-Hinweise weg, so dass nach erneutem Start des<br />
L:\<strong>AVR</strong>_ASM_Progs\ALE_0001\ALE_0001.aps<br />
eine neue Assemblierung notwendig wird. Gemäß den Bilder 5.2-09 <strong>und</strong> 5.2-10 wird das Projekt wiedereröffnet<br />
<strong>und</strong> in Einzelschritten werden die Abschnitte 5.2.3, 5.3 <strong>und</strong> 5.3.1 wiederholt, so dass hier<br />
mit dem Abschnitt 5.3.2 fortgefahren werden kann:<br />
Bild 5.3.2-01: Wiederaufsetzen nach einer Unterbrechung<br />
Tools_205 03.06.2013 Seite 14 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Durch setzen von Debugger-Stopp-Punkten (Breakpoints) kann der Ablauf eines Programms an beliebiger<br />
Stelle angehalten werden. Man bringt den Cursor z.B. auf die Zeile mit dem Befehl rjmp<br />
LOOP <strong>und</strong> betätigt Funktionstaste F9 oder wählt aus dem Menü Debug die Option Toggle Breakpoint.<br />
Der Stopp-Punkt kann durch erneutes Betätigen der Funktionstaste F9 wieder entfernt werden.<br />
Bild 5.3.2-02: Setzen eines Debugger-Stopp-Punktes<br />
Am linken Rand des Editor-Fensters erscheint ein roter Punkt <strong>und</strong> zeigt den soeben erstellten Stopp-<br />
Punkt an. Wenn aus dem Menü Debug die Option Run gewählt wird oder die Funktionstaste F5 gedrückt<br />
wird, läuft das Programm von der momentanen Position des Cursors los <strong>und</strong> hält erst an der<br />
Stelle mit dem Stopp-Punkt wieder an.<br />
In dem Beispiel läuft das Programm mit voller Geschwindigkeit immer wieder bis zum Ende der Endlosschleife,<br />
so dass die Funktionstaste F11 nicht 3-mal für jeden Loop gedrückt werden muss, um die<br />
Endlosschleife einmal komplett zu durchlaufen. Bei längeren Passagen kann so der Simulationsprozess<br />
erheblich beschleunigt werden.<br />
Merke: Die Funktionstasten F5, F11 (F10) <strong>und</strong> F9 können auch im beliebigen Wechsel verwendet<br />
werden.<br />
5.4 Verändern des Programmtextes<br />
Auch fertige Programme werden neueren Bedürfnissen angepasst oder dienen dazu, indem sie durch<br />
kleine Änderungen variiert werden, einen neuen Ablauf zu generieren. Zum Beispiel soll das Programm<br />
jetzt abwärts statt aufwärts zählen. Entsprechend soll der Programmtext editiert werden. Der<br />
Cursor wird im Editorfenster vor den Befehl inc (increment) gesetzt, dieser wird in dec (decrement)<br />
geändert. Wenn nun die Programmausführung wieder mit der Funktionstaste F5 (Run) gestartet wird,<br />
erscheint folgende Dialogbox:<br />
Bild 5.4-01: Aufforderung zur Neuübersetzung (Update)<br />
Tools_205 03.06.2013 Seite 15 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
<strong>AVR</strong> <strong>Studio</strong> bemerkt, das der Programmtext während der Simulation geändert wurde <strong>und</strong> fragt, ob die<br />
Neuübersetzung des Programms gewünscht wird. Das ist beabsichtigt, so dass die Frage mit Ja beantwortet<br />
wird.<br />
Das Projekt wird nun erneut übersetzt <strong>und</strong> der Befehlszeiger wird wieder auf die erste Zeile gesetzt.<br />
Eingestellte Stopp-Punkte bleiben unangetastet bestehen:<br />
Bild 5.4-02: Neuübersetzung (Update) des Quell-Programms<br />
5.4.1 Überwachen von Variablen<br />
Um während der Programmausführung den Inhalt von Variablen sehen zu können, kann im Menü<br />
View mit der Option Watch ein Fenster zur Überwachung der Variablen geöffnet werden.<br />
Bild 5.4.1-01: Einrichtung eines Überwachungsfensters<br />
Tools_205 03.06.2013 Seite 16 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Alle Variablen, die mit der Angabe .DEF definiert wurden, können im Fenster zur Überwachung angezeigt<br />
werden. Im Beispiel isttemp die einzige definierte Variable. Nachdem mit der rechten Maustaste<br />
in das Fenster zur Überwachung der Variablen geklickt <strong>und</strong> dann Add Item ausgewählt wurde, kann<br />
dorttemp eingegeben werden:<br />
Bild 5.4.1-02: Eintragung in das Überwachungsfenster (Bildvergrößerung)<br />
Nach Betätigen der Eingabetaste erscheint die Variable temp im Fenster Watch zur Überwachung.<br />
Die Wahl Display all Values as Hex zeigt den Wert der Variablen, indem man nun das Programm<br />
Schritt für Schritt weiter ausführt, in hexadezimaler Form an.<br />
Bild 5.4.1-03: Variable temp zur Überwachung<br />
festlegen<br />
Bild 5.4.1-04: Festlegung des Ausgabeformats<br />
(BIldvergrößerung) als Hex<br />
Tools_205 03.06.2013 Seite 17 von 31
5.4.2 Anzeige der Prozessordetails<br />
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Die internen Strukturen des simulierten Prozessors können im linken Fenster als Detailansicht beobachtet<br />
werden. Hier werden prozessorspezifische Informationen wie Programmzähler, hoch gezählte<br />
Taktzyklen <strong>und</strong> verstrichene Zeit angezeigt. Diese Daten sind nützlich, wenn man die genaue Länge<br />
einer Schleife oder die exakte Zeit einer Unterroutine bestimmen will. In dem Beispiel werden solche<br />
Informationen nicht weiter benötigt, sie stellen aber eine nützliche Informationsquelle während der<br />
Simulation von größeren Projekten dar.<br />
5.4.3 Speichern des Projekts<br />
Bevor <strong>AVR</strong> <strong>Studio</strong> verlassen wird, muss das Projekt gespeichert werden. <strong>AVR</strong> <strong>Studio</strong> merkt sich die<br />
Positionen der Fenster <strong>und</strong> stellt diese wieder her, wenn das Projekt erneut geöffnet wird. Um das<br />
Projekt zu speichern, wird aus dem Menü Project die Option Save Project gewählt. Dann kann es<br />
getrost mit File <strong>und</strong> Exit verlassen werden.<br />
5.5 Erzeugen eines weiteren ASM-Projektes im Schnelldurchgang<br />
Jetzt sollen die Schritte noch einmal mit einem weiteren Projekt durchlaufen werden, ohne die kommentierenden<br />
Sprüche. Das neue <strong>Assembler</strong>-Programm ALE_0002.asm demonstriert, wie mit Tastern<br />
kleine LEDs aus- <strong>und</strong> eingeschaltet werden können:<br />
Tools_205 03.06.2013 Seite 18 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Das Programm ist auch auf dem Testboard lauffähig. Die Besonderheit ist, dass die LEDs mit einem<br />
invertierenden Treiberbaustein ULN2003 angesteuert werden. Sie sind mit ihrer Anode <strong>und</strong> einem<br />
Pull-up-Widerstand auf +5 V gelegt, so dass sie an ihrem "Eingang" bzw. an dem Ausgang des Treibers<br />
Null-Potential (GND = logisch 0) zum Leuchten benötigen. Oder anders ausgedrückt: Wenn am<br />
Treiber-Eingang logisch1anliegt, so leuchtet die entsprechende LED.<br />
Die Tasten sind ebenfalls mit Pull-up-Widerständen auf +5 V gelegt, so dass sie in Ruhestellung<br />
einen angeschlossenen Eingangs-Pin des Mikrocontrollers auf HIGH (logisch 1) ziehen. Die Logik<br />
wird also "umgekehrt":<br />
Taster in Ruhe => Chip-Eingang auf 1 => Chip-Ausgang/Treiber-Eingang auf 1<br />
=> Treiber-Ausgang auf 0 => LED ist EINgeschaltet<br />
Taster gedrückt => Chip-Eingang auf 0 => Chip-Ausgang/Treiber-Eingang auf 0<br />
=> Treiber-Ausgang auf 1 => LED ist AUSgeschaltet<br />
Das neue Projekt ALE_0002 soll ebenfalls im Ordner L:\ALEs_ASM_Progs angelegt werden,<br />
analog zur Beschreibung im Abschnitt 5.2:<br />
Bild 5.5-01: Neues Projekt anlegen Bild 5.5-02: Lokation festlegen<br />
Bild 5.5-03: Neuen Ordner erstellen Bild 5.5-04: Neuer Ordner heißtALE_0002<br />
Tools_205 03.06.2013 Seite 19 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-05: Projektname festlegen Bild 5.5-06: Mikrocontroller festlegen<br />
Bild 5.5-07: Neues Programm ALE_0002.asm editieren <strong>und</strong> . . .<br />
Tools_205 03.06.2013 Seite 20 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-08: . . . assemblieren<br />
Bei der Programmübersetzung kam es zu keinen Fehlern. Das fertige Objekt-Programm ist im Unterverzeichnis<br />
L:\ALEs_ASM_Progs\ALE_0002\ unter dem Dateinamen ALE_0002.hex<br />
abgelegt. Diese Datei könnte mit dem ICC2-<strong>AVR</strong>-Programmer in den Mikrocontroller übertragen<br />
(geflasht) werden. Zuvor soll jedoch das Programm in <strong>AVR</strong> <strong>Studio</strong> durch eine Simulation auf sein Verhalten<br />
untersucht werden.<br />
Tools_205 03.06.2013 Seite 21 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-09: Debugger-Start (Bildvergrößerung)<br />
Ausgangsposition des Debuggers<br />
Tools_205 03.06.2013 Seite 22 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-10: Debugger nach dem 6. Schritt (6 mal Funktionstaste F11drücken)<br />
Variabletemp (identisch mit Registerr16) ist mit00001111 "geladen"<br />
Tools_205 03.06.2013 Seite 23 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-11: Debugger nach dem 9. Schritt (Bildvergrößerung)<br />
00001111 nachDDRC <strong>und</strong>11110000 nachDDRD<br />
Tools_205 03.06.2013 Seite 24 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-12: Debugger nach dem 11. Schritt;Zero-Bit inSREG gesetzt, datemp = 0<br />
<strong>und</strong> weil inPIND keine Bits (simulierte Taster) durch Anklicken gesetzt wurden<br />
Tools_205 03.06.2013 Seite 25 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-13: Nach einer "Ehrenr<strong>und</strong>e" ohne Änderungen im Programm wurden<br />
inPIND BitPD0 <strong>und</strong> BitPD2 manuell gesetzt, die mit dem nächsten Schritt "gelesen" werden<br />
Die Bits PD0 <strong>und</strong> Bit PD2 sollen zwei der Taster simulieren: In dem man die Bits in PIND manuell<br />
setzt, wird dem Programm "vorgegaukelt", dass die Taste 1 <strong>und</strong> die Taste 3 gedrückt worden seien.<br />
Mit dem nächsten Schritt werden mit dem Befehl in temp,PIND die Bits abgefragt <strong>und</strong> im übernächsten<br />
Schritt werden die Setzungen (Schalterstellungen) mit dem Befehl out PORTC,temp im<br />
PORTC ausgegeben.<br />
Man beachte (kleine Wiederholung): Der gelbe Pfeil steht immer vor dem nächsten auszuführenden<br />
Befehl.<br />
Tools_205 03.06.2013 Seite 26 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-14: Drei Schritte weiter werden die<br />
Bits nachPORTC ausgegeben (Bildvergrößerung) <strong>und</strong> . . .<br />
Tools_205 03.06.2013 Seite 27 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.5-15: . . . im nächsten Schritt (Loop-Anfang) vonPINC<br />
übernommen (ohne weiteren Befehl) usw. usw. . . .<br />
Alle weiteren Schritte haben keine Veränderung im PORTC zur Folge, solange, wie keine Bits in PIND<br />
geändert werden (also im "Wirkbetrieb": So lange wie die Taste 1 <strong>und</strong> Taste 3 gedrückt bleibt).<br />
5.6 Flashen eines ASM-Programms in ein Mikrocontroller ATmega88<br />
Das Programm ALE_0002 ist jetzt assembliert <strong>und</strong> simuliert worden. Aber ein Test im "Wirkbetrieb" ist<br />
natürlich noch wichtiger. Dazu muss der Objektcode (das assemblierte Programm) in den Mikrocontroller<br />
(hier in den Mikrocontroller auf dem <strong>AVR</strong>-ALE-Testboard) geflasht werden, es müssen die notwendigen<br />
Verbindungen zwischen den Pins hergestellt werden.<br />
Als erstes werden auf dem <strong>AVR</strong>-ALE-Testboard die einzelnen Pins mit den Verbindungsschnüren<br />
verb<strong>und</strong>en.<br />
Dann wird das Board mit seinem Netzteil mit Spannung versorgt.<br />
Der ISP-Programmieradapter wird mit seinem USB-Stecker in einen freien USB-Steckplatz des PCs<br />
gesteckt, in dem das neue Programm abgespeichert wurde.<br />
Tools_205 03.06.2013 Seite 28 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.6-01: Beschaltung ALE_0002 (Bildvergrößerung)<br />
Überflüssige Schaltkreise <strong>und</strong> die Stromversorgung wurden in dem Beschaltungsbild weggelassen.<br />
<strong>AVR</strong> <strong>Studio</strong> wird nun erneut gestartet <strong>und</strong> das "Welcome"-Fenster" wird "gecancelt":<br />
Bild 5.6-02: Ausschalten des "Welcome"-Fensters<br />
Dann wird die Verbindung zum CC2-<strong>AVR</strong> Programmer (ISP-Programmieradapter) hergestellt (die<br />
Einstellungen wurden ja schon im Abschnitt 4.3.2 Mikrocontroller-Einstellungen im <strong>AVR</strong> <strong>Studio</strong><br />
vom Teil 204 vorgenommen, so dass man sich damit nicht mehr aufhalten muss):<br />
Tools_205 03.06.2013 Seite 29 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.6-03: Mit dem CC2-<strong>AVR</strong>-Programmer eine Verbindung herstellen<br />
Bild 5.6-04: Objektdatei (*.hex-File) suchen<br />
Tools_205 03.06.2013 Seite 30 von 31
<strong>AVR</strong>-8-bit-Mikrocontroller<br />
Gruppe 200 - Einsetzen von <strong>AVR</strong>-Tools<br />
Teil 205 - <strong>Assembler</strong> <strong>und</strong> <strong>AVR</strong> <strong>Studio</strong><br />
Bild 5.6-05: Objektdatei öffnen<br />
Bild 5.6-06: Programm flashen ==> <strong>und</strong> das Programm testen ==> alles O.K.<br />
Tools_205 03.06.2013 Seite 31 von 31