Das Digital Command Control Protokoll |
![]() |
![]() |
Letztmalig dran rumgefummelt: 29.06.17 19:37:13 |
![]() |
Digital Command Control (DCC) ist ein Standard
zur digitalen Zug-, Signal- und Weichensteuerung von Modelleisenbahnen.
Der Standard basiert auf der Entwicklung der deutschen Firma Lenz
Elektronik (für Märklin). Die ältesten Digitaldecoder nach DCC sind somit
im Wesentlichen die in den 1980er Jahren ausgelieferten Lokdecoder von
Arnold (Spur N) und Märklin (Digital Gleichstrom für H0-Hamo und Spur 1). Später hatte sich Märklin von Lenz und dem damals Digital Gleichstrom genannten System getrennt; Lenz entwickelte das System weiter und bemühte sich um eine Anerkennung als Norm durch die NMRA. nach WIKIPEDIA |
||||||
![]() |
1. Prinzip der I2C-Schnittstelle 2. Prinzip und BUS-Kommunikation 3. Protokoll einer Botschaft auf dem BUS 4. Kommunikation mit Delphi 5. Der I2C-BUS-Controller 6. Stelligkeitenprüfung 7. Verwandte Themen |
||||||
![]() |
|
||||||
![]() |
Quellen:
|
1. Prinzip und Kommunikationsprotokoll der SPI-Schnittstelle |
![]() |
![]() |
![]() |
![]() |
Hierbei wird die gesamte Information (z.B. die 8 Bit
eines Wortes) zeitlich nacheinander auf einer einzigen Leitung (auf einem
einzigen Übertragungskanal) übertragen bzw. steht an einem Schaltkreisanschluss
zur Verfügung. Die Signale werden in Form von Impulsen (kurzzeitiger H- bzw.
L-Spannungs- oder Strompegel) dargestellt. Zur Übertragung bzw. Darstellung
eines n-bit-Wortes werden n „Bitzeiten“ benötigt. Je nach der Schaltzeit
der digitalen Schaltungen liegt eine Bitzeit im Bereich von ns bis ms. |
![]() |
Wie im Abschnitt Wired-OR schon zu sehen ist, sind die einzelnen Geräte (die ICs) am I2C-Bus alle parallel geschaltet. Genau genommen sind sie WIRED-OR verknüpft. Die WIRED-OR-Verknüpfung ist für die Leitungen SDA und SCL gleichermaßen realisiert und arbeitet so: Der Pull-up-Widerstand Rp zieht die Leitung SDA (oder SCL) auf +VDD = 5SV, was ja dem logischen Zustand High (1) entspricht; dieser Zustand bleibt solange erhalten, bis ein Gerät über den Transistor SDA Out die Leitung SDA mit der Masse verbindet, was ja dem logischen Zustand Low (0) entspricht. Für die Leitung SDA macht es keinen Unterschied, ob nun das Gerät 1 oder Gerät 2 die Verbindung mit der Masse herstellt, die Leitung würde in beiden Fällen den logischen Zustand Low (0) annehmen. Es ist also eine ODER-Verknüpfung, die einfach durch Anschluss aller Geräte an eine Leitung (wire) erreicht wird, daher WIRED-OR. |
2. BUS-Kommunikation |
![]() |
![]() |
![]() |
![]() |
|
![]() |
Die Rollenverteilung Bei der Kommunikation zwischen zwei Partnern sind (nicht nur auf dem I2CBus) verschiedene Rollen zu beachten:
Die Rollenverteilung ist zu einem Teil durch die Hardware festgelegt und kann
daher nicht geändert werden: |
![]() |
Eine Botschaft besteht also aus folgenden Teilen:
|
![]() |
nachfolgend nun die Teile einer Botschaft |
3. Protokoll einer Botschaft auf dem BUS |
![]() |
![]() |
![]() |
![]() |
|
![]() |
4. Kommunikation in Delphi |
![]() |
![]() |
![]() |
![]() |
Das gerade vorgestellte Kommunikationsprotokoll beherrscht der Controller auf der Interfacekarte natürlich, er erledigt für uns das korrekte Timing auf der Leitung SCL, die Serialisierung eines Daten-Bytes in die 8 Bit für die Leitung SDA und das Warten auf das Acknowledge-Bit, sowie die Herstellung der START und der STOP-Bedingung. Wir brauchen dem Controller also nur die passenden Anweisungen zu geben. |
5. Der I2C-Bus-Controller |
![]() |
![]() |
![]() |
![]() |
Bi hierher haben wir uns mit der 8-Bit-Seite des Controllers (Parallel Bus, Parallel Bus Control) beschäftigt - nunmehr müssen wir uns mit dem Innenleben des Controllers (seinen Registern), seiner 12C-Bus-Seite sowie seiner Programmierung auseinandersetzen. |
![]() |
Das Daten-Schieberegister SO
Das Register SO ist das Register, das
die Verbindung zur 8-Bit-Welt herstellt, mit dem Parallel-Bus (dem EPP).
Wenn der Controller einmal initialisiert ist, findet die Datenübertragung
vom EPP zum I2C-Bus und umgekehrt über dieses Register SO statt. |
6. Stelligkeitenprüfung |
![]() |
![]() |
![]() |
![]() |
Hier gilt es zu prüfen, ob eine Zahl gerade oder ungerade ist. Dies kann auf logischer Ebene ohne die Anwendung einer implementierten Funktion schon zu einem echten Problem werden. Auf der Hardwareebene dagegen eine relativ leicht zu lösendes Aufgabe. Da die Zahlen eh im Binärformat vorliegen, muss eigentlich nur das Bit 0 getestet werden. Ist es gleich "0", so ist die Zahl gerade, sonst ungerade. |
![]() |
7. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Codewandlungen stehen in der Praxis immer dann an, wenn Gerätekomponenten eingangs- und/oder ausgangsseitig einen Wechsel des Signalmusters erwarten oder benötigen. De facto ist die Gesamtheit aller logischen Schaltungen nichts weiter als eine Codewandlung. Immer wird aus einem gleichen Input ein äquivalenter Output generiert. | ||||||
![]() |
|
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost am 29. Juni 2017 um 19.44 Uhr |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus (das haben wir schon den Salat - und von dem weiß ich!) nicht mehr teilzunehemn ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |