Pages: [1]   Go Down
Author Topic: Software-Probleme mit SD-Card  (Read 290 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin Forum,

meine Sd-Card ärgert mich wieder!
Hatte kürzlich schon ein Problem mit dem SD-Shield von LC Studio gepostet, wobei es da ein -mittlerweile gelöstes- Hardware-Problem war.
Das Shield läuft eigentlich Problemlos... denke ich...

Zumindest läuft der SDInfo-Sketch sauber durch... leider nur wenn die Karte leer ist!
Sobald ich auch nur eine Datei auf der Karte habe geht der SDInfo-Sketch in einen dauerhaften setup()-loop und gibt ein Paar kryptische Zeichen aus.

Das Phänomen kenne ich sonst nur wenn der RAM voll ist (oder von unpassender Baud-Rate), aber der SDInfo-Sketch macht doch den RAM nicht voll, oder?

Bin gespannt auf eure Lösungsideen...

Taurus
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Poste uns bitte den SDInfo Sketch.
Hast Du einen Arduino MEGA? Macht der die gleichen SD-Probleme?
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der Sketch ist der Beispiel-Sketch aus der Arduino-IDE "CardInfo.ino"

Code:
// include the SD library:
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 10;   

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

  Serial.print("\nInitializing SD card...");
  pinMode(10, OUTPUT);     // change this to 53 on a mega

  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    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?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
 
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
 
  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);
 
  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}

Hab es bislang nur mit dem UNO probiert, mit dem MEGA probiere ich es morgen und berichte es euch dann.

Taurus
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So... sorry für die Verspätung, Weihnachten hat mich dann doch mehr in Beschlag genommen als erwartet... (also so wie jedes Jahr  smiley-roll-blue)

Mit dem MEGA 2560 läuft der SDInfo-Sketch sauber durch und hängt sich auch nicht auf wenn Dateien auf der SD-Karte sind.

Bevor jetzt einer sagt es liegt tatsächlich am Arbeitsspeicher... das würde bedeuten das niemand mit einem Arduino UNO eine SD-Karte nutzen kann  smiley-kitty
Allerdings wäre das ja wohl eine ziemlich sinnfreie Aussage!

Ich bin gespannt was ihr sagt...

Taurus
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Denkfehler: Das würde lediglich bedeuten, dass der SDInfo-Sketch auf dem Uno nicht läuft.
Logged


Offline Offline
Faraday Member
**
Karma: 105
Posts: 3619
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bevor jetzt einer sagt es liegt tatsächlich am Arbeitsspeicher... das würde bedeuten das niemand mit einem Arduino UNO eine SD-Karte nutzen kann
Kann man schon wenn man schonend damit umgeht. Die Strings landen alle im RAM! Wenn man daher riesige Text ausgibt, geht das schnell zu Ende.

Kann man umgehen wenn man die Strings mit dem F-Makro ins Flash schreibt:
Serial.println(F("Dies ist ein Text im Flash"));
Logged

Pages: [1]   Go Up
Jump to: