K1-Bus I/O ---------- • benötigt nur 1 CLK-Zyklus • benötigt gestrobetes /D.IO.CLK • I/O direkt ins Ram möglich Der I/O wird in einem Takt ausgeführt. Deshalb muss die CPU vor einem normalen I/O heruntergetaktet werden. Als Datenbus-Treiber werden in beiden Richtungen transparente Datenlatches 74AC573 benutzt. Die Leseregister treiben nur, wenn ein IN aktiv ist. Sie sind permanent transparent geschaltet. (Ich habe keine Treiber in AC. 74AC245 wären auch gegangen.) Die Senderegister treiben nach einem OUT solange, bis wieder ein IN ausgeführt wird. Dadurch wird die Datenhaltezeit nach einem OUT erfüllt. Außerdem wird so nach einem IN die zuzulassende Treiberausschaltzeit für das Peripheriegerät eingehalten. NOTE: Nach einem Reset sind die Ausgangstreiber möglicherweise aktiviert. Vor einem I/O muss zuerst die Subadresse zusammen mit der Strobe-Auswahl in das Adresslatch geschrieben werden. Danach können beliebig viele I/Os zu dieser Adresse folgen. Während dem eigentlichen I/O-Zyklus wird die Adresse nicht ausgewertet. Dadurch kann man direkt aus dem bzw. ins Ram übertragen. I2C-Bus ------- Mit einem IN mit I/O-Adresse %11xxxxDC wird Optionsleitung 2 als I2C_CLK und Optionsleitung 3 als I2C_DATA ausgegeben. Mit IN wird also auch auf den I2C-Bus geschrieben. Soll tatsächlich gelesen werden, muss man OPT.3 auf 1 setzen, wodurch I2C_DATA mit dem 2k-Widerstand nach 1 gezogen wird, und das angesprochene I2C-Device die Datenleitung mit seinem Open Drain Ausgang auf 0 ziehen kann. Das Bit von I2C_DATA wird nach D0 gelesen. Alle anderen Bits floaten.