Challenges with wire.h and i2c_t3 after migrating to 1.8.13 Arduino

abasa

Member
I am using a Teensy 3.6 and had not migrated from the Arduino 1.8.3 version as I had the code working. After deciding to migrate to 1.8.13 - when I got a new computer in my first compile I had multiple issues - mostly surrounding multiple definitions of wire.h and conflicting Two_wire .. see below. I have tried to follow some of the threads were I rename the \Arduino\... Wire.h to Wire_Old.h - but the problem gets worse.

I have a GPS and other devices (Silabs chip for example) - thus the code is quite complex.

I suspect I may have multiple libraries conflicting now - but this is bogging me down. Can someone help me get out of this endless loop?

Here is a section of the errors ..



In file included from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:516:0:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:991:15: error: conflicting declaration 'i2c_t3 Wire'
extern i2c_t3 Wire;
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/Wire.h:29:0,
from C:\Users\abasa\Dropbox\JPDuino\libraries\libraries\Adafruit_GPS_Library\src/Adafruit_GPS.h:63,
from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:372:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:217:16: note: previous declaration as 'TwoWire Wire'
extern TwoWire Wire;
^
In file included from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:516:0:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:993:19: error: conflicting declaration 'i2c_t3 Wire1'
extern i2c_t3 Wire1;
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/Wire.h:29:0,
from C:\Users\abasa\Dropbox\JPDuino\libraries\libraries\Adafruit_GPS_Library\src/Adafruit_GPS.h:63,
from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:372:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:220:16: note: previous declaration as 'TwoWire Wire1'
extern TwoWire Wire1;
^
In file included from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:516:0:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:996:19: error: conflicting declaration 'i2c_t3 Wire2'
extern i2c_t3 Wire2;
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/Wire.h:29:0,
from C:\Users\abasa\Dropbox\JPDuino\libraries\libraries\Adafruit_GPS_Library\src/Adafruit_GPS.h:63,
from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:372:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:223:16: note: previous declaration as 'TwoWire Wire2'
extern TwoWire Wire2;
^
V11_CF_TP_V12_12: In function 'void setup()':
V11_CF_TP_V12_12:1059: error: no matching function for call to 'TwoWire::begin(i2c_mode, int, i2c_pins, i2c_pullup, int)'
Wire1.begin(I2C_SLAVE, TARGET1, WIRE1_PINS, I2C_PULLUP_EXT, 3000000); //AB:10-02 changed 400000 55000
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/Wire.h:29:0,
from C:\Users\abasa\Dropbox\JPDuino\libraries\libraries\Adafruit_GPS_Library\src/Adafruit_GPS.h:63,
from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:372:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:97:7: note: candidate: void TwoWire::begin()
void begin();
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:97:7: note: candidate expects 0 arguments, 5 provided
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:98:7: note: candidate: void TwoWire::begin(uint8_t)
void begin(uint8_t address);
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:98:7: note: candidate expects 1 argument, 5 provided
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:99:7: note: candidate: void TwoWire::begin(int)
void begin(int address) {
^
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:99:7: note: candidate expects 1 argument, 5 provided
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:1060:32: warning: invalid conversion from 'void (*)(size_t) {aka void (*)(unsigned int)}' to 'void (*)(int)' [-fpermissive]
Wire1.onReceive(receiveEvent1);
^
In file included from C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/Wire.h:29:0,
from C:\Users\abasa\Dropbox\JPDuino\libraries\libraries\Adafruit_GPS_Library\src/Adafruit_GPS.h:63,
from C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12\V11_CF_TP_V12_12.ino:372:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:145:7: note: initializing argument 1 of 'void TwoWire::eek:nReceive(void (*)(int))'
void onReceive(void (*function)(int numBytes)) {
^
V11_CF_TP_V12_12:1087: error: 'PMTK_SET_BAUD_38400' was not declared in this scope
gps.sendCommand(PMTK_SET_BAUD_38400);
 
A sketch can not directly or indirectly include with Wire.h and i2c_t3.h as they both define a lot of the same things and use the same resources.

My guess is in the previous install you might have edited one or more libraries to include/use i2c_t3 and these changes were overwritten by the new Teensyduino. But again this is only a guess.
But probably can only tell that by looking at your previous installation... If by chance you saved a copy of your earlier install and/or installed the new one to a new location, than I would suggest comparing the libraries and the like to see which ones were changed.

Otherwise would probably have to walk down your error list, and reconstruct what changes you may have made previously.
 
Hi Kurt: I appreciate the response - but let me add a bit more clarity. I include i2c_t2.h in my main program with Adafruit_gps.h. Then I noticed in Adafruit_gps.h it calls wire.h and probably where the duplicate definitions occur. I figure there are 4 sets of libraries that are in play.

1) in my Dropbox\...\libraries\libraries - that has Adafruit_gps.h and a few others I need in my program.
2) in Documents\Arduino\libraries\Adafruit_gps.h
3) in Program Files (x86) \ Arduino\hardware\Arduino\avr\libraries\wire.h
4) in Program Files (x86) \ Arduino\hardware\teensy\avr\libraries\wire.h

