I was looking for an ethernet shield for my Due and discovered that only the latest version ("R3" or "V6") has the IOREF sensing and is therefore safe to use. The official shield is something like $45, but on Ebay there are a ton of older shields for as little as $10. I picked up one that was billed as being "Mega compatible," and it turned out to be a version 5. I took a look at the schematic and determined that there was only one place where 5V touches the Due pins:
Chances are that this wouldn't hurt the Due, given the relatively high value of the pullup resistors. However, I found a convenient place to cut the trace that connects the pair of resistors to 5V and did so:
If you intend to use those Due pins for sensitive analog work, you might also cut the trace between pins 5 and 6 of the resistor network directly above the other cut point. Otherwise, A0 and A1 would still be connected by 20K of resistance. None of the trace cutting will affect using the version 5 shield with other Arduino boards, since those pins only connect to the full-size SD footprint, which can't even be populated without desoldering the microSD socket first.
I happened to have an old V6 version of this board which is at least slightly different from the R3, it doesn't have the SCL, SDA and IOREF pins.
I found schematics here: http://smallshire.org.uk/sufficientlysmall/2012/01/01/an-atlas-of-arduino-ethernet-shields/ and it looks like there are no connections to A0 or A1 so I plugged it in and it works great so far. I haven't confirmed that there was no damage to the Due, do you have any recommendations on how to proceed with that? Right now I am just assuming that since the Ethernet shield is working that all is fine.
I use dhcp if you don't you will need to set IP, net mask, etc manually.
There was a SPI bug that appeared in 1.5.3 but was fixed in later versions. The details are on github. I doubt you have this problem but I believe the spi library is still being worked on there could be new bugs.
Hmmm... If I put off the Ethernet-shield, then i get back a "server is at 255.255.255.255". Different to the situation with the shield on the DUE.
Looks like there is some data exchange. But not complete.
Update:
Getting the IP via DHCP is working !!!! But its a lot of more code -> 79k!!!
And some other funny thing: (I use the example DhcpAdressPrinter) Only with a Serial.println-command, just before starting the ethernet connection, i get a working DUE
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
// this check is only needed on the Leonardo:
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Start");<------------------------------------------------------------- I need this line for working!!!
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// print your local IP address:
Serial.print("My IP address: ");
for (byte thisByte = 0; thisByte < 4; thisByte++) {
// print the value of each byte of the IP address:
Serial.print(Ethernet.localIP()[thisByte], DEC);
Serial.print(".");
}
Serial.println();
}
void loop() {
Serial.println("loop");
delay (1000);
}