Pages: [1] 2   Go Down
Author Topic: Scrivere su SD card  (Read 1450 times)
0 Members and 1 Guest are viewing this topic.
(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!
Io ho un Arduino Ethernet con SD card.
Sto facendo alcune prove di scrittura ma non riesco. Vi posto il codice:

Code:
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:

Code:
pinMode(10, OUTPUT);

Vi ringrazio.
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

schema del circuito?
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho un arduino Ethernet, non ho collegato niente... ho sbagliato?
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Quote
The onboard microSD card reader is accessible through the SD Library. When working with this library, SS is on Pin 4.
Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5790
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Quote
// 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

Quote
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

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma devo fare qualche collegamento?
Ora il mio codice è così:

Code:
pinMode(4, OUTPUT);

Code:
if (!SD.begin(10)) {
    Log("Impossibile inizializzare la microSD - caricati valori di default");
    return;
  }

Ma non riesce ancora ad inizializzare la SD smiley-sad

Grazie dell'aiuto smiley

Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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/CardInfo

facci sapere!
Logged

lucadentella.it

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5790
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

infatti io avevo scritto di aggiungere il pin4 nel setup, non ti sostituirlo al 10 smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

si si io prendevo spunto dalla risposta di lesto...  smiley
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

lucadentella.it

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho fatto altre prove:
ora il codice è così:

Code:
// 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:
Code:
   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?");

smiley-sad smiley-sad smiley-sad
Logged

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Terzo post ed ora mi uccidete...
Ho trovato il problema = nome del file troppo lungo -.-''
Maledetto FAT

Grazie del supporto smiley
Logged

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5790
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie a te del feedback
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Pages: [1] 2   Go Up
Jump to: