Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Assembler Kurs - Grundausstattung

Wer sich ernsthafter mit Mikrocontrollern befassen möchte und bereits Erfahrung mit der BASIC STAMP, dem Propeller Controller oder Arduino UNO, vielleicht auch dem Raspberry Pi gesammelt hat, sollte hier einsteigen.

Man erfährt hier mehr über ihre innere Struktur, warum sie so arbeiten, wie sie es tun und ist nicht mehr auf fremde Bibliotheken angewiesen, wenn es um die Steuerung bestimmter Bauteile geht.

 

Programmiert wird vorrangig in ASSEMBLER. Die Möglichkeiten von AVR Studio, quasi hinter die Kulissen eines Programmes zu schauen, werden genutzt und gezeigt. Dazu wird auch ein AVR-Simulator (kostenpflichtig) der Fa. OShonSoft eingesetzt.

1 - BASCOM und benutzte Hardware

  • Bewährt hat sich ein erster Assembler-Zugang über BASCOM. Ein Assembler-Programm lässt sich in seinem Editor genau so erstellen wie man vorher bereits BASIC Programme geschrieben hat. Der Unterschied: man muss neue "Vokabeln" lernen und sich mit der neuen Syntax und benutzten Hardware etwas intensiver auseinandersetzen, als es bei einer Hochsprache notwendig ist. Das Datenblatt eines Controllers gehört dabei ab sofort mit zur unverzichtbaren Lektüre. Programmbeispiele unter BASCOM findest du hier.

    Für die Arbeit mit BASCOM wird als Hardware ein Brenner möglichst mit Nullkraftsockel, ein Steckbrett für den Aufbau von Schaltungen (auch dieses möglichst mit Nullkraftsockel) und eine Energiequelle benötigt.

 

 

 

 

 

 

 

 

 

 

 

Abbildung 1 - Grundausstattung BRENNER für den BASCOM-Assemblerkurs (GA_BR): AVR-Brenner mit Nullkraft-Sockel

 

 

 

 

 

 

 

 

 

Abbildung 2 - Grundausstattung ANWENDERSCHALTUNG (GA_AS) für den BASCOM-Assemblerkurs: Nullkraftsockel, Steckbrett und Batteriehalter für 3 x AA Batterien

Als Energiequelle eignet sich auch - falls vorhanden - jedes Controller-Board mit herausgeführten  Buchsen über +5V bzw. +3,3V und Masse.

2 - AVRStudio4 und das STK200

  • Wer bisher ausschließlich in Hochsprachen programmiert hat (BASIC, PASCAL, C o.ä.) und sich stärker mit Assembler beschäftigen möchte, wird umlernen müssen. Um die in einem Controller ablaufenden Prozesse besser verstehen und umsetzen zu können, muß man sich mehr mit der physikalische Ebene eines Controllers beschäftigen. Als Programmieroberfläche wird hierzu die integrierte Entwicklungsumgebung AVR Studio in der Version 4.19 benutzt.

    Die in Abb. 1 und 2 gezeigte Hardwareausstattung kann auch unter AVRStudio benutzt werden. In meinen Beispielen zu diesem Kapitel werden alle Versuche am
    STK200 durchgeführt.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 3 - STK200-Board und ISP2 Programmer. In dieser Abbildung ist das Board mit einem ATtiny13A ausgerüstet.

In diesem Kapitel wird ausschließlich mit einem STK200 Board und AVR Studio 4.19 gearbeitet. Das Board besticht durch seinen günstigen Preis und die auf der Platine vorinstallierten Elemente (Taster, LEDs, Potentiometer, ADC etc.). Darüberhinaus lassen sich alle hier eingesetzten AVR-Controller über das Board ansprechen. Zusätzlich wird ein Schaltnetzteil von 9V DC, 800 mA benutzt.

 

AVR Studio in der Version 4.19 wurde deshalb gewählt, weil es schnell und nicht so überfrachtet ist, wie die neueste Studioversion aus dem Hause ATMEL. Es ist kostenfrei aus dem Internet herunterladbar und muss für die Durchführung der Übungen auf einem PC oder Laptop installiert sein. Gleiches gilt für den ISP2-Programmer.

In einer ersten Übung wird ein sehr einfaches Assemblerprogramm geschrieben, das nur eine bestimmte LED auf der Bargraf-Anzeige des STK200 einschaltet. Das kurze Programm dient dazu, sich mit der Oberfläche von AVR Studio vertraut zu machen, den Workflow kennenzulernen und mit Begriffen wie OP-Code, Fetch und Execute Zyklus sowie Stromsenke und Stromquelle etwas mehr anfangen zu können.

3 - AVR Simulator IDE - Die Arbeitsumgebung

