INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Lib für SPI-SD-Karten
10.02.2015, 17:11
Beitrag #1
Lib für SPI-SD-Karten
hallo,
welche Lib sollte man eurer Erfahrung nach für SPI-SD-Karten verwenden?

ich habe z.B. diese gefunden für den Due
https://github.com/adafruit/SD

allerdings wäre mir eine SPI-lib lieber, die sowohl mit Mega als auch mit Due in gleicher Weise funktioniert - oder wozu würdet ihr mir raten?

Als Karten-Platine habe ich jetzt diese hier gerade bekommen (1 ist für einen Due, die andere für einen Mega gedacht):

http://www.ebay.de/itm/121504811655?ru=h...26_rdc%3D1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2015, 09:35
Beitrag #2
RE: Lib für SPI-SD-Karten
Moin,
Zitat:ich habe z.B. diese gefunden für den Due https://github.com/adafruit/SD
öhm, warum nimmst du nicht die Standardlib wie hier: http://arduino.cc/en/pmwiki.php?n=Reference/SD beschrieben. Die bindet SPI ein.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2015, 09:37 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2015 09:37 von tito-t.)
Beitrag #3
RE: Lib für SPI-SD-Karten
SD ist schon integriert und eine SD lib müsste schon im Programmordner sein, eine Beschreibung ist hier:
http://arduino.cc/en/pmwiki.php?n=Reference/SD

hoffentlich klappt es mit den China-Teilen!


uups - das war zeitgleich mit Ricardo ! Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2015, 12:08
Beitrag #4
RE: Lib für SPI-SD-Karten
Aiaiai... völlig übersehen...
danke euch, probier ich später gleich aus!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.02.2015, 20:03 (Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2015 20:40 von HaWe.)
Beitrag #5
RE: Lib für SPI-SD-Karten
hallo,
wie fast zu werwarten funktioniert es natürlich auf Anhieb NICHT.

[Bild: $_57.JPG]

Als Spannungsversorgung habe ich die 5V Pins von SDCard und Mega verbunden (3.3V ist nicht verbunden) - ist das korrekt?

Im Sketch sind definiert
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

da ich auf einem Mega arbeite, habe ich für 11,12,13 die entsprechenden Pins 50-52 auf dem SPI-Header verwendet.
CS habe ich auf 4 gelassen -> Initialization failed
dann auf 53 -> Initialization failed

Muss ich gesondert irgendwo 50-52 statt 11-13 einstellen?
dann:
Wo muss ich CS Pin 4 oder 53 für den Mega konfigurieren?

Ich verstehe auch nicht ganz, was in dem Sketch genau gemeint ist mit der Aussage über Pin 10 als Output - wofür?
für Pin10 sehe ich keine Verbindung mit der SD-Card, wofür ist das also?

Code:
Serial.print("Initializing SD card...");
  // 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.
  
  pinMode(10, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }

hier ist der komplette Beispiel Sketch aus Arduino -> libraries -> SD

wer kann mir hiebei helfen?


Code:
/*  SD card read/write

This example shows how to read and write data to and from an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

created   Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/

#include <SPI.h>
#include <SD.h>

File myFile;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // 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.
  pinMode(10, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
  // nothing happens after setup
}

update:

das seltsame ist:
wenn ich die SDcard beim Start drinnen lasse, bekomme ich den ini-Fehler.
Auch wenn ich dann neu resette, bleibt der ini-Fehler.

wenn ich sie aber rausnehme, neu einstecke, dann nochmal neu resette, dann geht es !

Was ist das denn??

die jetzige Konfiguration hat CS=4 verwendet.

- Unklar ist mir aber auch immer noch der Pin 10.
- Und warum funktioniert es nur nach rausnehmen und wieder einstecken und wieder resetten?
- Wie kann man erreichen, dass die SD Card dauerhaft eingesteckt bleiben kann?

Wer kann das Rätsel lösen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.02.2015, 23:05
Beitrag #6
RE: Lib für SPI-SD-Karten
Hi,

ohne es genau angeschaut zu haben tippe ich jetzt mal darauf, dass Du eine Fat32-formatierte SD-Karte hast. Die Library - meine ich zumindest - kann nur Fat (16).

Als ich neulich ein SD-Modul angeschlossen habe (optisch dasselbe wie deines) habe ich dieses am Mega mit den Ports wie von Dir beschrieben konfiguriert.
Ging natürlich auch nicht ;-)
Die Lösung war dann eine SD-Karte mit weniger als 4 GB weil die dann (zumindest die, die ich genommen habe) Fat-Formatiert war.

Du hast da aber mit Windows-Bordmitteln keine Chance was anderes auszuwählen oder die SD-Karte zu Partitionieren. Ich habe mir (für einen anderen Zweck) ein Tool heruntergeladen das auch SD-Karten Partitionieren und in anderen Formaten formatieren kann. Das Problem dabei ist, dass Du "regulär" nur die erste Partition siehst - also würde Dir der restliche Speicherplatz verloren gehen. Aber für einen ersten Test wäre sicherlich auch das eine Lösung.

Gruss Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2015, 10:12 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2015 10:21 von HaWe.)
Beitrag #7
RE: Lib für SPI-SD-Karten
hallo,
ich habe ein SD-Format-Tool verwendet (SDFormatterv4), das für Arduino empfohlen wird.

Das Phänomen ist ja:
erst habe ich den init-error
nach herausnehmen, wieder einstecken und Programm-reset funktioniert es!
Das File wird einwandfrei geschrieben!
Starte ich es dann sofort wieder neu (neuer Reset) geht wieder nichts!
nach erneutem herausnehmen, wieder einstecken und erneutem Programm-reset funktioniert es wieder!

Das File wird dann aber dann nach den zusätzlichen rein/raus/reset-Aktionen anschließend völlig korrekt geschrieben und auch wieder völlig korrekt gelesen. Grundsätzlich funktioniert es also unter gewissen Vorbedingungen.

Aber es wird demnach die SD-Karte nicht immer auf Anhieb gleich richtig erkannt vom Arduino-Programm. Ich vermute, man muss die Kartenerkennung bzw. -Initialisierung daher irgendwie im Beispiel-Programm irgendwie ändern.
Aber wie ???


Das 2. Problem ist der seltsame genannte Pin 10 - wofür ist der?
Ist die Lib villeicht für ein Board geschrieben, wo auch der Pin 10 gebraucht wird? Villeicht sogar um genau diesen Fehler zu beheben? Meine SD-Karte hat aber nur die Pins für Vc,GND, MISO, MOSI, SCK und CS, keinen weiteren. Einen Sinn oder Zweck für einen Pin 10 sehe ich also nicht, wie er oben im Programm benutzt wird.
Was soll ich also machen ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2015, 11:20
Beitrag #8
RE: Lib für SPI-SD-Karten
Hi,
z.B. das Ethernet Shield hat SD on board und benutzt Pin 10 als CS. Siehe auch hier: http://arduino.cc/en/Reference/SDCardNotes.
Ich weiss aber auch nicht, warum Pin 10 ansonsten unbedingt OUTPUT sein muss.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  SD-Karten-Shield über I2C ansteuern? alpenpower 4 1.069 21.07.2015 06:43
Letzter Beitrag: alpenpower

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste