Addendum I2C

Der Hauptzweck von Microcontrollern besteht bekanntlich darin, dass sie auf geeignete Weise auf Sensoren und Aktoren zugreifen können. Dazu ist es unumgänglich, dass sie die Daten so untereinander austauschen wie es der Hersteller des betreffenden Moduls vorgesehen und in den zugehörigen Dokumentationen beschrieben hat. Unter den zahlreichen existierenden Protokollen ist das von Philips 1982 entwickelte I2C-Protokoll eins der am weitesten verbreiteten, das demzufolge auch von der Hardware der meisten Microcontroller unterstützt wird. Daher ist es nicht abwegig, sich den Datenverkehr auf dem I2C-Bus etwas näher anzusehen. Für professionelle Zwecke gibt es die sogenannten Logic Analyzer, auch Sniffer genannt, die die Daten wie ein Spion erfassen, darstellen und so weit wie möglich bereits interpretieren. Das kann ein Arduino natürlich im Prinzip auch. Einschränkend muss jedoch festgestellt werden, dass der im Plug-and-Make-Kit enthaltene ARDUINO UNO R4 WiFi dazu etwas zu langsam ist. Besser hingegen geht es mit dem Vorgänger, dem ARDUINO UNO R3. Im Serial Plotter kann so ein Diagramm beispielsweise so aussehen:

(Ordinatenbeschriftung leicht bearbeitet)

Der rot gezeichnete Verlauf gibt das Clock-Signal wieder, der blau gezeichnete die Daten. Der Wert eines Daten-Bits wird stets dann eingelesen, wenn das Clock-Signal von Null auf Eins wechselt.

Die erste Gruppe gibt die Adresse des angesprochenen Slave-Moduls wieder, die zweite Gruppe das an dieses Modul gesendete Kommando.

Um ein solches Diagramm aufnehmen zu können, braucht man (mindestens) drei Bausteine:

Die Clock- und Datenleitungen der drei Bausteine müssen untereinander verbunden sein, die GROUND-Anschlüsse natürlich auch. Auf dem Master muss ein Programm laufen, das regelmäßig mit dem Slave Kontakt aufnimmt, auf dem Slave muss nur ein Programm ausgeführt werden, das Anfragen zur Kenntnis nimmt, es braucht nichts damit zu machen.

Das auf dem Bildschirm dargestellte Diagramm kann leicht manuell ausgewertet und interpretiert werden.