Letztes Update: 17.12.2002
Es hat verschiedene Vorüberlegungen und Versuche zur Auswahl des Rechners und der Softwarestruktur gegeben.
Dieser Chip zeigte jedoch ein sehr unzuverlässiges Verhalten. In 73% aller Fälle reagierte der Chip nicht auf einen Reset. Nach einen Umtausch des Chip reduzierte sich das Resetverhalten auf ca. 5%. Erste Versuche bei der Implementierung eines Multitasking Programms blieben jedoch erfolglos, sobald eine Task ausgeführt wurde, hängte sich der Prozessor auf. Alle Bemühungen und implementierte Beispiele blieben ohne Erfolg. Außerdem liegt der Strombedarf des Chips bei ca. 300mA, das ist ca. 10 mal so viel, wie der 68HC11 benötigt. Der Vorteil des geringen Hardwareaufwandes und der Programmiermöglichkeit durch TurboPascal läßt sich dadurch leider nicht ausnutzen.
Zurück zu den Sachen, die funktionieren. Aber genauso komfortabel wie der IPC@Chip, d.h. Multitasking System und Ausgabe von physikalischen und bereits kalibrierten Messwerten. Zwei knifflige Bedingungen die leider nur mit sehr hohem Aufwand umzusetzen sind, besonders das Rechnen mit Floatingpoint Zahlen wenn keine FPU zur Verfügung steht. Die Berechnung der Grundoperationen erfordert das Zwischenspeichern diverser Parameter, d.h. bei einem Taskwechsel müssen auch noch viele Variable gesichert werden. Außerdem arbeiten diese Prozessoren nicht mit einer besonders hohen Geschwindigkeit. Floatingpoint Operationen 'zu Fuß' durchzuführen kostet eben Zeit. Und dann muß auch noch alles in Assembler programmiert werden.
Das Konzept sieht dafür aber sehr schön aus und wird vielleicht mal in einem anderen Projekt zum Einsatz kommen:
Die Aufgaben der Software sollten sich in drei Bereiche aufteilen
1. Datenerfassung
1a. Passiver Kanäle
1b. Aktiver Kanäle
2. Datenübetragung
3. Bedienung
die durch jeweils eine Task bearbeitet werden.
Task 1 - Datenerfassung
Task 2 - Datenübertragung
Task 3 - Datenerfassung
Task 4 - Bedienung
Scheduler
Bevor ein größeres Assembler Programm geschrieben wird, wird das Programm erst mal unter Delphi entwickelt, um eine vernünftige Struktur zu entwerfen und natürlich durch die Bestimmung aller Variablen und sonstigen Zwischenspeichern den Speicherbedarf zu ermitteln. Das Programm erfüllt den vollen Funktionsumfang und bietet halt die Möglichkeit mit den Debugger von Delphi zu arbeiten. Ein Funktionsfähiges Programm dann in Assembler umzusetzen geht relativ einfach, weil die großen dummen Überraschungen einfach nicht mehr auftreten.
Bei der Entwicklung wurden verschiedene Varianten umgesetzt. Hier wird jetzt nur die Letzte beschrieben:
| Repeat Wenn interner Messzyklus erreicht Dann Scanne alle Sensoren Wenn Hauptmesszyklus erreicht Dann Speicher alle Datensätze Wenn Befehl vom PC vorhanden Dann Bearbeite Befehl Wenn Aktiver Sensor sich meldet Dann Speicher Datensatz Wenn Datenübertragung aktiv Dann Sende Datensatz Until forever |
Die Übertragung der Daten paßt dabei in dieses Konzept, weil immer nur ein Datensatz zur Zeit gesendet wird, denn der nächste Datensatz wird erst dann übertragen, wenn er vom PC quittiert wurde. Es ist also eine neuer Befehl dafür notwendig. Das reduziert zwar die Übertragungsgeschwindigkeit, sorgt aber dafür, das ein Datensatz auf dem Kontroller erst dann gelöscht wird, wenn er korrekt im PC gespeichert wurde. Es können also keine Daten verloren gehen. Die Ausführungszeit aller anderen Kommandos ist dabei so kurz, das wahrscheinlich ein maximaler interner Messzyklus von 1 bis 2 Sekunden erreicht werden kann. Das wird aber erst die entgültige Programmierung zeigen.
Hardwareaufbau