Forum: Mikrocontroller und Digitale Elektronik ESP32, zwei I2C Master implementieren


von Sim (Gast)


Lesenswert?

Hallo Leute,

ich hänge derzeit etwas daran auf einem ESP32 einen zweiten I2C Master 
zu implementieren. Hintergund ist, dass ich verschiedenen Sensoren 
zeitgetriggert auslesen möchte. Da jedoch die Auslesevorgänge der 
einzelnen Sensoren um zeilweise einen Faktor 15...20 schwanken kommt es 
vor, dass während des Lesevorgangs bei einem Sensor ein zweiter mehrfach 
gelesen werden muss. Daher die Idee zweier I2C Master.
Bietet mir die Wire Bibliothek eine Möglichkeit dazu? Habt ihr eine Idee 
wie ich das Ganze implementieren könnte?

Viele Grüße,
Sim

: Verschoben durch User
von Mike R. (thesealion)


Lesenswert?

Einfach so wie schon andere vor dir:

https://github.com/espressif/arduino-esp32/issues/1438

von Sim (Gast)


Lesenswert?

Den Link habe ich auch schon gefunden, allerdings bekomme ich jedes Mal 
die Fehlermeldung, dass Wire1 mehrfach definiert wurde.

libraries\Wire\Wire.cpp.o:(.bss.Wire1+0x0): multiple definition of 
`Wire1'

Diese Nachricht erscheint schon beim nackten Beispiel ohne weiteren Code 
drum herum. Habe folgendes Beispiel genutzt:

#include <Wire.h>
#define SDA2 2
#define SCL2 4

TwoWire Wire1=TwoWire(1);

void setup(){
  Serial.begin(115200);
  Wire.begin();
  Wire1.begin(SCL2,SDA2,100000);
}

von Tom (Gast)


Lesenswert?

Arduino will dir das Leben leicht machen und hat schon zwei Instanzen 
auf Vorrat angelegt.

Wire.cpp
1
TwoWire Wire = TwoWire(0);
2
TwoWire Wire1 = TwoWire(1);

Wire.h
1
extern TwoWire Wire;
2
extern TwoWire Wire1;

von Sim (Gast)


Lesenswert?

Siper, vielen Dank! Das war die Info die ich brauchte :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.