ESP32, zwei I2C Master implementieren

Gast #5664510
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
Gast #5664593
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);
}
Gast #5664675
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren