Can you tell me what this means and

PerryBebbington:
Where on here is SDA connected to Vcc?

Its not and I had gotten your explanation all wrong. My apologies.
My confusion stems from:
i suppose, is that I use VCC, VDD, and V+, 5V+, interchangeably.
Referring to the sketch ( I think), VDD (5V+), is connected to SDA.
Which led to my series/parallel statement.
For my projects, and on some of the boards, there is no VDD. There is VCC and V+ and VIN and 3.3V. So I connect things wrongly.
Where the heck is VDD anyways?

Its not and I had gotten your explanation all wrong

Now you are contradicting yourself because right after you say it's not you go on to say

Referring to the sketch ( I think), VDD (5V+), is connected to SDA.

So again, where in that sketch is Vdd connected to SDA?

Without wishing to cause offence, you've been told multiple times how to do this but you keep asking the same question, I am beginning to think you are behaving like a troll.

I now know that VDD is drain voltage. Well maybe not. It might mean voltage at the drain. Ditto with VCC. Mass confusion and this is really getting into TMI. I think. Why do I need to know this in order to be able to connect multiple I2C devices and write a sketch for them ?

PerryBebbington: Now you are contradicting yourself because right after you say it's not you go on to saySo again, where in that sketch is Vdd connected to SDA?

Without wishing to cause offence, you've been told multiple times how to do this but you keep asking the same question, I am beginning to think you are behaving like a troll.

No perry, not a troll. The sketch shows VDD--->resistor------>SDA buss. So not directly connected, there is a resistor in between.

PerryBebbington:
Now you are contradicting yourself because right after you say it’s not you go on to saySo again, where in that sketch is Vdd connected to SDA?

Without wishing to cause offence, you’ve been told multiple times how to do this but you keep asking the same question, I am beginning to think you are behaving like a troll.

I resent being called a troll. You folks seem to come from an EE background and explain things in those terms, EG Collector and Drain.
Those are meaningless to me and I wish yours and others answered my questions in MY terms
For example:

As mentioned before, your boards are MOS so Vcc does not apply,
Also, “Vdd” and “Vcc” are generic terms that represent whatever power supply you are using.

Hence my confusion re VCC, VDD, 5V+, and V+
And an Example of clarity in MY terms: Thank you Perry.

Quote

So, how do i tell the circuit (?), that the Arduino is the master?

On the Arduino you use
Code: [Select]

Wire.begin();

And here is another diagram that seems to contradict what y'all are saying. That VDD is not V+ ((((SOMETIMES)))

feather_huzzah_temp_sensor_fritzing.png|1344x633

hextejas: And here is another diagram that seems to contradict what y'all are saying. That VDD is not V+ ((((SOMETIMES)))

|500x235

And what would this look like if I were to add a 2nd I2C device. <----Hooray, I figured out how to use a superscript.

I resent being called a troll.

I didn't call you a troll, I said 'I am beginning to think you are behaving like a troll', which is a statement of fact about my state of mind having read many of the replies to this discussion.

The reason has nothing to do with my background or yours, it has to do with seeing the same question being answered multiple different ways and answered multiple different ways and you still keep asking. The final trigger was you not answering when I asked in reply #48 where SDA is connected to Vdd. I hoped you would finally see that it wasn't, but instead you went on to say both that it was and it wasn't, which in my experience is classical troll type dodging the question to keep the answers flowing.

I get that you think VCC, VDD, and V+, 5V+ are the same, I have not commented on it because for the purposes of this discussion it does not matter. You can learn the difference later, when you know more generally.

PerryBebbington: Where on here is SDA connected to Vdd? |500x200

Perry, are you serious ? Unless you differentiate between: SDA--->Rp--->VDD and SDA------>VDD Or is VDD different from Vdd ? I hope not. Sure, they will do different things but they are connected. Another thing that bothers me is that in the sketch at post 49, the VDD has been changed to VCC. How the heck did that happen ? I think that I will need to get answers and clarifications somewhere else as I seem to be acting "troll like". No surprise in that I disagree with you. I will continue to drill down until I get answers that don't contradict each other from posters that seem to have a lot of experience. The recent examples are: From you

I get that you think VCC, VDD, and V+, 5V+ are the same, I have not commented on it because for the purposes of this discussion it does not matter.

and from AWOL apparently it does matter

You don't ever connect SDA directly to Vcc; how would you pull it down if you did?

and referring to my post #55, it never did get answered nor did my other posts that asked how to connect to SDA, V(something) and 2 different slave boards. I am assuming a breadboard but the choice and source of the V(something) is still a mystery. thanks anyway and happy turkey day

Ok, it seems you need very specific advice. You don't ever connect SDA directly to VDD, VDD, VCC, Vcc, +5V, + 3V, +3.3V, +1.8V +ve supply or Gnd,

How would you pull it down if you did?

To connect more than one device to SDA (and SCL of course) you make sure the devices don't have the same address, then you connect all the SDA (and SCL) lines together, and make sure that SDA is pulled up, and that SCL is also pulled up And no, you can't use a single resistor to pull up both.

TheMemberFormerlyKnownAsAWOL:
Ok, it seems you need very specific advice.
You don’t ever connect SDA directly to VDD, VDD, VCC, Vcc, +5V, + 3V, +3.3V, +1.8V +ve supply or Gnd,

How would you pull it down if you did?

To connect more than one device to SDA (and SCL of course) you make sure the devices don’t have the same address, then you connect all the SDA (and SCL) lines together, and make sure that SDA is pulled up, and that SCL is also pulled up
And no, you can’t use a single resistor to pull up both.

I understand the addressing bit, it is hardwired at each board by a jumper or a default(I think).

and make sure that SDA is pulled up, and that SCL is also pulled up

I also understand to treat SDA and SCA pull ups differently though how do I wire this pull up ?

Does attaching a slave device to the SDA and SCL ports automatically pull them up ?

"Does attaching a slave device to the SDA and SCL ports automatically pull them up ?"

Are I2C internal pullups automatcally enabled ?

LOOKAHEAD_CARRY QUOTE FROM Paul_B:

"Apparently, the "wire" library does so unless modified."

OK, why not, in for a penny, in for a pound! :grinning:

The vast majority of I2C devices have no pull-up - it is not part of the specification. The pull-up is provided externally.

It happens however that a microprocessor - such as the ATmega - has both I*2C hardware **and* as an independent feature of the processor, a pull-up function so you can enable the pull-ups in your code. Apparently, the "wire" library does so unless modified.

However those pull-ups are quite weak, about 47k. The recommended pull-ups for I*2*C are more in the range of 4.7k down to perhaps 1k. You use a lesser value of resistor for longer connecting wires which have more capacitance. So in general, you want to provide external pull-ups in your design.

Note that resistance value is the total value of any pullups connected anywhere on the same bus in parallel and resistors in parallel reduce the total value. On a fairly long bus it is desirable to put a pullup at each end so that in parallel the resistance is about that 1 to 4.7k.

Now if you are using pre-made I*2C **modules* such as the "backpack" for a LCD display or a "port expander", this often (if not always) includes pull-up resistors. If that is the only thing to which you connect your Arduino, that is fine and convenient. But if you connect - because they are all in parallel - a substantial number of such modules, then the parallel resistance of the pullups may drop very low. The Arduino (ATmega328) will happily pull down a 330 Ohm load (less than 20 mA) but slave devices also are required to pull the lines down in order to exchange data and they generally have a lesser capability, so you need to keep the total pullup resistance above 1k by removing the pullups on all but a couple of the modules.

The final complication is mixing 5 V and 3.3 V devices (such as the 3.3. V ESPs). 5 V devices will generally operate at 3.3 V so you can connect your pullups to 3.3 V and not 5 V in this situation. If that does not work, you need to use a particular bi-directional level converter.

Did I miss anything? :sunglasses:

"Did I miss anything?"

Yes, the OP is software guy and anything hardware related is TMI.

raschemmel: "Does attaching a slave device to the SDA and SCL ports automatically pull them up ?"

Are I2C internal pullups automatically enabled ?

Well, strictly separate questions.

Attaching a slave device pulls them up if - and only if - there are pullups on the slave device module. It has nothing to do with the microcontroller.

The "wire" library chooses to enable the internal pullups which may however in themselves be insufficient,.

raschemmel: "Did I miss anything?"

Yes, the OP is software guy and anyhing hardware related is TMI.

"Without wishing to cause offence, you've been told multiple times how to do this but you keep asking the same question, I am beginning to think you are behaving like a troll"

63 posts to ask about a pullup resistor ? Really ?

And we're not out of the woods yet...

Raschlamiel, please stay out of my thread. Your snarkieness has gone too far IMO. And I have not been told multiple times how to do this. Or you have tried to tell me in terms that are foreign to me. Or you have answered questions and the answers made no sense. Enough for me. Yes, 63 posts, because it is not a simple topic when 1st presented to a noob like me. Plus for some reason posters like yourself somehow refuse to answer my easy-to-answer posts: For example, my post #59

Quote

and make sure that SDA is pulled up, and that SCL is also pulled up

I also understand to treat SDA and SCA pull ups differently though how do I wire this pull up ?

My question is "How do I wire this pull up ? No need to draw a picture, something along the lines of " one end of a 4.7k resistor into the merged SDA leads and the other end into (VCC or +3.3V or 5V). And therein lies a rub. One of my slave boards is at 3.3V and the other is at 5V. Though the Feather Huzzah and ESP32 are at 3.3V. After much tired hammering at this, I have realized that I might need to go somewhere else to try and get help. As shown by Paul__B, there is more to this than just hooking wires. There are a lot of "ifs" here.

Attaching a slave device pulls them up if - and only if - there are pullups on the slave device module. It has nothing to do with the microcontroller.

The "wire" library chooses to enable the internal pullups which may however in themselves be insufficient,.

One of my slave boards is at 3.3V and the other is at 5V. Though the Feather Huzzah and ESP32 are at 3.3V.

So, you need level-shifters.

That wasn't my quote. It was from Reply#50.

hextejas: No need to draw a picture, something along the lines of " one end of a 4.7k resistor into the merged SDA leads and the other end into (VCC or +3.3V or 5V). And therein lies a rub. One of my slave boards is at 3.3V and the other is at 5V. Though the Feather Huzzah and ESP32 are at 3.3V. After much tired hammering at this, I have realized that I might need to go somewhere else to try and get help. As shown by Paul__B, there is more to this than just hooking wires. There are a lot of "ifs" here.

You don't want to pull the SDA/SCL lines up to 5V if you have 3.3V devices on the bus, because if their pins are not 5V tolerant you can damage your 3.3V board. As Paul mentioned it is safe to pull the bus up to 3.3V, but this logic level may not be high enough to reliably be interpreted as a high input at your 5V devices. You can try it without breaking anything, if it doesn't work you need to look at voltage level shifting. You can buy premade modules to do this without too much messing around, such as the below module

https://www.sparkfun.com/products/15439

So for your first test, one end of your 4.7k should connect to your SDA lines, the other end should connect to the 3.3V supply. Grab another 4.7k resistor and do the same thing with the SCL lines.