Basiskurs Mikrocontroller

(in erweiterter Form auch als Buch)


In Elektor erschien ab Heft 1/2002 der Basiskurs Mikrocontroller. Der Kurs verwendet das 89S8252-Board aus Heft 12/2001. Die Grundidee war, den Umgang mit Mikrocontrollern beispielhaft an einem 8051-kompatiblen Mikrocontroller vorzustellen. Der Kurs führt ein in die Arbeit mit Assembler, Basic52 und C.

Heft 12/2001: Vorstellung des Boards

Das System mit Flash-Mikrocontroller wurde zusammen mit dem Elektor-Labor entwickelt. Auf der Elektor-Homepage kann das Platinenlayout frei geladen werden. Also Prozessor kaufen, Platine ätzen, loslegen. Einfacher ist es aber, sich die fertige Platine bei Elektor zu bestellen. Das Projekt war übrigens ein so durchschlagender Erfolg, dass zeitweise keine Platinen mehr zu bekommen waren. Inzwischen sind neue da.

Frage eines Lesers: Gibt es das Board irgendwo auch fertig gelötet und getestet?

Antwort: Seit 12/2003 wird das 89S8252-Board von Elektor als ferig aufgebautes und getestetes System bei AK-Modul-Bus im Online-Shop unter der Rubrik "Entwicklungssysteme" angeboten.
Das Projekt hat bereits eine Vorgeschichte. Ein ähnliches Board habe ich für mein Buch "Handbuch der PC-Mess- und Steuertechnik", beim Franzis-Verlag entwickelt. Es heißt ES52-Flash und ist ebenfalls bei AK-Modul-Bus als Komplettsystem zu bekommen. Der gesamte Basiskurs Mikrocontroller kann auch mit diesem fertigen System durchgeführt werden. Ausführliche Informationen findet man auf der Seite von Modul-Bus und in dem erwähnten Buch. Es gibt einige Unterschiede im Design, die man beachten muss. Beim ES52-Flash gibt es nur eine Schnittstellenbuchse, die gemeinsam für Downloads und die serielle Kommunikation benutzt wird. Das passende Download-Tool heißt Flash.exe und ist auf der CD zum Buch sowie auf der Modul-Bus-Seite zu finden. Für das Board von Elektor heißt die Download-Software MicroFlash.exe.

Frage: Was macht ein Linux-Anwender, wenn die Software nur unter Windows läuft?
Antwort: Unter www.forth.hccnet.nl gibt es einen Linux-Lader zum Board


Frage: Gibt es die Download-Software auch für COM 3...8?

Anwort: Die Download-Software ist sehr einfach gehalten. Ich muss zugeben, andere haben schon bessere Windows-Software entwickelt. Den kompletten Delphi-Quelltext für die entsprechende Download-Software Flash.exe findet man in dem erwähnten Buch. Hier sollen aber die entscheidenden Hardware-Routinen für das Elektor-Board freigegeben werden, damit jeder seine Spezialsoftware bauen kann. Die entscheidenden Informationen stammen übrigens alle aus dem Datenblatt des Controllers von Atmel. Eine andere Alternative ist das fertige Programm ATMELISP.

Quelltextauszüge zum Downloadprogramm (berichtigt 18.12.01)

Frage: Wie ist die Zuordnung der Programmierleitungen bei Elektor und bei Modul-Bus?

Antwort: Die folgende Tabelle zeigt die Anschlüsse. Es gibt nur einen Unterschied: Die Clock-Leitung wird bei Modul-Bus invertiert über RTS angesteuert, bei Elektor nicht-invertiert.

Elektor Prozessor Modul-Bus
RTS SCLK /RTS
/TXD MOSI /TXD
DTR RESET DTR

Frage: Ist da im Schaltplan zum Board ein Druckfehler in Elektor 12/01?

Antwort: Ja. Was da zum Pin 8 (R2In) des MAX 232 führt, ist natürlich nicht RXD, sondern TXD, aber Pin 3 an K2 stimmt. Die selbe Verwechslung findet man auch an K1: An Pin2 liegt RXD, an Pin 3 TXD. Fazit: Platine richtig, Verbindungen richtig, Leitungsbezeichnungen verwechselt.

Frage: Woher bekommt man das originale Basic-52 von Intel?

Antwort: Die Datei Basic52.hex ist mit unter den Dateien zum Board, die man bei Elektor laden kann.


Heft 1/2002: Die ersten Schritte mit Assembler

Hier wird der Shareware-Assembler TASM eingesetzt. Die ersten Schritte werden ausführlich erklärt. Für die Arbeit unter Windows gibt es eine Oberfäche, mit der man Quelltexte editieren, den Assembler aufrufen und das Ergebnis in den Controller downloaden kann.

Frage: Wo ist die Software für die erste Folge zu finden?

Antwort: Bei Elektor wurde die gesamte schon vorhandene Software zum Basiskurs Mikrocontroller zu den Dateien gepackt, die bereits für das Board angeboten wurden. Alles findet man auf der Elektor-Homepage im Downloadbereich zu Heft 12/2001 und jetzt auch als Kopie noch einmal zum Heft 1/2002. Das ist dann so etwas wie die Grundausstattung, die jeder Kursteilnehmer braucht. Dabei sind auch schon Programmbeispiele, die zu späteren Folgen bis etwa April/2002 gehören. Allerdings können sich da noch Änderungen ergeben, weil ja laufend Rückmeldungen kommen und die Beispiele sich noch verändern können. Deshalb ist geplant, die aktuellen Beispiele ab der zweiten Folge auch auf dieser Homepage zum Download anzubieten.


Heft 2/2002: Port-Eigenschaften und Port-Zugriffe in Assembler

Mit kleinen Schaltungen, Programmen und dem Oszilloskop werden die 8051-Ports untersucht.

Ein aufmerksamer Leser hat einen Fehler in Listing 3 gefunden: Die Zählschleife wurde zwar mit r1 initialisiert, aber dann mit r3 ausgeführt. Warum es trotzdem funktioniert? Weil r3 jedesmal mit dem Wert 0 die Schleife verlässt und beim nächsten mal mit dem Inhalt 0 wieder antritt. Das führt dann zu 256 statt 255 Durchläufen.

Die neue Fassung befindet sich auch in diesem Zip-Archiv der Assembler-Beispiele zu Folge 2: mikro2.zip (1k)


Heft 3/2002: Basic-52 Die ersten Schritte in Basic und Erweiterung mit einem EEPROM für Basic-Autostart.

Basic-52 wird in den Flash-Controller geladen und mit kleinen Beispielen ausprobiert. Ausgiebig wird die Möglichkeit untersucht, Autostart-Programme zu entwickeln. Dazu wird ein zusätzliches EEPROM auf dem Board eingesetzt.

Der verwendete Editor und alle Basic-Quelltexte dieser Folge: mikro3.zip (30k)


Heft 4/2002: Einführung in den C-Compiler Reads51

Die ersten Schritte mit dem C-Compiler. Programmstrukturen, Syntax und Verwendung der Entwicklungsumgebung.

Programmbeispiele in Reads51: mikro4.zip (28k)


Heft 5/2002: Hardware des 8051: UART, Timer und Interrups

Verwendung der Hardware und ihrer SFR in Assembler, C und Basic-52. Serielle Datenübertragung mit und ohne Interrupts.

Beispielprogramme in allen drei Sprachen: mikro5.zip (19k)


Heft 6/2002: Ansteuerung des LCD in Assembler, Basic und C

In der letzten Folge des Kurses wird das LCD besprochen. U.a. wird ein LCD-Treiber für Basic-52 vorgestellt, mit dem ganz normale print-Ausgaben auf das Display umgelenkt werden können.

Alle Beispiele zum LCD: mikro6.zip (20k)

