I’m trying to build a simple setup to automate some of the kids toys. I’m trying to use the Shield Shield and am running into an odd problem. In the process of chasing this issue, I think that I ran into another. They both seem to be related to the use of the TXB108 device as a level translator.
I wired up a bright LED (Vf=2V, i=20ma) to the equivalent of the A7 pin. (6 for Arduino). I set up a basic script to blink in at a 2 Hz rate. I used a 150 ohm resistor to drop the extra 3 volts. The odd bit is that some of the light pulses are brighter than others. I finally grabbed a scope from the office and looked at the hot side of the LED. Some of the pulses are exactly what I would expect, approximately 2V and steady through the pulse, but most of them have a 50-60 MHz oscillation from 3V to 5V, throughout the pulse. If I probe the A7 pin on the Spark, it is stable and quiet (as expected). This is essentially the only wire on the board at this point. I suspect that I’m asking for too much current out of the device. This behavior seems slightly temperature dependent, in that it will appear and disappear over a longer period of time. I cut the drive current down to 10 ma, with no change.
Oddly, I threw a bypass cap from ground to the driver side of the LED resistor, this caused the A7 input to show the oscillations. I think that this is due to the load starting to look like a driver and turning the direction of the buffer around when the pulse ends from the Spark.
When I pulled down the TXB108 data sheet from the GitHub pool, I was looking for the amount of current that the device could source. I’ve still not found that, but I did find something that was interesting. There is a note on page 11 of that spec sheet titled: “Pullup of Pulldown Resistors on I/O Lines”. This essentially says that if there are pullups or pulldowns on the I/O buffers they must be 50K or better. This makes driving an LED a bit of an issue.
Furthermore, the next paragraph implies that the chip should not be used with open-drain devices hooked to it, it specifically points at I2C and 1Wire as applications that will not work. Unortunately, the very next step on this board was to turn on an I2C PWM device and an LCD display.
The real question is: Was this known or understood that the Shield Shield was liable to not be able to drive much of a load or handle I2C? I don’t see any reference to this in the board documentation. A bit of a bummer for my plans, but just trying to make sure that I understand if I’m looking at this right.