AVRnet 6440 – Das neue Mikrocontroller MasterLab

Die Idee

Ich fand auf der Seite des Holländers Sjaak de Wit eine Bauanleitung, in der er einen Nachbau des Philips 6400 Masterlab vorstellte. „Nachbau“ wird der Sache nicht ganz gerecht – er übernahm das Design des alten Rechners, aber er entwarf den eigentlichen Computer komplett neu. An dieser Stelle sei Sjaak ganz herzlich für seine Unterstützung gedankt, insbesondere dafür, dass er mir die Codes seiner beiden Hauptapplikationen zur Verfügung gestellt hat.

Beschreibung

Grundsätzlich handelt es sich dabei um ein AVR-Mikrocontrollerboard auf Basis des AVRMega644, der ausreichend Speicher und Power mitbringt, um einfache Mikrocontroller-Aufgaben zu bewältigen. Der AVRMega644 bietet viele programmierbare Aus- und Eingänge, von denen einige bereits für interne Zwecke genutzt werden:

  • Tastatur: es wird die gleiche Tastenanordnung wie beim 6400-Masterlab benutzt. Die Tasten haben aber teilweise andere Bedeutungen bekommen.
  • Display: statt des Orginals mit 8 leuchtenden Buchstabenanzeigen ist ein vierzeiliges LCD-Display eingebaut worden, das eine umfangreichere und bessere Textausgabe besitzt
  • 8 blaue LEDs in einer Zeile: die LEDs können über den AVR-Prozessor geschaltet werden. Die 8 LEDs sind über einen gemeinsamen Schalter am Pult abschaltbar – beim Masterlab diente dieser Schalter, um wahlweise zwischen LED und Display umzuschalten. Das ist hier nicht mehr erforderlich.
  • 3 Funktions-LEDs (rot, gelb, grün): genauso verwendbar wie die 8 LEDs, werden im Betrieb aber gerne zur Anzeige von internen Zuständen benutzt

Einige Pins des AVR sind auch an die Ausgangs-Messerleiste auf der rechten Seite des Boards gelegt, wo sie für weitere Experimente mit zusätzlicher Beschaltung zur Verfügung stehen.

  • Die LED-Ausgänge A1-A8. Diese können (neben dem gemeinsamen Schalter am Pult) auch noch einmal einzeln über einen DIP-Schalter auf dem Board abgeschaltet werden. Der Grund hierfür liegt darin, dass der AVR auch die Möglichkeit bietet, jeden Pin getrennt als Ausgang und Eingang zu beschalten. So besteht die Möglichkeit, flexibel Aus- und Eingänge zu kombinieren.
  • Timer-Ausgang T0, der bei entsprechender Programmierung beliebige Timer-Signale liefert
  • Zwei Eingänge SA und SB, die auch über das Schaltpult ausgelöst werden können.
  • Analogeingang OC1A, damit können Spannungen gemessen werden.

Es bindet über einen einfachen seriellen Bus (SPI) auch noch folgende Komponenten an:

  • Ethernet Controller: Dieser Controller ist als Standard-DIP-Bauteil (ENC28J60) umgesetzt. Er kann – bei entsprechender Programmierung – auch in ein gewöhnliches IP-Netzwerk eingebunden werden.
  • USB (über serielle Schnittstelle). Beim USB-Anschluss sieht die Sache schlechter aus – alle entsprechenden Bauteile haben einen Pinabstand von 0,4mm, was für mich unlötbar ist. Daher habe ich hier auf ein Fertigmodul gesetzt, das das interne serielle Signal in USB umsetzt. Warum keine serielle Schnittstelle? Weil heutige Computer keine mehr haben.
  • SD-Karte. Das SD-Interface ist ebenfalls mechanisch aufgesetzt, weil es hier unzählige Bauformen gibt. Mein Karteneinschub entstammt einem alten Multikartenleser. Aufgrund der Fähigkeiten des verwendeten AVR-Chips können nur SD- und MMC-Karten gelesen werden, die das alte FAT16-Dateiformat verwenden. Das bedeutet, nur kurze Dateinamen im 8.3-Format werden unterstützt. Die SD-Karte dient später als einfacher Dateispeicher. Programme können hier am PC bequem aufgespielt werden und leicht am AVRnet wiedergegeben werden. Bis zu 4GB dürfen die Karten groß sein, mehr unterstützt das FAT16-System nicht. Selbst alte, kleine Karten mit 128 MB werden aber kaum voll werden.
  • ISP-Interface. Das steht für „In-System Programming“ und erlaubt eine Programmierung des AVR im eingebauten Zustand. Dieses Interface wird bei der Inbetriebnahme benötigt.

Hinweise zum Aufbau

