Arduino DUE and Ethernet Shield 2 Loses communication randomly after a while

Hello, after testing some stuff that I will explain later I've come to a point where I don't know what else to try.

I'm using Arduino DUE, With Ethernet Shield 2, and the Ethernet Library v2.0.2

The Setup:
The Arduino DUE is connected with Stackable headers to a custom PCB that is below the Arduino and has the SPI pins and a bunch of CS pins, this PCB is ssupplied with 12V has an LDO that feeds 8V to the VIN pin of the DUE, the Ethernet Shield is on top of the arduino. We have a program that communicates via sockets, with a PC on a Network that just have the PC and a bunch of devices with DUEs and Ethernet Shields. A simple TP-Link Router (TL-WR841N), All devices have the same firmware, They are connected via an Ethernet Cable to the router and MUST work in DHCP, They are expecting a communication from the PC which they process and respond.Every second a LCD screen Shows the IP, the MAC and some more stuff.

What Happens:
After some time with the device plugged in (might be 1 second, 2 days or just never, seems completely random), The IP field turns into 0.0.0.0, The MAC doesn't because it's printing the variable I used to set the MAC instead of "Ethernet.MACAddress()". When that happens All ethernet communication capabilities are gone, I suspect the Wiznet 5500 loses it's registers for some obscure reason and then Only a Hardware Reset or Power Cycle can "solve" the problem.

What we tried:
The only way we could "reproduce" the problem (or at least, making something similar happen) is feeding a low voltage to the board with the LDO (5.5V), then the power of the Arduino falls and the Ethernet Shield resets it's registers. That's the only way we could reproduce the problem reliably. Then With a steady 12V to the input happened again so...... yeah....

We tried to modify the Ethernet library to make the function "softReset()" public and added it to the "EthernetClass" so we could use it. It made the reset then re initialized everything, but that only worked if the problem was reproduced by ourselves, If the problem happened on its own we could not make it work again without a hardware reset or power cycle.

We tried to tie the Reset pin directly to 3.3V, Because we thought the Ethernet Shield could be resetting because some sort of noise in that pin or whatever, happened again...

And tried to change the the Ethernet Shield for the "W5500 Lite" which is the same chip but "Different" electronics (this test is on going right now"

So In conclusion, we could not isolate the problem properly, Would be great If you could shine some light on this, What else could we try? Did this happen to you? We have seen a bunch of posts regarding the IP 0.0.0.0 but did not find anything that resembles our problem.

Thanks in advance.

Are you able to show your code and provide a link to the schematics of your custom board?
Without that basic information people can only speculate.

My speculation is insufficient power. Look at the ethernet board supply voltage on a scope and set a trigger to spot brownouts.

We can't share schematics or code, company policy. We don't think is the PCB itself, also, all devices have this PCB and some fail and others don't.

We did test with an oscilloscope for brownouts, we luckily catched the error while testing but nothing relevant was seen on the oscilloscope, the 5V line on the arduino was at minimum 4.94V and the 3.3V line was 3.28V at minimum. So I guess the voltage is not the problem...

The code is based on the "Web Server" example, the structure and overall program workflow are the same, each second the IP Address is printed to an LCD screen regardless of if there's communication with the client or not.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.