So how does the compiler pick which library to use first,...?

I tried to rename the Dropbox one - but the program created another \libraries\libraries\ .. most likely cause I noticed it in my preferences. I then copied Adafruit_GPS_Libary there in addition to other modules I need that I call - but eventually I ended up with the same error.

I still have my old laptop - that references the same Dropbox folder - and has the same libraries in Documents. I have now copied all the library in Documents\Arduino (after removing the new computer version) and compiled the code. It is now giving me this ... I am not sure if I am getting closer or further from resolving this - but very frustrating.

C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `i2c0_isr':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.cpp:805: multiple definition of `i2c0_isr'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.cpp:1389: first defined here
c:/program files (x86)/arduino/hardware/tools/arm/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `Print::availableForWrite()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:132: multiple definition of `i2c1_isr'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:915: first defined here
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `Print::availableForWrite()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:132: multiple definition of `i2c2_isr'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:915: first defined here
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `Print::availableForWrite()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:132: multiple definition of `Wire2'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:915: first defined here
c:/program files (x86)/arduino/hardware/tools/arm/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Warning: size of symbol `Wire2' changed from 20 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o to 108 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `Print::availableForWrite()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:132: multiple definition of `Wire1'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:915: first defined here
c:/program files (x86)/arduino/hardware/tools/arm/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Warning: size of symbol `Wire1' changed from 20 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o to 108 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o: In function `Print::availableForWrite()':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\Wire/WireKinetis.h:132: multiple definition of `Wire'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o:C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\i2c_t3/i2c_t3.h:915: first defined here
c:/program files (x86)/arduino/hardware/tools/arm/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Warning: size of symbol `Wire' changed from 20 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\i2c_t3\i2c_t3.cpp.o to 108 in C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\libraries\Wire\WireKinetis.cpp.o
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\sketch\V11_CF_TP_V12_12.ino.cpp.o: In function `__static_initialization_and_destruction_0':
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:469: undefined reference to `RunningAverage::RunningAverage(int)'
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:470: undefined reference to `RunningAverage::RunningAverage(int)'
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:471: undefined reference to `RunningAverage::RunningAverage(int)'
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:472: undefined reference to `RunningAverage::RunningAverage(int)'
C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:473: undefined reference to `RunningAverage::RunningAverage(int)'
C:\Users\abasa\AppData\Local\Temp\arduino_build_380413\sketch\V11_CF_TP_V12_12.ino.cpp.o:C:\Users\abasa\Dropbox\JPDuino\New Board for Bike Oct-2017\V11_CF_TP_V12_12/V11_CF_TP_V12_12.ino:475: more undefined references to `RunningAverage::RunningAverage(int)' follow
collect2.exe: error: ld returned 1 exit status
Multiple libraries were found for "U8g2lib.h"
Used: C:\Users\abasa\Documents\Arduino\libraries\U8g2
Not used: C:\Users\abasa\Documents\Arduino\libraries\U8g2_Arduino-master
Multiple libraries were found for "TouchScreen.h"
Used: C:\Users\abasa\Documents\Arduino\libraries\TouchScreen
Not used: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\TouchScreen
Error compiling for board Teensy 3.6.
 
Back
Top