Das neue Schaltpult wurde aus einer 1,5mm-Polystyrol-Platte hergestellt. Es ist ein wenig mühsam, die vielen rechteckigen Löcher hineinzuschneiden, aber Sorgfalt lohnt sich. Nach der Fertigstellung wurde die Beschriftung per Rubbelbuchstaben aufgebracht. Das ganze wird zuletzt geschützt durch eine matt-silberne Transparentfolie, wie sie gewöhnlich benutzt wird, um Fenster undurchsichtig zu machen. Damit ergibt sich der leicht silberne Look, den das Original auch hatte (im Gegensatz zu den anderen Pults, der ABC-Serie, die einfach hellgrau waren). Die Löcher werden anschließend mit einem Skalpell hineingeschnitten, dabei können kleinere Fehler beim Ausschneiden der Polystyrol-Löcher gut getarnt werden. Die LEDs sind versenkt eingebaut und leuchten durch die Transparentfolie hindurch. Die verwendeten Schalter sind Standard-Mikroschalter, die Aufsätze entstammen einem Conrad-Angebot – sie sind identisch mit jenen, die Märklin jahrelang in seinen Modellbahn-Digitaltransformatoren verbaut hat. Sie sind etwas kleiner als die Originale, aber sehen schick aus.

Die Platine ist leider doppelseitig – die vielen Leitungen machten es erforderlich. Damit ergibt sich dann aber auch ein weitgehend drahtbrückenfreier Aufbau. Da ich keine durchkontaktierte Platine hergestellt habe, war es aber erforderlich, Widerstände und IC-Beinchen teilweise oben und unten zu verlöten. Der AVR ist gesockelt, alles andere habe ich fest verbaut. Hintergrund: die AVR-Familie kann viele Male mit neuen Programmen bespielt – geflasht – werden. Irgendwann ist damit aber einmal Schluss, und jeder Programmstart ist ein neuer Flashvorgang. Daher kann der AVR bei Ausfall gewechselt werden.

Die Software

Der AVR bietet an seinen unterschiedlichen Aus- und Eingängen bereits verschiedene Signaltypen an, die über eine Programmierung aktiviert werden können, beispielsweise Timer, PWM (Pulsweitenmodulation), Analog-Digital-Wandlung (zur Spannungsmessung). Wenn man in der Standardcomputersprache bleiben möchte, beherrscht der AVR damit ein minimales „BIOS“, das nur aktiviert werden muss.

Sjaak hat nun zwei Programme entwickelt, die das Gerüst des AVR-Computers bilden. Eins ist ein sogenannter Bootloader. Damit können Programme von der SD-Karte gestartet werden. Dieser Bootloader ist so etwas wie das „Betriebssystem“ (allerdings eher mit DOS zu vergleichen, nicht mit einem Windows). Die Programme können dann ihrerseits die gebotenen Funktionen nutzen – während sie laufen, verhält sich das „Betriebssystem“ still, alle „BIOS“-Funktionen stehen ihnen aber zur Verfügung. Nachdem das Programm endet (meist durch Drücken des roten Reset-Schalters), startet wieder der Bootloader und erlaubt das Laden weiterer Programme.

Das zweite Programm von Sjaak stellt so etwas wie einen Masterlab-Emulator dar. Es erlaubt eine eigenständige Programmierung des AVR auf Speicherebene (das ist noch unterhalb von Assembler). Es nutzt dabei das Display für Ausgaben und die Tastatur für Eingaben. Es nutzt auch das Ethernet-Interface, soweit dieses betriebsbereit ist. Sjaak schrieb mir, dass das Programm ursprünglich sogar einen kleinen Editor und Compiler enthielt, er diese Teile aber aus dem Code entfernt habe. Das ist verständlich, denn die Entwicklung am PC und die Übertragung per SD-Karte ist so einfach, dass man kaum mehr auf Maschinenebene wechseln möchte. Zudem kann die gesamte Peripherie – LCD-Display, Ethernet-Controller, SD-Karte – vollständig nur mit speziellen Bibliotheken genutzt werden, die am PC im Entwicklungswerkzeug zur Verfügung stehen, nicht aber am Gerät selbst.

Neben diesen Programmen können weitere Programme erstellt werden – am Computer mit Entwicklungswerkzeiugen wie dem AVRStudio (kostenlos vom AVR-Hersteller Atmel), WinAVR (ebenfalls kostenlos) oder Codevision. Alle drei unterstützen die Programmiersprachen Assembler und C. Darüber hinaus kann auch in Basic oder Pascal entwickelt werden. Nach dem Kompilieren der Programme entsteht dabei eine Datei mit der Endung „hex“. Diese wird auf die SD-Karte überspielt und kann von dort gestartet werden. Für die Entwicklung von Software auf AVR gibts gute Tutorials z.B. hier.

Ich bin derzeit dabei, die Programme des MC6400 auf das AVRnet6440 zu übertragen. Das bedeutet gewöhnlich, sie neu zu schreiben. Dafür steht dann aber auch der Quelltext für weitere Versuche und Weiterentwicklungen zur Verfügung.

Zurück zur Übersicht

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.