Die IDE des AVR Simulators zeigt Abb. 1.

Abb. 4 - AVR-Simulator IDE mit Arbeits- und GPIO-Registern, SRAM, Programmzähler und Statusregister-Anzeige. Der Befehlszähler, Taktzyklen-Zähler und die Angabe der Ausführungszeit eines Befehls (einer Instruktion) werden ebenfalls dargestellt.

4 - Die Grundausstattung

Grundausstattung für alle Übungen
Hardware
  • STK200 Board mit ISP2 Brenner von Kanda  - oder alternativ 
  • ein Steckbrett mit Null-Kraft Sockel und Brenner
  • diverse AVR Mikrocontroller
  • diverse elektronische Kleinbauteile (Widerstände, Kondensatoren, etc.)
  • Immer mit dabei: das Datenblatt des jeweils verwendeten Mikrocontrollers (im Internet zu finden).
Software
  • Atmel Studio 4 oder höher
  • ein separates Simulationsprogramm (optional); zum Beispiel
  • avr_sim von G. Schmidt  oder alternativ
  • AVR-Simulator von OshonSoft (ca. 29,- €) oder der
  • Debugger unter ATMELStudio 4.

4A - Was man wissen sollte - Schreibweise von Zahlen

Bei der Darstellung von Zahlen muss das zugrunde liegende Zahlsystem (binär, hexadezimal, dezimal, ...) angegeben werden. Durchgesetzt haben sich verschiedene Schreibweisen:

Zahlsystem Schreibweisen Präfix/Suffix
Binärsystem (2-er System)

0b00011010

%00011010

00011010b

Präfix

Präfix

Suffix

Hexadezimalsystem (16-er System)

0x0A

$0A

0Ah

Präfix

Präfix

Suffix

Dezimalsystem (10-er System) 10010 -

4B - Was man wissen sollte - Speicher in einem AVR-Controller

 

AVR Controller verfügen über drei verschiedene Arten von Speicher:

  • FLASH
  • SRAM und
  • EEPROM.

Die tatsächlichen Größenordnungen jedes Speichers kann man dem jeweiligen Datenblatt des eingesetzten Controllers entnehmen.

 

  • Im Programmspeicher FLASH-ROM (nicht flüchtig, Lesezyklen: beliebig oft, Schreibzyklen: begrenzt)
    • wird das compilierte Programm abgespeichert und bei Programmausführung Wort für Wort ausgelesen und ausgeführt (fetch-execute-cycle).
    • werden Daten zum Beispiel für eine Textausgabe auf einem LCD gespeichert.

 

  • Im EEPROM (nicht flüchtig, Lesezyklen: beliebig oft, Schreibzyklen: begrenzt)
    • werden Messwertdaten oder Einstellungen abgelegt.

 

  • Im Datenspeicher SRAM (flüchtig, Lese- und Schreibzyklen: beliebig oft) werden
    • u.a. die Rücksprungadressen von Unterprogrammaufrufen abgelegt.

5 - Grundform1 eines Assemblerprogramms

Die Grundform aller hier vorgestellten Assemblerprogramme zeigt Abb. 5 (hier in der Fassung für einen ATtiny13 Mikrocontroller). Es hat sich bewährt dieses Programmgerüst zu verwenden. Im Laufe der Sitzungen wird es sich stetig erweitern bzw. verändern und so den gestiegenen Anforderungen anpassen.

 

 

 

 

 

 

 

 

 

 

 

Abb. 5

Grundform1 eines Assemblerprogramms für einen ATtiny13x Controllers.

6 - Wie arbeitet das Programm grundform1.asm?

 

Direktiven in Assembler beginnen immer mit einem Punkt (.) In diesem kurzen Programm finden sich davon gleich sechs.

 

Die Assemblerdirektive

  • .INCLUDE

liest die typenspezifischen Definitionen eines Controllers ein. In diesem Fall eines ATtiny13x. Damit diese lange Liste an Definitionen nicht in einem Programmlisting auftaucht, wird vorher die Assemblerdirektive

 

  • .NOLIST

eingegeben und nach der Include-Direktive mit

 

  • .LIST

wieder eingeschaltet.

 

  • .EQU

setzt ein Symbol mit einem Wert oder Ausdruck gleich.

 

Der Programmierer ist dafür verantwortlich zu entscheiden, wo die Programminstruktionen und Datenbytes im Speicher abgelegt werden sollen.

 

  • .CSEG

sorgt dafür, daß der Programmcode im FLASH abgelegt wird (Programmcode (.CSEG) -> FLASH, Daten (.DSEG) -> SRAM oder EEPROM (.ESEG).

 

  • .ORG

Setzt den Speicherplatzzähler des aktuellen Speichersegments auf einen bestimmten Wert.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf