Ethernet Shield mi blocca tutto !

Ho un Arduino UNO R3 + EthernetShield originale (wiznet5100)

Ho messo lo sketch di esempio della IDE 0023: Ethernet > Webserver. Funziona.

Ho mappato la porta 80 del router verso l' Arduino, in questo modo da qualsiasi parte del mondo posso vedere la paginetta web di esempio.
Posso ... finche non si blocca !
E questo succede dopo poche ore !!!

Ho provato a mettere uno sniffer e devo che in media 30 volte al giorno mi arrivano richieste http da qualsiasi parte del mondo... (virus ? pirati ? smanettoni ?)

Si puo' evitare che Arduino si blocchi ???

Qualche trucco ?

Bhe il freeze della w5100 è abbastanza rinomato, non credo proprio che siano le richieste dalla Cina o Russia che lo inchiodano, ma dovresti aggiornarti sulla versione dell'ide, sono state sistemate parecchie cose dalla 0023 a oggi

Scrivi "w5100 arduino freeze" su google e te ne fai un idea, non sei da solo XD

ciao

Infatti ho letto da piu' parti del blocco della Wiznet, e ovunque leggo che ci sono dei workaround... Ma non trovo quali !

Provero' con la nuova IDE.

Esiste la possibilita' di fare in restart della Wiznet ?
Potrei far fare all'Arduino una richiesta http ad un sito internet, in caso di errore faccio fare un erhernet begin ?

In cosa consiste questo bug? Dopo un po' si blocca? Accade anche con gli ultimi IDE?

Potrei far fare all'Arduino una richiesta http ad un sito internet, in caso di errore faccio fare un erhernet begin ?

Ma arduino non si inchioda e apparentemente nemmeno la ethernet, perchè quando non risponde più alle tue richieste di connessione ma lo vai a pingare ti risponde eccome.
Un ethernet begin può essere una soluzione, prende 400ms circa.

Janos:
In cosa consiste questo bug? Dopo un po' si blocca? Accade anche con gli ultimi IDE?

Nelle versioni IDE precedenti, tipo la 0023 mancava la direttiva CLOSE all'interno del codice di gestione del wiz5100. Questa è stata aggiunta non ricordo se nella 1.0.1 o nella 1.0.4.
Quindi è altamente consigliato utilizzare la 1.0.4 --> http://arduino.cc/en/Main/Software

Quindi il bug era software, non hardware, giusto? E comunque è stato risolto, giusto? :cold_sweat:

Si è stato aggiunto un close_wait nella EthernetClient.cpp come descritto qui http://arduino.cc/forum/index.php/topic,94572.0.html
il dettaglio della patch è a pagina 9 ... comunque non ha risolto, si freeza sempre

