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
Arduino Due SD-Karte wird nicht erkannt
09.07.2015, 09:33
Beitrag #1
Arduino Due SD-Karte wird nicht erkannt
Normal müsste man doch mit dem Due auch auf eine SD-Karte schreiben können?
Die Library SD erkennt aber nicht mal die Karte. Mit dem gleichen Shield und mit der gleichen Karte funktioniert das aber mit dem Arduino Mega prima.
Den korrekten Pin 53 habe ich natürlich auch ausgewählt.
Schield ist das TFT/LCD Arduino Mega Shield v2.2. Der Kartenleser ist am LCD.

An was kann das liegen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.07.2015, 09:40
Beitrag #2
RE: Arduino Due SD-Karte wird nicht erkannt
Wo hast du denn die Bibliothek her und weißt du auch ob sie mit dem Due kompatibel ist?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.07.2015, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 10:03 von HaWe.)
Beitrag #3
RE: Arduino Due SD-Karte wird nicht erkannt
probier mal mein Testprogramm,
es funktioniert problemlos mit dieser Art SD-Boards auf Due und Mega
http://www.mindstormsforum.de/viewtopic....429#p66429
mit diesem Code - wenn es damit nicht klappt, liegts an deinen SD-Boards.
Code:
/*
SD card: fprintf_() und fgets_()
ver 1.01
*/


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



// SD Card
#define SD_CSpin 38  //  <<<<<<<<<<<<<<<<<<<<<< adjust !!

File myFile;
char fname[64];

char sdata[128];
char sbuf[128];



int32_t fprintf_ ( File * stream, const char fmtstr[], ... ) {
   char      str[1024];
   va_list   args;
   int32_t   num;
  
   va_start( args, fmtstr );
   num = vsnprintf(str, sizeof(str), fmtstr, args);
   stream->print(str);
   va_end( args );

   return num;
}




char * fgets_ ( char * str, int32_t num, File * stream ) {
  int32_t i = 0;

  strcpy(str, "");
  while ( (stream->available()) && (i < num-1) ) {
    int16_t ch = stream->read();
    if (ch < 0)     // end of file
      break;
    str[i++] = ch;
    if ('\n' == ch) // end of line
      break;
  }

  if (i) {          // room in buffer for terminating null
    str[i] = 0;
    return str;
  }
  else
  // return NULL;                  // buffer too small or immediate end of file
  { strcpy(str, ""); return str; } // alternative: return ""
}





void setup()
{
  int16_t  p, i, cnt;
  float    x;
  char     sval[20];
  int16_t  ival;
  double   fval;

  pinMode(SD_CSpin, OUTPUT);
  Serial.begin(115200);
  
  sprintf(sbuf,"#: SD Initializing... ");
  Serial.println(sbuf);

  while(!SD.begin(SD_CSpin) ) {
    sprintf(sbuf,"#: ...SD init failed ");
    Serial.println(sbuf);
    delay(1000);
  }

  sprintf(sbuf,"#: ...SD OK !      ");
  Serial.println(sbuf);
  strcpy(fname,"test.txt");

  if (SD.exists(fname) ) {
    sprintf(sbuf,"#: %s exists     ",fname);
    Serial.println(sbuf);
  
    sprintf(sbuf,"#: Removing %s      ",fname);  
    Serial.println(sbuf);
  
    SD.remove("test.txt");
    // removed: success ?
    if (SD.exists(fname) ) {
       sprintf(sbuf,"#: %s  exists     ",fname);
       Serial.println(sbuf);
    }
    else {
       sprintf(sbuf,"#: %s  N/A     ",fname);
       Serial.println(sbuf);
     }
  }
  

  // 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(fname, FILE_WRITE);

  if (myFile) {
    // if the file opened okay, write to it, then close file:
    sprintf(sbuf,"#: Writing strings to %s ",fname);
    Serial.println(sbuf);
  
    //---------------------------------------------------------------------------------
    // write data to file
    fprintf_(&myFile, "%s\n%d\n%d\n%f\n%f\n", "Teststring", 1, 2, PI, 4.567890);  
    //---------------------------------------------------------------------------------
  
    // close the file:
    myFile.close();
    sprintf(sbuf,"#: %s closed.   ",fname);
    Serial.println(sbuf);
  }
  else {
    // if the file didn't open, print an error:
    sprintf(sbuf,"#: error opening %s   ",fname);
    Serial.println(sbuf);    
  }

  Serial.println();
  // re-open the file for reading:
  myFile = SD.open(fname);
  if (myFile) {
    sprintf(sbuf,"#: reading %s ",fname);
    Serial.println(sbuf);
  
    // read from the file until there's nothing else in it:
    i=0;
    cnt=1;  
  
    while (myFile.available()) {
      strcpy(sdata, "");
      fgets_ ( sdata, 20, &myFile );
      Serial.print(cnt); Serial.print(": string raw="); Serial.println(sdata);
      Serial.println("rueckformatiert:");
      if (cnt==1) {Serial.print("str  ="); Serial.println(sdata); }
      if (cnt==2) {Serial.print("int  ="); Serial.println(atoi(sdata) ); }
      if (cnt==3) {Serial.print("int  ="); Serial.println(atoi(sdata) ); }
      if (cnt==4) {Serial.print("float="); Serial.println(atof(sdata) ); }
      if (cnt==5) {Serial.print("float="); Serial.println(atof(sdata) ); }
      ++cnt;
    }
  
    // close the file:
    myFile.close();      
    sprintf(sbuf,"#: %s closed. ",fname);
    Serial.println(sbuf);    
  } else {
    // if the file didn't open, print an error:
    sprintf(sbuf,"#: error opening %s   ",fname);    
    Serial.println(sbuf);

  }
}

