Ethernet shield w5100 reset only

Good evening to everyone

I’ve a problem with freez of my ethernet shield w5100 on my arduino UNO rev 3, so i would like reset shield whit software.
So removed pin reset from the shiled, and whit jumper i connected this one to one digital pin of arduino (like a photo), and whit one timer i controlled the reset.

Controversly, i’ve not the only shield reset (like i’ve read in some topics), but all the Arduino be reset.

Someone have some ideas (or solution) for resolving this problem?

Thanks very much

FC

fikkiovarrikkio:
Controversly, i've not the only shield reset (like i've read in some topics), but all the Arduino be reset.

Someone have some ideas (or solution) for resolving this problem?

Why do you think, that a full hardware reset of Arduino and Ethernet shield is a problem?

Freeze of your Arduino application sketch while running Ethernet application is most likely caused by mistakes in the software.

Why don't you debug and remove the mistakes and bugs from the software?

True. I had a W5100 shield connected to the internet for 6 months continuously and it never crashed.

jurs:
Why do you think, that a full hardware reset of Arduino and Ethernet shield is a problem?

I'm sorry. I meant " Controversly, I don't have only shield reset(as I have read in some topics), but the whole Arduino resets."

[author=jurs link=msg=3249440 date=1494033655]

Freeze of your Arduino application sketch while running Ethernet application is most likely caused by mistakes in the software.

Why don't you debug and remove the mistakes and bugs from the software?
[/quote]

I think so because i've same freeze whit IDE example, and reading many topics i'm not the only.

Moreover i'm not a championship as code compilator (copy and past are my winning weapon :blush:), so of corse the software is full of bugs, but i'm not able to remove this bugs from the software. In some topics required some advice, But no one answered.

If you can halp me i try to explain my progect and publish the code, so we can understand if is software or hardwer problem.

Thank you for availability

FC

In order to reset only the w5100, the connection bridge from the arduino to the shield that must be removed are two (look at attached image).

Lozzi:
In order to reset only the w5100, the connection bridge from the arduino to the shield that must be removed are two (look at attached image).

See reply #2.

I had issues with the W5100 locking up after a few days of operation, the Ethernet port froze however the rest of my code kept working. Research on the topic strongly suggested that the chip be periodically reset and to do that you had to separate it’s reset from the Arduino reset. I modified the circuit per the attached and used the following code and have not had any issues since. If you choose to separate the Wiznet 5100 reset from the Arduino /MASTER_RESET line you must also control the Wiznet 5100 SEN pin. In the attached schematic, you can see that the RESET signal going into the Diodes, Inc. APX811 Microcontroller supervisor chip and the SEN input to the W5100 are now controlled directly by Micro outputs D48 and D50. Use the Supervisor chip to hold the W5100 in RESET until the 3.3VDC power supply rails are stabilized on power up (that fixes issues with power up reset power disturbances). The APX811 chip, upon turning off D50 (input to /MR) will turn off the /RESET input to the W5100 for 240mS. Therefore we MUST delay any execution of code for the W5100 after reset is applied for at least 240ms.

THE SEN line is controlled with the SPI select pin. In this example, ENET is D4, SDCard is D10, WizSEN is D48 and WizRESET is D50.

void SPIselect(int device) {
  if (device == SDcard) {
    digitalWrite(SDcard, OFF);
    digitalWrite(ENET, ON);
    digitalWrite(WizSEN, OFF);
  }
  else {
    digitalWrite(SDcard, ON);
    digitalWrite(ENET, OFF);
    digitalWrite(WizSEN, ON);
  }
  delay(2);
  resetWDT();
}

A function that I call to reset the Wiznet W5100 goes like this.

void EthernetClient resetWiznet() {

    SPIselect(ENET);
    delay(50);
    digitalWrite(WizResetSignal, OFF);  //low resets the W5100 chip
    delay(25);  //Keep this short, 25ms is good
    digitalWrite(WizResetSignal, ON);
    delay(500); //The hardware reset to Wiznet is Diodes, Inc APX811 chip that will hold reset into the 
                      //Wiznet low for 240ms, so we must wait until it is re-asserts.

    Ethernet.begin(mac, ip);  //mac and ip are your settings fro your Arduino

    delay(250);
    server.begin();
    delay(50);
    Serial.print(F("The IP Address is: "));
    IPAddress address = Ethernet.localIP();
    Serial.println(address);
    return (server.available()); //returns the client id of the newly reset Ethernet port
}

w5100 first power on locking and reset solution