Wichtiger Hinweis: Auf der Elektor-Homepage findet man jetzt im Download-Bereich die Zusammenstellung aller Dateien des Kurses. Alles in einem Rutsch, falls man zwischendurch den Überblick verloren hat.

Frage: Warum funktioniert das LCD nicht mit BASCOM?
Antwort: BASCOM-51 (www.mcselec.com) kennt zwei Wege zum LCD, einen über die 4-Bit-Ansteuerung am Port P1 und einen über den Datenbus wie beim Flash-Board. Das Problem lag an der Zuordnung der Leitungen A0 und A am Flashboard. In der neuesten Version des Compilers gibt es die Anweisung $lcdrs = &H8002 für die korrekte Ansteuerung des LCD.

Berichtigung: Dr. Stefan Kneip ist folgender Fehler in LCD2.bas aufgefallen: Die Assembler-Routine des Displaytreibers für Basic 52 enthält in Adresse 4100 und 4102 die Einsprungadressen für call 0 und call 1. Diese lauten jedoch nicht 4150 und 417F sondern 4250 und 427F. Der Fehler wurde in mikro6.zip (s.o.) am 4.6.02 berichtigt

Kritik und Anregung, ebenfalls von Dr. Stefan Kneip: Der Mikrocontroller Basiskurs war übrigens sehr interessant. Schade finde ich nur, dass nicht alle in Heft 12/01 angekündigten Themen auch behandelt wurden. Statt in drei Heften jeweils unterschiedliche Programmiersprachen einzuführen, hätte ich es besser gefunden, mehr die Erweiterungsmöglichkeiten des Boards herauszuarbeiten. Was mir insbesondere fehlte, war der versprochene Portexpander. Für Überwachungs- und Steuerungsaufgaben reichen die vom Entwicklungsboard gebotenen Leitungen meist nicht aus. Ich denke viele Leser hätten es Ihnen gedankt, wenn der Autor diese Thematik ausführlicher behandelt hätte. Ist seitens der Elektor ein zweiter Teil des Kurses geplant?
Antwort: Es stimmt leider, dass nicht alles wie geplant behandelt wurde. Die Grundlagen waren aufwendiger als gedacht. Dazu kamen viele Anregungen von Lesern, bestimmte Dinge genauer zu behandeln. Der Kurs wird nicht fortgesetzt, weil bei überlangen Kursen die später hinzukommenden Leser immer das Nachsehen haben. Aber es sollen einzelne Artikel folgen, die nach und nach die Lücken schließen. Ich hoffe, dass das bis Ende 02 gelingt. Wahrscheinlich wird auch der Mikrocontroller-Wettbewerb (Ausschreibung Heft 7/8) zum Flashboard eine Menge Know-How zusammentragen.
Nachtrag: Porterweiterungen über Schieberegister, ein AD-Wandler und Frequenzmessungen wurden in Elektor 12/02 behandelt. Viele weitere Themen wie I²C-Bus, SPI-Schnittstelle, Servoansteuerung und eine IR-Schnittstelle werden in einem Buch zum Kurs berücksichtigt, das im Herbst 2003 erscheinen soll.

Frage: Warum sind beim 8051 die Ports nach Reset high?

Antwort von Axel Stab: Der Grund, warum die Ausgänge auf 1 initialisiert werden, liegt in der damals üblichen NMOS-Technik: der aktive Zustand ist low, N-Kanal-Transistor eingeschaltet. Im passiven Zustand (High) kann deswegen auch praktisch "kein" Strom getrieben werden, weil "nach oben" nur ein recht hochohmiger Pullup geschaltet ist. Dafür kann in diesem Zustand der Pin auch als Eingang benutzt werden. In der heutigen CMOS-Technik ist zwar auch beim Highpegel ein Transistor aktiv, aber i.d.R. ist trotzdem der mögliche Ausgangsstrom im Lowzustand höher, weil die N-Kanal Transistoren grundsätzlich bessere Eigenschaften haben.