This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMP112: Is there anyway to disable a the device via software?

Part Number: TMP112

I have a system that uses two instances of TMP112 on the same I2C bus and they have the same address by mistake. 

Let's say the two devices are A and B. I have control over the power supply to B in that I can turn on the power to B much after the power to A is turned on.

I like to explore if there is anyway to disable device A via software and only use B.

I am thinking the following:

1. Turn on the power to A and then disable it using software such that it would not respond to any read command.

2. Then turn on the power to B and start reading the temperature from it.

Does anyone know if this is feasible? I see there is a shutdown mode according to the datasheet but it seem the device would still respond to read command even in shutdown mode.

Any help would be greatly appreciated!

  • Dear radiolab -

    As described on page 20 of the TMP112 datasheet, the Shutdown Mode shuts everything down except the communications bus, therefore it makes sense that it would still respond. 

    If you have a look on Table 4 on page 13, there are four possible I2C addresses that can be configured with pin 4 (ADD0 / A0 pin) - would recommend then for each of the devices to set a different I2C address (either 0x41, 0x49, 0x4A or 0x4B) and handle your application needs in software, using the hardware capability, that way.

      

  • Thanks Josh!

    Unfortunately, we are in a position that we cannot modify the hardware, hence looking for a software workaround.

  • Dear radiolab -
    I think your idea of selectively powering the devices would work, but I would strongly urge you to consider modifying your hardware as I recommended previously, as this would be the correct way - in fact this is why I2C has addresses, as it (the protocol) has no mechanism (as you must have seen) to arbitrate collisions, which must be happening in your system.

    If you just have a few proto boards and have not gone into production yet, you should easily be able to cut and jumper one of the devices to have ADD0 tied to VCC, SCL or SDA (if the other one is tied to GND), modify your code to write/read the second device address and move forward towards success.