Frequently Asked Questions (FAQ)
Was brauche ich für den Einstieg?
Am einfachsten klappt der Einstieg, wenn ein bereits mit dem OM-Betriebssystem ausgestatteter Mikrocontroller und das von André Helbig entwickelte Open-Micro/Open-Mini StarterBoard Rev. 1.1 bei CCTools gekauft werden. Das Programmieren und Entwickeln geht mit so einem Board erheblich bequemer. Das Board ist kompatibel zur Open-Micro, Open-Mini, Open-Midi und Open-Macro. Wem das CCTools-Board zu teuer ist, kann ein eigenes auf Experimentierplatine aufbauen oder anhand der Eagle-Dateien des zweiten PE-Boards (siehe Downloads) ätzen. In der Dokumentation ist eine kleine Programmierschaltung abgebildet, die mit einem Minimum an Bauelementen auskommt. In Kürze soll es bei CCTools auch ein Starterboard für die Open-Maxi geben. Windows-Benutzer erstellen Programme für die OM sehr gern innerhalb der ConTEXT-Entwicklungsumgebung. Der OCBASIC-Compiler läßt sich ebenso wie das Übertragungstool OMDLWIN integrieren. Wie das geht, wird in dieser Anleitung ausführlich beschrieben. Im ZIP-Archiv des OCBASIC-Compilers befinden sich im Verzeichnis OM jede Menge kleine Beispielprogramme, die gut für den Einstieg geeignet sind.
Der Programmspeicher der OM ist doch sehr klein, oder?
Es gibt jetzt die Open-Maxi. Sie bietet 58782 Byte Programmspeicher und über 1800 Byte Variablenspeicher. Für die kleinen OM-Controller gilt:
Seit Ende 2006 gibt es eine neue OM-Version namens Open-Midi. Es handelt sich im Prinzip um die "große Schwester" der Open-Mini, denn sie ist maßgeblich kompatibel zu den bisherigen Mikrocontrollern, bietet jedoch deutlich mehr Speicher.
Zur Variablenspeicherung stehen jetzt über 170 Byte zur Verfügung und
Programme können bis zu 6462 Byte groß sein.
Mit dem OCBASIC-Compiler lassen sich Programme um typisch 20% verkleinern und Tabellen lassen sich im Byteformat anlegen und auslesen, wodurch sie nur die Hälfte des Platzes wie auf der C-Control benötigen.
Auch die Datei wird im Byteformat angesprochen und die Treiber dafür befinden sich bereits im Betriebssystem. Durch diese Optimierungen sind mit der Open-Midi schon recht umfangreiche Applikationen realisierbar, die auf der C-Control rund 8 Kilobyte Programmspeicher oder mehr benötigen.
Der Programmspeicher der Open-Micro und Open-Mini beträgt zwar nur 2430 Byte, aber durch die Optimierungen des OCBASIC-Compilers entspricht das ungefähr 3 KB C-Control-Programmspeicher. Die C-Control/M-Unit Version 1.2 und 2.0 kann in ihren 9,5 KB also nur rund dreimal größere Applikationen unterbringen. Die Conrad-Micro bietet sogar nur 2044 Byte Programmspeicher.
Der Datenspeicher läßt sich auf allen OM-Versionen übrigens beliebig mittels I²C-EEPROMs vergrößern. Diese EEPROMs bieten jeweils bis zu 128 Kilobyte Speicher, der Byte-für-Byte beschrieben und ausgelesen werden kann.
Hat BASIC nicht eine total miese Performance?
Das heutige BASIC ist nicht mit dem BASIC zu vergleichen, das früher auf dem C64 lief. Es gibt Dialekte, die Native Code erzeugen und deshalb sehr schnell ausgeführt werden. Siehe zum Beispiel den kostenlosen Open-Source-BASIC-Compiler FreeBASIC.
Bei den C-Control-kompatiblen Mikrocontrollern wird zwar ein Interpreter verwendet, aber der arbeitet sehr schnell und effektiv, wodurch auch die 100-fache Geschwindigkeit der Open-Maxi zu erklären ist. Auf der Original-C-Control mußten die BASIC-Tokens während der Programmausführung aus einem externen I²C-EEPROM gelesen werden. Das entfällt bei den OM-Mikrocontrollern.
Die Vorteile eines Interpreters sind zum Beispiel, daß Fehler auf dem GOSUB-Stack detektiert und das Anwenderprogramm neu gestartet werden kann. Am Beginn des Programms kann der Anwender den Fehler dann auswerten. Compilierter Code würde einfach abstürzen. Und Variablen lassen sich mit einer in den Interpreter eingebundenen Routine überwachen. Das wird zum Beispiel im In-System-Debugger genutzt. Ein Interpreter bietet also eine bessere Fehlerdiagnose.
Außerdem gibt es auf allen OM-Controllern die Möglichkeit, Programmteile direkt in die Maschinensprache zu übersetzen und auszuführen. Das wird mit dem echten BASIC-Compiler OCBASR realisiert.
Ist die Open-Micro ein Open-Source-Projekt?
Seit neuestem gibt es auf der Dokumentation-Seite die Quellcodes der OM-Betriebssysteme im LST-Format. Ansonsten gilt:
Das "Open" im Namen steht nicht für Open-Source, sondern dafür, daß die OM im Gegensatz zu den neuen C-Control-Varianten (2.0, 1.2, Micro) nicht verschlossen ist. Die OM wurde zu einer Zeit entwickelt, als die neuen "Closed"-Control-Versionen keinerlei Assemblerprogrammierung boten, um deren Betriebssystem vor dem Auslesen zu schützen. Mittlerweile ist eine eingeschränkte Programmierung in CCASM möglich. Das ist ein großes Manko gegenüber der weitverbreiteten C-Control 1.1, der B-Control und der OM. Denn nur mittels Assembler können Mikrocontroller in vollem Umfang genutzt werden. In Assembler und kompiliertem CCBASIC kann man selbst aus der "alten" C-Control-1 noch einiges herausgeholen, von dem sich im interpretierten Basic++ auf der "neuen" C-Control nur träumen läßt.
Davon abgesehen, würde es auch wenig Sinn machen, den Sourcecode des OM-Betriebssystems zu veröffentlichen. Im Betriebssystem wurden etliche Tricks angewandt, um Speicherplatz zu sparen. Dadurch können so gut wie keine Veränderungen ohne die Zuhilfenahme einiger Softwaretools durchgeführt werden. Den Betatestern stand der OS-Sourcecode zur Verfügung, aber kein Tester hat selbständig irgendeine Veränderung am OS vorgenommen.
Die Open-Mini ist bei CCTools ausverkauft?
Fast alle DIP-Varianten der Mikrocontroller, auf denen die kleinen OM-Controller basieren, wurden von NXP (früher Freescale) aus dem Programm genommen. Die SMD-Varianten der Mikrocontroller werden aber noch hergestellt und auch vertrieben.
Der Controller auf dem die Open-Micro basiert (MC68HC908QT4CPE) ist nach wie vor in DIP8 und auch in SMD erhältlich.
Der Mikrocontroller für die Open-Mini (MC68HC908QY4CPE) wird in DIP16 nicht mehr hergestellt. Als SMD-Variante (TSSOP16) wird er aber noch hergestellt und auch vertrieben.
Der Controller für die Open-Midi und Open-Macro (MC908QB8CPE, bzw. MC68HC908QB8CPE) im DIP16-Gehäuse wird nicht mehr hergestellt. Als SMD-Variante (TSSOP16) ist er aber nach wie vor erhältlich. Außerdem hat André Helbig von CCTools eine große Anzahl von Restbeständen des QB8 in DIP16 auf Lager.
Was beim Wechsel von Open-Mini auf Open-Midi zu beachten ist, wurde in einem Forenbeitrag beschrieben.
Wie robust ist die Open-Maxi?
Obwohl die Open-Maxi sehr robust ist, so ist sie nicht unzerstörbar.
Ein Betatester hat mir mitgeteilt, daß die Open-Maxi bei ihm zweimal vertauschte Betriebsspannung klaglos überstanden hat. In diesem Fall hat die automatische Strombegrenzung des Netzteils den Strom auf 500 mA begrenzt.
Anschlüsse unter Strom berühren oder anstecken/abziehen führte nie zu Problemen. Auch leichte Überspannungen (größer als 5,8 Volt) steckte die Open-Maxi klaglos weg.
Aber 15 Volt, ohne Strombegrenzung an die AD-Ports gelegt, ist zu viel für die Open-Maxi. Danach reagiert sie nicht mehr und zieht an die 50 mA Strom. Normal sind ungefähr 13 mA.
Wie hoch sind die Lizensierungskosten für kommerzielle Nutzung?
Die bei CCTools angebotenen, mit dem Betriebssystem ausgestatteten Mikrocontroller enthalten bereits die Lizensierungskosten für kommerzielle Nutzung. Wer die Mikrocontroller selber mit dem Betriebssystem ausstatten möchte, kann die Lizensierungskosten bei CCTools per E-Mail erfragen. Die Open-Micro wurde nicht mit dem Ziel entwickelt, möglichst viel Profit zu erwirtschaften, sondern um eine leistungsstarke, zuverlässige Alternative zur C-Control/Micro anzubieten. Aus diesem Grund sind die Lizenzkosten pro eingesetzter oder verkaufter Betriebssystemkopie niedrig angesetzt und bewegen sich auch für kleine Stückzahlen im Bereich unter einem Euro (plus MwSt.).
Kann die Open-Micro auch mit 16-Bit-Zahlen umgehen ?
Ja und Nein. Standardmäßig wird nur 8-Bit-Arithmetik unterstützt. Andernfalls würde das Betriebssystem sicher den gesamten knappen Flash-Speicher belegen. Aber bei den Downloads gibt es Beispiele für 32-Bit-Arithmetik, für Festkommazahlen und mittlerweile auch für eine komfortable Benutzung von 16-Bit-Zahlen.
Alternativ bietet es sich im Einzelfall an, einfach mittels Carry-Bit von 8- auf 16-Bit zu erweitern:
'Wir addieren zwei 16-Bit-Zahlen mit Hilfe des Carrys (Uebertrag) w1h=&h12 : w1l=&h34 'die erste Zahl ist &h1234 = 4660 w2h=&hab : w2l=&hcd 'die zweite Zahl ist &habcd = 43981 PrintHex=on 'die Zahlen im hexadezimalen print " $";w1h;w1l ' Format ausgeben print "+ $";w2h;w2l print "-------" w1l = w1l + w2l 'die unteren 8 Bit addieren w1h = -Carry + w1h + w2h 'die oberen 8 Bit mit Uebertrag addieren print " $";w1h;w1l 'Ergebnis ist &hbe01 = 48641
Kann man die OM-Controller auch unter Linux programmieren?
Den OCBASIC-Compiler gibt es in zwei Varianten: Als Win32- und als MS-DOS-Applikation. Besonders letztere weist die größte Kompatiblität zu allen existierenden Computersystemen auf. Zwar benutzt heutzutage kaum noch jemand MS-DOS, aber es gibt für fast alle Betriebssysteme einen oder sogar mehrere zuverlässige MS-DOS-Emulatoren. Ich habe sogar eine Version für 8086 erstellt, die selbst auf einem PSION 5MX mit DOS-Emulation läuft. Das ist zwar extrem langsam, aber es funktioniert. Unter Linux muß man nun also zunächst einen Emulator wie z.B. DOSEMU installieren. Alternativ kann man eine virtuellen Maschine wie VirtualBox verwenden, um ein ganzes Windows-Betriebssystem zu emulieren.
Außerdem gibt es das Linux-SDK von Diman Todorov. Es wurden die Quelltexte des C-Control/BASIC-Compilers so modifiziert, daß sie mit GCC kompiliert werden können. Diman hat eine ganze C-Control-Toolsammlung für Linux erstellt. Enthalten ist der portierte CCBASIC-Compiler, ein Upload-/Downloadprogramm, das die Programme zur CC-Unit überträgt, und der etwas modifizierte freie Assembler von Motorola für die 68HC05.
Schließlich gibt es von Oliver Haag den C-Compiler CCCCC für C-Control 1.1, der auch unter Linux arbeitet. Einige Anwender nutzen ihn auch auf den OM-Mikrocontrollern.
Kann ich die OM-Mikrocontroller auch in Basic++ programmieren?
Notfalls geht das. Aber nur in dem Maße, wie Basic++ zur C-Control I Version 1.1 kompatibel ist. Wenn Basic++ verwendet wird, ist zu beachten, daß diese Programmiersprache vor allem für die 2.0er entworfen wurde. Das heißt, viele Funktionen in Basic++, die nur auf der 2.0er und 1.2er laufen, werden mit den OM-Controllern nicht funktionieren. Und schließlich gibt es kaum Anwender, die noch in Basic++ programmieren. Wenn Fragen zu Basic++ auftreten, kann niemand helfen, denn ich kenne niemanden, der in Basic++ programmiert. Offenbar ist der Support für Basic++ eingestellt worden, zumindest ist das Forum zu Basic++ schon seit Monaten gesperrt.
Besser wäre OCBASIC, eingebettet in die ConTEXT-IDE. Mit dem Downloadtool OMDLWIN kann ein maximal großes Programm in unter 12 Sekunden in die Open-Maxi übertragen werden. Außerdem gibt es den richtigen BASIC-Compiler OCBASR, mit dem BASIC-Quellcode in Maschinensprache übersetzt werden kann. Das bedeutet nochmal einen Geschwindigkeitsgewinn von Faktor 3 bis 4. Außerdem sind alle Demoprogramme im Forum und auf der OM-Infosite nur zu OCBASIC kompatibel. Die Bedienungsanleitung behandelt ebenfalls nur OCBASIC. Es ist abwärtskompatibel zu CCBASIC und üblicherweise werden Fragen zu OCBASIC per E-Mail oder im Forum schnell beantwortet.
Sind die Atmel-Mikrocontroller nicht besser und schneller als die 68HC08-Controller von Freescale?
Was die Geschwindigkeit anbelangt, sind die Atmel-Controller natürlich oft im Vorteil. Der QT4-Controller läuft mit einem internen Taktgenerator, was zwar die Systemgröße drastisch reduziert, aber dadurch besitzt der Systemtakt keine gute Frequenzstabilität und ist mit 3,2 MHz selbst für 68HC08-Ansprüche recht langsam. Der geringe interne Takt erklärt sich durch den Umstand, daß der Mikrocontroller auch mit 3 Volt betrieben werden kann. Die maximale Geschwindigkeit der 68HC08-Mikrocontroller bei 5-Volt-Betrieb ist augenblicklich 8 MHz. Die neue M-Unit läuft mit diesem Takt. Auch die OM kann mit 8 MHz arbeiten, wenn ein externer Taktgeber benutzt wird. Siehe Downloads. Aus dem Lager der Freescale/Motorola-Mikrocontroller gibt es allerdings laufend Neues zu berichten:
Die Mikrocontroller der HCS08-Familie können mit bis zu 20 MHz Busfrequenz betrieben werden. Sie besitzen eine 8-Bit-CPU, die abwärtskompatibel zur 6808-CPU ist, und sogar ein paar sinnvolle Instruktionen hinzubekommen hat.
Der Funktionsumfang der HCS08-Mikrocontroller ist beeindruckend.
Interessant sind zum Beispiel die Debugging-Möglichkeiten mit dem Background-Debug-Controller (BDC) und neun Triggermodi.
Bisher gab es einen Pferdefuß in Form der reduzierten Betriebsspannung von maximal 3,6 Volt.
Seit Anfang 2006 gibt es aber die AW-Variante mit den üblichen 5 Volt.
Atmel erreicht bei den AVRs bis zu 16 MHz. Trotz niedrigerem Takt ergibt sich durch die RISC-Technologie der CPU ein geringer Geschwindigkeitsvorteil gegenüber den HCS08-Mikrocontrollern. Andererseits sollte man bedenken, daß nur selten maximale Geschwindigkeit benötigt wird. Es ist ohnehin etwas sinnfrei, von einem 8-Bit-Mikrocontroller optimale Geschwindigkeit zu erwarten. Interessanter ist da schon eher der Programmierkomfort. Die 6805/6808-Assemblermnemonic ist IMHO weitaus schneller zu erlernen und verständlicher als die der AVR-CPU. Obwohl diese bekanntlich keine reine RISC-CPU ist, denn die Entwickler haben etliche Befehle integriert, die mehr als einen Taktzyklus zur Ausführung benötigen. Nebenbei gibt es übrigens viele Befehle im 6808-Befehlssatz, die nur einen Takt benötigen. Das ist eher unüblich bei CISC-CPUs. Da die 6808-CPU die direkte Nachfolgerin der 6805 ist, können alte Assembler und oft sogar ganze 6805-Programme weiterverwendet werden. Die Ports liegen bei den 68HC08ern beispielsweise an den gleichen Adressen wie bei der Original-C-Control.
Der 68HC08-Mikrocontroller ist nicht irgendein Controller. Er ist abwärtskompatibel zum 68HC05, dem weltweit am häufigsten eingesetzten Mikrocontroller. Er wurde von Motorola im Jahr 2001 schon über fünfmilliardenmal ausgeliefert!
Wie geht es weiter mit der Open-Control?
Ich plane mit Hilfe des AW60-Mikrocontrollers eine Open-Mega zu entwerfen. Sie soll unter anderem 32-Bit-Arithmetik unterstützen. Den Code für komfortable 32-Bit-Arithmetik habe ich bereits für die Open-Maxi entworfen und veröffentlicht. Er kann inklusive neuem OCBASIC-Compiler auf der Downloads-Seite heruntergeladen werden. Eigentlich war geplant, die Open-Mega mit Multitasking auszustatten. Ein Entwurf davon für die Open-Maxi kann ebenfalls auf der Downloads-Seite heruntergeladen werden. Aber so weit ich die Downloadzahlen sehe, benötigen die OM-Anwender so etwas nicht. Die Open-Mega wird, ebenso wie die Open-Maxi, auf der Open-Control M-Unit-Hardware von CCTools basieren. Das Betriebssystem kann also in-system gewechselt werden. Dem Open-Maxi-Anwender entstehen keine weiteren Kosten, wenn er auf Open-Mega wechseln möchte.
Diese Seite wurde von Dietmar Harlos am 4. Januar 2006 erstellt.