Ethernet shield e SD

Sto gestendo una comunicazione ModbusTCP e questo mi porta ad usare massivamente e continuamente la comunicazione Ethernet (sto utilizzando Arduino UNO + Ethernet Shield). Perché se inserisco a SD, senza nemmeno includere la libreria della SD ne usarla ne niente mi si blocca la comunicazione ethernet? Questo non succede se diminuisco la velocità delle richieste sul Modbus.... Colpa della SPI condivisa?

P.S. Ho letto a giro che il W5100 ha bug hardware... E' vero? E in cosa consistono?

La SD si trova sullo shiedld eth?
Non so comè il tuo hardware, Quanti shield hai, il modbus è uno shield?

L'SPI condiviso tra sd ed w5100 non è un problema, se ci sono altri shield dovresti vedere quali sono i pin che li pilotano

Il modbus non è un qualcosa di hardware, è un protocollo di comunicazione, il quale può viaggiare su seriale (232/485) o su TCP, quindi ho solo Arduino uno + Ethernet shield.

Si lo so che è un protocollo, ma pensavo avessi qualche shield di conversione 232/485 montato sopra, magari pilotato da SPI, non conosco tutte le schede del mondo :slight_smile: .
Detto ciò non c'e' nessun bug dall'usare eth e sd nello stesso sketch, come potrei da web prelevare un file da SD da 150k ed averlo in pochi ms? (mi sembra un impiego massivo di entrambe le periferiche insieme)
L'unica cosa devi verificare che il tuo sketch non utilizzi i pin 4-10-11-12-13, un uso di questi pin può causare problemi.

Se sd e eth insieme danno problemi andrebbe rivisto lo sketch,

Perché se inserisco la SD,

comunque non è consigliato ne inserire ne estrarre la SD mentre lo sketch è in esecuzione.

Per il resto con questo info è il massimo che posso dirti

ciao

Il problema me lo fa anche se accendo l'Arduino con la SD già inserita. Comunque forse non mi sono spiegato: l'unica cosa che fa questo arduino è comunicare via ethernet, nessun pin utilizzato (a parte quelli per la ethernet shield) ne utilizzo la SD, tant'è che non ho neppure incluso la libreria... Non c'è una digitalWrite o una pinMode in tutto lo sketch...

Per uso massivo intendo che le variabili girano sul Modbus, fra andata e ritorno (ovvero il tempo di spedire una variabile e vedermela tornare indietro), in 80ms e considera che in questo tempo ne spedisco 100 e ne ricevo 100 (a 16 bit). Finche la SD non è inserita viaggia che è una meraviglia, come la reinserisco smette di funzionare, la estraggo e riparte...

Setta il pin 4, non ricordo se HIGH o LOW, in modo da escludere la SD dal bus SPI.

 pinMode(4, OUTPUT);       // Set the SDcard CS pin as an output
  digitalWrite(4, 1); 	// Turn off the SD card! (wait for configuration)

Non c'è una digitalWrite o una pinMode in tutto lo sketch...

Non ha importanza, lo shield si accorde quando c'è la sheda sd commutando il pin, forse essendo flottante e non fissato può causare problemi
prova così come dice Paolo

Funziona... :smiley: Siete mitici...

Per quanto riguarda le storie che ho sentito sui bug hardware del W5100?