terryz:
I had issues with the W5100 locking up after a few days of operation, the Ethernet port froze however the rest of my code kept working. Research on the topic strongly suggested that the chip be periodically reset and to do that you had to separate it's reset from the Arduino reset. I modified the circuit per the attached and used the following code and have not had any issues since. If you choose to separate the Wiznet 5100 reset from the Arduino /MASTER_RESET line you must also control the Wiznet 5100 SEN pin. In the attached schematic, you can see that the RESET signal going into the Diodes, Inc. APX811 Microcontroller supervisor chip and the SEN input to the W5100 are now controlled directly by Micro outputs D48 and D50. Use the Supervisor chip to hold the W5100 in RESET until the 3.3VDC power supply rails are stabilized on power up (that fixes issues with power up reset power disturbances). The APX811 chip, upon turning off D50 (input to /MR) will turn off the /RESET input to the W5100 for 240mS. Therefore we MUST delay any execution of code for the W5100 after reset is applied for at least 240ms.

THE SEN line is controlled with the SPI select pin. In this example, ENET is D4, SDCard is D10, WizSEN is D48 and WizRESET is D50.

void SPIselect(int device) {

if (device == SDcard) {
    digitalWrite(SDcard, OFF);
    digitalWrite(ENET, ON);
    digitalWrite(WizSEN, OFF);
  }
  else {
    digitalWrite(SDcard, ON);
    digitalWrite(ENET, OFF);
    digitalWrite(WizSEN, ON);
  }
  delay(2);
  resetWDT();
}




A function that I call to reset the Wiznet W5100 goes like this. 



void EthernetClient resetWiznet() {

SPIselect(ENET);
    delay(50);
    digitalWrite(WizResetSignal, OFF);  //low resets the W5100 chip
    delay(25);  //Keep this short, 25ms is good
    digitalWrite(WizResetSignal, ON);
    delay(500); //The hardware reset to Wiznet is Diodes, Inc APX811 chip that will hold reset into the
                      //Wiznet low for 240ms, so we must wait until it is re-asserts.

Ethernet.begin(mac, ip);  //mac and ip are your settings fro your Arduino

delay(250);
    server.begin();
    delay(50);
    Serial.print(F("The IP Address is: "));
    IPAddress address = Ethernet.localIP();
    Serial.println(address);
    return (server.available()); //returns the client id of the newly reset Ethernet port
}

terryz:
I had issues with the W5100 locking up after a few days of operation, the Ethernet port froze however the rest of my code kept working. Research on the topic strongly suggested that the chip be periodically reset and to do that you had to separate it's reset from the Arduino reset. I modified the circuit per the attached and used the following code and have not had any issues since. If you choose to separate the Wiznet 5100 reset from the Arduino /MASTER_RESET line you must also control the Wiznet 5100 SEN pin. In the attached schematic, you can see that the RESET signal going into the Diodes, Inc. APX811 Microcontroller supervisor chip and the SEN input to the W5100 are now controlled directly by Micro outputs D48 and D50. Use the Supervisor chip to hold the W5100 in RESET until the 3.3VDC power supply rails are stabilized on power up (that fixes issues with power up reset power disturbances). The APX811 chip, upon turning off D50 (input to /MR) will turn off the /RESET input to the W5100 for 240mS. Therefore we MUST delay any execution of code for the W5100 after reset is applied for at least 240ms.

THE SEN line is controlled with the SPI select pin. In this example, ENET is D4, SDCard is D10, WizSEN is D48 and WizRESET is D50.

void SPIselect(int device) {

if (device == SDcard) {
    digitalWrite(SDcard, OFF);
    digitalWrite(ENET, ON);
    digitalWrite(WizSEN, OFF);
  }
  else {
    digitalWrite(SDcard, ON);
    digitalWrite(ENET, OFF);
    digitalWrite(WizSEN, ON);
  }
  delay(2);
  resetWDT();
}




A function that I call to reset the Wiznet W5100 goes like this. 



void EthernetClient resetWiznet() {

SPIselect(ENET);
    delay(50);
    digitalWrite(WizResetSignal, OFF);  //low resets the W5100 chip
    delay(25);  //Keep this short, 25ms is good
    digitalWrite(WizResetSignal, ON);
    delay(500); //The hardware reset to Wiznet is Diodes, Inc APX811 chip that will hold reset into the
                      //Wiznet low for 240ms, so we must wait until it is re-asserts.

Ethernet.begin(mac, ip);  //mac and ip are your settings fro your Arduino

delay(250);
    server.begin();
    delay(50);
    Serial.print(F("The IP Address is: "));
    IPAddress address = Ethernet.localIP();
    Serial.println(address);
    return (server.available()); //returns the client id of the newly reset Ethernet port
}