AMIGA-Magazin · Ausgabe 4/00 · Bauanleitung: I2C-Interface für Zorro II

Aktuelles Heft 4/00

Auf Expansions-Kurs

Die Ein- und Ausgabe von Daten erfolgt bei einem Standard-Amiga mit Hilfe der seriellen oder parallelen Schnittstelle. Mit unserer Bauanleitung können Sie Ihren Amiga komfortabel erweitern und zur Schaltzentrale umgestalten.

von Michael Böhmer

Kaum ein Selbstbauprojekt kommt heute mehr ohne Bauelemente mit einer gewissen Eigenintelligenz aus. Der IC-Markt bietet eine Vielzahl solcher Schaltungen an, die auf kleinstem Raum in einem Chip ganze Funktionsblöcke integrieren. Existiert dann auch noch die Möglichkeit, diese Module auf einfache Art und Weise zu einem Gesamtsystem zu verbinden, steht einem eigenen Projekt kaum noch etwas im Wege. Für den Elektronikfan besonders interessant: der von Philips in den 80er Jahren vorgestellte I2C-Bus, der auf einer Drei-Drahtleitung einen bidirektionalen Bus implementiert. Dabei steht I2C für IIC ­ Inter IC Communications.

Anfangs hauptsächlich zur Vereinfachung von Consumer-Elektronik (wie Videorekorder und Fernseher) gedacht, hat dieses Bussystem heute auch in anderen Anwendungsbereichen, wie Meßwerterfassung, I/O-Aufgaben und Steuerungstechnik, Einzug gehalten. Eine breite Palette an fertigen ICs steht zur Verfügung, angefangen von Speicherbausteinen wie EEPROMs, A/D-Wandlern bis hin zu kompletten Videotextdekodern. Im Gegensatz zu Feldbussen, die in der Automa- tion verwendet werden, ist der I2C-Bus allerdings nur für kürzere Übertragungsstrecken von bis zu 2 Meter spezifiziert. In diesem Artikel wird ein I2C-Interface für alle Amigas mit Zorro-Bus vorgestellt, das sich neben den bereits enthaltenen Erweiterungsmöglichkeiten auch gut als Grundlage für eigene Zorro-Projekte verwenden lässt.

Grundlagen des I2C-Busses

Ähnlich anderen seriellen Bussen verwendet der I2C-Bus nur drei Leitungen zum Verbinden der am Bus angeschlossenen Geräte:

Der Anschluß an den Bus erfolgt durch einfaches Anklemmen an diese Leitungen, besondere Logik zum Durchschleifen der Signale ist nicht erforderlich. Jeder I2C-Baustein besitzt eine vom Hersteller vorgegebene Adresse, über die er angesprochen werden kann. Die Busleitungen sind in Open-Collector-Technik ausgeführt und werden über (meist passive) Pullup-Widerstände auf High-Potential gehalten. Will ein Baustein Zugriff zum Bus, so erzeugt er die Startbedingung: er zieht SDA auf low, während er SCL auf high hält. Alle anderen Bausteine erkennen diese Startbedingung und gehen in den Empfangsmodus. Der Master addressiert jetzt den Zielbaustein (den Slave) über ein 7-Bit-Wort, gefolgt vom R/W-Bit, das die Art des Zugriffs angibt. Der angesprochene Baustein quittiert diese Addressierungssequenz, indem er beim nächsten SCL-Puls die Datenleitung auf low zieht (Acknowledge-Bit). Bleibt diese Reaktion aus, so bricht der Master die Übertragung ab. Bei einem Schreibzugriff (R/W-Bit low) folgen jetzt die Daten, bei einem Lesezugriff (R/W-Bit high) schickt der Slave die Daten mit der vom Master vorgegebenen Frequenz auf SCL. Die Übertragung wird beendet, wenn der Master bzw. Slave keine Daten mehr zu übermitteln hat. Dies wird über ein auf high gesetztes Acknowledge-Bit angezeigt. Der Master erzeugt daraufhin eine Stopbedingung, indem er SDA bei gesetztem SCL von low auf high gehen lässt. Der Bus ist daraufhin wieder für andere Übertragungen frei ­ ein Mul- timasterbetrieb ist bei I2C also einfach zu realisieren.

Die Standardvariante des Busses erlaubt SCL-Frequenzen von bis zu 100 kHz, in einer erweiterten Version auch bis zu 400 kHz. Die neuesten Chips erlauben auch höhere Frequenzen. Genaueres zu diesem Thema finden Sie in den Phillips-Spezifikationen [1].

Service durch den Autor
Bei Fragen zum Thema I2C-Bus und Amiga kann man sich per E-Mail (mboehmer@physik.tu-muenchen.de) an den Autor wenden. Weitere Informationen und die Platinen-Layouts findet man im Internet: http://www.e12.physik.tu-muenchen.de/~mboehmer/

Das System und der Amiga

Als Steuerung bietet sich für Selbstbauhardware natürlich der Amiga an. Er verfügt zwar über eine reiche Ausstattung an Schnittstellen, aber nicht über einen I2C-Anschluss. Dem kann jedoch abgeholfen werden: Neben einer Anzahl an einfachen Interfaces für die serielle/parallele Schnittstelle oder den Diskettenport, kann natürlich auch der interne Zorro-Bus genutzt werden. Die externen passiven Interfaces sind einfach zu bauen ­ meist genügt ein IC und eine Handvoll Widerstände. Jedoch wollen wir für die Programmierung ausdrücklich darauf hinweisen, dass die maximale Busfrequenz nicht überschritten wird. Das Busprotokoll muß ebenfalls in die Software implementiert werden. Für Amigas ohne Zorro-Bus sind diese passiven Interfaces die einzige Lösung, die darüber hinaus auch noch eine Schnittstelle belegt.

Im hier vorgestellten Projekt wird ein aktiver I2C-Buskontroller der Firma Philips (der PCF8584, [2]) auf einer Zorro-II-Karte eingesetzt. Neben der einfachen Programmierung kümmert sich der Kontroller auch um Busprotokoll und die notwendige Seriell-Parallel-Wandlung. Diese Features würden aber alleine den Aufwand beim Aufbau nicht rechtfertigen. Deshalb kann eine batteriegepufferte Echtzeituhr mit eingebaut werden. Ein Erweiterungsport erlaubt es, eigene Ideen zu verwirklichen oder fertige Module wie das »hyperCOM 3i« von vmc ([3]) zu verwenden. Damit kann man seinen Amiga um zwei serielle und eine parallele Schnittstelle erweitern. Die Hardwarevoraussetzungen für das ICY-Projekt sind damit vorgegeben: ein freier Zorro-II/III Steckplatz.

Die Softwareseite bereitet dank der von Wilhelm Nöker programmierten i2c. library keine Kopfschmerzen. Eine für ICY angepasste Library-Version ermöglicht die Betriebssystemkonforme Einbindung der Hardware ins System und auch die Verwendung aller für diesen Amiga-Standard geschriebenen Programme. So kann mit einem Videotextmodul (meist der Standardapplikation des SAA5246AP/E) und VideoText ([6]) auf einfache Weise ein komfortables Videotextsystem zusammengestellt werden. Für die Echtzeituhr existiert ebenfalls ein Programm, das als Ersatz von SetClock das Setzen und Lesen der Amiga-Uhr erlaubt [5].

Anwendungen

An Anwendungen für I2C-Chips fehlt es nicht: Be- reits angesprochen wurde eine Videotextlösung mit dem PCF8574 kann eine 8-Bit-I/O realisiert werden. Schalt- und Steueraufgaben wie der Anschluß eines LCD-Moduls einfach erledigt werden. Für Messaufgaben existieren auch viele ICs: A/D-Wandler (z.B. MAX127) und Temperatursensoren wie der LM75 seien hier als Beispiel erwähnt. Interessant sind auch Kombi-ICs wie der DS1629, der neben einer Echtzeituhr auch SRAM und ein digitales Thermometer enthält. Der DS1280 lässt sich zur kompletten Überwachung von Spannungen, Lüfterdrehzahlen und Temperatur eingesetzen.

