Wegweiser

Titelseite

Gabi

Haus

Elektronik

Mobil

Schweden

Imperium

Dies & Das

Equipment

Projekte

Arduino

Leiterplatten

Barbie

Murmeln

Titelseite

Gabi

Haus

Bernd

Mobil

Schweden

Imperium

Dies & Das

Elektronik / Arduino / Wissenswertes / I2C & PWM

Die Situation:

Mit dem Arduino soll z. B. ein Servo betrieben, gleichzeitg auch der I2C-Bus eingesetzt werden.

I2C_Servo

Funktioniert so leider nicht. Das gesamte Projekt musste einer grundlegenden Revision unterzogen werden.

.

Links der Auszug aus einem Schaltplan. Für dieses Thema wichtig ist die Belegung der Anschlüsse A4 und A5 für den I2C-Bus sowie die Steuerleitung für das Servo an D6. Auch D9, D10 und D11 für die Ansteuerung einer RGB-LED sind beteiligt.

Alle diese digitalen Ports sind PWM fähig, jedenfalls so lange, wie im Sketch nicht <Wire.h> zum Einsatz kommt.

Die internen Vorgänge im Prozessor (328) führen dazu, dass für den Betrieb des I2C-Bus genau der oder die Timer eingesetzt werden, die auch der PWM-Betrieb und delay() für seine Arbeit braucht.

Die Folge war, dass in diesem Fall sich das Servo nicht ansprechen ließ und die RGB-LED so dunkel blieb, als wäre sie überhaupt nicht angeschlossen.

Leider fehlt mir die nötige intime Kenntnis der Vorgänge im Prozessor, um dieses Verhalten ausführlich zu erklären. 

Die Tatsache, dass sowohl Servo als auch RGB-LED ihre volle Funktion erfüllten, sobald <Wire.h> nicht zum Einsatz kam, möge hier als Beweis für einen Zusammenhang dienen.

Es fehlte nicht viel, dass meine Selbstzweifel mich an den Rand der Verzweiflung brachten. Mehrere Tage habe ich vertan mit Experimenten und Kontrollen der Soft- und Hardware.

In den tiefsten Gründen des Internet fand ich schliesslich einen Hinweis, der mich auf die oben beschriebene Spur brachte.