Resetování Arduino Mega + Ethertnet Shield 2 - timeout

Jan Půhoný konference na puhy.cz
Úterý Listopad 12 09:39:33 CET 2019


Zdravím konferenci,

mám tady Arduino Mega + Ethernet Shield 2. Vše funguje jak má, běží na tom
ethernet server a řídím tím doma topení. Vše OK, jen se občas stane, že se
to resetuje od WDG. WDG mám nastavený na maximální možný čas 8s. Po resetu
tam je:

TWBR 242

Last RESET: 15

Takže - a watchdog reset occurred .

*Chybu umím nasimulovat* - jakmile načtu stránku a v tom dojde ke ztrátě
spojení mezi klientem a serverem (typicky androidí telefon na pomezí wifi
signálu), tak se stránka načte třeba do půlky, dojde ke ztrátě wifi na
telefonu a pak WDG na arduinu zareaguje. Myslel jsem, že to vyřeším
client.setTimeout(100);,
ale neúspěšně, dělá to stále. Čím bych to mohl ošetřit? Googlím už od rána
a evidentně to nikdo moc neřeší.

Pokud nepřistupuji na tu webovou stránku generovanou Arduinem má to uptime
desítky dní, než přeteče příslušný long, takže se to chová opravdu stabilně
až na obsluhu toho   EthernetClient.

Díky moc za nápady.

HP

Eliminoval jsem všechny jiné možnosti a dělá to prostě výpis webové stránky
- kód podle mě standardní:

{
    // listen for incoming clients
    // Create a client connection

    EthernetClient client = server.available();



    if (client) {

      client.setTimeout(100);

     // w5500.setRetransmissionCount(0);


      while (client.connected()) {
        wdt_reset();
        while (client.available()) {
          char c = client.read();

          //read char by char HTTP request
          //read char by char HTTP request
          if (readString.length() < 100) {

            //store characters to string
            readString += c;
            //Serial.print(c);
            wdt_reset();
          }
          else
          {
            readString == "";
            wdt_reset();
          }

          //if HTTP request has ended
          if (c == '\n') {

            ///////////////
            //Serial.println(readString); //print to serial monitor for
debuging
            wdt_reset();
            client.println(F("HTTP/1.1 200 OK")); //send new page
            client.println(F("Content-Type: text/html"));
            client.println();

            client.println(F("<HTML>"));
            client.println(F("<HEAD>"));
            wdt_reset();

atd......
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20191112/e4e3b446/attachment.html>


Další informace o konferenci Hw-list