HTL Steyr - Projekt C167-Basisboard
Elektronik - Technische Informatik

 


Vorwort

Ende des Schuljahres 1998/99 hielt Wilhelm Brezovits an unserer Schule einen Vortrag über den Infineon C167 - Microcontroller, den zugehörigen Codegenerator DAvE samt Compileroberfläche. In diesem Rahmen wurden der Schule 4 C167 Starterkits übergeben. Daraufhin wurde ein Laborprojekt gestartet, in welchem die Realisierung einer Entwicklungsumgebung mit dem C167 für den Schulbetrieb erfolgen sollte. Wie sich wohl jeder vorstellen kann, ist es natürlich nicht möglich ein solches Projekt innerhalb eines Jahres abzuwickeln, daher wurde das Projekt des Vorjahres an uns weitergegeben.

Projektjahr 1999/2000:

Unser Projektjahr 2000/2001:
Anforderungen

Folgende Anforderungen entstammen den Vorgaben, die der geplante Einsatz als Schulsystem verlangt:


Entwicklungsumgebung
 
Die Platine lässt sich einfach und ohne spezielle Treiber in die Entwicklungsumgebungen der Firmen Keil und Tasking einbinden.

Die compilierten Programme werden mittels eines Monitors zum Basisboard hinuntergeladen und lassen sich somit direkt an der Zielhardware ausführen und debuggen.

Da die Platine kompatibel zum weit verbreiteten Evaluationsboard der Firma Phytec ist, lassen sich sowohl das dafür konzipierte Monitorprogramm als auch die Flashtools zum Speichern fertig getesteter Programme im Flash-Memory verwenden.


Hardware

Die Spannungsversorgung erfolgt mit einem PWM Schaltregler, der selbst bei der maximalen Eingangsspannung von 40V einen hohen Wirkungsgrad erzielt. Auf Wunsch kann alternativ ein herkömmlicher 7805 mit seinen bekannten Einschränkungen eingesetzt werden.

Ein zentrales Thema stellen die Schnittstellen zur "Außenwelt" dar. Neben der obligaten RS232 Schnittstelle, die der Prozessor als integrierte Peripheriekomponente bietet, ist ein zweiter serieller Kanal implementiert, der softwaremäßig emuliert wird und beispielsweise als Verbindung zu einem Terminal dienen kann. Dies hat sich zum Testen neu entwickelter Programme als sehr nützlich erwiesen.

Das CAN Modul des C167CR ist in verschiedenen Konfigurationen an den Bus anschaltbar. In einer galvanisch getrennten Variante kommen Optokoppler zum Einsatz. Wird auf diese Trennung verzichtet, so können diese entfallen und die Versorgung der gesamten Hardware kann optional über den CAN-Bus erfolgen.

Als Human Interface steht auf der Eingabeseite ein PS2 Keyboardanschluss zur Verfügung, an dem handelsübliche Tastaturen betrieben werden können.

Zur Visualisierung lassen sich Industriestandard LC-Displays (bis zu 40 Zeichen x 4 Zeilen) direkt an der dafür auf der Platine vorgesehenen Stiftleiste anstecken.

Für das richtige Timing sorgt ein DCF77 Modul, das Datum und Zeit via Funk von der Atomuhr in der Nähe von Frankfurt empfängt.

Alle Komponenten finden auf einer 2-Layer Europakarte Platz. Die Platine wurde komplett in AccelEDA v13 entwickelt und größtenteils mit 8mil schmalen Leiterbahnen entwirrt.


Erweiterbarkeit
 
Um die Anbindung an applikationsspezifische Hardware zu ermöglichen ist ein 96-poliger Stecker nach DIN-Norm angebracht, womit das Board den Kern eines Einschubsystems darstellen kann. Die wichtigsten Signale konzentrieren sich jedoch auf 2 Stiftreihen, wodurch einzelne Erweiterungskarten mittels Stift- und Buchsenleisten aufgesetzt werden können. Der Adress-/Datenbus inklusive Steuerleitungen wird über Transceiver an die Backplane geführt, welche die Prozessorports aktiv entlasten und sie vor der Zerstörung durch Überspannungen an der Erweiterungshardware schützt. Alle übrigen Signale am DIN-Stecker verfügen über eine passive Schutzbeschaltung, die kurzzeitig Überspannungen von 50V standhält. Ein Widerstand im Signalweg begrenzt die Anstiegsgeschwindigkeit der Ausgangssignale (bessere EMV) und lässt sich mit einem weiteren Widerstand zu einer Messbereichserweiterung für Analogeingänge konfigurieren.



Software

Neben Aufbau und Inbetriebnahme der Basisboards war es unsere Aufgabe ein Treibersystem zu entwickeln, das es ermöglicht, die Benutzerschnittstellen auf der Hardware (RS232, CAN, LCD, PS/2) komfortabel als Streams zu behandeln und mittels üblichen Dateibefehlen des ANSI-C I/O Konzeptes anzusprechen.

Alle Dateioperationen in C benutzen als unterste Schicht die Funktionen _fopen, _ioread, _iowrite und  _fclose um mit den Streams zu arbeiten. Diese Funktionen mussten also für unsere Bedürfnisse abgeändert werden, was mit Ausnahme der Funktion _fclose schon unsere Vorgängergruppe erledigte.

