16-Bit µController an der
HTL-Steyr
Ende des Schuljahres `98 /
`99 hielt Wilhelm Brezovits an unserer Schule einen Vortrag über den Infineon
C167, dem zugehörigen Codegenerator DAvE samt Compileroberfläche. Im Rahmen
dessen wurden der Schule 4 C167 Starterkits übergeben.
Franz Parzer betreute dann
im Rahmen des Laborunterrichts 2 Projekteams, die den Prozessor mit
entsprechender Hardware in Szene setzen sollten, um ihn später im Schulbetrieb
verwenden zu können.
Anforderungen
Folgende Anforderungen
enstammen den Vorgaben, die der geplante Einsatz als Schulsystem verlangt:
-
Robustheit
-
Standard I/O (RS232, Tastatur, LCD)
-
Erweiterbarkeit
-
Easy-to-use Entwicklungsumgebung
Entwicklungsumgebung
Die Platine
läßt sich einfach und ohne spezielle Treiber in die Entwicklungsumgebungen der
Firmen Keil und Tasking einbinden.
Die compilierten
Prog–ramme werden mittels eines Monitors zum Basisboard hinun-tergeladen und
lassen sich somit direkt an der Zielhardware aus-führen und de-buggen.
Da die Platine kompatibel zum weit verbreiteten Evalua-tionsboard 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
Peripheriekomponete 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 Keyboardanschluß 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´s richtige
Timing sorgt ein DCF77 Modul, das Datum und Zeit via Funk von der Atomuhr in
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 entlasteten 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äßt
sich mit einem weiteren Widerstand zu einer Meßbereichserweiterung für Analogeingänge
konfigurieren.
Software
Neben
Entwicklung, Fertigung, Aufbau und Test der Hardware sollten Treiber für die
I/O-Komponenten entwickelt werden, die sich homogen in das ANSI-C I/O-Konzept
einfügen.
Das Resultat ist ein Treibersystem, das es ermöglicht, beliebige I/O-Kanäle (z.B. RS232, Keyboard, LCD, ...) als Streams zu öffnen, und diese mit den üblichen Funktionen zu bedienen.
Alle FILE-Operationen in C greifen letztendlich über die Funktionen _ioread(..) und _iowrite(..) auf das betreffende File zu. Die beiden Funktionen bilden also eine Schnittstelle über die byteweise kommuniziert wird.
Es ist Sache des Programmierers, wie diese Funktionen implementiert werden. Wir haben uns dabei für ein sehr flexibles System entschieden. Anhand der für jeden File eindeutigen Nummer filno(FILE)wird der passende Treiber für die Kommunikation mit der Hardware (device) ausgewählt.
In der Initialisierungsphase registrieren sich alle Treiber im Modul usrio.c und geben dabei ihre Funktionen bekannt, mit denen der Kanal zum Gerät geöffnet, gelesen, geschrieben und geschlossen werden kann. Dabei entsteht eine Liste der registrierten Treiber.
Wird eine Datei (z.B. COM2) geöffnet, so versucht das System einen Treiber zu finden, dessen open-Routine sich zu diesem Dateinamen meldet. Ist dieser Prozeß erfolgreich, so erfolgt ein Eintrag in einer Tabelle, die die Zuordnung zwischen Dateinummer und Treibernummer darstellt.
Die Funktionen _ioread und _iowrite verwenden jetzt für jede Datei den passenden Treiber.
Anhand des Beispiels wird deutlich, wie sich die Situation für den Applikationsprogrammierer darstellt: Anhand der eindeutigen Gerätekennung (=Filename; z.B. „COM2“) wird versucht einen Kanal zum Gerät zu öffnen. Dabei überprüft dann die zuständige open_device Routine, ob dieses Gerät überhaupt verfügbar ist, d.h., ob es hardwaremäßig implementiert ist und ob keine sonstigen Fehler vorliegen. Von nun an können alle C-Funktionen, die mit FILE Streams arbeiten, in ihrem vollen Funktionsumfang genutzt werden.
Das Konzept wird derzeit intensiven Tests unterzogen, unter anderem anhand des Zusatzboards. Hier erfolgt die Kommunikation zum DUART, wie auch zum Sprachprozessor über die genannten Streams. Anhand der dabei gewonnenen Erkenntnisse wird das Treibersystem kontinuierlich verbessert.
Die Software steht auf der HTL-Hompage zum Download bereit, es sei hier jedoch auf das Ende des Berichts verwiesen.
Anforderungen
Das zweite Laborprojekt, welches von DI Franz Parzer betreut wird, soll als Zusatzinterface für das C167CR Basisboard dienen. Ausgegangen ist es von einem Laborprojekt des Jahres zuvor, welches unter dem Namen ‚fernabfragbare Wetterstation‘ lief. Die Wetterstation wird beim Paragleitklub Cumulus in Ternberg eingesetzt, um über das Telefon Daten über Windrichtung und Windgeschwindigkeit via Textansage zu erfahren.
Unsere Aufgabe war es, eine Baugruppe zu entwickeln, welche nicht nur die Tätigkeit der Wetterstation übernehmen kann, sondern flexibel genug ist, um den größten Teil der am Telefonsektor denkbaren Anwendungen abzudecken.
Diese Direktive führte dazu,
daß das universelle Telefoninterface nur mehr wenig mit der ursprünglichen
Hardware der Wetterstation zu tun hat.
Features
Da seit Sommer 1999 die Telefonnummer des Anrufers auch bei POTS-Anschlüssen (analoger Standardanschluß) mitgesendet wird (als CLIP bekannt), unterstützt die Baugruppe dieses Leistungsmerkmal der Telekom. Es kann ein Adreßbuch angelegt werden, wodurch bei einem Anruf neben der Telefonnummer auch der Name des Anrufers am Display angezeigt werden kann.
Weiters ist es möglich mit dem Telefoninterface einen intelligenten Anrufbeantworter aufzubauen. Da der Anrufer durch seine Telefonnummer bekannt ist, kann man jeder bekannten Person oder Gruppe einen eigenen Ansagetext zuweisen. Es kann ebenfalls gewählt werden, ob es ihm möglich ist eine Nachricht zu hinterlassen oder nicht.
Die Software erlaubt sogar den Einsatz als Router. Das heißt, daß das Interface bei abgehenden Rufen selbständig, je nach Wochentag, Tageszeit und Verbindungswunsch (Regionalzone, Fernzone, Ausland, ...) den billigsten Verbindungsanbieter selektiert. Die verfügbaren Anbieter können mit ihren Tarifen über die PS2-Tastatur eingegeben werden. Als Alternative ist auch der Download einer Tabelle mittels PC aus dem Internet denkbar, welche dann via serieller Schnittstelle an den Router übermittelt wird.
Neben der RS-232 Schnittstelle, ist eine weitere Schnittstelle vorhanden, welche die Kommunikation mit einem Mobiltelefon ermöglicht. Diese Verbindung kann wahlweise über Kabel- oder Infrarotverbindung (IRDA) hergestellt werden.
Hardware
Die Speisung der Platine erfolgt über die Backplane (96-poliger DIN-Stecker). Neben den obligaten 5V, ist hier noch die Versogungsspannung für die Telefonanbindung von etwa 25-30V zu nennen.
Der Kern der Platine besteht aus dem Sprachprozessor vom Typ ISD-T267SC, welcher vom Basisboard über das high speed synchronus serial Interface des C167 angesprochen wird.
Der Sprachprozessor unterstützt zum Ablegen der Sprachdaten drei verschiedene Arten Flashspeicher. Auf dieser Hardware befindet sich eine seriell ansprechbare Variante, ein Chip der Marke Toshiba mit einer Kapazität von 512 kByte auf dem circa 15 Minuten Sprachdaten Platz finden. Bei Bedarf läßt sich der Sprachspeicher auf 4 Chips erhöhen, wodurch sich eine maximale Länge der gespeicherten Sprachdaten von 60 Minuten ergibt.
Um die Routerfunktion zu ermöglichen, ist es nötig, daß das Interface als erstes Gerät in die Telefonsteckdose eingesteckt wird, weil bei der Wahl das Telefon vom Amt getrennt, und von der Hardware gespeist wird. Nach dem Wählen der Rufnummer, wird die Verbindung über den günstigsten Provider hergestellt, ohne daß der Benutzer davon Notiz nimmt. Das Trennen des Telefons vom Amt wird mit einem Relais mit 2 Umschaltern realisiert. Um das Endgerät weiterhin zu speisen, ist es nötig, daß die externe Versorgungsspannung des C167CR Basisboards bei etwa 30V liegt.
Ein weiteres Relais wird als Schleifenerkennung benutzt. Dessen Spule ist direkt in die B – Leitung eingebaut, das heißt, daß das Relais bei bestehender Schleife (Amts- und Teilnehmerwiderstand je 600W) anspricht. Um den Telefonbetrieb nicht zu beeinträchtigen, muß der Innenwiderstand der Spule kleiner 15W und die Ansprechspannung kleiner 1V sein.
Die benötigten Signale, wie zum Beispiel Ruf-, CLIP- oder DTMF – Erkennung, werden hochohmig abgegriffen, wodurch keine Beeinträchtigung der sonstigen Kommunikation auftritt.
Die analoge Kopplung zwischen Telefonleitung und Sprachprozessor erfolgt über einen CODEC (COder - DECoder), der über eine Gabelschaltung angesprochen wird.
Die beiden seriellen Schnittstellen werden von einem DUART mit einer maximalen Übertragungsrate von 38,4 kBaud gesteuert. Da die Mobiltelefone via IRDA-Standard 1.0 kommunizieren, haben wir ebenfalls ein IRDA-Modul implementiert, welches sich nach diesem Standard richtet. Dieses Modul wird mittels eines Jumpers auf der Platine aktiviert, da der maximale Stromverbrauch der Senderdiode bei 0.5A liegt, was den Schaltregler nur unnötig belast. Der DUART wird über den Datenbus angesprochen, wobei die Adresse mit den höherwertigen 8 Adreßbits (A18 - A12) über DIP-Switches eingestellt werden kann. Die Adressen A0 – A3 werden für die Wahl der Befehlsart verwendet.
Damit unsere Arbeit
nicht nur unserer Ausbildung und unserer Schule zugute kommt geben wir in
diesem Abschnitt einige Adressen an, die uns nützlich erscheinen. Vielleicht
noch nützlicher für interessierte Leser sind E-mail Adressen und die URL unsere
Homepage.
Homepage
Den
Resultaten unserer Arbeit ist eine eigener Bereich der HTL-Steyr Hompage
(www.htl-steyr.ac.at) gewidmet, die als Anlaufstelle für alle eventuell
auftretenden Fragen genutzt werden kann und soll. Hier sind Links zu allen
Sites, die wir als Support während der Entwicklungsarbeit nutzen konnten, sowie
alle E-mail Adressen der Projektmitglieder aufgeführt.
Weiters ist ein Downloadbereich vorgesehen, in dem
folgende Files verfügbar sind:
·
Universelles Treibersystem
(Objekt- und Headerfiles)
·
Treiber für die
Emulation der zweiten seriellen Schnittstelle am Basisboard
·
Ausführliche Dokumentation
des Treibersystems
·
Powerpoint Präsentationen
mit den Projektinhalten
·
Diesen Artikel als
PDF
·
Hochauflösende Fotos
der Platinen
·
Stücklisten
Tag der Projektpräsentation
Am 11. Mai 2000 wurden in unserer Schule alle Laborprojekte des Schuljahres präsentiert. Nachstehendes Foto stellt eine Erinnerung an unseren Projektpräsentationstag dar. Das Bild wurde im Innenhof des Schlosses Lamberg in Steyr aufgenommen und zeigt (v.l.n.r.) Franz Parzer, Wolfgang Heidl, Thomas Grobner, Günter Dutzler, Markus Ringhofer und Wilhelm Brezovits.
Dank
Klar ist, daß die
Projektziele nicht in der zur Verfügung stehenden Zeit erreicht worden wären
ohne die Unterstützung von verschiedenen Personen bzw. Firmen. Wir richten also
unseren Dank an alle, die in irgend einer Form an unserem Erfolg beteiligt
waren, im Besonderen aber an:
·
Herrn Ing. Brezovits
von der Firma Infineon
·
Maxim für die gratis
Samples
·
Den
Werkstättenlehrern der HTL-Steyr,
speziell FOL Ing. Wahl und FOL Ing. König
·
DI Dr. Hans-Peter
Bernhard
· Projektbetreuer: DI Franz Parzer
Autoren:
Günter Dutzler, Thomas Grobner, Wolfgang Heidl, Markus Ringhofer