Hi all.
I previously posted this followup question in another post, but I guess the question was too off topic
I would like to measure the rise time of a BUS communication cable which could be I2C, SPI or any other communication type. In my case I will be using I2C with 9V buffer, but in principal this question applies to any other communication type as well.
In principal, I will be using a resistor with trimpot R2 in series to have an adjustable pullup resistor (See image 1 below). R1 is the the minimum resistance required when using the shortest communication cable, it also serves as a safeguard to prevent a short circuit. R2 is the adjustable trimpot rated to the maximum resistance calculated for the longest cable situation.
Image 1
My communication cable can vary considerably, I would like to create a method to measure the rise time using an Arduino to then setup the right value of the trim pot, optionally even read the trimpot value too. However, I do not want the measurements to pulldown the bus or negatively influence the readings.
Image 2 shows my initial flawed thought, but I think that setup would react like a pulldown resistor on the BUS, or not?
Image 2.. Initial idea
The idea was to add a voltage divider at 2) between trimpot & ground to measure the voltage at the trimpot, thus being able to calculating the total pulldown resistor value. But, the voltage divider would also act as a pulldown resistor?
A second voltage divider 3) between bus and GND would measure the voltage rise over time... again this would act like a pulldown resistor. In general, reading the voltage is preferred over just High/Low readings (the high/low values of components can differ)
Even adding a transistor to isolate the voltage dividers after setup would not really help, as the readings during setup are influenced. I also was contemplating measuring the voltage difference between bus and +9V instead of ground, but again, it would be like adding a resistor in parallel to the pullup resistor.
So my question is, how does one measure rise time with an Arduino without negatively influencing a BUS reading?
Mike