SD card error - SOLVED

CrossRoads:
just like this one...

Close, but no banana.

Here's the deal:

Your 74ACT125 is specified for operation with values of Vcc from 4.5 to 5.5 Volts. It may (or may not) appear to work at 3.3 Volts, but reliable operation at SPI speeds is not guaranteed.

The ladyada design's 74AHC125 is specified to operate with values of Vcc from 2.0 to 5.5 Volts with inputs that are tolerant to input values up to 5.5 Volts regardless of Vcc.

For my designs I (usually) use a '4050 device ( the 74HC4050 or even the old CD4050) to shift from 5 Volts down to 3.3.

As for the MISO signal: If there are other properly designed SPI devices and they all are operating at 3.3 Volts, then the Arduino input will see the 3.3 Volt logic 1 from whichever one is enabled. (Modern CMOS devices "usually" have logic '1' output signals that are very close to the Vcc rail)

Note that for ATmega devices in Arduino circuits, when operating at Vcc = 5 Volts, the ATmega input pin will see a logic '1' if the signal on an input pin is greater than or equal to 3.0 Volts, so the 3.3 Volt MISO signal works as it should with no extra conditioning required.

On the other hand...

If other SPI devices operate from 5 Volts, their MISO signal will go from 0 to 5 Volts, and will "backdrive" an overvoltage to any SPI devices running with Vcc = 3.3 Volts. Operation is unpredictable and long-term reliability (maybe even short-term reliability) of the overdriven devices is jeopardized unless they are specifically rated for such things---SD cards are not specifically rated for being backdriven by an overvoltage.

Note that for the Arduino Ethernet shield, the Ethernet controller and the SD card both operate at Vcc = 3.3 Volts, so that they can play nice together. The Ethernet controller has inputs that are 5-Volt tolerant, so it doesn't need level shifters for its SPI input signals, and the level shifters are required in the SD card circuitry only.

Regards,

Dave