Universität Bielefeld - Technische Fakultät - Neuroinformatik



next up previous contents
Next: Scan-Listen-Format für MASS Up: Die Sensorstation MASS Previous: Blockdiagramm der Hardware

Software-Struktur

 

Zur Programmierung der Microcontroller stand die Entwicklungsumgebung IDE11 (für Integrated Development Environment) zur Verfügung (siehe [Tha95]). Bei diesem Programmpaket handelt es sich um einen integrierten Editor/Assembler/Debugger für HC11-Maschinencode. Der Debugger nutzt die besonderen Eigenschaften des Controllers aus und ermöglicht damit die Einzelschrittausführung von Programmen in der fertigen Platine (sogenanntes live hardware debugging).

Das Grundgerüst der Programme, die auf den Microcontrollern laufen, ist in Abb. 6.2 dargestellt. Es besteht aus einer Hauptschleife, die einen Satz Flags prüft und entsprechend Programmteile aufruft oder überspringt, und mehreren Interrupt-Servern, die bei Bedarf aktiv werden.

  
Figure 6.2: Grundstruktur beider HC11-Applikationen: Der Controller durchläuft in einer Endlosschleife alle aktiven Prozesse. Jeder Prozeßaufruf ist blockierend, der Prozeß selbst darf also keine Endlosschleife enthalten. Die Prozesse werden über einen Satz Flags ein- und ausgeschaltet. Meist werden die Flags vom Bediener am Terminal geschaltet. Dazu steht ein Kommando-Parser und ein Satz Kommando-Handler zur Verfügung. Die Textausgabe erledigt ein eigenständiges Paket, das eng mit dem Interrupt-Server für die RS232-Schnittstelle verknüpft ist. Je nach Applikation werden unterschiedliche Interrupt-Server und Prozesse in dieses Gerüst eingefügt.

Der wesentliche Interrupt-Server ist derjenige für die RS232-Schnittstelle (SCISvr). Dieser Server belastet den Controller nur, wenn die Schnittstelle in Betrieb ist; das ist beispielsweise der Fall, wenn der Benutzer am Terminal einen Befehl eingibt.

Die Kommandos, die ein Benutzer über die RS232-Schnittstelle sendet, schalten meist einen Programmteil ein oder aus (über die Prozeß-Flags). Da Kommandos nur auf die Flags direkt zugreifen, werden komplizierte Befehle mit eigenen Prozessen realisiert, die nach einer Ausführung wieder abgeschaltet werden. Solche Prozesse können andere Variablen manipulieren, wie etwa die Liste der Analogkanäle, die abgetastet werden sollen.

Das Kommando H ist immer reserviert (Help). Der zugehörige Prozeß druckt eine Liste der unterstützten Befehle aus. Mit diesem Kommando wird wenig routinierten Anwendern die Konfiguration der Controller erleichtert.

Die Hauptschleife ist durch einen sogenannten Watchdog-Timer gegen Absturz gesichert. Das ist ein Rückwärtszähler, der an den Systemtakt gekoppelt ist. Dieser Zähler muß mit einer festgelegten Befehlssequenz zurückgesetzt werden bevor er auf Null gefallen ist, da ansonsten ein Reset ausgelöst wird. Das Zurücksetzten des Zählers wird einmal pro Durchlauf der Hauptschleife durchgeführt. Wenn die Schleife wegen eines abgestürzten Prozesses nicht weiterläuft, wird der Controller nach spätestens einer Sekunde einem Reset unterzogen; alle Interrupt-Server werden neu initialisiert und die Hauptschleife mit im EEPROM voreingestellten Flags gestartet. Diese Flags lassen sich zum Beispiel mit IDE11 umprogrammieren.

Die beschriebene Grundstruktur stellt ein sehr rudimentäres Betriebssystem dar, unter dem Applikationen leichter realisiert werden können. Die Applikationen bestehen aus mehreren Prozessen und mehreren Interrupt-Servern, die vom Betriebssystem bedient werden.

In Tab. 6.1 sind die zusätzlichen Prozesse und der Interrupt-Server für MASS aufgeführt. Diese Applikation muß die Multiplexerbank schalten und den A/D-Wandler sowie die Schnittstelle zum Puffermodul BRAD bedienen. Die Analogkanäle müssen nacheinander abgetastet werden; die Abtastsequenz wird in einer sogenannten Scan-Liste festgehalten, die sinnvoll voreingestellt und über einen Terminal-Emulator (oder direkt über die RS232-Schnittstelle) veränderbar ist.

  
Table 6.1: Software-Elemente von MASS

Die voreingestellte Scan-Liste kann mit dem Terminal-Kommando U gelesen und mit D überschrieben werden, etwa um einen einzelnen Sensor besonders schnell abzutasten.

Im Normalfall läuft die A/D-Scan-Routine permanent und liefert so schnell wie möglich neue Daten. In dieser Betriebsart kann die Erneuerungsrate jedoch leicht schwanken, wenn andere Prozesse mehr Rechenzeit erfordern. Um eine konstante Erneuerungsrate zu garantieren, kann der A/D-Scan vom Echtzeit-Interrupt aufgerufen werden. Die Rate ist dann in vier Stufen einstellbar und beträgt maximal 244Hz.

Damit die Station auch ohne das Puffermodul getestet werden kann, läßt sich der Inhalt des neuesten Datenpakets am Terminal ausgeben.



next up previous contents
Next: Scan-Listen-Format für MASS Up: Die Sensorstation MASS Previous: Blockdiagramm der Hardware



Markus Jankowski Jan Jockusch Lars Jansen Michael Jandrey Marjan Tomas , 1996-Dec-06