In der Initialisierungsphase des µ-Controllers registrieren sich alle implementierten Treiber im Modul USRIO.C und geben dort ihre Routinen zum Öffnen, Lesen, Schreiben und Schließen des Streams bekannt.
Diesen Vorgang kann man sich so vorstellen, dass jedem Treiber bei der Registrierung eine eindeutige Nummer (=fileno)  zugewiesen wird. Diese Nummer und der zugehörige Treibername wird in eine Tabelle eingetragen.  In diese Tabelle werden weiters Verweise auf die mit dem Treiber zu verwendenden Routinen gespeichert. Durch die Abänderung der Funktionen _iowrite und _ioread werden anschließend immer die in dieser Tabelle eingetragenen Treiber verwendet.


Ein Beispiel zum Verständnis des Konzeptes

Im Hauptprogramm wird unter anderem die Funktion Display_Init() aufgerufen, welche für die Display Initialisierung zuständig ist und in der sich  folgende Zeile wiederfindet:

Das Modul register_drv ordnet nun die übergebenen Funktionen in einer Struktur einer eindeutigen Treibernummer zu.

Wird nun im Hauptprogramm mittels fopen("LCD","w") ein Kanal zum Display geöffnet, so versucht die Routine _fopen(...) eine open Funktion eines Treibers zu finden, der sich auf die Zeichenfolge "LCD" meldet, ist kein entsprechender registrierter Treiber vorhanden, wird NULL zurückgegeben.

Bei korrekter Öffnung bewirkt ein anschließendes fprintf(...) in letzter Instanz den Aufruf von _iowrite(...).

fileno(fout) ermittelt aus der Tabelle der initialisierten Treiber den zu LCD passenden Eintrag in Form eines Zeigers. Dieser weist auf eine Liste von 4 Funktionen, wobei die write Funktion der Ausgabe dient und mit den passenden Parametern aufgerufen wird. Die verwendete write Funktion ist in diesem Fall Display_Write(...).


Stand der Dinge


Fertigung

 

Bestellung und Kalkulation

Die Stückliste wurde bereits von der Vorgruppe in groben Zügen erstellt und von uns finalisiert. Zusätzlich wurde mit Hilfe von Visual Basic für Applikationen eine dynamische Stückliste generiert. Diese Anwendung ermöglicht es die Gesamtstückliste und Teilstücklisten der jeweiligen Lieferanten für die Bestellung getrennt zu verwalten.

Außerdem wurde eine vollständige Kalkulation der Kosten für ein Basisboard realisiert. Trotz Online - Hilfe diverser Kataloge kann es bei der Bestellung zu diversen Problemen kommen. Von der doppelten Bauteilbezeichnung über das Vorhandensein verschiedener Preise für ein Produkt bis zum fehlenden Lagerbestand kann man auf eine Vielzahl von Komplikationen treffen.  Auch auf den Preisunterschied, der zwischen den Herstellern bzw. Lieferanten besteht, ist zu achten!


Bestückung

Sämtliche Bauteile d.h. diskret und SMD, wurden gänzlich mit Hilfe von schuleigenen Einrichtungen bestückt. Unter Verwendung des „neuen“ Bestückungsautomaten in der Werkstätte von FOL König, mit dem es möglich war, sowohl die Lötpaste aufzutragen als auch die Bauteile zu bestücken, konnte eine saubere SMD-Bestückung ermöglicht werden. Das Verlöten der Bauteile erfolgte mit Heißluft. 

Tipp:
Zum Verlöten von SMD-IC’s eignet sich die Verwendung von Flussmitteln. Das Aufbringen des Flussmittels bewirkt eine besseren Fluss des Lotes und verhindert Kurzschlüsse zwischen einzelnen Pins der IC’s. 


Hardwaretest

Für den Hardwaretest wurde eine Schaltung für die erste Inbetriebnahme aufgebaut. Diese ermöglichte es die Schaltung zu versorgen und den dabei entstehenden Aufnahmestrom zu messen! Lag dieser Strom im Bereich von 30 - 60mA, so war die Platine aus Hardwaresicht grundsätzlich funktionsfähig. Wurde dieser Bereich entscheidend überschritten, so musste die Platine einer Fehleranalyse unterzogen werden. 

Fehleranalyse

In den Bereich der Endkontrolle fällt die Überprüfung der Vollständigkeit der Bestückung, die optische Erkennung von Kurzschlüssen sowie die Reinlichkeit der Platine und die Durchführung von Kontrollmessungen. In unserem Fall führten die Kontrollmessungen zu 2 fehlerhaften Platinen:

Fehlerbehebung

Dieser Fertigungsabschnitt dreht sich im Prinzip nur um das Beheben der verschiedenen Fehler, was durch Umlöten bzw. Ersetzen von Bauteilen realisiert wurde.

Hier wird ein Softwaretest der Platine durchgeführt, indem ein funktionierendes Programm, in unserem Fall eine Routine zur Ansteuerung des LC-Displays, auf die Hardware downgeloaded wird! Zusätzlich wurde der Flash-Speicher mit einem speziellen Flash-Test-Programm getestet. Gingen die beiden Tests in Ordnung, so konnte die Platine als voll funktionsfähig betrachtet werden, war dies jedoch nicht der Fall, so musste die Platine erneut einem Hardwaretest unterzogen werden.


Laborgruppe 5AHE-00/01
 
Bichler Christian  cbichler@aon.at  
Egger Bernhard begger@gmx.at
Negeli Thomas  tnegeli@gmx.at

Abschließend hoffen wir, dass die nächste Laborgruppe ebensoviel Freude wie wir am C167-Basisboard hat und dieses im Rahmen der Laborprojekte des nächsten Jahres fertiggestellt.
 


Kontaktperson: Dipl.-Ing. Franz Parzer   webmaster/05.07.2001