Arduino Due + Ethernet Shield + SD Card + CTE_DUE shield

Ciao a tutti,

vorrei chiedere come fare a configurare il quattro componenti indicati nel titolo del report.

Il mio progetto utilizza un DUE ed un display Touch da 5' pollici attraverso la CTE_DUE shield.
Inoltre utilizza la Ethernet Shield per leggere i dati da una periferica remota.

I comandi per configurare il display sono i seguenti:

UTFT myGLCD(TFT01_50,25,26,27,28);
UTouch myTouch(6, 5, 4, 3, 2);

e finora è andato tutto bene.

Ora vorrei utilizzare una scheda SD e si sta presentando il problema:

  • prima di tutto ho lo slot per la SD sia sulla Ethernet shield che sulla CTE. Ma sulla CTE il ponticello 8 è aperto, pertanto poichè lo slot della CTE è disattivato, ho inserito la SD nello slot della Ethernet shield. Così se utilizzo l'intero sistema con la sd inserita la scheda ethernet non riesce a prendere l'indirizzo IP; se invece utilizzo lo sketch di esempio della libreria SD.h ReadWrite ottengo il messaggio di errore "initialization failed!". Credo che tutto ruoti intorno al pin 4 che presumo venga utilizzato sia dalla SD card che dalla CTE shield ma non so come risolvere.

  • inoltre ho letto su alcuni post che dovrei anche mettere il pin 10 ad HIGH per poter alimentare la scheda SD, ma prima di farlo vorrei essere sicuro di non fare danni.

Spero di aver spiegato bene e che possiate darmi un aiuto.

Grazie
Enzo

ho letto su alcuni post che dovrei anche mettere il pin 10 ad HIGH per poter alimentare la scheda SD, ma prima di farlo vorrei essere sicuro di non fare danni.

Il pin 10 non alimenta la scheda è un pin di enable e disable a leggere e scrivere sul bus SPI, sulla DUE le regole sono un po' diverse, se attivi il 4 e il 10 in output semplicemente non funziona più ne ethernet ne SD

In realtà, inserendo la sd card non funziona nè l'una nè l'altra, anche senza alzare il pin 10.
Al momento sembra che, se si vuole evitare di mettere mani alla libreria ethernet o alla libreria Utouch per cambiare il pin 4, è necessario usare la sd della CTE shield:

per farlo è necessario chiudere il ponticello JP8 sulla CTE DUE shield. Questo abilita lo slot della SD card presente sulla CTE ed a questo punto è possibile far funzionare correttamente lo sketch ReadWrite della libreria SD ufficiale.

L'unico accorgimento è quello di usare come SD_PIN il 53 invece del 4 e tutto funziona correttamente.

Io uso la DUE con SD e ethernet, non trovo i problemi che dici, si può vedere il programma che carichi?

Ciao a tutti

Ho un piccolo problema relativo all'utilizzo dello SPI su Arduino DUE, analogo a quello che si è presentato a voi, anche se un pò di tempo fa....spero nel frattempo abbiate risolto........

Il progetto su cui sto lavorando ormai da tempo (finora senza problemi o risolti leggendo questo forum) prevede l'utilizzo di:

  1. Arduino DUE
  2. display TFT tipo https://www.sainsmart.com/products/5-tft-lcd-for-arduino-due-mega2560-r3-raspberry-pi (gestito con la suite di librerie UTFT)
  3. un modulo RC522 RFID per la lettura / scrittura di card RFID (gestito con le librerie MFRC522)
  4. un modulo SD card (gestito con le librerie SdFat e UTFT; uso la comodissima funzione int UTFT_tinyFAT::loadBitmap(int x, int y, int sx, int sy, int iDelayMS, String filename), che mi consente, molto semplicemente, di caricare ciclicamente a video delle immagini .raw nel loop di Arduino).

Ho usato il bus SPI per la scheda RfId (con CS=10) e per la scheda SD (con CS=4); nessun tipo di problema e nessun accorgimento particolare per la condivisione dello SPI da parte delle due periferiche: nel loop, sequenzialmente carico una immagine prelevata dalla SD, la visualizzo sul TFT, verifico la presenza di una scheda RFID e, in caso positivo gestisco la lettura / scrittura di valori sulla stessa RfId e sulla SD, ripeto il loop. Tutto perfettamente funzionante e regolare.

Ora vorrei usare la scheda SD presente sul TFT: pur seguendo tutte le istruzioni (come indicato, ho usato il pin 53 del Due come CS per la SD), non c'è verso di far funzionare contemporaneamente le due periferiche, ma funzionano solo singolarmente: se lascio inserita la SD nel modulo, parte il ciclo di visualizzazioni dei file .raw, ma non viene rilevata la presenza di una card RfId; se estraggo la scheda SD, ovviamente non legge più i file .raw ma viene correttamente rilevata la presenza di una scheda RfId; sembra come se per il bus SPI, usando l'SD presente sul TFT, non viene automaticamente gestito lo sharing come per la scheda SD esterna.

Ho letto sul forum che forse dotrebbero essere usate le transaction delle API (vedi articolo https://www.arduino.cc/en/Tutorial/SPITransaction): avete qualche utile notizia in merito?

Grazie a chiunque mi fornirà qualche informazione.
Franco