|
GrundstrukturDen Kern der Schaltung auf der Platine bilden die Stromversorgung und ein Mikrocontroller vom Typ 16F871 der Firma Microchip. Um diesen IC ist die übrige Peripherie angeordnet.
Die Schaltung bezieht ihren Strom von drei externen Netzteilen, die jeweils eine Gleichspannung von 12 Volt liefern. Schutzdioden an den Anschlüssen stellen sicher, daß falsch angeschlossene Netzteile keinen Schaden anrichten können, dann verzweigt sich der Stromfluß in Richtung der verschiedenen Baugruppen. Hier wird auch die Spannung für den Mikrocontroller und die übrige Logik der Platine auf 5 Volt stabilisiert.
Die Eingangsspannung wird zunächst auf die Signale und Kontakte (VCCIO), den Testausgang (SUP0), die Anzeige (LD+) und die Relais des Weichentreibers (VCCINT) verteilt. Dann erzeugt ein Spannungsregler vom Typ 7805 die 5 Volt zum Betrieb des Mikrocontrollers (VCC).
Bei dem Mikrocontroller handelt es sich um einen 16F871 von Microchip, der mit einem 20 MHz Quarz und einer ICSP-Schnittstelle ausgestattet ist. Sein Codespeicher bietet Platz für 2048 Instruktionen, dazu kommen 128 Bytes RAM und 64 Bytes EEPROM. Insgesamt können 33 Pins an externe Bauteile angeschlossen werden, was für die Schaltung gerade ausreicht. Von den Peripheriebausteinen des Mikrocontrollers werden nur ein ADC mit drei Eingängen, die serielle Schnittstelle und die Timer benötigt. Ein Watchdog sorgt zusätzlich dafür, daß die Firmware nicht in einer Endlosschleife hängen bleiben kann. Die Entscheidung ist auf diesen Mikrocontroller gefallen, weil am Lehrstuhl Echtzeitsysteme und Eingebettete Systeme bereits alle nötigen Entwicklungswerkzeuge (Assembler, Debugger, Programmiergerät und Prototypschaltungen) sowie Erfahrungen mit vergleichbaren Bausteinen vorhanden waren. Der PLCC44-Sockel kommt mit wenig Platz auf der Platine aus und seine Ressourcen reichen aus, ohne große und damit unnötig teure Reserven zu bieten. Die Firmware wechselt nach einer kurzen Startphase direkt in den sogenannten Suchmodus. In diesem Zustand wartet sie darauf, daß ein Steuerrechner einen gültigen Befehl sendet und damit die Kontrolle übernimmt. Die Peripherie wird während dieser Zeit schon weitgehend normal angesteuert, beispielsweise registriert der Mikrocontroller auslösende Kontakte und speichert sie für eine spätere Abfrage. Einzig die Gleistreiber sind zur Sicherheit noch deaktiviert. Während der Suchmodus aktiv ist, zeigt das Display ein umlaufendes Segment. Sobald der erste gültige Befehl eintritt, wechselt die Firmware in den Kommandomodus und führt Befehle aus, die sie auf der seriellen Schnittstelle empfängt. Das Display zeigt jetzt die Nummer der aktiven Schnittstelle an und die gesamte Peripherie inklusive Gleistreibern wird normal angesteuert. Wird die Verbindung durch einen entsprechenden Befehl beendet oder eine Zeit lang kein gültiger Befehl empfangen, wechselt die Firmware wieder in den Suchmodus. Die Hardware wird dabei nicht zurückgesetzt, so daß der Rechner die Verbindung wieder aufbauen oder ein anderer diese übernehmen kann. Beim Verbindungsaufbau kann ein Rechner aber auch einen Reset durchführen lassen, wenn er mit einem definierten Ausgangszustand beginnen will. Die verschiedenen Funktionen zur Steuerung der Hardware werden in einem Cyclic Executive ausgeführt, dessen Ausführungszeit nicht länger als die Zeit für die Übertragung eines Bytes auf der seriellen Schnittstelle sein darf (2600 Takte). Das Hauptprogramm stellt zwei Timer zur Verfügung, die mit einer Frequenz von 1000 Hz (Fast-Tick) und 100 Hz (Slow-Tick) arbeiten. Vor dem Aufruf der Unterfunktionen wird ein entsprechendes Bit gesetzt, wenn seit dem letzten Aufruf ein neuer Tick erzeugt wurde. Darauf basiert das gesamte nach außen sichtbare Timing. |