void loop()
{
  // nothing happens after setup
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.07.2015, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 10:24 von DaniDD.)
Beitrag #4
RE: Arduino Due SD-Karte wird nicht erkannt
@Scherheinz: die ist built-in bei der Arduino IDE bzw ist das die gleiche wie diese hier und da steht was von Due:
https://github.com/adafruit/SD

@HaWe: es funktioniert nicht. Hab den Pin auch auf die 53 gesetzt.
Wie oben geschrieben liegt es nicht am SD Board, da ich mit dem Mega drauf zu greifen kann.
Nachtrag, mit dem Mega läuft dein Programm...

Auch habe ich gerade die sDFat Lib ausprobiert. Mit dem Due gehts nicht :/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.07.2015, 10:39 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 10:48 von HaWe.)
Beitrag #5
RE: Arduino Due SD-Karte wird nicht erkannt
dann wäre es theoretisch möglich, dass es an den SPI-Pinouts liegt.
Der Mega benutzt dafür ja 50-52, der Due 74-76.
Ich selber benutze den SPI-ICSP-Stecker, da wird automatisch Hardware-SPI umgeswitcht.
Wenn du allerdings die 50er GPIOs verwendest, kann es mit dem Due IMO nicht funktionieren.

Gefährlich sind auf dem Due auch die Signal-Level, wenn dein AVR-Shield 5V-Pegel benutzt und auch zurückgibt.
Wenn es nicht ausdrücklich 3.3V Level und Pegel unterstützt, würde ich für den Due die Finger davon lassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.07.2015, 11:04 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 11:41 von DaniDD.)
Beitrag #6
RE: Arduino Due SD-Karte wird nicht erkannt
Ok, danke für die Info. Ich habe irgendwo noch ein CTE Shield, das greift die SPI Pins in der Mitte bei diesen 6 SPI Pins ab. Das hat auch einen Kartenleser direkt mit dran. Ich muss es nur erst mal wieder finden ^^
Bei dem Shield hätte ich gedacht dass da die Spannung bei IOREF ausgewertet wird und die Pegelwandler den entsprechenden Pegel zurück geben. Bei genauerem hin schauen sehe ich aber dass genau dieser Pin nicht abgegriffen wird :/
Ok da nehme ich das nicht mehr am Due. Danke für den Hinweis

Achso noch eine Frage, bei dem SPI Stecker, welche Pinnummer gebe ich als SD_CS Pin ein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  USB-Gerät wird nicht erkannt kpc 1 53 06.12.2016 09:22
Letzter Beitrag: hotsystems
  Bluetooth-Steuerung mit elegoo uno funktioniert nicht Matthias_Arduino 0 145 01.11.2016 19:47
Letzter Beitrag: Matthias_Arduino
  Pin 5 an Pro Micro funktioniert nicht scritch 1 170 07.09.2016 13:54
Letzter Beitrag: ardu_arne
  Arduino UNO IC wird heiß fagus 1 223 31.08.2016 11:20
Letzter Beitrag: ardu_arne
  ESP8266-01 wird heiß ? cuteemo 5 349 20.08.2016 10:16
Letzter Beitrag: HDT
  Nema 17 Schrittmotor läuft an a4988 nicht fagus 9 582 04.08.2016 20:12
Letzter Beitrag: fagus
  LCD 1602 mit HD44780 TWI Controller funktioinert nicht mehr emduino 2 229 26.07.2016 20:42
Letzter Beitrag: hotsystems
  Uno gehen zwei digital Pins nicht edlosijagen 15 592 07.07.2016 19:22
Letzter Beitrag: Bitklopfer
  IFLZ44N schaltet nicht korrekt? torsten_156 22 1.016 25.04.2016 13:53
Letzter Beitrag: Bitklopfer
  Motor Shield wird Heiß erwin 8 1.126 24.03.2016 11:29
Letzter Beitrag: hotsystems

Gehe zu:


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