Ciao a tutti,
è ormai troppo tempo che rifletto su un problema che non mi permette di inizializzare una scheda SD: se uso il codice di cardinfo tutto funziona perfettamente, cambio il pin del chipselect e anche il default cs della mia scheda( una mega) su 53, compila, upload: Inizializza, mi dice SDHC2, sbaglia le dimensioni della memoria ma fa la lista dei file( uno) e ritorna la dimensione corretta...
Initializing SD card...Wiring is correct and a card is present.
Card type: SDHC
Volume type is FAT32
Volume size (bytes): -294649856
Volume size (Kbytes): -287744
Volume size (Mbytes): -281
Files found on the card (name, date and size in bytes):
SETFILE.TXT 2012-01-15 22:02:40 65
Provo a scrivere il mio bel file, utilizzo SD.begin(53); e non funziona, faccio una serie infinita di prove e nulla. Allora penso, proviamo il codice del read-write o del dumpfile allegato, risultato: nulla!!! Rimane fermo come un ebete, tutto questo è quello che mi stampa con entrambi quei codici:
Initializing SD card...
Ho letto su internet di un bug del codice della SD, in cui si deve dare 1 al pin CS della spi della scheda, quindi ho provato, ma nisba! Minime idee sul come far funzionare (o capire perché non funziona) questa maledetta scheda SD? Non sarà mica la SD( di classe 4 da 4GB)? Non utilizzo schield di nessun tipo, solo un convertitore 5v0=>3v3. Il cablaggio è corretto altrimenti cardinfo.pde non mi rileverebbe nulla... Qualche idea? Spero di non dover andare al manicomio:) .Grazie mille,
Pentium
ciao
Dici poco su quello che hai, la sd è una shield montata su una mega?
Hai provato con una sd da 2 gb?
invece del pin 53 hai provato i pin 4 e 10?
hai provato a usare un altra libreria?
Versione del compilatore?
#include <SdFat.h>
#include <SdFatUtil.h>
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
------------------------------ setup() -----------------------------------------
pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)
digitalWrite(10, HIGH); // but turn off the W5100 chip!
card.init(SPI_FULL_SPEED, 4);
volume.init(&card);
root.openRoot(&volume);
questo sulla mia mega funziona
ciao
Nessuna shield comprata, il CS è fisicamente sul pin 53, comunque nonostante ciò ho provato con entrambi adesso.
Altra libreria? Praticamente la libreria sd di arduino è basata su sdfat.
Il compilatore è aggiornato all' ultima versione. Cardinfo, che utilizza le funzioni originali di sdfatlib funziona, quindi forse c'è qualche problema in nel begin( dove si blocca tutto il codice) di "SD.begin()"
infatti: in quello che ti ho postato January 18, 2012, 01:12:25 vedi un SD.begin()?
No, certamente! La funzione begin() non è altro che l' unione di quelle tre, è questa la cosa che non riesco completamente a capire: guardando il codice della funzione dovrebbe andare tutto liscio, ma al contrario non funziona un bel niente( con la SD.begin). Sto spulciando il codice di read() della libreria SD di arduino, ma non sono abbastanza ferrato per capire bene come funzioni tutto il meccanismo per leggere un file da sd...