Die Schaltungsbeschreibung

Die Schaltung von ICY ist auf vier Schaltplanseiten aufgeteilt. Low-aktive Signale werden durch ein vorangestelltes »/« gekennzeichnet. Auf dem ersten Schaltplanblatt ist hauptsächlich der Zorro-Stecker untergebracht. Die Lithiumbatterie sowie die zwei Schottky-Dioden stellen für die Echtzeituhr eine Pufferspannung (Leitung BACKUP) zur Verfügung.

Blatt 2 enthält die Treiber für den Datenbus (IC1), den Adressbus (IC2) sowie das Register für die im Rahmen der Autokonfiguration zugewiesene Basisadresse (IC4). Der Adressbustreiber IC2 ist im Dauerbetrieb, der Datenbustreiber IC1 wird vom Autokonfigurations-GAL IC6 über /DRV gesteuert. Die Treiberrichtung wird durch READ vom Zorro-Bus geschalten. Das Adressregister erhält seine Steuersignale ebenfalls von IC6; während des Konfigurationsvorgangs liegen die Ausgänge SA [23:16] im Tristate, die für Autoconfig benötigte Adresse 0xE8 ergibt sich dann aus den Pullup-/Pulldown-Widerständen. IC3 dient als Addressvergleicher bei Zugriffen auf das Board; das Signal /EQ ist nur aktiv, wenn ein gültiger Zorro- Zyklus durch /AS angezeigt wird.

Auf Schaltplanblatt 3 ist die Intelligenz der Karte untergebracht: GAL IC6 ist für den korrekten Ablauf der Autokonfiguration zuständig; neben der ROM-Tabelle mit den Daten der Karte (Hersteller-, Produktnummer, Erweiterungsart, Adressraum-größe, etc.) ist auch eine Shutup-Logik implementiert, die im Rahmen von Autoconfig ein Abschalten der Karte bei überfülltem Adressraum ermöglicht.

IC5 generiert die Strobesignale für Schreib-/Lesezugriffe und beinhaltet ebenfalls die zur Anpassung des PCF8584 (IC7) an den ZorroBus notwendige Logik. Der I2C-Kontroller IC7 ist zwar explizit auch für die Verwendung an Motorola-Bussen vorgesehen, wegen der relativ langen Zugriffszeiten müssen jedoch Waitstates auf dem Bus erzeugt werden. Bei ICY erfolgt dies über /OVR, was die /DTACK-Generierung auf dem Motherboard abschaltet. /DTACK wird bei Zugriffen auf die GALs während der Autokonfiguration vom Motherboard generiert, im normalen Betrieb übernimmt ICY die /DTACK-Generierung.

Um Problemen mit aggressiven Turbokarten zuvorzukommen, ist die Erzeugung von /DTACK über SW1 um einen Buszyklus verzögerbar. Dies läßt den Daten einen Zorro-Zyklus mehr Zeit, einzuschwingen und dürfte Datenfehlern vorbeugen. Im Normalfall sollte SW1 jedoch nicht benutzt werden.

Der Quarzoszillator QG1 stellt den von IC7 benötigten Takt von 12 MHz zur Verfügung. Das letzte Schaltplanblatt zeigt links oben die Echtzeituhr, die alternativ aus IC8 oder IC9 aufgebaut wird. C9 als Trimmkondensator erlaubt ein genaues Abstimmen der Uhr, sofern man über die dazu benötigten Hilfsmittel (Oszilloskop oder Frequenzzähler) verfügt. Im allgemeinen ist kein Abgleich erforderlich.

Ebenfalls enthalten sind der Erweiterungssteckplatz JP1 und die Leiste mit den I2C-Bussignalen JP2. Zur Versorgung kleinerer Spannungen ist Vcc nach außen geführt, wobei die Sicherung F1 größeren Unfällen vorbeugt und deshalb nicht überbrückt werden sollte.

Der Aufbau des Projekts

