Pages: 1 [2]   Go Down
Author Topic: Ethernet hang  (Read 1269 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La modifica sopra riportata non e' stata risolutiva.  smiley-cry

Ho effettuato altri test.
Nel metodo write definito in EthernetClient.cpp ho aggiunto il delay(20) che ovviamente rallenta la velocita' con cui
i dati vengono inviati al client con il vantaggio di una maggiore stabilita'.

Con questa modifica, sempre con la script gia' citata, ho effettuato 155.000 connessioni consecutive senza problemi.
 


Code:
size_t EthernetClient::write(const uint8_t *buf, size_t size) {
delay(20);

  if (_sock == MAX_SOCK_NUM) {
    setWriteError();
    return 0;
  }
  if (!send(_sock, buf, size)) {
    setWriteError();
    return 0;
  }
  return size;
}

Andrebbe approfondito se il delay e' necessario per limiti del chip w5100 oppure per qualche bug della libreria.


Saluti


Giovanni
« Last Edit: May 07, 2013, 05:21:32 am by gvnsbt » Logged

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 346
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai provato a fare qualche prova con delay minori per vedere fino a quanto si può diminuire senza perdere stabilità?
Logged


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

No, non ho provato.
Il delay l'ho calcolato basandomi sul tempo necessario impiegato per stampare una stinga tramite un Serial.println che inizialmente avevo messo al posto del delay come DEBUG (15 caratteri /9600 *10 -> circa 15 ms).

Nella documentazione del chip w5100 ho visto che c'e' del codice di esempio per la gestione delle connessioni, andrebbe fatta una verifica con quanto implementato nella libreria in modo da capire se il problema di stabilita' e' dovuto al chip o a qualche bug.


Giovanni
Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai provato ad impostare il pin 4 come output e forzarlo high? Io tanti problemi li ho risolti con quello.
Logged

Pages: 1 [2]   Go Up
Jump to: