Pages: 1 [2] 3 4   Go Down
Author Topic: No TCP/IP link,without pressing the reset button  (Read 16655 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I order a new Ethernet Shield card and now it's working!
 ;D
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I, too am experiencing this same issue. It is an arduino ethernet shield (wiznet with the sd card slot). I have written some very simple tcp code, that does not work on power up, but works just fine if you then press the reset button, ground the reset pin, or open a serial connection.

Should I contact my vendor, or is it possible to fix my unit?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Even with my new hardware I seem to have the same problem.
I have to push the reset button or connect the USB cabel to have the Ethernet link up ?? :'(
Logged

0
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2526
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This sounds similar to a problem I had with my home-brew ethernet board (using the Wiznet module).  I had a 3.3V regulator that was too small and had to add a 200ms sleep in setup() to get it to work reliably.

The Arduino ethernet shield's 3.3V regulator is not undersized, but I wonder if there is some similar issue?  The Wiznet chip seems to be a bit picky about low voltage, and it's a bit hungry at 138mA to 183mA current consumption.  It also needs 10ms from the time reset goes inactive until PLOCK is good. (I assume that's a PLL lock? no other mention of that parameter in the datasheet.)

Anyway, just as a wild guess, try putting a delay() in setup() to see if that helps.

-j
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Unfortunately the delay does not help. I tried up to 20 seconds before calling Ethernet.begin().

It's really disappointing because the ethernet shield is such a potentially cool piece of hardware, but it's not very useful if one has to press the reset switch after every power up.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Well, I have constructed a workaround to this issue, and it appears to be resolved. It's not exactly pretty... basically I took a little SPST, normally open relay and hooked the coil pins to ground and digital pin 02, and the switched pins to ground and the reset pin.

You can probably guess what comes next... before initializing the ethernet library, I look for a flag at an address in eeprom. If the flag is 0, we set it to 1 and then trigger the relay, and the unit resets. If the flag is 1, we assume that we just did a warm reset and set the flag back to 0, for next time we power up.

The pastie below is the code snippet I wrote if anyone is interested (let me know if there is a better way to accomplish this sort of thing, I'm new).

http://pastie.org/314577
Logged

0
Offline Offline
God Member
*****
Karma: 1
Posts: 513
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There is a flag somewhere that you can figure out if the atmega was power cycled or reset, don't recall where though.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I've also had problems initializing the Ethernet shield after a cold reset/powerup.

My solution was to disconnect the shield's reset pin* so it could be reset independently of the arduino main board.  I then ran a jumper from a digital output pin to the shield's reset line.  

Before calling the Ethernet library, I enable that output pin, pull it low for 100ms, and then switch the port back to input mode with pullups disabled.  

(* actually, my original Arduino USB board doesn't have a socket for the reset pin, so the line wasn't connected in the first place.  If you have a newer board, you'd need to clip the shield's reset pin or cut a trace on the shield PCB.)
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

agt--

Very nice, I like this solution. I'm a little nervous about cutting up my precious ethernet shield, but it does seem more elegant than self-resetting with a relay.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Is there any possibility to solve this problem inside the ethernet library?
Logged

Forum Administrator
Cambridge, MA
Offline Offline
Faraday Member
*****
Karma: 12
Posts: 3538
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmm... Ethernet.begin() calls iinchip_init() and sysinit() which supposedly resets the W5100.  Maybe the network / router doesn't expect the device to reset in that way?  What if you use a random mac address each time (note that you'll need to call randomSeed() with something like the value of analog input before using random())?  Or a random ip?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It does not work even if there is no network connected during the cold start.
Logged

Forum Administrator
Cambridge, MA
Offline Offline
Faraday Member
*****
Karma: 12
Posts: 3538
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

What if you call Ethernet.begin() twice?  

There's basically no code in the constructors of Client or Server, so it may be that the W5100 just doesn't work properly when powered up without a reset.  We may need to allow for a reset of the W5100 from an Arduino pin.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No success.

I tried it also with delays, like this:

  delay(5000);
  Ethernet.begin(mac,ip,gateway,subnet);
  delay(5000);
  Ethernet.begin(mac,ip,gateway,subnet);
  delay(5000);

Also no success.



Are you able to reproduce this problem?

Is there anyone who can supply the arduino and ethernet shield with external power and network connection is up without having to push the reset button?
« Last Edit: December 08, 2008, 03:10:00 am by burni83 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Watterott electronic
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi all,

I think the normal reset time is to short for the Ethernet-Shield.
So I soldered a 100nF cap between the Reset-Pin and GND and
then the Ethernet-Shield works without pressing the reset button.
(a good position for a 100nF SMD cap is between the pins from the reset switch)


Best regards
Stephan

-----------------------
Watterott electronic
Germany
Logged

Pages: 1 [2] 3 4   Go Up
Jump to: