Erfahrungen mit C-Control I

Anmerkung: Nachdem ich einen ganzen Tag damit verbracht habe eine kleine Heizungssteuerung auf dem C-Control I zu impementieren habe ich mich entschlossen diesen Essay zu schreiben um andere davon abzuhalten dies auf einem C-Control I zu versuchen.

Ich habe bisher nur Erfahrungen mit C-Control I sammeln können. C-Control II soll besser sein. Vorallem verfügt C-Control II über eine weitaus bessere Programmiersprache, die an C angelehnt ist.

Meine bisherigen Erfahrungen mit Programmierung auf Mikrokontrollern basiert hauptsächlich auf dem AVR. Auch für diesen gibt es kleine Entwicklerboards die einfach an den PC angeschlossen werden können.

Vorteile von C-Control I

Die Entwicklungsumgebung des C-Control biete eine sehr einfache Möglichkeit schnell ein kleines Programm zu entwickeln. Auserdem wird eine komplett aufgebaute Platine mitgeliefert, so dass sofort mit der Softwareentwicklung begonnen werden kann.

Nachteile von C-Control

Schon für kleinere Projekte ist jedoch die Programmiersprache CCBASIC sehr problematisch, da sie fast keinen Funktionsumfang bietet und durch das Fehlen wirklicher Funktionen nicht mehr als ein guter Makroassembler bietet. So gibt es beispielsweise keine Schleifen und IF-Anweisungen können nur einen Befehl enthalten.

Sobald das Projekt etwas größer wird, wie zum Beispiel in meinem Fall, wird die Einfachheit des C-Controls zu einer starken Einschränkung. Dies fängt damit an, das für das BASIC-Programm lediglich 24 Bytes an eigenen Daten zur Verfügung stehen. Was aber weitaus schwieriger zu handhaben ist, ist der sehr kleine Aufrufstack von nur vier Funktionsaufrufen, d.h. wenn A B aufruft, B C aufruft, D E aufruft und E F aufruft springt F nicht mehr zu E zurück, sondern direkt zu D. Dies mag zwar normalerweise nicht ins Gewicht fallen, da die wenigsten Programme eine solche Tiefe erreichen, wird diese jedoch erreicht ist es äuserts schwer den Fehler zu finden.

Ein weiterer Schwerwiegender Punkt ist die begränzte Zugriffsmöglichkeit auf das EEPROM. Hier kann nur sequenziell darauf zugegriffen werden, sollen hier Tabellen abgelegt werden ist es nicht möglich diese an einer einzelnen Stelle zu ändern. Es gibt zwar die Möglichkeit dies mittels einer Assemblerroutine zu umgehen, jedoch ist diese funktionalität nicht im Betribessystem des C-Control integriert und muss erst vom Programmierer verstanden werden.

Wiso ich mich mit C-Control beschäftig(t)e

Ich mache zur Zeit (Sommersemester 2005) in TGI ein Praktikum. Dies sollte normalerweise nur ein Wochenende Programmierarbeit in anspruch nehmen. Dazu noch ein paar Stunden Besprechnung und schreiben der Spezifikation und Dokumentation.

An der TU München gibt es in TGI entweder die Möglichkeit ein normales TGI-Praktium zu machen in den zwei Standardaufgaben gestellt werden. Zum Beispiel in einer mikroprogrammierbaren Maschine das teilen zu implementieren. Die andere Möglichkeit ist es ein sogenannte Großpraktikum zu wählen. Hier ist nur eine Aufgabe zu erledigen. Auserdem befindet man sich in einer größeren Gruppe, die die Aufgabe gemeinsam lösen muss.

Unsere Aufgabe war es eine Heizungssteuerung zu programmmieren. Diese wurde in drei Module unterteilt: Die Vorlaufsteuerung, die Kesselsteuerung und die Benutzerschnittstelle. Ich habe mich für die Benutzerschnittstelle entschieden.

Dies sollte alles auf einer C-Control I laufen. Uns stand eine Tastatur und ein zwei-Zeilen Display zur Verfügung. Dies war alles im Application-Set I zusammengefasst. Die Tastatur ist in Ordnung, hat zwar etwas seltsame Ansteuerung, da die Taste ermittelt wird in dem ein Analogwert in den Tastencode umgerechnet wird. Das Display ist nur für eher kleinere Aufgaben gedacht, da es mit 16x2 Zeichen etwas zu klein ist für etwas mehr Benutzerdaten. Es ist textbasiert, es können jedoch zum glück 8 benutzerdefinierte Zeichen gesetzt werden.

Zusammenfassung

Zwar ist an der Benutuzersteuerung für die Heizung nicht viel zu entwickeln, jedoch ist es durch die Beschränkungen des C-Control I sehr umständlich Dinge wie den Anzeigebalken zu implementieren. Eines der größten Mankos ist es, das keine wirklichen Funktionen mit Parametern und lokalen Variablen möglich sind. Dies ist besonders in der Entwicklung von Benutzerschnittstellen sehr wichtig, da hier häufig ähnliche Funktionalität mit leicht geänderten Paramteren benötigt wird.