SD Card mit Leonardo

Hallo liebe Gemeinde,

Ich habe mir das Data Logging Shield von Adafruit zugelegt:

unter anderem wegen der SD Karte mein Problem ist, das ganze kommuniziert irgendwie nicht mit meinem Leonardo.
per Google bin ich schon darauf gestoßen, dass man wohl folgendes in der Sd2Card.h Datei ändern muss:

/** The default chip select pin for the SD card is SS. /
uint8_t const SD_CHIP_SELECT_PIN = SS_PIN;
// The following three pins must not be redefined for hardware SPI.
/
* SPI Master Out Slave In pin /
uint8_t const SPI_MOSI_PIN = MOSI_PIN;
/
* SPI Master In Slave Out pin /
uint8_t const SPI_MISO_PIN = MISO_PIN;
/
* SPI Clock pin */
uint8_t const SPI_SCK_PIN = SCK_PIN;

in

#include <Arduino.h>
/** The default chip select pin for the SD card is SS. /
uint8_t const SD_CHIP_SELECT_PIN = SS;
// The following three pins must not be redefined for hardware SPI.
/
* SPI Master Out Slave In pin /
uint8_t const SPI_MOSI_PIN = MOSI;
/
* SPI Master In Slave Out pin /
uint8_t const SPI_MISO_PIN = MISO;
/
* SPI Clock pin */
uint8_t const SPI_SCK_PIN = SCK;

aber trotzdem schlägt die Initialisierung der SD Karte immer fehl.

Hat schon jemand erfahrungen, wie man eine SD Karte mit dem Leonardo verwenden kann?
oder vllt sogar, wie man das data logging shield mit dem Leonardo verwendet?

Wäre für jede Hilfe dankbar!

LG Max

Die SPI Schnittstelle ist beim Leonardo anderswo:

http://arduino-praxis.ch/2012/06/testbericht-arduino-leonardo/:
Nachfolgende Tabelle zeigt die Unterschiede der Pins zwischen Arduino Uno und Arduino Leonardo:
Bezeichnung Uno Leonardo
A06-A11 - D4,6,8,9,10,12
PWM D3,5,6,9,10,11 D3,5,6,9,10,11,13
SPI D10,11,12,13 ICSP Stecker
TWI (I2C) A04,05 und SCL, SDA D2,3 und SCL, SDA

Durch die unterschiedliche Anschlussbelegung, speziell des I2C-Bus und der SPI-Schnittstelle, können etliche Standardshields nicht mehr genutzt werden. Zu erwähnen sind hier SD Card Shields und älterer Versionen des Ethernet Shield, welche den SPI-Bus über die Pins 10 bis 13 nutzen.
Nachtrag: das aktuelle Ethernet Shield (Version 6) nutzt den SPI-Bus welcher über den ICSP-Stecker vom Arduino-Board geliefert wird.

Du mußt das Shield umlöten und den 6-poligen ICSP Stecker verwenden.

Grüße Uwe

danke schon mal für die schnelle Antwort.
Und welche pins muss ich dann umlöten?
also am shield 10, 11, 12 und 13 schon klar und welcher muss an welchen vom ICSP?

Arduino UNO und auch Shield:

Connections

On the Arduino Duemilanove and other ATmega168 / 328-based boards, the SPI bus uses pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK). On the Arduino Mega, this is 50 (MISO), 51 (MOSI), 52 (SCK), and 53 (SS). MISO, MOSI, and SCK are also available in a consistent physical location on the ICSP header; this is useful, for example, in designing a shield that works on the Uno and the Mega.

Note that even if you're not using the SS pin, it must remain set as an output; otherwise, the SPI interface can be put into slave mode, rendering the library inoperative. It is, however, possible to use a pin other than pin 10 as the slave select (SS) pin. For example, the Arduino Ethernet shield uses pin 4 to control the SPI connection to the on-board SD card, and pin 10 to control the connection to the Ethernet controller.

ICSP Stecker :

Pin 1 des ICSP ist links oben (wenn der Aufdruck "Arduino Leonardo" richtigherum steht) und durch einen kleinen Punkt gekennzeichnet. http://arduino.cc/en/Main/ArduinoBoardLeonardo auf dem Arduino 2009 stehts drauf: http://arduino.cc/en/Main/ArduinoBoardDuemilanove

Bei Zweifel nachmessen: GND ist masse und VTG ist mit 5V verbunden.

Grüße Uwe

und muss ich softwaretechnisch noch irgendetwas anpassen, denn das Cardinfo bsp funktioniert immer noch nicht

Das SS Pin mußt Du selbst definieren; kann auch gleich bleiben (D10) und muß nicht über den ICSP Stecker gehen.
Zum Cardinfo Beispiel kann ich Dir nichts sagen
Grüße Uwe

Please take a look at this shield adapter which will convert the pinout on the Arduino Leonardo to match the older shields easily. Arduino Playground - LeoShield

So liebes Forum,
nach einigem experimentieren hab ich es nun geschafft. Für den Fall, dass noch mal jemand das gleiche Problem hat hier die entgültige Lösung:
-Softwareseitig ist die Anpassung, die ich eingangs schon beschrieben habe durchzuführen.
-Hardwaretechnisch hab ich dann mit folgender Konfiguration Erfolg gehabt
auf dem Shield sind die Pins für die SD-Karte noch einmal extra herausgeführt, die dann folgendermaßen verbunden werden müssen:
D0 -> MISO (ICSP)
D1 -> MOSI (ICSP)
CS an einen IO Pin, ich hab 10 genommen
SCK -> SCK (ICSP)

Weiterhin liegt es auch noch an der SD - Karte selbst, von meinen 3 die ich zum ausprobieren hatte ging eine nicht (natürlich die, die ich eigentlich nehmen wollte)

Ich hoffe, dass es anderen Verzweifelten weiter hilft

LG Max

+1 like :smiley:
Welche SD Karten gingen und welche nicht. Was könnte der Unterschied zwischen den Karten sein?

Vielleicht ein Geschwindigkeitsproblem?

Es gibt
SD-Karten bis 2GByte (Standartkonform mit FAT 16 bit)
SD-Karten über 2Gbyte (nicht Standartkonform)
SDHC-Karten bis 32GByte (mit FAT32, nicht kompatibel mit SD-Karten-Lesern die kein SDHC können)
SDXC-Karten mit bis zu 2TByte (mit exFAT)

Die SD-Library funktioniert mit Standartkonformen SD-Karten und SDHC Karten.

Grüße Uwe

Was auch noch einProblem zu sein scheint, ist die Länge der Dateinamen.
Mit TEST.TXT gab es keine Schwierigkeiten, aber TEMPERATURAUFZEICHNUNG.TXT will er nicht.
Ist aber nicht schlimm, muss man nur wissen.

LG Max

Was auch noch einProblem zu sein scheint, ist die Länge der Dateinamen.

Das ist nicht Leonardo spezifisch, und in der adafruit Dokumentation erwähnt.
8+3 Dateinamen war in den guten alten Zeiten normal. ( Ich würde auch keine Leerzeichen oder Umlaute riskieren )

hypermax:
Was auch noch einProblem zu sein scheint, ist die Länge der Dateinamen.
Mit TEST.TXT gab es keine Schwierigkeiten, aber TEMPERATURAUFZEICHNUNG.TXT will er nicht.
Ist aber nicht schlimm, muss man nur wissen.

LG Max

Das liegt an der FAT Formatierung, bei deinem PC solltest du gleiches Phänomen beobachten können.