' schrieb:Die GPIB Spezifikation sagt ganz eindeutig dass die Daten nur genau so lang aktiv sind wie DataValid aktiv ist. Wenn man dann die Flanke von DataValid benützt um die Daten einzulesen kann das schon mal zu spät sein. Ich glaube dass man im MAX für den entsprechenden Kontroller das Bustiming immer noch verlangsamen kann.
Daß ein GPIP-Empfänger die Ende-Flanke von DAV zum Einlesen verwendet, das geht überhaupt nicht. Denn eben diese Flanke (und damit die Wegnahme der gültigen Daten) kommt vom Sender erst dann, nachdem der langsamste Empfänger über die NDAC-Leitung gemeldet hat, daß er die Daten gelesen hat. (Möglich ist natürlich alles, aber wir reden hier von GPIB).
Die Beginn-Flanke von DAV (und damit gültige Daten) wird übrigens auch nicht aufs Geradewohl gesendet. Voraussetzung ist, daß kein Empfänger den Status NRFD (Not Ready vor Data) hat.
Man muß bei GPIB nichts konfigurieren, ob die Datenübertragung schnell oder ist, bestimmen die angeschlossenen Geräte selbst. (Oder: Wenn die Übertragung zu langsam ist, besteht die Konfiguration darin, den langsamsten Empfänger zu finden und herauszunehmen).
Das Geniale an diesem ganzen Bus ist wesentlich das Geniale das Handshaking. Es werden dazu nicht wie sonst üblich 2 Leitungen, sondern deren 3 verwendnet: DAV (low-aktiv) gehört dem Sender, die beiden anderen den Empfängern (1..mehrere) . Letztere sind Open-Kollektor- Leitungen (ein Signal geht erst auf High, wenn alle High melden, bzw. man hat LOW, wenn einer das meldet)
NRFD (Not ready for Data) Low-Aktiv. Wenn "Not ready für Data", dann darf der Sender nichts senden. Ein Empfänger mit Status "Not ready for Data" reicht aus für den Status NRFD auf der Leitung.
NDAC (Not Data ACcepted) LowAktiv. Erst wenn alle Empfänger die Daten akzeptiert haben, geht die Leitung auf High (=Daten akzeptiert). Danach muß der Sender die gültigen Daten nicht länger halten - aber bis dahin schon.
Es ist noch etwas komplexer, siehe
Hier. Dort ist es auch sauberer erklärt.