Probleme Micro SD Shield von Sparkfun

Hallo Leute,

scheinbar ist irgendwo ein Wackelkontakt an meinem Aufbau und ich weiß nicht wo. Die Lötstellen habe ich alle nochmal überprüft und auch teilweise nachgelötet, aber ab und an schreibt er mir die Werte auf die mirco-SD und dann wieder nicht. Das Problem ist, ich kann den Fehler nicht reproduzieren und somit nicht lokalisieren.

Ich habe ein Headerkit an das shield gelötet, welches ich in mein Arduino Uno gesteckt habe (das eine Ferndiagnose der Lötstellen nicht möglich ist, ist mir klar ;) ).

Als Beispiel lasse ich diesen offiziellen Code von Arduino: http://arduino.cc/en/Tutorial/Datalogger durchlaufen bzw auch meinen eigenen der sich auf den Arduino-Code aufbaut. Das Ergebnis ist dasselbe.

Kurzes Beispiel des serialmonitors, wenn ich den offiziellen Code durchlaufen lasse: error opening datalog.txt error opening datalog.txt 498,505,609 501,507,608 499,508,608 error opening datalog.txt 500,507,609

Wie gesagt ich gehe von einem Wackelkontakt aus (obwohl die Power-LED am Board stets an ist), kann mir jemand empfehlen wie ich das am besten teste? Klar Spannung messen, aber da ich kein Elektrotechniker oder IT'ler bin und mir momentan alles selber beibringe, weiß ich nicht genau an welche Pins ich muss.

Könnte es noch eine andere Möglichkeit geben warum dieser Fehler auftritt (abgesehen vom Wackelkontakt)? Habe eine neue MicroSD-Karte gekauft und getestet, daran liegts nicht.

Bitte Deinen gesamten Sketch. Grüße Uwe

Hallo! Setz mal ChipSelect auf Pin 8 . mfg Martin

Hallo

es scheint wohl zu funktionieren seitdem ich auf Pin8 gegangen bin. Habe jetzt mal eine Radtour gemacht und am PC etwas rumgespielt und bisher ist kein Fehler mehr aufgetreten. Vielen Dank für den Tipp.
Mich würde aber interessieren woran das liegt. Habe ich den 4er Pin nicht sauber verlötet oder gibt es an sich Probeleme mit Pin4?

Dankeschön :slight_smile:

Zur Vollständigkeit hier noch den Code welchen ich von Arduino verwendet habe:

/*
  SD card datalogger
 
 This example shows how to log data from three analog sensors
 to an SD card using the SD library.
   
 The circuit:
 * analog sensors on analog ins 0, 1, and 2
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 created  24 Nov 2010
 modified 9 Apr 2012
 by Tom Igoe
 
 This example code is in the public domain.
     
 */

#include <SD.h>

// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 4;

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...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it:
  pinMode(10, OUTPUT);
 
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop()
{
  // make a string for assembling the data to log:
  String dataString = "";

  // read three sensors and append to the string:
  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ",";
    }
  }

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

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }  
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}

es scheint wohl zu funktionieren seitdem ich auf Pin8 gegangen bin. Habe jetzt mal eine Radtour gemacht und am PC etwas rumgespielt und bisher ist kein Fehler mehr aufgetreten. Vielen Dank für den Tipp. Mich würde aber interessieren woran das liegt. Habe ich den 4er Pin nicht sauber verlötet oder gibt es an sich Probeleme mit Pin4?

Nein, aber beim Micro SD Shield von Sparkfun ist der CS pin eben nicht auf der 4 wie bei vielen anderen SD-Kartenlesern, sondern auf der 8. Ich gehe mal davon aus, dass Du für die erste Version das Shield nicht selbst (hardwaremässig) verändert hast. Somit funktioniert's nur mit der 8, weil nur dort ein Signal anliegt bzw. abgenommen wird.