Go Down

Topic: Ethernet Shield mi blocca tutto ! (Read 10174 times) previous topic - next topic

acik

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 ?

pablos

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
no comment

acik

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 ?

Janos

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

pablos

Quote
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.
no comment

PaoloP


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

Janos

Quindi il bug era software, non hardware, giusto? E comunque è stato risolto, giusto?  :smiley-roll-sweat:

pablos

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

Code: [Select]
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;
    }
  }
no comment

acik

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.




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.

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

Janos

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

PaoloP


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.  :smiley-roll: :smiley-sweat:

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

Può aiutarvi?

acik


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.


PaoloP


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?


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

Go Up