5V where you might not expect it

Got a Due today, started playing with it, and put a custom shield on it that was designed to be powered by either 3v3 or 5V from the ICSP header. Assumed the Vcc on the ICSP header would be 3v3, so that's what I set the voltage selection jumper to on the shield.

Just before I plugged it all in, I had a thought that I should really check what voltage (if any) I was getting from the ICSP header (well, really SPI header since it doesn't do ICSP, but you know what I mean.)

So got the multimeter, and guess what? 5V. Surprised, but saved me letting out a bit of the ol' blue smoke.

AFAIK, ICSP doesn't specify 5V, so not sure why this pin would be connected the 5V rail rather than the 3v3 rail. Only reason I could think of was to make it more idiot-proof in case someone decided to try programming the Due with a ICSP programmer, and might blow it up by putting 5V on the 3v3 rail via the programmer.

I don't know -- maybe there's a better reason. But in any case be warned -- look before you leap on a hybrid 5V/3v3 board!

Not sure why you were surprised - the Due schematic shows +5V on the SPI and ICSP headers.
There is no jumper/switch on the board to select a voltage that I have seen, is there?

CrossRoads:
Not sure why you were surprised - the Due schematic shows +5V on the SPI and ICSP headers.

Because I hadn't checked the schematic. I had blithely assumed it would be 3v3, since that's what you'd normally expect on the ICSP header on a "pure" 3v3 board. Lucky for me I checked the assumption at the last step, though.

Can you think of a reason why in this case they might have connected it to the 5V rail instead of the 3v3?

In any case, I thought I'd post this in case anyone else might be as foolish as me.

It does seem an odd situation. 5V is made available on a header, from a boost regulator even, with 4 other signals that are 3.3V level parts and
have a limitation of "Voltage on Input Pins with Respect to Ground...... ..............................-0.3V to + 4.0V"

One would have thought a part such as TXB0104 for signal level translation might have been standard here to avoid any damage from 5V signals on the header.

Many parts still run on 5V, so it's nice having a source, but the parts need to return 3.3V signals. Connecting up a MAX7219 for instance, 4V-5V is needed for a supply, 3.5V is needed for a minimum high at 5V, so level translation would be needed.

I wonder if they did it this way in consideration of shield compatibility. On an 5V shield, connecting both the 5V power header pin and the Vcc from the ICSP header would be valid, since they are connected on a 5V AVR board. On a Due, this would obviously be problematic if they connected the ICSP header to the 3v3 rail.

I don't know. In any case, the idea of backward shield compatibility was a broken one from the outset. Perhaps this is just a quirky consequence of the implementation of what was basically an irredeemably bad idea in the first place.

Really need someone like Massimo to answer that.

I don't know. In any case, the idea of backward shield compatibility was a broken one from the outset. Perhaps this is just a quirky consequence of the implementation of what was basically an irredeemably bad idea in the first place.

I agree that the concept of new shield boards being able to coexist nicely with both legacy and new Due boards may have been a bridge too far. While they did define a new shield pin IOREF to give any new shield design using it a hint on what the Vcc voltage of the underlining chip is, I would like to see a schematic of a new shield design that handles bidirectional IO voltage translations. Not saying it can't be done but I suspect from now on most shields will be designed for either Uno or Due only use, but we will see I guess.

IOREF. This pin on the Arduino board provides the voltage reference with which the microcontroller operates. A properly configured shield can read the IOREF pin voltage and select the appropriate power source or enable voltage translators on the outputs for working with the 5V or 3.3V.

Lefty

So you not using the unofficial Due pinout diagram then?

http://arduino.cc/forum/index.php/topic,132130.0.html

That highlights the 5v on both SPI headers.


Rob

Graynomad:
So you not using the unofficial Due pinout diagram then?

OK, OK! Now you're just making me feel guilty.

:slight_smile:

It was done for compatibility with older shields that expect 5v there.

There are many compromises to be made when you design a board that must be somehow compatible with more than 1 million others..

m