Hallo
Ich hatte das Dilemma schon vor Jahren das es nicht möglich war I2C Geräte an den Arduino Due (20/21 + Widerstand Entfernung) zu betreiben.
Ich behilf mir damals in dem ich die ganzen Bibliotheken auf Wire1 und den Pins 70/71 umbog.
Problem ist aber D70 ist auch SCK0 was aber zu Serial 1 Gehört.
Was zur folge hatte das sich Serial1 und I2C immer wieder störten und ich das in Software ausbügeln musste aber es lief "Irgendwie"
Mein neuer Aufbau soll diesen FUSCH aber nicht mehr haben sondern die Standard Pins 20 und 21 wieder verwenden.
Ich habe die letzten Tage mit verschieden Versionen von der Wire Bibliothek getestet aber habe nix erreichen können.
Da das Problem schon fast 10 Jahre bekannt ist wollte ich mal wissen ob sich in den letzten Jahren was getan hat und ichs nur nicht gefunden habe.
Zusammen Gefast was ich mit "Geht nicht" Meine:
In file included from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:25:0:
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.h: In constructor 'TwoWire::TwoWire(Twi*, void (*)(), void (*)())':
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.h:96:7: warning: 'TwoWire::twi' will be initialized after [-Wreorder]
Twi *twi;
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.h:72:10: warning: 'uint8_t TwoWire::rxBufferIndex' [-Wreorder]
uint8_t rxBufferIndex;
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:95:1: warning: when initialized here [-Wreorder]
TwoWire::TwoWire(Twi *_twi, void(*_beginCb)(void), void(*_endCb)(void)) :
^
In file included from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:25:0:
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.h:108:16: warning: 'TwoWire::status' will be initialized after [-Wreorder]
TwoWireStatus status;
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.h:90:30: warning: 'void (* TwoWire::onBeginCallback)()' [-Wreorder]
void (*onBeginCallback)(void);
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:95:1: warning: when initialized here [-Wreorder]
TwoWire::TwoWire(Twi *_twi, void(*_beginCb)(void), void(*_endCb)(void)) :
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp: At global scope:
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:145:9: warning: unused parameter 'sendStop' [-Wunused-parameter]
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop) {
^
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src\Wire.cpp:212:9: warning: unused parameter 'sendStop' [-Wunused-parameter]
uint8_t TwoWire::endTransmission(uint8_t sendStop) {
Es Wird zwar hochgeladen Findet aber natürlich keine Geräte/Adressen.
Ich hatte mal irgendein Code der Ohne die Wire.h lief der fand alle Geräte und Adressen.
Nur ist es halt so das die meisten Bibliotheken halt auf Wire.h setzten.
Ich verstehe ja auch nicht wieso die bei AVR und Sam Gleich heißen müssen.
Nutzen möchte ich zum Beispiel ENS160 wie auch INA3221
Würde mich sehr Freuen wenn jemand damit schon mal zutuen hatte und es lösen konnte.
Vielen Lieben Dank.