(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« on: August 25, 2011, 12:37:21 pm » |
Ciao a tutti! Io ho un Arduino Ethernet con SD card. Sto facendo alcune prove di scrittura ma non riesco. Vi posto il codice: void LoadConfig() { // Inizializzo microSD if (!SD.begin(4)) { Log("Impossibile inizializzare la microSD"); return; } if(!SD.exists("File.cfg")) { Log("Salvo valori nella microSD"); File f = SD.open("File.cfg", FILE_WRITE); // Se riesco ad utilizzare il file if(f) { // Salvo valori f.println("prova"); // Chiudo il file f.close(); } else { Log("Impossibile salvare i valori nella microSD"); return; } } }
La microSD la inizializza ma non riesce ad aprire il file. Ho impostato i piedini nel seguente modo: pinMode(10, OUTPUT);
Vi ringrazio.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #1 on: August 25, 2011, 01:25:44 pm » |
schema del circuito?
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #2 on: August 25, 2011, 01:26:47 pm » |
Ho un arduino Ethernet, non ho collegato niente... ho sbagliato?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #3 on: August 25, 2011, 01:32:13 pm » |
non vorrei dire boiate, ma mi pare che non sia utilizzabile dall'arduino. Dovresti identificare il modello dal tuo ethernet shield e cercare un po' sul forum. comunque se non erro le SD si possono usare anche con dei collegamenti minimi, ma non so se va in conflitto con l'ethernet
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #4 on: August 25, 2011, 01:46:25 pm » |
Ma io non ho ethernet shield, almeno se ho capito bene la shield sono i moduli aggiuntivi da attaccarci sopra no? Io ho questa scheda http://arduino.cc/en/Main/ArduinoBoardEthernet e mi sono bastato su quello che c'è scritto in questa pagina: The onboard microSD card reader is accessible through the SD Library. When working with this library, SS is on Pin 4.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3927
Arduino rocks
|
 |
« Reply #5 on: August 25, 2011, 01:54:00 pm » |
ma nel setup hai dichiarato anche il pin 4 ? perche' vedo che tu hai messo solo il pin10
cmq e' la nuova scheda ufficiale che comprende sia il 328 che l'ethernet, che la sd non ho mai fatto prove ma dovrebbe funzionare. credo l'abbiano in pochi ancora quella scheda, spero ti aiutino altri, altrimenti vedo di leggere qualcosa in merito
|
|
|
|
« Last Edit: August 25, 2011, 01:59:02 pm by Testato »
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #6 on: August 25, 2011, 02:24:37 pm » |
ah ho fatto confusione io, non ho letto bene e come dice testato le board sono molto recenti, quindi non ci ho pensato. da quanto leggo negli esempi: // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. quindi normalmente SS è sul pin 10, mentre in quella nuova è sul 4 When working with this library, SS is on Pin 4. Quindi dovrai dichiarare il pin 4 come output al posto del 10, e usare un altro pin come CS
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #7 on: August 25, 2011, 04:28:51 pm » |
Ma devo fare qualche collegamento? Ora il mio codice è così: pinMode(4, OUTPUT);
if (!SD.begin(10)) { Log("Impossibile inizializzare la microSD - caricati valori di default"); return; }
Ma non riesce ancora ad inizializzare la SD  Grazie dell'aiuto 
|
|
|
|
|
Logged
|
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #8 on: August 25, 2011, 04:33:38 pm » |
Ciao in realtà non è proprio così: il PIN di CS (chip select) serve quando hai più dispositivi SPI slave ad indicare con quale dispositivo vuoi "parlare". Normalmente la SPI di arduino utilizza il PIN 10 con tale funzionalità, il problema è che su ethernet shield (o in quello integrato) SIA il modulo ethernet SIA la SD sono sullo stesso bus SPI, quindi devono avere due piedini di CS diversi, ecco perché hanno messo il CS della SD sul PIN 4. la nota indica che comunque - anche se usi un pin diverso dal 10 per CS - devi definire il 10 output perché la libreria SD funzioni. Tornando a D4nger92: se non ti fallisce l'inizializzazione, significa che arduino riesce a parlare con la SD... il problema dell'apertura del file è quindi causato da qualcos'altro. Prova come prima cosa ad eseguire il semplice sketch di diagnostica della SD e vedi se è tutto ok (tipo, dimensioni...): http://arduino.cc/en/Tutorial/CardInfofacci sapere!
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3927
Arduino rocks
|
 |
« Reply #9 on: August 25, 2011, 04:38:55 pm » |
infatti io avevo scritto di aggiungere il pin4 nel setup, non ti sostituirlo al 10 
|
|
|
|
|
Logged
|
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #10 on: August 25, 2011, 04:44:11 pm » |
si si io prendevo spunto dalla risposta di lesto...  non è comunque necessario definire il pinMode del PIN4, ci pensa la libreria a farlo... la nota dice che se non usi il PIN 10 come CS (e quindi la libreria non lo mette a output) comunque lo devi fare tu a mano altrimenti non funziona la periferica SPI. bye
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #11 on: August 25, 2011, 04:44:55 pm » |
Ho fatto altre prove: ora il codice è così: // Impostazioni piedini OUTPUT pinMode(4, OUTPUT); pinMode(10, OUTPUT); pinMode(_LED9OUT, OUTPUT);
// Inizializzo microSD if (!SD.begin(10)) { Log("Impossibile inizializzare la microSD - caricati valori di default"); return; }
ma niente solito errore: "Impossibile inizializzare la microSD - caricati valori di default" Ho provato anche con lo sketch di diagnostica sia con CS = 4 sia con CS = 10 Mi dice: Serial.println("initialization failed. Things to check:"); Serial.println("* is a card is inserted?"); Serial.println("* Is your wiring correct?"); Serial.println("* did you change the chipSelect pin to match your shield or module?");
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #12 on: August 25, 2011, 04:53:29 pm » |
Ho provato a cambiare microSD! Ora mi dà errore nel momento in cui prova a scivere il file ma non sul begin della SD! E' stranissimo...
EDIT: Ho riformattato la micro con master boot record e fat, ora dà errore sul salvataggio del file. Perchè devo settare il pin10 com out? Sulla mia scheda è segnato come ethcs.
|
|
|
|
« Last Edit: August 25, 2011, 04:57:16 pm by D4ng3R92 »
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #13 on: August 25, 2011, 05:23:34 pm » |
Terzo post ed ora mi uccidete... Ho trovato il problema = nome del file troppo lungo -.-'' Maledetto FAT Grazie del supporto 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3927
Arduino rocks
|
 |
« Reply #14 on: August 25, 2011, 05:52:49 pm » |
Grazie a te del feedback
|
|
|
|
|
Logged
|
|
|
|
|
|