I2C: Stückliste
Standardbestückung
Bezeichnung Wert Bauform
C1 10µF 16V 6032
C2..C8 100nF 0805
F1 250mA Nanofuse
IC1, IC2 74F245 SO20L
IC3 74F521 SO20L
IC4 74ALS574 SO20L
IC5, IC6

GAL22V10-15

PLCC28
IC7 PCF8584 SO20L
JP1 Stiftleiste 2x13 Pins
JP2 Stiftleiste 2x5 Pins
QG1 12MHz DIL08S
R1..R5 4K7 1206
RN1 10K SIL5
RN2 1K SIL5
SW1 Schalter SMD-Bauform
     
sowie:
2 PLCC28-Sockel für SMD-Bestück.
1 Schneidklemmbuchse 2x10
1 SUB-D-Buchse 9polig
1 Flachbandkabel 9polig, 50cm
     
Echtzeituhr
Bezeichnung Wert Bauform
BAT1

--

Lithiumzellenhalter
C9 5.0-20pF SMD-Trimmer
D1, D2 BAS85 SOD80
IC8 DS1629 SO8
IC9 PCF8583 SO8W
Q1 32.768 kHz Mini
BAT 3.0 V CR1620
IC8, IC9: Beschreibung im Text beachten
Der Aufbau von ICY ist relativ problemlos, obwohl Grundkenntnisse im SMD-Löten vorteilhaft sind. Speziell die PLCC-Sockel sind nicht für Anfänger geeignet; die meisten Fehler bei der Inbetriebnahme sind auf schlechte Lötstellen an den PLCC-Sockeln zurückzuführen. Zum Aufbau benötigen Sie neben der doppelseitig durchkontaktierten Platine, die in der Stückliste aufgeführten Teile. Außerdem ein SMD-Lötkolben, SMD-Lötzinn, eine Pinzette und eine ruhige Hand. IC5 und IC6 müssen vor Inbetriebnahme natürlich noch programmiert werden; die dazu benötig- ten JEDEC-Files sowie fertig programmierte GALs sind direkt beim Autor erhältlich.

Als erstes werden die Kondensatoren C2 bis C8 bestückt. Am besten verzinnt man je eines der Pads vor, lötet den Kondensator an diesem Pad an und sorgt anschließend an beiden Pads mit etwas Lötzinn für eine gute Lötstelle. Ebenso verfährt man mit den Widerständen R1 bis R5.

Der Elko C1 wird nach der gleichen Methode aufgelötet, wobei man die Polarität beachten sollte: Die dicke Linie auf dem Gehäuse markiert den Pluspol (anders als bei den bedrahteten Elkos!). Die ICs IC1 bis IC4 und IC7 werden nun aufgelötet. Auch hier sollte vor dem Verlöten der Pins die korrekte Ausrichtung kontrolliert werden: Üblicherweise markiert eine kleine Vertiefung auf der Oberseite Pin 1 bzw. das IC-Gehäuse ist auf der Seite mit Pin 1 am Rand abgeflacht.

Die Nanofuse (von Vorteil ist bei Bastelwütigen die gesockelte Version) benötigt wegen der direkten Nähe zu JP2 etwas Fingerspitzengefühl. Man sollte prüfen, ob sich die Stiftleiste noch gut einsetzen läßt. Die PLCC-Sockel erfordern eine Spezialbehandlung: Man verzinnt alle Pads mit wenig Lötzinn vor, setzt den Sockel (Ausrichtung beachten: Die abgeschnittene Ecke zeigt in Richtung JP2) auf und verlötet von oben die Anschlüsse auf die vorgelöteten Pads. Eine anschließende Sichtprüfung sollte bei diesen beiden Sockeln unbedingt durchgeführt werden.

Als letztes werden die Schalter SW1 sowie alle bedrahteten Bauelemente eingelötet. Die Widerstandsarrays RN1 und RN2 müssen richtig herum eingesetzt werden und dürfen nicht vertauscht werden. Die programmierten GALs IC5 und IC6 werden in die jeweiligen Sockel gedrückt.

Das Anschlusskabel für die I2C-Signale erhält an einem Ende den Quetschstecker (ein kleiner Schraubstock leistet hier gute Dienste), am anderen Ende wird die SUB-D-Buchse verlötet. Eine passende Stelle für den Einbau ins Gehäuse muß man nach eigenen Vorstellungen finden; besonders gut lassen sich hier Slotbleche alter Multi-I/O-Karten aus dem PC-Bereich verwenden.

Für die Echtzeituhr löten Sie nun die Dioden D1 und D2 auf ­ danach den gewünschten Uhrenchip (entweder IC8 oder IC9), sowie ­ falls benötigt ­ den SMD-Trimmer. Bitte beachten: Wird der PCF8583 verwendet, so ist dieser Chip als einziger auf der Platine um 180 Grad verdreht montiert! Die Anschlüsse von Quarz Q1 werden mit einer kleinen Zange in Form gebracht und verlötet; das Metallgehäuse wird auf dem Massepad verlötet. Ebenfalls muss der Batteriehalter für die Pufferbatterie eingesetzt werden (Polung beachten!).

Inbetriebnahme

Vor der Inbetriebnahme sollte die Platine nochmals gründlich auf schlechte Lötstellen, Lötzinnbrücken und vergessene Pins untersucht werden. Besonders die PLCC-Sockel sind bekannte Fehlerquellen. Anschließend kann der Einbau in den vom Stromnetz komplett getrennten Amiga erfolgen. Da ICY eine »kurze« Steckkarte ist, muss die Einbaurichtung beachtet werden: Beim Amiga 2000 zeigt die Bestückungsseite zum Netzteil, beim Amiga 4000 in Richtung des Gehäusedeckels. Wer seinen Lötkünsten misstraut, kann bei der ersten Inbetriebnahme auch alle anderen Zorro-Karten entfernen. Nach dem Anschalten sollte auf jegliches ungewöhnliches Verhalten geachtet und im Zweifelsfall sofort wieder abgeschaltet werden. Typische Anzeichen für Lötfehler sind eine blinkende Power-LED oder ein farbiger Bildschirm. Startet der Amiga wie ge- wohnt, so sollte ICY sich im Startup-Menü oder über ShowConfig melden.

Die Herstellernummer ist 0x1389 ­ die Produktnummer 0x15. Als nächstes sollten Sie das Softwarepaket von Wilhelm Nöker installieren. Wer die Echtzeituhr bestückt hat, kann anschließend mit Hilfe von I2CScan [4] nachschauen, ob die Uhr am I2C-Bus erkannt wird. Beim Einsatz der Echtzeituhr ist noch zu beachten, daß ab Werk meist Oszillator- und Alarmausgang aktiviert sind. Dies schlägt sich jedoch negativ auf die Stromaufnahme im Batteriebetrieb nieder ­ deshalb diese Funktion nach erfolgreicher Inbetriebnahme per I2C-Bus abschalten! Der Oszillatorausgang kann auch gut zum Abgleich des Quarzes genutzt werden, da hier das 32.768kHz-Signal in gepufferter Form zur Messung zur Verfügung steht. Nähere Informationen sind in den Datenblättern der Hersteller enthalten.

Nach diesem Test steht einem Anschluss von selbstgebauter I2C-Hardware nichts mehr im Wege. Die Programmierung über die i2c.library ist im Paket i2clib40 ([4]) dokumentiert. Wer es direkter haben möchte (und damit die Übertragbarkeit auf andere I2C-Interfaces nicht benötigt), findet im Datenblatt zum PCF8584 ([2]) alle nötigen Hinweise. Viel Spaß beim Basteln und Experimentieren!

lb

Literatur:
[1] Philips, I2C Bus Specification, Philips Semiconductors 1995
[2] Philips, PCF8584 Datasheet, Philips Semiconductors
[3] HyperCOM 3i Modul von VMC: http://www.vmc.de
[4] Wilhelm Nöker, I2C library, Aminet: hard/hack/i2clib40.lha
[5] Stefano Ruviero, SetClock replacement, s. Webpage des Autors
[6] Wilhelm Nöker, VideoText-Paket, Aminet hard/drivr/VideoText.lha


 Hauptseite © 2000 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am Datum 28. Februar 2000.