I²C-Bus für Miningen Light?
Beflügelt durch die Erfindung von Stefan Raabs Duschkopf haben wir mal etwas weiter an „Miningen Light“ gebastelt. Jetzt kommt die große Frage: Verbinden wir die einzelnen µCons bzw. AVRs seriell, per DCC-Signal (den Digitalbahnern bestens bekannt) oder durch den I2C-Bus von Phillips… Doch was ist der I2C-Bus???
I²C ist ein synchroner serieller Zweidraht-Bus (eine Daten- und eine Taktleitung), der für die Kommunikation zwischen ICs über kleine Distanzen geeignet ist. Entwickelt wurde er Anfang der 80er Jahre von Philips. Gesprochen „I quadrat C“ steht für IIC = Inter IC Bus. Aus Lizenzgründen heißt der I²C Bus bei manchen Herstellern auch TWI, two wire interface.
In einem I²C-Bus gibt es mindestens einen Master mit bis zu 127 Slaves und einen Broadcast Kanal. Ein I²C-Bus mit mehreren Mastern wird als „Multi-Master-Bus“ bezeichnet. Der (oder die) Master sprechen die Slaves an; ein Slave kann NIE selbstständig Daten senden. Dazu übenimmt der Master, der Daten senden oder empfangen möchte, den Bus und gibt die (7-bit- bzw. 10-bit-)Adresse des Slaves aus, mit dem er kommunizieren möchte. Nach der Adresse teilt der Master dem entsprechenden Slave mit, ob er Daten senden oder empfangen möchte. Danach werden die eigentlichen Daten (entweder vom Master oder Slave) auf den Bus gelegt. Hat der Master den Lese- oder Schreibvorgang abgeschlossen, so gibt er den Bus wieder frei. Sofern mehrere Master vorhanden sind, stellt ein Protokoll sicher, dass sich diese nicht gegenseitig stören.
Die Übertragungsrate beträgt beim standard mode bis zu 100 kbit/s, beim fast mode bis zu 400 kbit/s und beim high-speed mode bis zu 3,4 MBit/s. Falls die Taktrate für einen Slave zu hoch ist, kann er die Clock-Leitung auf Null ziehen und die Übertragung damit verlangsamen (sog. Clock Stretching). Dies ist auf Bit- wie auf Byte-Ebene möglich; ersteres allerdings nicht im high-speed mode. Um längere Übertragungswege zu realisieren, kann man die Taktrate fast beliebig vermindern (einige Bausteine erzeugen aber irgendwann ein Time-Out). Mit einer Taktfrequenz von nur 5 kbit/s können dann durchaus mehrere Meter überbrückt werden.
Im PC wird ein dem I²C-Bus sehr ähnliches System benutzt, um z. B. die Daten eines SDRAM-Modules auszulesen. Dieser nennt sich SMBus (System Management Bus).
Erfahrungen mit den Atmegas (gemessene I2C-Taktfrequenzen):
- 16,000MHz – schafft sauber bis zu 700KHz
- 18,432MHz – schafft sauber bis zu 950KHz
Selbst unter schlechten Bedingungen wie…
- 50cm 6-adriges Spiralkabel, frei schwingend verbaut in einem Rennwagen als Verbindung zwischen Lenkraddisplay und Amaturenbrett
- Nähe zu nicht geschirmten Leitungen mit 12V, GND und 5V PWM zum Dimmen von LEDs
- grausamen Umgebungsbedingungen, Fahrten im Regen, Schnee oder bei glühender Sonne und gefühlten 100° C 😉 auf der Rennstrecke.
hat der Bus ohne Probleme funktioniert.
4 Antworten
Zeig doch mal im Video, wie ein einzelnes Haus sich so „über Nacht“ im Beleuchtungs-Ablauf verändert.
Zeig doch mal im Video, wie ein einzelnes Haus sich so „über Nacht“ im Beleuchtungs-Ablauf verändert.
Das ist eine gute Idee – das werden wir mal so filmen…
I²C ist ein hierarchisches Bussystem, welches mit nur zwei Leitungen auskommt: dem Taktsignal SCL (Serial Clock) und einer weiteren Leitung zur Übertragung der Nutzdaten SDA (Serial Data). I²C ist ein bidirektionaler Zweidrahtbus mit Master-Slave-Konzept und Software-Adressierung. Die Datenübertragung erfolgt bitseriell und synchron. Jedes Datenbit auf der Datenleitung SDL wird mit einem Bit auf der Taktleitung SCL synchronisiert. Dadurch müssen die Taktzeiten nicht konstant sein, und es können sowohl langsamere als auch schnellere Busteilnehmer am gleichen Bus kommunizieren.
Kommentare sind geschlossen.