Um zu lernen, wie man einen Mikrocontroller programmiert, muss man
einen Mikrocontroller programmieren.
Zu diesem Zweck haben wir einen Atmel Mikrocontroller in ein handliches
Schulungsboard eingebaut. Der erste Band des Handbuchs bezieht
sich auf die grundlegende Programmierung des Gerätes. In diesen Script
wird auf die Basisfunktionen des Schulungsboards eingegangen – hier rot
gekennzeichnet.
Inhalt
Einführung
Allgemeiner Programmaufbau
Steuern von Ausgängen
Leuchtdioden schalten
Übungsaufgaben
Eingabe durch Taster
Vervollständigung des Programmkopfs und Ansteuerung des LCD-
Display
Taster und Schalter: Aufgaben
Übungsaufgaben:
Schleifen und Variablen
Beispielaufgaben:
Display und Schleifen
Ausgabe von Zufallszahlen
Verwendung von Interrupts
Programmierbefehle und Syntax
Anhang
Einführung
Die Atmel Mikrocontroller sind programmierbare Speicherbausteine. Es gibt unterschiedliche Typen, die verschiedene Bauformen haben. Sie haben unterschiedlich viele „Beine“ (Pins) und sie sind mehr oder weniger leistungsfähig. Bei allen Mikrocontrollern lässt sich die Funktion nahezu aller Pins festlegen (programmieren) und je nach Programm hat der Mikrocontroller ganz unterschiedliche Aufgaben. Je nach Typ sind Sonderfunktionen wie z.B. AD-Wandler oder Timer implementiert. In unserem Schulungsboard wird der Atmel Mikrocontroller „ATmega16“1 verwendet.
Dieses Skript soll Ihnen helfen, einen erfolgreichen und einfachen Einstieg in diese komplexe Thematik zu finden. Anhand von einfachen Beispielen werden Ihnen die Grundfunktionen und Möglichkeiten der Atmel Mikrocontroller vorgestellt.
Mikrocontroller haben keine bestimmte Aufgabe - und das ist ihre Besonderheit, ihre Funktion wird erst durch ein Programm definiert. Leider verstehen Mikrocontroller nur Maschinensprache. Diese Programmiersprache ist ausgesprochen unanschaulich und nur ein ausgesprochen erfahrener Programmierer kann sie verwenden.
Zum Glück gibt es sogenannte Compiler, die in der Lage sind, gängige und leichter erlernbare Programmiersprachen in die für Atmel-Prozessoren verständliche Maschinensprache zu übersetzen. Wir haben uns hier für die Programmiersprache „Basic“ entschieden, da diese Sprache sehr einfach zu erlernen ist - das prädestiniert sie für den Einsatz in der Schule. Um die Programme schreiben und um sie in Maschinensprache übersetzen zu können, verwenden wir die Software BASCOM der Firma „MCS electronics“. Die Demoversion ist kostenlos.2 Diese hat keine Funktionsbeschränkungen, nur darf die maximale Programmgröße 4 KB nicht überschreiten. Diese Grenze wird aber nur von sehr umfangreichen Programmen überschritten. Die Vollversion kann man derzeit für unter 80 € beziehen.
Jedes Basic Programm hat einen Programmkopf:
Abbildung in dieser Leseprobe nicht enthalten
Die farbigen Hervorhebungen werden von BASCOM automatisch erzeugt und dienen der besseren Lesbarkeit des Programms.
Ein Basic-Programm wird Zeile für Zeile abgearbeitet. Im Programmkopf werden neben den schon vorgestellten Befehlen den Pins des Chips sinnvolle Namen gegeben, Variablen definiert oder Sonderfunktionen aktiviert. Erst danach beginnt dann das eigentliche Programm.
Allgemeiner Programmaufbau
Im Programmkopf werden, basierend auf dem Platinenlayout und dem verwendeten Prozessortyp, verschiedene Einstellungen festgelegt. Bei unserem Schulungsboard steht zum Beispiel schon fest, dass der ATmega16 verwendet wird, der mit einem externen Quarz von 16 MHz arbeitet. Weiterhin ist bestimmt, welcher Pin des Mikrocontrollers mit welcher Buchse und mit welchem Schalter und dem Display auf der Frontplatte verbunden ist.
Mit dem Compilerbefehl $regfile legt man für das Programm BASCOM fest, für welchen Prozessortyp die Kompilierung (die Übersetzung in die Maschinensprache) erfolgen soll. Wenn diese Zeile vorhanden ist, stellt der Programmeditor von BASCOM auf der rechten Seite des Bildschirms eine Übersicht mit allen Pins und - bei Klick auf einen Pin dessen mögliche Funktionen bereit.
Der Befehl $crystal gibt an, mit welcher Taktfrequenz der entsprechende Mikrocontroller betrieben wird. Diese Einstellung ist wichtig, damit Pausenzeiten richtig berechnet werden können.
Steuern von Ausgängen
Unser erstes Programm beinhaltet den notwendigen Programmkopf und die notwendigen Befehle, um eine LED anzusteuern.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1 zeigt, wie die Ports den einzelnen „Beinen“ des Mikrocontrollers zugeordnet sind.
Leuchtdioden schalten
Das nächste Programm soll die drei Leuchtdioden auf dem Schulungsboard einschalten.
Abbildung in dieser Leseprobe nicht enthalten
Wir werden nun nach und nach den Pins der verschiedenen Ports AliasNamen und Funktionen zuweisen. Beim nächsten Programm benötigen wir die LED nicht, wir behalten aber die programmierten Zeilen bei. So entwickeln wir langsam ein Grundprogramm, das uns die Programmierung des Schulungsboards vereinfacht.
Jetzt soll der Summer angesteuert werden. Wir verwenden das Programm, das wir eben geschrieben haben, und entfernen die drei Befehlszeilen, die die LED einschalten.
Der Summer ist ein kleiner Lautsprecher, der ununterbrochen ein- und ausgeschaltet werden muss, damit wir einen Ton hören können.
Wir weisen Portd.0 den Alias-Namen „Summer“ zu und konfigurieren den Port als Ausgang (Output).
Abbildung in dieser Leseprobe nicht enthalten
Wenn alles stimmt, müsste es summen.
Da der Atmel Mikrocontroller für die Bearbeitung einer Programmzeile bei den meisten Befehlen weniger als eine Mikrosekunde braucht, benötigen wir die Pausenfunktion Wait.
Mit dem Befehl Wait können wir auch die LED blinken lassen.
Wait 5 bedeutet, dass die nächste Zeile erst nach einer Wartezeit
von 5 Sekunden abgearbeitet wird.
Waitms 5 bedeutet, dass die nächste Zeile erst nach einer Wartezeit von 5 Millisekunden abgearbeitet wird.
Waitus 5 bedeutet, dass die nächste Zeile erst nach einer Wartezeit von 5 Mikrosekunden abgearbeitet wird.
[...]
- Quote paper
- Tobias Stuckenberg (Author), Gert Reich (Series editor), 2012, Programmieren mit dem Schulungsboard für Atmel-Mikrocontroller (Schulungsboard Version 2 mit USB-Schnittstelle), Munich, GRIN Verlag, https://www.grin.com/document/196616