Hi @Joel_seerey -
I took a look at this in detail and grabbed a Thermocoupler board for testing.
First - I can replicate the behavior you are seeing: 0x60 fails with the Datalogger, but 0x67 works.
It was also observed, testing the addresses with a simple Arduino I2C scan program, you’ll see the Thermocoupler device address once, but subsequent scans fail.
Talking this over with Paul, he noted that the Thermocoupler is “finicky” (not the best I2C device per se) and found this comment from the Artemis OpenLog firmware:
// Note: The MCP9600 (Qwiic Thermocouple) is a fussy device. If we use beginTransmission + endTransmission more than once
// the second and subsequent times will fail. The MCP9600 only ACKs the first time. The MCP9600 also appears to be able to
// lock up the I2C bus if you don't discover it and then begin it in one go...
// The following code has been restructured to try and keep the MCP9600 happy.
```
Basically you can ping the device once, but after that it won’t respond. Which is what we see with the scan program.
Looking at the DataLogger autodetect logic, the issue you are seeing is related to the above device behavior. To autodetect, the Datalogger calls a device driver “isConnected()” method. Most of these do a “ping”, and if they get response, perform further checks to see if the target device is there.
On the Thermocoupler device, some of the addresses are shared with other devices, and those device drivers are being called before the Thermocoupler device driver - these conflicting drivers fail to detect their target device, BUT they’ve sent a ping to that address - which is the Thermocoupler - so further attempts to identify the device fails. Hopefully that makes sense.
We currently can’t reorder the driver list in the datalogger - it’s complicated/determined at runtime.
BUT the addresses 0x64, 0x65, 0x66, 0x67 have no driver conflicts, so if you use those, your Thermocoupler devices will work with the Datalogger.
And if you’re interested in the driver list, select the “l” (“L”) option in the menu that shows in the serial console right when the DataLogger starts . It dumps out the internal list before it’s deleted to free up space.
If you have any other questions, let us know.
Thanks!
-Kirk