Über die Firma HighTec, die uns freundlicherweise ihr selbstentwickeltes
Realzeitbetriebssystem PxROS kostenlos zur Verfügung stellte, bezogen
wir auch den Steuerungscomputer. Dieser besteht aus einer kleinen Platine,
auf der sich der Microcontroller 80C166 von Siemens, ein 128 kByte Rambaustein
und ein Quarz, das den 80C166 auf 40 MHz taktet, befinden.
Wesentliche Merkmale des 80C166
Abbildung: Übersichtsdiagramm des 80C166
16-Bit Datenbus und Register
1 kByte internes RAM, in der aktuellen Version bis zu 256 kB extern
RAM adressierbar.
Registerarchitektur: eine Registerbank kann bis zu 16 Register umfassen,
es können beliebig Registerbänke im internen Ram verteilt werden.
Zwischen den einzelnen Bänken wird mit dem Context Pointer (CP) hin-
und hergeschaltet.
CPU besitzt vierstufige Pipeline, je eine Stufe für Befehl holen
(fetch), Decodieren (decode), ausführen (execute) und zurückschreiben
(write back). Auf die Ausführungsdauer der einzelnen Befehle wird
in der Timinganalyse des Steuerungsprogrammes genauer eingegangen.
Es gibt sechs frei programmierbare Timer, die Interrupts mit Frequenzen
von 0,3 bis 2,5 MHz auslösen können.
32 kByte internes EPROM, es enthält einen (nicht benutzten) Realzeitbetriebssystemkernel
und ein Monitorprogramm zum Laden und Debuggen von Programmen, beide wurden
von XYZ installiert.
Fast sämtliche Leitungen des Chip können mit mehreren Funktionen
belegt werden (als Adressleitungen, Datenleitungen oder Interrupteingänge).
bietet vielfältige Möglichkeiten, auf externe Interrupts
zu reagieren, ohne dabei den laufenden Prozess zu stören.
besitzt einen A/D-Wandler (leider kein D/A-Wandler)
besitzt zwei serielle Schnittstellen (bis zu 625 000 Baud) und eine
frei programmierbare parallele Schnittstelle.
Wie man sieht, ist der Chip gut geeignet für anspruchsvollere Anwendungen
in (kompakten) Echzeitsystemen.
Spezielle Eigenschaften des
80C166, die bei der Implementierung benutzt werden
Es gibt eine Capture/Compare-Einheit (CAPCOM-Einheit), ihr Anwendungsgebiet
ist die zeitgenaue Erzeugung bzw Erfassung komplexer Signalverläufe.
Im Vordergrund steht dabei die Entlastung der CPU von zeitkritischen, sich
ständig wiederholenden Signalerkennungs- und Erzeugeugungsaufgaben.
In dem Capture-Modus, den wir in der Steuerung benutzen, wird bei einem
Ereigniss , welches einem bestimmten Pin zugeordnete ist (Wechsel von 0
nach 5 Volt oder 5 nach 0 Volt), der Wert des laufenden Basistimers in
das sog. Capture-Register übernommen. Danach kann ein Prozessorinterrupt
ausgelöst werden. Es lässt sich so, durch geignet hohe Wahl der
Timerhochzählgeschwindigkeitder, der Zeitpunkt des Ereigniseintritts
genau feststellen. In unserem konkreten Fall haben wir die Lichschrankenausgänge
mit je einem Pin (P2.10 und P2.11) des 80C166 verbunden. So können
wir mit Hilfe des Capture-Modus die Zeitdauer zwischen zwei Lichtschrankenimpulsen
sehr genau messen.
Acht Pins (P2.0 bis P2.9) werden als paralleler Ausgang (10 bit) programmiert.
Sie dienen als Eingang für den D/A-Wandler (8 bit) und als Selektleitungen
für je einen Motor (2 bit).
Roland Schlosser [Fopra Realtime]
Wed Jan 22 20:12:29 CET 1997