Hardwarebeschreibung
1. PCF8584
Der I²C Bus Master stellt das Kernstück der I²C Platine dar. Auf Controllerseite steht ein 8 Bit Port zu Verfügung. Daten vom µC werden über diesen Port eingelesen und per I²C seriell herausgeschrieben. Ebenso können Daten per I²C eingelesen und anschließend parallel an den Controller weitergeleitet werden. Der PCF8584 kann zusätzlich über diesen 8 Bit Port durch den Controller konfiguriert werden.
Der Baustein wird (fast) an die gleichen Leitungen angeschlossen wie das RAM der Euro535 Karte. Der Controller kann dadurch den PCF8584 auf die selbe Weise ansprechen, auf die er auch auf das RAM zugreift (durch den Assembler-Befehl MOVX). Dieses Prinzip nennt man
Memory Mapping.
Der Adreßbereich für den PCF8584 ist nur zwei Adressen groß. Die erste Adresse (mit A0=0) wird verwendet, um Daten auf den I2C Bus zu schreiben bzw. von ihm zu lesen. Die zweite Adresse (mit A0=1) wird verwendet, um den PCF8584 zu parametrieren, bzw. um seine Statusinformationen zu lesen.
2. 74HCT138
Der Baustein ist der Adreßdecoder für den PCF8584. Er überwacht die Adreßbits A5, A6, A7 und A15. Wenn an diesen Leitungen das korrekte Bitmuster anliegt, schickt der Decoder ein Enable Signal an den PCF8584. Diese Decodierung muß äußerst schnell erfolgen, damit der PCF8584 noch rechtzeitig reagieren kann, bevor der Controller seinen Zugriffsversuch beendet hat. Deshalb kommt ein HCT (Highspeed CMOS
TTL-kompatibel) Baustein zum Einsatz.
Das wichtigste Adreßbit für die Decodierung ist A15. Wenn der Controller auf eine Adresse unterhalb von 0x8000 zugreift (A15=0), wird niemals der PCF8584 angesprochen, denn dieser Adreßbereich ist bei der EURO_535 Karte für das RAM reserviert.
Greift der Controller auf eine Adresse oberhalb von 0x8000 zu, reagiert der Decoder bei allen Adressen, bei denen A5=1, A6=0 und A7=0 ist. (z.B. 0x8020). Dies trifft natürlich auf eine ganze Reihe von Adressen zu. Es steht aber noch ein ausreichend großer Bereich an freien Adressen zu Verfügung, um noch weitere Geräte per Memory Mapping anzuschließen.
Wenn man verhindern wollte, daß der Adreßdecoder auf mehrere Adreßbereiche
anspricht, müßte man die komplette 16 Bit Adresse decodieren.
3. Jumper
Jumper 1 und 2 werden für die Adreßdecodierung benötigt. Wenn der EURO_535 Controller mit dem Monitorprogramm betrieben wird (Debug Modus), sorgt die Adreßumschaltung dafür, daß das RAM im Adreßbereich von 0x0000 bis 0x7FFF liegt. Deshalb muß der PCF8584 im Adreßbereich oberhalb von 0x8000 untergebracht werden (A15=1). Ohne Monitorprogramm (Anwendungsprogramm ist im EPROM gespeichert) findet keine Adreßumschaltung statt und das RAM liegt im Adreßbereich von 0x8000 bis 0xFFFF. In diesem Fall müssen die Jumper so gesetzt werden, daß der Adreßdecoder reagiert, wenn A15=0 ist (PCF8584 liegt im Bereich unterhalb von 0x8000).
Jumper 3 ermöglicht die Generierung von Interrupts durch den PCF8584. Mit der aktuell verfügbaren Software ist diese Leitung nicht nötig. Momentan greift der Controller durch Polling auf den PCF8584 zu. Wenn dieser noch nicht bereit ist, legt der Controller Waitstates ein. Es ist jedoch denkbar, die Software so zu umschreiben, daß der PCF8584 einen Interrupt generiert, sobald er bereit ist und dadurch das Polling entfallen kann (Reduzierung der Prozessorlast).
Übersicht über die korrekten Jumperstellungen.
4. Oszillator
Als Taktquelle für den PCF8584 wird normalerweise der Oszillator des Mikrocontrollers eingesetzt. Im Fall der
Euro_535 Karte ist das jedoch nicht möglich, da der Oszillatortakt nicht an der VG Leiste verfügbar ist. Deshalb muß eine Separate Taktquelle auf dem I²C Board eingerichtet werden.
Der 12MHz Takt wird im PCF8584 auf 90kHz heruntergeteilt (Das
Teilungsverhältnis ist per Software einstellbar). Mit den 90kHz wird
schließlich der I²C Bus getaktet.
Hardwarebeschreibung des Display- / Tastaturboards
5. Display
Das alphanumerische Punktmatrix LCD kann 2*16
Zeichen darstellen. Die meisten Zeichen sind fest einprogrammiert, manche
können jedoch per Software definiert werden. (Die Programme, die in der Sektion
Software zum Download bereit stehen, nutzen diese Möglichkeit jedoch nicht.)
Eine Übersicht über die Zeichen findet sich im Datenblatt zum LCD.
Das Display besitzt drei Eingänge für Steuersignale:
Signal | Funktion |
RS | Legt fest, ob auf den Datenleitungen Konfigurationsdaten anliegen, oder ob ein Zeichen übermittelt wird, das auf dem Display angezeigt werden soll. |
R/W | Lese- oder Schreibzugriff |
E | Enable-Signal. Wenn gültige Daten anliegen, geht E auf 1. |
Zusätzlich gibt es noch einen 8 Bit breiten Datenport. Das Display wird mit dem I/O-Expander PCF8574 über den I2C-Bus angesteuert. Dieser besitzt jedoch nur 8 I/O Leitungen. Drei davon werden für die oben aufgelisteten Steuersignale benötigt. Deshalb sind nur 4 der 8 Datenleitungen des Displays mit dem PCF8574 verbunden. Denn das Display kann so betrieben werden, daß ein Datenbyte in Form zweier aufeinanderfolgender Nibbles übertragen wird.
6. Tastatur
Das Tastenfeld ist als Matrix geschaltet und wird mit dem
I/O-Expander PCF8574 über den I2C-Bus angesteuert. Um die Tastatur auf Betätigung abzufragen legt das
Programm alle Eingänge der Tastaturmatrix auf High (P0 bis P3) und
daraufhin nacheinander je einen Eingang auf Low. Liegt daraufhin einer
der Tastaturausgänge (P4 bis P7) auf Low, wurde im Schnittpunkt zwischen
Eingangs- und Ausgangspin die Taste gedrückt.