Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
de:netzer:s88 [2014/01/04 12:42] – svesch | de:netzer:s88 [2025/06/11 20:42] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Auslesen des S88 Busses vom Ethernet ====== | ||
+ | ===== Allgemein ===== | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Der S88 ist ein Rückmeldebus für Modellbahnsysteme. | ||
+ | |||
+ | Bis zu 32 verteilte Teilnehmer hintereinander geschaltet bilden ein zusammenhängendes Register, in das zyklisch Werte geladen werden. Diese (binären) Werte kommen von Schaltern, Gleis-Rückmeldern u.ä. Dingen, die rund um die Anlage verteilt sind. | ||
+ | |||
+ | Nachdem alle diese Werte einmal in das Register geladen wurden, wird nun der Inhalt sukzessive mit einem Takt in Richtung Zentrale geschoben (Bit für Bit) und dort zwischengespeichert und weiterverarbeitet. | ||
+ | |||
+ | Der S88-Bus besteht ingesamt aus 3 Steuerleitungen, | ||
+ | |||
+ | Mehr Details zum S88-Bus findet sich bei [[http:// | ||
+ | |||
+ | |||
+ | ===== Netzer als Zentrale ===== | ||
+ | |||
+ | Aufgrund der Flexibilität des Netzers ist es sehr einfach möglich einen S88-Strang mit dem Netzer auszulesen. Zur Anwendung kommt der [[serialserver|serielle Server]] im SPI Master Modus. Neben dem Bus wird die Möglichkeit genutzt, dass IO-Pins direkt mit Escape-Sequenzen angesprochen werden können. | ||
+ | |||
+ | ==== Hardware ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Das Bild zeigt eine Schaltung für die Netzer [[playground|Spielfeld]] S88-Erweiterungsplatine. Die Komponenten sind Standardkomponenten, | ||
+ | |||
+ | Die Schaltung ist schnell erklärt. Da die Betriebsspannung des Netzers +3,3V beträgt, der S88-Bus jedoch im Normalfall mit +5V arbeitet, werden Bustreiber (**IC1**) zwischen die drei Steuerleitungen S88_RESET, S88_LOAD und S88_CLOCK geschaltet. Da die Tristate-Funktion der Bustreiber nicht benötigt wird, werden sie einfach immer eingeschaltet (EN=GND). C1 dient der Abblockung. +5V wird vom [[playground|Netzer Spielfeld]] zur Verfügung gestellt. | ||
+ | |||
+ | J1 bietet eine Anschlusstelle nach dem herkömmlichen Verdrahtungsmuster für S88. JP1 ist eine RJ45-Buchse nach dem neuen Verdrahtungsstandard [[http:// | ||
+ | |||
+ | Nach dem S88-Verdrahtungsstandard S88N ist für die Versorgungsspannung alternativ zu +5V auch eine +12V zulässig, falls das die Module am Bus unterstützen. Für das Umschalten der Versorgungsspannung per Jumper dient **JP2**. VCC_AUX ist die primäre Versorgungsspannung vom Netzer Spielfeld und sollte entsprechend auf +12V geregelt werden. | ||
+ | |||
+ | Pin 8 des S88N-Standards ist für das Gleissignal gedacht. Testweise wird hier der SPI-Datenausgang noch über den Bustreiber an diesen Pin gelegt, um ggf. auch Steueraufgaben übernehmen zu können (falls JP3 gejumpert ist). | ||
+ | |||
+ | Die Datenleitung des Busses S88_DATA wird direkt an den Netzer angeschlossen, | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Für die weitere Dokumentation wird angenommen, dass LOAD an SPI_INT und RESET an SPI_CS angeschlossen ist. | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== Einstellungen Netzer Webinterface ==== | ||
+ | |||
+ | Der Netzer mit installierter **Pro**-Version (min. Release 1.5) muss zuvor über das Webinterface konfiguriert werden: | ||
+ | - SPI-Master-Mode auf der Allgemein-Seite aktivieren (Danach Neustart nicht vergessen!) | ||
+ | - SPI-Master-Einstellungen: | ||
+ | - GPIO-Einstellungen: | ||
+ | ==== Herstellen der Verbindung ==== | ||
+ | |||
+ | Für einen Verbindungstest unter Windows sollte ein Terminalprogramm verwendet werden, mit dem Bytes in Hexadezimal- oder Binärdarstellung versendet oder empfangen werden können wie z.B. das [[http:// | ||
+ | Unter Linux kann auch ganz einfach **netcat** verwendet werden. | ||
+ | |||
+ | |||
+ | ==== Beispielprotokoll ==== | ||
+ | Für das Generieren der Steuersignale wird die folgende Sequenz benutzt: | ||
+ | ^ # ^ ASCII-Notation ^ Hexadezimal-Notation ^ Erläuterung ^ | ||
+ | | 1 | \1 | 0x5C 0x31 | Umstellen des SPI-Modes auf 1. CLOCK wechselt von 1 auf 0. | | ||
+ | | 2 | \J | 0x5C 0x4A | LOAD (am INT-Pin) wird gesetzt. | | ||
+ | | 3 | \t | 0x5C 0x74 | Warte mindestens 100 µs (Ruhe). | | ||
+ | | 4 | \2 | 0x5C 0x32 | Schalte SPI-Mode auf 2 zurück. CLOCK wechselt von 0 auf 1. Damit werden durch das anliegende LOAD-Signal die Rückmeldesignale entlang des Busses in die Register übernommen. | | ||
+ | | 5 | \I | 0x5C 0x49 | Aktiviere RESET (am CS-Pin) von 0 auf 1. Damit werden eventuell vorhandene Latches zurückgesetzt. | | ||
+ | | 6 | \i | 0x5C 0x69 | Schalte RESET von 1 auf 0 zurück. | | ||
+ | | 7 | \j | 0x5C 0x74 | Schalte LOAD von 1 auf 0 zurück. Nun ist der S88 vorbereitet, | ||
+ | | 8... | a | 0x61 | Nun können beliebige viele Daten übertragen werden (sinnvollerweise nur soviel wie S88-Module am Strang hängen - Module mit 16 Eingängen zählen natürlich doppelt). Jedes Byte (**ohne** Fluchtsequenz) bewirkt ein Schieben des Busses um 8 Bit (normaler SPI-Modus). Gleichzeitig werden die Daten von der Leitung MI übernommen und über das Socket versendet.| | ||
+ | |||
+ | Und so sieht es dann aus (Oben ist der Takt, unten LOAD - das Timing des ersten Bytes): | ||
+ | {{ : | ||
+ | |||
+ | ===== PC-Software ===== | ||
+ | |||
+ | Kommt bald... |