int EthernetClient::connect(IPAddress ip, uint16_t port) {
  if (_sock != MAX_SOCK_NUM)
    return 0;

  for (int i = 0; i < MAX_SOCK_NUM; i++) {
    uint8_t s = W5100.readSnSR(i);
    if (s == SnSR::CLOSED || s == SnSR::FIN_WAIT || s == SnSR::CLOSE_WAIT) {
      _sock = i;
      break;
    }
  }

Due settimane fa circa ho caricato lo sketch di esempio webserver.
Acceso Arduino Uno e lasciato li...

Ogni giorno controllo se funziona tramite il browser (ogni tanto mi dimentico di controllare)

Stasera il browser dice che il server non risponde.
Ho provato a ricaricare la pagina per vedere se riprende.... ed ogni ricarica pagina mi faceva blinkare la lucetta LINK sulla Ethernet Shield.
Segno che la shield funziona...

Mi son connesso alla seriale (che fa scattare il reset) e immediatamente il webserver ha ripreso a funzionare !

Morale:
Entro due settimane la WizNt si blocca.

Provero' a mettere un ethernet begin nel caso premo un tasto collegato a qualche PIN.... pero' mi tocchera' aspettare di nuovo tanto tempo perche il blocco si verifichi...

Arduino Uno R3.
Ethernet Shield R3.
Alimentatore stabilizzato.

Naaa ... si freeza prima di 2 settimane, non sono i giorni che contano, ma il numero di connessioni (con relative quantità di dati), che cosa fai in queste connessioni e da dove le fai.

Le hai sempre fatte dallo stesso client?
Lo hai anche raggiunto dall'esterno?
Hai usato diversi OS nelle connesioni?
Quante ne hai fatte?

Ma mi spiegate in cosa consiste questo bug, in quali condizioni si verifica e come aggirarlo?

Janos:
Ma mi spiegate in cosa consiste questo bug, in quali condizioni si verifica e come aggirarlo?

Se lo si sapesse avrebbero già pachato la libreria. :roll_eyes: :sweat_smile:

Sto leggendo che pare ci sia un rimedio HW/SW.
Sembra che il tutto derivi da come il chip w510 gestisce il pin MISO.
http://john.crouchley.com/blog/archives/662

Può aiutarvi?

pablos:
Naaa ... si freeza prima di 2 settimane, non sono i giorni che contano, ma il numero di connessioni (con relative quantità di dati), che cosa fai in queste connessioni e da dove le fai.

Ho caricato lo sketch di esempio (.177 finale), quindi Arduino era raggiungibile solo dalla mia rete.
Le prove le ho fatte sempre solo dal mio PC.
Sempre Win XP + Firefox.
Una connessione al giorno (avvolte salto qualche giorno.

leo72:
Sto leggendo che pare ci sia un rimedio HW/SW.
Sembra che il tutto derivi da come il chip w510 gestisce il pin MISO.
MISO and Arduino Ethernet Shields « John's Ramblings

Può aiutarvi?

Nello schema della Ethernet Shield R3 c'è già un qualcosa di simile, in basso a destra --> http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf

leo72:
Sto leggendo che pare ci sia un rimedio HW/SW.
Sembra che il tutto derivi da come il chip w510 gestisce il pin MISO.
http://john.crouchley.com/blog/archives/662

John Crouchley parla di impossibilita' di usare altre periferiche SPI in abbinamento alle shield che usano WizNet5100 e ENC28J60. (Problema a me sconosciuto, mai riscontrato)

In questo thread stiamo parlando del problema che affligge solo le schede basate su WizNet5100, che smettono di funzionare.

PaoloP:
Nello schema della Ethernet Shield R3 c'è già un qualcosa di simile, in basso a destra --> http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf

L'articolo che ho citato parla di linea MISO, nello schema che hai linkato fanno vedere che gestiscono tutti gli altri ma non questo segnale.

leo72:
L'articolo che ho citato parla di linea MISO, nello schema che hai linkato fanno vedere che gestiscono tutti gli altri ma non questo segnale.

Si Leo, parla di quel segnale (MISO) ma risolve il problema della sua mancanza del tri-state tramite il controllo di un'altro pin, il SEN (... che abilita o disabilita la SPI) e, tramite un inverter, lo controlla con lo stesso segnale del CS :wink:

Guglielmo

P.S. : Nel .pdf http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf in basso a sinistra :slight_smile:

gpb01:
Si Leo, parla di quel segnale (MISO) ma risolve il problema della sua mancanza del tri-state tramite il controllo di un'altro pin, il SEN (... che abilita o disabilita la SPI) e, tramite un inverter, lo controlla con lo stesso segnale del CS :wink:

Guglielmo

P.S. : Nel .pdf http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf in basso a sinistra :slight_smile:

Ah. Ok.
Ma lo "risolve" oppure no? Dai commenti che si continuano a leggere non parrebbe XD

Generamente in quanto tempo si presenta? E comunque, se fosse così, il problema si porrebbe solo se si usa anche la scheda SD, giusto?