Serielle Schnittstelle, USB, SPI, I2C, 1-Wire (PDF) - Netzmafia
Serielle Schnittstelle, USB, SPI, I2C, 1-Wire (PDF) - Netzmafia
Serielle Schnittstelle, USB, SPI, I2C, 1-Wire (PDF) - Netzmafia
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
12 1 Parallele <strong>Schnittstelle</strong>n<br />
Der Handshake ist abgeschlossen, wenn der Talker daraufhin das DAV-Signal deaktiviert, was<br />
wiederum vom Listener mit einem Deaktivieren des NDAC quittiert wird.<br />
Da beim Listener jetzt u. U. zeitraubende Aktivitäten nötig sind, wird er so lange das NRFD-Signal<br />
auf ”<br />
not ready“ halten, bis er bereit ist, den nächsten Handshake (den Transport des nächsten<br />
Datenbytes) abzuwickeln.<br />
Bild 1.7: Datenübertragung auf dem IEEE-Bus<br />
Die <strong>Schnittstelle</strong>nnachrichten bestehen aus adressierten Befehlen, Universal-Befehlen, die sich an<br />
mehrere Geräte richten, oder aus Adressen (Ansprechen eines bestimmten Geräts). Für die Geräteadressierung<br />
werden drei Typen von Adressen unterschieden (festgelegt durch die Bits 6 und 7):<br />
Bedeutung<br />
Listener<br />
Talker<br />
Sekundär<br />
Buskommando<br />
7 6 5 4 3 2 1 (Bitnummer)<br />
0 1 x x x x x<br />
1 0 x x x x x<br />
1 1 x x x x x<br />
0 0 x x x x x<br />
Für die eigentliche Geräteadresse stehen dann 5 Bits (x x x x x) zur Verfügung, wobei für<br />
Primäradressen nur die Werte 0 bis 30 erlaubt sind. Innerhalb eines Gerätes können noch Unteradressen<br />
angesprochen werden (z. B. ein bestimmter Messkanal), deren Wertebereich auch wieder<br />
zwischen 0 und 30 liegen kann. Ein einzelnes Gerät darf bis zu sechs Unteradressen besitzen. Beim<br />
Multimeter Keithley 619 sieht die Aufteilung beispielsweise so aus (Adresse als ASCII-Zeichen):<br />
Kanal A<br />
Kanal B<br />
Status Kanal A<br />
Status Kanal B<br />
"a"<br />
"b"<br />
"c"<br />
"d"<br />
Die Befehle vom Controller an die Geräte und Statusinformationen von den Geräten an den Controller<br />
sind in der Norm festgelegt. Welche Funktion jeweils an einem bestimmten Gerät ausgelöst wird,<br />
hängt von den Gerätespezifikationen ab.<br />
Grundlage für die Programmierung von Busvorgängen und der angeschlossenen Geräte war<br />
zunächst nur eine Codetabelle, die eine Zuordnung des ASCII zu Adressen- und Befehlsgruppen<br />
vorsah. Bemühungen um eine Vereinheitlichung der Gerätebedienung führten schließlich zur Erweiterung<br />
des Busstandards, auf dessen Grundlage die ”<br />
Standard Commands for Programmable Instruments“<br />
(SCPI) zur Programmierung von Messgeräten entworfen wurden, die eine einheitliche<br />
Befehlsstruktur, Standardbefehle und definierte Datenformate beschreiben.<br />
Bild 1.8 listet wesentliche allgemeingültige SCPI-Befehle auf. Sie sind durch das vorangestellte Zeichen<br />
”<br />
*“ erkennbar. Für die eigentliche Geräteprogrammierung wird eine Baumstruktur für Programmierbefehle<br />
benutzt (vom Bus-Systems als Daten mit ATN=Low übertragen). Die Befehle sind<br />
ASCII-Strings. Bei Abschluss mittels Semikolon können sie als ein verketteter String übertragen und<br />
im Gerät als Befehlsschlange abgearbeitet werden. Die einzelnen Befehlsebenen werden durch ”<br />
:“<br />
getrennt, ein anführender Doppelpunkt verweist auf die Wurzel. Die jeweils implementierten Strukturen<br />
und Befehle sind den zugehörigen Handbüchern der Geräte zu entnehmen.<br />
Wie der Tabelle zu entnehmen ist, sind die Befehle mit unmittelbarer Rückantwort durch ein nachgesetztes<br />
Fragezeichen eindeutig gekennzeichnet. Generell gilt, dass gewünschte Daten explizit angefordert<br />
werden müssen. Nur dann werden sie im Gerät in den Ausgabe-Puffer übergeben und nur<br />
dann kann ein Lese-Vorgang erfolgreich gestartet werden.