Go Down

Topic: Ethernet hang (Read 1 time) previous topic - next topic

gvnsbt

#15
May 07, 2013, 12:04 pm Last Edit: May 07, 2013, 12:21 pm by gvnsbt Reason: 1
La modifica sopra riportata non e' stata risolutiva.  =(

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: [Select]

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

bigjohnson

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

gvnsbt

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

Janos

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

Go Up