Is your EtherTen, or Arduino board with the current model Arduino Ethernet Shield not fully operating after reset or powerup? Here's some handy tips to sort it out.
EtherTen: http://www.freetronics.com/products/etherten
Arduino Ethernet Shield: http://www.arduino.cc/en/Main/ArduinoEthernetShield
Most of this also covers regular Arduino boards and all kinds of shields when connected and powered by USB.
The Reset IC connected to the Wiznet W5100 Ethernet IC is the very common STM811 or many compatible parts.
This reset IC performs two functions: Firstly it holds the W5100 in reset if the VCC rail is less than 4.38V. Secondly, it holds the W5100 in reset for 140-280 milliseconds after the board is powered up.
Ethernet Reset IC Delay
If your W5100 Ethernet IC is not 'awake' after your board is powered up or reset, the most likely issue is that your Arduino microcontroller has come out of reset sooner than the W5100 IC, and the sketch has sent the W5100's ethernet configuration out before the W5100 140-280ms reset period has expired.This is because the Arduino microcontroller has a 65 millisecond powerup/reset delay, the longest available to be set by the fuses and bootloader, and the STM811 Reset IC controlling the W5100 Ethernet IC has a longer reset delay of 140-280 milliseconds.
The fix:
Insert this line as the very first line in the void setup() { function in your project:
delay( 50 ); // allow some time (50 ms) after powerup and sketch start, for the Wiznet W5100 Reset IC to release and come out of reset.
50 ms covered all boards in our testing, though if in doubt make it 200-250 ms for full reliability. Adding this to the start of setup() does not affect any normal operations or running, it just adds a fraction of a second to the one-off powerup or reset of the board.
Low Voltage From USB
This also applies to all Arduino boards and projects.
If you're running your board directly from a USB cable connected to your computer and the above doesn't correct it, you may be getting too low a voltage from the nominal 5 volt USB power out of your computer.
This is sometimes made worse by a very long USB cable or a USB cable with weak or thin wires inside it.
Any 5V Arduino or Arduino-compatible board needs a minimum of a solid 4.50 Volts DC at the board at all times to run. If the voltage drops even a fraction below this for a very short time like when loaded up by an IC power-up, LED turning on, LCD backlight or whatever, the board will go into reset and won't operate.
The ATmega microcontroller in all Arduino boards has a built-in "brown-out detector" which is activated and set to a nominal 4.30V, below which the board will be held in reset and not run. The nominal 4.30V BODLEVEL fuse setting has a true range of 4.10V min, 4.30V typical, 4.50V max.
So that's where the 4.50 volts minimum requirement comes from!
Also if you're using an EtherTen or any other board with the current Arduino Ethernet Shield that has a microSD card, the STM811 Reset IC that it has controlling the W5100 as explained above has a 4.38V typical, 4.25V min, 4.50V max reset voltage level.
The issue:
When powered by a USB cable, your boards are at the mercy of the USB power specification of 4.75V minimum and a 500mA maximum current limit.
If your computer outputs just a little lower voltage than this and some do, or if your board is drawing a high current close to 500mA or have a high startup current requirement, the voltage at your Arduino board may drop lower than the 4.50V needed. This can also happen if the USB cable being used for connection and power is quite long or has weak conductors as you could get say a 0.5V drop along the length of the cable.
To fix it there are a few possibilities:
1. Try powering your board by 7-9V DC into the DC power jack instead of the possibly weak USB source. You can still upload sketches and connect by USB when your boards are powered by the DC jack.
2. Use a shorter or different USB cable, so there is less voltage drop out to the Arduino board end.
3. Try a different USB port, hub or computer for a possibly higher voltage USB source.
4. Check or estimate the current usage of your Arduino board and shield combination. Any project that gets close to 500mA current or draws a high current when connected, for example from the other devices or capacitors present, may trip your computer's built-in current limiter on its USB port, and it won't provide a good voltage to run your board.
At any time you can measure the voltage at the GND and VCC pins on your Arduino project, and see if the VCC voltage is getting down below 4.75V. Keep in mind that most multimeters just show an average reading and not short voltage drops so a low USB voltage could be happening and resetting your board but the multimeter may not display it. An oscilloscope or min/max capture function would show this happening.