Reset per Code - Darf man?

Ich habe manchmal das Problem, dass aus irgendeinem Grund sich der Arduino nicht mit dem Server conecten will. Nach einem Reset geht es meist. Ich zähle nun die Fehlversuche und würde gerne bei einer bestimmten Anzahl per Code resetten.
Ich habe testweise folgenden Code laufen lassen, mit einem 10uF zwischen Pin7 und Reset.

void setup() {

  Serial.begin(115200);
  Serial.println("Gestartet ......");
  digitalWrite(7, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
}

void loop() {

  static int x;
  x++;
  Serial.println(x);
  delay(1000);
  if (x > 10) {
    Serial.println("Reset ......");
    delay(200);
    digitalWrite(7, LOW);
  }
}

Und bekomme folgende Ausgabe, was ja erfolgreich aussieht:

Gestartet ......
1
2
3
4
5
6
7
8
9
10
11
Reset ......
Gestartet ......
1
2
3
4
5
6
7
8
9
10
11
Reset ......
Gestartet ......
1
2
3
4
5
6
7
8
9
10
11
Reset ......
Gestartet ......
1
2

Nun die entscheidende Frage: Darf man dass so machen? Was ist ggf. noch zu beachten?
Ich gehe davon aus, dass das Ethernetshield mit resettet wird.

Man kann via SW den Controller resettieren aber da kommt kein Signal heraus, das das Ethernetsheld mitresetiert.
Ein Reset von einem Pin aus funktioniert auch nicht richtig da der impuls zu kurz ist um richtig zu resetieren.

Welches Ethernetshield hast Du?

Grüße Uwe

ElEspanol:
Nun die entscheidende Frage: Darf man dass so machen? Was ist ggf. noch zu beachten?

Davon, dass man das darf, würde ich ausgehen. Ich bin zwar kein Elektroniker, aber wenn es so funktioniert, ist es okay :slight_smile:

ElEspanol:
Ich gehe davon aus, dass das Ethernetshield mit resettet wird.

Ginge mir genauso. Ein Blick in den Schaltplan kann aber nicht schaden.

Gruß

Gregor

uwefed:
Welches Ethernetshield hast Du?

Die W5100 Nachbauten von meinen Chinesischen Freunden für 7€.

Resetpin, könnte ich mal nachmessen, ob die Buchse Verbindung zum Chip hat.

Hallo,

Software-Reset ist eigentlich nicht so schön. Kannste den Fehler nicht weiter eingrenzen, Debug Werte ausgeben lassen o.s.ä.?

Ich würde den Resetpin von der Pfostenleiste abschneiden, auslöten oder abbiegen. Und dann mit einem Datenpin des Arduinos drauf gehen.

Nur, Vorsicht mit dem Resettaster auf dem Shield.

Doc_Arduino:
Software-Reset ist eigentlich nicht so schön. Kannste den Fehler nicht weiter eingrenzen, Debug Werte ausgeben lassen o.s.ä.?

Das ist hier nicht so einfach....
Ich habe das selbe Problem, eine Wetterstation mit Webinterface und diesem Teil

In unregelmässigen Abständen (kann auch mehrere Tage ohne Probleme laufen) ist der Server nicht mehr erreichbar.
Der Arduino selbst scheint aber weiter zu laufen, denn die Daten der Wettersensoren werden weiter geloggt

Es schaut so aus, als ob sich der WS5100 aufhängt. Kann natürlich auch an der Ethernet Lib oder an meinen Code liegen.
Da aber ElEspanol genau das gleiche Problem hat denke ich nicht, das es an meinem Code liegt.
Das zwei Leute unabhängig voneinander den gleichen Bug programmieren ist eher unwahrscheinlich.

Da die Methode von ElEspanol aber wohl zu funktionieren scheint, werde ich das wohl auch einbauen.

combie:
Ich würde den Resetpin von der Pfostenleiste abschneiden, auslöten oder abbiegen. Und dann mit einem Datenpin des Arduinos drauf gehen.

Nur, Vorsicht mit dem Resettaster auf dem Shield.

Nein, ich will ja, das das Ethernet Shield mit resettet.

Ich bin gerade dabei, einen "Minimum" Code für das loggen von Daten auf einen SQL Server zu schreiben. Das ganze soll so blockierungsfrei wie möglich geschehen, damit man ihn problemlos in andere Sketche einbinden kann. Siehe auch den anderen Post "blockierungsfreies connect".

Aber irgendwie hängt es immer mal wieder, und manchmal fängt sich der Arduino und oft kann er dann gar keine Verbindung mehr aufbauen. Nach Hardreset geht es meist wieder, aber auch nicht immer.

Wäre es nicht sogar denkbar, das ganze von vornherein mit einer "Lebenserhaltung" zu betreiben? Rudirabbit, du hast bei dem Modul ja doch die Möglich, Reset einzeln zu beschalten.

(WLAN) Router haben dieses "Features" seit langer Zeit. Da wird einfach jeden Tag alle 24h neugestartet. (-> Reset betätigen). Dies kann vom Arduino übernommen werden, wenn dieser wirklich noch weiterarbeitet. Oder aber man überprüft das ganze mit seiner eigenen WAN Adresse. WAN Adresse geändert, neustart

Ich könnte mir auch mit einem Pro mini einen Watchdog für den UNO dafür bauen. :confused:

sschultewolter:
Rudirabbit, du hast bei dem Modul ja doch die Möglich, Reset einzeln zu beschalten.

Diese Möglichkeit hätte ElEspanol auch, er müsste die beiden Resetpin auf dem Shield trennen.
Wenn ich nur den W5100 resette, dann muß ich diesen danach auch neu Intialisieren.
Sollte kein Problem sein

Mein Verdacht ist, das sich das System eher dann aufhängt wenn mehrere Clients versuchen darauf zuzugreifen.
Wie lange der Server läuft ist wohl nicht das Kriterum.

Mal sehen, habe aber im Moment eine andere Baustelle.

Sinnvoller wäre es, einmal mitzuhören, ob der Arduino noch etwas über SPI anfragt, und wenn ja, ob der Slave (Ethernet) sich überhaupt meldet. Das ganze kannste mit einem Logikanalyser mitloggen. Was für werde da dann kommen, muss du dann sehen, ob diese im DB des WS5100 dokumentiert sind. Ich tippe aber mal drauf, dass sich der AVR über MOSI meldet, aber keine Rückmeldung über MISO mehr erhält, da sich das WS5100 Modul andersweitig verabschiedet hat.

Gute Idee, werde ich mal mit dem LA austesten und Miso und Mosi abhören. Ich sehe ja in etwa wie es im normalen Modus aussieht und dann mal schauen, wenn er sich nicht mehr verbindet.

SCK und CS/SS nicht vergessen.

@sschultewolter: Stimmt, das wäre eine pragmatische Arbeitsweise um den Fehler einzugrenzen.
Wozu sonst habe ich den Saleae Clone rumliegen. :confused:

Ich habe leider im Moment keine Zeit für sowas, da die Entwicklung der Steuerung für meinen neuen X,Y Tisch mit Servomotoren die Zeitscheibe derzeit zu 100% ausfüllt

Dieser Thread ist mir aufgefallen, weil ein älteres Projekt von mir sporadisch genau den selben Fehler hat wie bei ElEspano. l

Bei mir hängt aber der Arduino als "Webclient", bei dir hängt der Server. Ich wäre mir nicht so sicher, dass es das gleiche Problem ist.

ElEspanol:
Bei mir hängt aber der Arduino als "Webclient", bei dir hängt der Server. Ich wäre mir nicht so sicher, dass es das gleiche Problem ist.

Stimmt, wäre aber trotzdem interessant nur den Wiznet per Software zu resetten und neu zu intitialsieren.
Denke fast das der in beiden Fällen der Übeltäter ist.

Glaube ich auch. Aber da der Arduino Sketck ja auch einen Stromausfall im Idealfall klaglos überstehen sollte, sollte er auch einen Reset genauso überstehen. Und dann weiss ich wenigstens, dass alles richtig initialisiert ist. Bei einem ESP8266 mit AT FW per serial angebunden würde ich allerdings auch nur den ESP resetten.

Momentan läuft mein Testsketch wie eine eins, ich kann das Netzwerkkabel rausziehen und reinstecken, wie ich will, er fängt sich immer wieder. Ich habe 2 LEDs dran, eine blinkt schnell, eine langsamer, mit normalem Auge ist an der Blinkfrequenz nichts unregelmässiges. Wahrscheinlich liegt es an der Drohung mit dem LA :slight_smile: der schon daneben liegt.