BASCOM und Modellbahn - Screenshot einer Entwicklung für die Modellbahn.
BASCOM und Modellbahn – Screenshot einer Entwicklung für die Modellbahn.

BASCOM und Modellbahn? Passt das? Unsere Mikrocontroller programmieren wir für unsere Märklin Modellbahn Anlage meist mit der Software BASCOM.

Dabei können mit den Mikrocontollern Lichter, Motoren, Servos, aufwendige Ablaufprozesse, Schrittmotoren, Hausbeleuchtungen, … angesteuert und realisiert werden, eine entpsrechende Platine um den Prozessor herum vorausgesetzt.

Was ist BASCOM?

BASCOM, für BASIC compiler stehend, ist eine von Mark Alberts entwickelte Familie von Cross-Compilern, die BASIC mitsamt einigen proprietären Erweiterungen in ausführbare Maschinensprache für mehrere Prozessorarchitekturen für eingebettete Systeme übersetzen kann. Unterstützt werden u.a. Mikrocontroller der AVR-Architektur.

Warum BASCOM und Modellbahn?

Mit BASCOM war es seinerzeit für uns einfach, kleine Aufgaben schnell zu programmieren. In dieser Zeit gab es noch lange keinen Raspberry Pi oder gar einen Arduino. Diese Projekte kamen erst viel später und vereinfachten Laien und Anfänger den Zugang zu den Mikrocontrollern.

Der Erfolg gibt Recht

Viele Entwickler rümpfen die Nase, wenn andere mit BASIC entwickeln oder auf den Arduino zurückgreifen, eine Haltung, die man kaum nachvollziehen kann, denn der Erfolg gibt am Ende doch Recht! Wenn die Schaltung, gesteuert durch einen Mikrocontroller das tut, was sie soll, wer schaut dann noch den Code des Prozessors an? Die Besucher einer Modellbahn-Anlage freuen sich, wenn sie durch den Druck eines Knopfes etwas auslösen können (z.B. einen Motor starten, eine Beleuchtung einschalten oder einen ganzen Prozess in Gang setzen). Niemand wird hier diskutieren anfangen, wie „sauber“ nun die verbaute Lösung ist bzw. mit welchen Mitteln der Prozessor programmiert wurde. Dies leibt den ewigen Nörglern der Foren des WWW vorbehalten.

Ferner ist die Einbettung von Assemblercode in den BASIC-Programmtext möglich. Dies erfolgt entweder durch die Verwendung der entsprechenden Befehlsnamen der Maschinensprache, sofern sie nicht in Konflikt zu den bereits reservierten Wörtern stehen, oder durch das Einbetten der Assembler-Anweisungen in spezielle Schlüsselwörter. Um im Kontext der Maschinensprache direkt auf Basic-Variablen zugreifen zu können, steht eine Anweisung zur Verfügung, welche die Adresse einer Variablen in ein Register lädt.

Dann gar kein C?

Und dennoch gibt es auch in unseren Platinen Mikrocontroller, die wir mit C programmiert haben, weil es für manche Aufgaben, vor allem beim Kommunizieren mit dem DCC-Protokoll der Modellbahn-Zentralen, viel einfacher ist. Und auch hier gibt der Erfolg wieder Recht! Man verwendet die Hilfsmittel und Programmiersprachen, um ans Ziel zu kommen, die für die zu lösende Aufgabe am geeignetsten scheinen.

Und gibt es Beispiele?

Auf den nächsten Seiten zeigen wir einige Beispiele, wie wir Probleme gelöst haben, um Herstellerunabhängig und zu geringen Kosten Lösungen zu entwickeln. Dabei ging es nicht immer nur um Kosten zu sparen, sondern vor allem ging es auch darum, Lösungen zu erarbeiten, die es als kommerzielle Ware einfach nicht gab, wie z.B. unsere Druckknopf-Aktion.

Druckknopf-Aktion

Diese Platine wurde versucht als „Eierlegende-Wollmilchsau“ zu entwickeln. Daher hat die reine Entwicklungszeit der Platine (ohne Prototypenbau) fast ein halbes Jahr gekostet. Dazu kamen noch die Programmierungen der Mikrocontroller und die Erstellung von Prototypen. Mehr dazu aber auf der Seite der Platine.

Weitere Infos?

Wem diese Seiten nicht technisch genug sind, sei auf unser WIKI verwiesen. Hier stellen wir, manchmal mehr für unseren Hausgebrauch, Details unserer Projekte vor.